[
  {
    "path": ".circleci/config.yml",
    "content": "version: 2\n\n# What is this - http://yaml.org/type/merge.html\ndefaults: &defaults\n  docker:\n    - image: circleci/node:12.10\n\njobs:\n    build:\n        <<: *defaults\n        resource_class: xlarge\n        steps:\n            - checkout\n            - restore_cache:\n                name: Restore yarn cache\n                key: node-modules-{{ checksum \"yarn.lock\" }}\n            - run:\n                name: Install modules\n                command: yarn --frozen-lockfile install\n            - save_cache:\n                name: Save yarn cache\n                key: node-modules-{{ checksum \"yarn.lock\" }}\n                paths:\n                    - node_modules\n            - run:\n                name: Building\n                command:  yarn build\n                no_output_timeout: 30m\n            - run:\n                name: Copying boost loader script\n                command:  yarn copy:boost-loader\n            - run:\n                name: Ensuring prettified\n                command: yarn prettier\n            - run:\n                name: Linting\n                command: yarn lint\n            - run:\n                name: Starting Ganache\n                command: yarn ganache:raw\n                background: true\n            - run:\n                name: Running migrations\n                command: yarn lerna run --scope=@joincivil/contracts migrate:ganache\n            - run:\n                name: Running tests (except contracts)\n                command: |\n                    yarn test\n            - add_ssh_keys:\n                fingerprints:\n                - \"70:4a:4d:06:ec:1f:2a:fd:50:c6:a8:63:da:e9:0c:e6\"\n            - run:\n                name: Releasing\n                command: |\n                    yarn release\n                    pwd\n            - persist_to_workspace:\n                root: ./\n                paths:\n                    - ./packages/dapp/build\n                    - ./packages/dapp/devops\n    coverage:\n        <<: *defaults\n        steps:\n            - attach_workspace:\n                at: ../\n            - run:\n                name: Starting Ganache\n                command: yarn ganache:raw\n                background: true\n            - run:\n                name: Calculating coverage\n                command: yarn coverage\n            - run:\n                name: Submitting coverage\n                command: yarn coverage:submit\n\n    # Docker steps\n    # These steps have a different workspace roots and so will behave a bit differently\n    # circleci/node has /users/circleci/project\n    # civilmedia/gcloud-node has /root/project\n    setup-gcp:\n        <<: *defaults\n        docker:\n            - image: civilmedia/gcloud-node:latest\n        steps:\n            - run:\n                name: Dump Google Cloud Credentials to file\n                command: |\n                    echo ${GOOGLE_AUTH} | base64 -d > ${HOME}/gcp-key.json\n                    gcloud auth activate-service-account --key-file ${HOME}/gcp-key.json\n                    gcloud --quiet config set project ${GOOGLE_PROJECT_ID}\n                    gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}\n                    gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME}\n                    gcloud docker --authorize-only\n            - persist_to_workspace:\n                root: /root\n                paths:\n                    - gcp-key.json\n                    - .config/gcloud\n                    - .docker\n                    - .dockercfg\n                    - .kubernetes_ns\n                    - .kube\n\n    # Adds specific test images so we can both push specific branches via circleci, but\n    # also start up an fresh test container with the last test image in k8s\n    push-test-containers:\n        <<: *defaults\n        docker:\n            - image: civilmedia/gcloud-node:latest\n        steps:\n            - checkout\n            - attach_workspace:\n                at: /root\n            - setup_remote_docker\n            - run:\n                name: Build Container\n                command: |\n                    cp -r /root/packages/dapp/build ./packages/dapp/build\n                    cp -r /root/packages/dapp/devops ./packages/dapp/devops\n\n                    TAG=`echo $CIRCLE_BRANCH | sed 's/\\\\//_/g'`\n                    docker build -f Dockerfile-dapp . \\\n                    --build-arg version=$CIRCLE_SHA1 \\\n                    -t gcr.io/$GOOGLE_PROJECT_ID/dapp:$TAG \\\n                    -t gcr.io/$GOOGLE_PROJECT_ID/dapp:$TAG-$CIRCLE_SHA1 \\\n                    -t gcr.io/$GOOGLE_PROJECT_ID/dapp:test \\\n                    -t gcr.io/$GOOGLE_PROJECT_ID/dapp:test-$CIRCLE_SHA1\n            - deploy:\n                name: Push Containers to Registry\n                command: |\n                    gcloud config list\n                    echo \"pushing $GOOGLE_PROJECT_ID\"\n                    docker push gcr.io/$GOOGLE_PROJECT_ID/dapp\n\n    push-containers:\n        <<: *defaults\n        docker:\n            - image: civilmedia/gcloud-node:latest\n        steps:\n            - checkout\n            - attach_workspace:\n                at: /root\n            - setup_remote_docker\n            - run:\n                name: Build Container\n                command: |\n                    cp -r /root/packages/dapp/build ./packages/dapp/build\n                    cp -r /root/packages/dapp/devops ./packages/dapp/devops\n\n                    TAG=`echo $CIRCLE_BRANCH | sed 's/\\\\//_/g'`\n                    docker build -f Dockerfile-dapp . \\\n                    --build-arg version=$CIRCLE_SHA1 \\\n                    -t gcr.io/$GOOGLE_PROJECT_ID/dapp:$TAG \\\n                    -t gcr.io/$GOOGLE_PROJECT_ID/dapp:$TAG-$CIRCLE_SHA1\n            - deploy:\n                name: Push Containers to Registry\n                command: |\n                    gcloud config list\n                    echo \"pushing $GOOGLE_PROJECT_ID\"\n                    docker push gcr.io/$GOOGLE_PROJECT_ID/dapp\n\n    deploy-test:\n        <<: *defaults\n        docker:\n            - image: civilmedia/gcloud-node:latest\n        steps:\n            - attach_workspace:\n                at: /root\n            - deploy:\n                name: Update Kubernetes Deployment on TEST\n                command: |\n                    TAG=`echo $CIRCLE_BRANCH | sed 's/\\\\//_/g'`\n                    kubectl set image deployment/dapp dapp=gcr.io/$GOOGLE_PROJECT_ID/dapp:$TAG-$CIRCLE_SHA1 --namespace test\n\n    deploy-staging:\n        <<: *defaults\n        docker:\n            - image: civilmedia/gcloud-node:latest\n        steps:\n            - attach_workspace:\n                at: /root\n            - deploy:\n                name: Update Kubernetes Deployment on STAGING\n                command: |\n                    kubectl set image deployment/dapp dapp=gcr.io/$GOOGLE_PROJECT_ID/dapp:master-$CIRCLE_SHA1 --namespace staging\n\n    deploy-production:\n        <<: *defaults\n        docker:\n            - image: civilmedia/gcloud-node:latest\n        steps:\n            - attach_workspace:\n                at: /root\n            - deploy:\n                name: Update Kubernetes Deployment on PRODUCTION\n                command: |\n                    kubectl set image deployment/dapp dapp=gcr.io/$GOOGLE_PROJECT_ID/dapp:production-$CIRCLE_SHA1 --namespace production\n\nworkflows:\n    version: 2\n    build-and-deploy:\n        jobs:\n            - build:\n                context: gcp-common\n            - setup-gcp:\n                context: gcp-common\n                requires:\n                    - build\n                filters:\n                    branches:\n                        only:\n                            - master\n                            - production\n                            - /test.*/\n            - push-test-containers:\n                context: gcp-common\n                requires:\n                    - setup-gcp\n                filters:\n                    branches:\n                        only:\n                            - /test.*/\n            - push-containers:\n                context: gcp-common\n                requires:\n                    - setup-gcp\n                filters:\n                    branches:\n                        only:\n                            - master\n                            - production\n            - deploy-test:\n                context: gcp-common\n                requires:\n                    - push-test-containers\n                filters:\n                    branches:\n                        only:\n                            - /test.*/\n            - deploy-staging:\n                context: gcp-common\n                requires:\n                    - push-containers\n                filters:\n                    branches:\n                        only:\n                            - master\n            - deploy-production:\n                context: gcp-common\n                requires:\n                    - push-containers\n                filters:\n                    branches:\n                        only:\n                            - production\n"
  },
  {
    "path": ".dockerignore",
    "content": "node_modules\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\nend_of_line = lf\n\n[*.{mustache,handlebars}]\ninsert_final_newline = false\n\n[*.{yaml,yml}]\nindent_size = 4\nindent_style = space\n"
  },
  {
    "path": ".gitattributes",
    "content": "# Normalizes all line endings in the repository\n# as per https://git-scm.com/docs/gitattributes\n#\n# This is needed because Solium has a problem with mixed line endings\n# and returns false positives\n* text=auto\n\n# Automatically collapses storyshot diffs in GitHub:\n*.storyshot linguist-generated\n\n"
  },
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Typescript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\npackages/dapp/.env.local\n\n\nbuild/\n\n# DS store\n*.DS_STORE\n\n# ide / intellij config\n.idea\n\n# package\n*package-lock.json\n\ncoverage/\ncoverage.json\n"
  },
  {
    "path": ".prettierignore",
    "content": "node_modules/\nbuild/\ninstalled_contracts/\npackage.json\ngenerated/\ndoxity/\ndocs/asset-manifest.json\n/packages/dapp/src/components/docs/json/\ncoverage/\n.0x-artifacts/\n"
  },
  {
    "path": ".prettierrc.yaml",
    "content": "printWidth: 120\nbracketSpacing: true\nsemi: true\nsingleQuote: false\ntrailingComma: all\nuseTabs: false\n"
  },
  {
    "path": ".releaserc",
    "content": "{\n  \"repositoryUrl\": \"git@github.com:joincivil/Civil.git\",\n  \"branch\": \"master\"\n}"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"name\": \"Launch Script\",\n      \"program\": \"${file}\",\n      \"outFiles\": [\"${workspaceFolder}/packages/*/build/**/*.{js,js.map}\"],\n      \"sourceMaps\": true,\n      \"smartStep\": true\n    }\n  ]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"files.exclude\": {\n    \"**/build/\": true,\n    \"**/node_modules/\": true\n  },\n  \"search.exclude\": {\n    \"**/build/\": true\n  },\n  \"typescript.tsdk\": \"node_modules/typescript/lib\"\n}\n"
  },
  {
    "path": "Dockerfile-dapp",
    "content": "FROM nginx:1.12-alpine\nADD ./packages/dapp/build /usr/share/nginx/html\nADD ./packages/dapp/devops/nginx.conf /etc/nginx/conf.d/default.conf\nADD ./packages/dapp/devops/start.sh /start.sh\nRUN chmod u+x /start.sh\nEXPOSE 3000\nENV ENVIRONMENT=\"{}\"\n\nCMD /start.sh"
  },
  {
    "path": "README.md",
    "content": "![Civil Logo](doc/civil_logo_white.png?raw=true)\n\n---\n\n[Civil](https://joincivil.com/) is a decentralized and censorship resistant ecosystem for online Journalism. Read more in our whitepaper.\n\n[WIP Civil DApp](https://dapp.staging.cvl.pub/) - Read Documentation and Interact with Contracts and tools at our DApp, hosted for your convenience. This DApp and associated contracts are a Work In Progress and contracts are deployed on the Rinkeby testnet. If you would like some test CVL to try out the DApp, please ask in our Gitter room and we can send you some.\n\nThis repository contains all of the open-source Civil tools and packages written in Typescript.\nWe hope that those tools will be useful for creation of interesting applications on top of the ecosystem as well as be useful in any project in the Ethereum space.\n\n[![Coverage Status](https://coveralls.io/repos/github/joincivil/Civil/badge.svg)](https://coveralls.io/github/joincivil/Civil)\n[![CircleCI](https://img.shields.io/circleci/project/github/joincivil/Civil.svg)](https://circleci.com/gh/joincivil/Civil/tree/master)\n[![Gitter chat](https://badges.gitter.im/joincivil/Lobby.png)](https://gitter.im/joincivil/Lobby)\n[![Telegram chat](https://img.shields.io/badge/chat-telegram-blue.svg)](https://t.me/join_civil)\n\nMost of the packages require additional typings for external dependencies. You can include those by prepending @joincivil/typescript-typings package to your typeRoots config.\n\n```json\n\"typeRoots\": [\"node_modules/@joincivil/typescript-typings/types\", \"node_modules/@types\"],\n```\n\n### Published packages\n\n| Package                                                         | NPM                                                                                                                                       | Description                                                            |\n| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |\n| [`@joincivil/core`][core-url]                                   | [![npm link](https://img.shields.io/badge/npm-core-blue.svg)](https://www.npmjs.com/package/@joincivil/core)                              | JS library for interacting with Civil ecosystem                        |\n| [`@joincivil/tslint-rules`](/packages/tslint-rules)             | [![npm link](https://img.shields.io/badge/npm-tslint--rules-blue.svg)](https://www.npmjs.com/package/@joincivil/tslint-rules)             | Linting rules for Civil's Typescript packages                          |\n| [`@joincivil/utils`](/packages/utils)                           | [![npm link](https://img.shields.io/badge/npm-utils-blue.svg)](https://www.npmjs.com/package/@joincivil/utils)                            | Utilities shared between Civil projects used during runtime            |\n| [`@joincivil/typescript-types`](/packages/typescript-types)     | [![npm link](https://img.shields.io/badge/npm-typescript--types-blue.svg)](https://www.npmjs.com/package/@joincivil/typescript-types)     | Types used in multiple Civil packages                                  |\n| [`@joincivil/typescript-typings`](/packages/typescript-typings) | [![npm link](https://img.shields.io/badge/npm-typescript--typings-blue.svg)](https://www.npmjs.com/package/@joincivil/typescript-typings) | Typescript type roots for external projects and internal modifications |\n| [`@joincivil/ethapi`](/packages/ethapi)                         | [![npm link](https://img.shields.io/badge/npm-ethapi-blue.svg)](https://www.npmjs.com/package/@joincivil/ethapi)                          | An abstraction of Ethereum communication                               |\n\n### Private packages\n\n| Package                                       | Description                                                                                                         |\n| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |\n| [`@joincivil/contracts`](/packages/contracts) | Smart-contracts needed for the Civil's protocol                                                                     |\n| [`@joincivil/dapp`](/packages/dapp)           | DApp for interacting with the Civil contracts                                                                       |\n| [`@joincivil/dev-utils`](/packages/dev-utils) | Utilities needed for the proper working of the mono-repo packages, builds and tests                                 |\n| [`@joincivil/debug-ui`](/packages/debug-ui)   | WIP: Minimal website to monitor, observe and debug the protocol and all the utilities and packages of the ecosystem |\n\n## Contributing\n\nCivil's ecosystem is free and open-source, we're all part of it and you're encouraged to be a part of it with us.\nBest place to start hacking would be to use the [`@joincivil/core`][core-url] and build some application on top of the protocol.\n\nIf you're itching to delve deeper inside, [**help wanted**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\nand [**good first issue**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) labels are good places to get started and learn the architecture.\n\n## Dev Setup\n\n### Install dependencies\n\nThis project is using [yarn workspaces](https://yarnpkg.com/lang/en/docs/workspaces/). They require `yarn >= 1.0` to work properly.\n\nSet up all dependencies:\n\nfrom the root directory:\n\n```bash\nyarn install\n```\n\n### Build\n\nBuild all packages in the monorepo:\n\n```bash\nyarn build\n```\n\nTurn on file-watch mode and rebuild most of the files on change:\n\n```bash\nyarn watch\n```\n\n### Lint\n\nCheck all packages for linting errors:\n\n```bash\nyarn lint\n```\n\n### Testing\n\nTests in Civil's ecosystem require the use of [Ganache](https://github.com/trufflesuite/ganache-cli), Ethereum's development test network, spin it in a seperate terminal:\n\n```bash\nyarn ganache\n```\n\nFinally run all the tests in the main repository:\n\n```bash\nyarn test\n```\n\n### Easy Setup with front-end\n\nWe've added a helper command to assist you if you want to develop using the front-end and a local ganache. Just 3 simple commands.\n\nFirst, however, you may want to add your own address (e.g. MetaMask account) to our config file so that you are distributed tokens/ETH properly and change the Appellate and GovernmentController addresses. This is especially useful if your MetaMask account is not the same as one of you ganache accounts (all ganache accounts are given tokens by default). Config file can be found at `packages/contracts/conf/config.json`.\n\nFrom the root directory:\n\n```bash\nyarn ganache\n```\n\nOnce that is running, in another terminal, from the root directory:\n\n```bash\nyarn preparelocally\n```\n\nAfter that completes:\n\n```bash\ncd packages/dapp\nyarn start\n```\n\nNow you have the dapp front-end running at `localhost:3000`. Make sure to select `localhost 8545` in metamask to interact with the dapp.\n\n### Run commands in all packages\n\nCivil's monorepo is using [lerna](https://github.com/lerna/lerna) to easily manage the monorepo structure. Two helper yarn scripts are provided for your convenience.\n\nTo run the supported lerna version:\n\n```bash\nyarn lerna\n```\n\nTo run scripts in all packages in the monorepo:\n\n```bash\nyarn lerna:run\n```\n\n### Cleaning the state\n\nTo refresh the repository state as much as possible run:\n\n```bash\nyarn clean && yarn lerna clean --yes && rm -r node_modules && yarn install\n```\n\n🐙 was here.\n\n[core-url]: /packages/core\n"
  },
  {
    "path": "commitlint.config.js",
    "content": "module.exports = { extends: [\"@commitlint/config-conventional\", \"@commitlint/config-lerna-scopes\"] };\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"lerna\": \"3.15.0\",\n  \"packages\": [\"packages/*\"],\n  \"npmClient\": \"yarn\",\n  \"useWorkspaces\": true,\n  \"version\": \"independent\",\n  \"command\": {\n    \"publish\": {\n      \"conventionalCommits\": true\n    },\n    \"version\": {\n      \"message\": \"chore(release): release\"\n    }\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@joincivil/root\",\n  \"private\": true,\n  \"homepage\": \"https://civil.co\",\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"scripts\": {\n    \"build\": \"lerna run build --sort\",\n    \"watch\": \"lerna run --parallel build:watch\",\n    \"lint\": \"lerna run lint --parallel\",\n    \"build:core\": \"lerna run --scope @joincivil/core build\",\n    \"copy:boost-loader\": \"mkdir -p packages/dapp/build/loader/ && cp packages/sdk/build/static/js/boost.js* packages/dapp/build/loader/\",\n    \"coverage\": \"lerna run coverage --parallel\",\n    \"coverage:submit\": \"lcov-result-merger 'packages/*/coverage/lcov.info' | coveralls\",\n    \"prettier\": \"prettier --config .prettierrc.yaml --write --list-different './**/*.{ts,tsx,json,md}'\",\n    \"prettier:package\": \"[ $PACKAGE ] && prettier --config .prettierrc.yaml --write --list-different ./packages/$PACKAGE'/**/*.{ts,tsx,json,md}' || echo 'Specify a package name as environment variable to run prettier on just that package, e.g. `PACKAGE=dapp yarn prettier:package`'\",\n    \"clean\": \"lerna run clean --parallel\",\n    \"test\": \"CI=true lerna run test --stream --sort --ignore @joincivil/contracts\",\n    \"test-contracts\": \"lerna run test --stream --sort\",\n    \"lerna:run\": \"lerna run\",\n    \"prepare\": \"lerna run prepare --no-sort\",\n    \"ganache\": \"run-p ganache:raw 'lerna:run --scope @joincivil/contracts migrate:ganache'\",\n    \"ganache:raw\": \"ganache-cli -p 8545 --networkId 50 -d -m \\\"${npm_package_config_mnemonic}\\\" --noVMErrorsOnRPCResponse\",\n    \"migrate\": \"lerna run --scope @joincivil/contracts migrate:ganache\",\n    \"serve:dapp\": \"cd ./packages/dapp && serve -s build\",\n    \"publish:docs\": \"ncp ./packages/dapp/build/ ./docs/\",\n    \"publish:artifacts-dev\": \"ncp ./packages/contracts/build/artifacts/CivilTCR.json ./packages/artifacts/v1/CivilTCR.json && ncp ./packages/contracts/build/artifacts/CivilPLCRVoting.json ./packages/artifacts/v1/CivilPLCRVoting.json && ncp ./packages/contracts/build/artifacts/CivilParameterizer.json ./packages/artifacts/v1/CivilParameterizer.json && ncp ./packages/contracts/build/artifacts/CVLToken.json ./packages/artifacts/v1/CVLToken.json && ncp ./packages/contracts/build/artifacts/EventStorage.json ./packages/artifacts/v1/EventStorage.json && ncp ./packages/contracts/build/artifacts/Government.json ./packages/artifacts/v1/Government.json && ncp ./packages/contracts/build/artifacts/MultiSigWallet.json ./packages/artifacts/v1/MultiSigWallet.json && ncp ./packages/contracts/build/artifacts/Newsroom.json ./packages/artifacts/v1/Newsroom.json && ncp ./packages/contracts/build/artifacts/NewsroomFactory.json ./packages/artifacts/v1/NewsroomFactory.json && ncp ./packages/contracts/build/artifacts/CivilTokenController.json ./packages/artifacts/v1/CivilTokenController.json && ncp ./packages/contracts/build/artifacts/CreateNewsroomInGroup.json ./packages/artifacts/v1/CreateNewsroomInGroup.json && ncp ./packages/contracts/build/artifacts/NoOpTokenController.json ./packages/artifacts/v1/NoOpTokenController.json\",\n    \"preparelocally\": \"run-s migrate publish:artifacts-dev build:core\",\n    \"commit\": \"commit\",\n    \"release\": \"multi-semantic-release\"\n  },\n  \"config\": {\n    \"mnemonic\": \"notice tobacco baby curious trade other capable invite cable thunder file equal\"\n  },\n  \"resolutions\": {\n    \"ethers\": \"4.0.27\",\n    \"**/ethers\": \"4.0.27\"\n  },\n  \"license\": \"(Apache-2.0 OR LGPL-2.1-only)\",\n  \"devDependencies\": {\n    \"@commitlint/cli\": \"^7.5.2\",\n    \"@commitlint/config-conventional\": \"^7.5.0\",\n    \"@commitlint/config-lerna-scopes\": \"^8.1.0\",\n    \"@commitlint/prompt-cli\": \"^8.1.0\",\n    \"@semantic-release/npm\": \"^5.1.7\",\n    \"coveralls\": \"^3.0.0\",\n    \"ganache-cli\": \"^6.5.1\",\n    \"husky\": \"^2.1.0\",\n    \"lcov-result-merger\": \"^3.1.0\",\n    \"lerna\": \"^3.15.0\",\n    \"multi-semantic-release\": \"^1.1.0\",\n    \"ncp\": \"^2.0.0\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"prettier\": \"1.18.2\",\n    \"semantic-release\": \"^15.13.3\"\n  },\n  \"husky\": {\n    \"hooks\": {\n      \"commit-msg\": \"commitlint -E HUSKY_GIT_PARAMS\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/package.json",
    "content": "{\n  \"name\": \"@joincivil/artifacts\",\n  \"version\": \"1.1.9\",\n  \"description\": \"Civil Ethereum smart contract artifacts\",\n  \"scripts\": {},\n  \"author\": \"The Civil Media Company\",\n  \"bugs\": {\n    \"url\": \"https://github.com/joincivil/Civil/issues\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"license\": \"LGPL-2.1\"\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ACL.json",
    "content": "{\n  \"contractName\": \"ACL\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060008054600160a060020a03191633179055610355806100326000396000f30060806040526004361061006c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663217fe6c681146100715780632f54bf6e146100ec578063715018a61461010d5780638da5cb5b14610124578063f2fde38b14610155575b600080fd5b34801561007d57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100d8958335600160a060020a03169536956044949193909101919081908401838280828437509497506101769650505050505050565b604080519115158252519081900360200190f35b3480156100f857600080fd5b506100d8600160a060020a03600435166101fa565b34801561011957600080fd5b5061012261020e565b005b34801561013057600080fd5b5061013961027a565b60408051600160a060020a039092168252519081900360200190f35b34801561016157600080fd5b50610122600160a060020a0360043516610289565b60006001826040518082805190602001908083835b602083106101aa5780518252601f19909201916020918201910161018b565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b600054600160a060020a0316331461022557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a031633146102a057600080fd5b6102a9816102ac565b50565b600160a060020a03811615156102c157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820ccf2b858c6dafa2777144e5272cb0d25fb58b5b8254f5f61242d728f24a65bd50029\",\n  \"deployedBytecode\": \"0x60806040526004361061006c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663217fe6c681146100715780632f54bf6e146100ec578063715018a61461010d5780638da5cb5b14610124578063f2fde38b14610155575b600080fd5b34801561007d57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100d8958335600160a060020a03169536956044949193909101919081908401838280828437509497506101769650505050505050565b604080519115158252519081900360200190f35b3480156100f857600080fd5b506100d8600160a060020a03600435166101fa565b34801561011957600080fd5b5061012261020e565b005b34801561013057600080fd5b5061013961027a565b60408051600160a060020a039092168252519081900360200190f35b34801561016157600080fd5b50610122600160a060020a0360043516610289565b60006001826040518082805190602001908083835b602083106101aa5780518252601f19909201916020918201910161018b565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b600054600160a060020a0316331461022557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a031633146102a057600080fd5b6102a9816102ac565b50565b600160a060020a03811615156102c157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820ccf2b858c6dafa2777144e5272cb0d25fb58b5b8254f5f61242d728f24a65bd50029\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"granter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"grantee\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleAdded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"granter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"grantee\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"hasRole\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isOwner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/AddressRegistry.json",
    "content": "{\n  \"contractName\": \"AddressRegistry\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b5060405162002f3838038062002f38833981016040908152815160208301519183015160608401519193909101600160a060020a0384161515620000b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5f746f6b656e2061646472657373206973203000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831615156200012e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5f766f74696e6720616464726573732069732030000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515620001a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f706172616d65746572697a6572206164647265737320697320300000000000604482015290519081900360640190fd5b60028054600160a060020a03808716600160a060020a0319928316179092556003805486841690831617905560048054928516929091169190911790558051620001f890600590602084019062000203565b5050505050620002a8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024657805160ff191683800117855562000276565b8280016001018555821562000276579182015b828111156200027657825182559160200191906001019062000259565b506200028492915062000288565b5090565b620002a591905b808211156200028457600081556001016200028f565b90565b612c8080620002b86000396000f3006080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301162b93811461013757806306fdde031461015a5780632ea9b696146101e45780633af32abf1461021957806347e7ef241461023a57806355246b9c1461025e5780635f02116f146102c757806361a9a8ca1461035557806365d96c82146103765780636eefcab9146103ca57806386bb8f37146103eb5780638f1d377614610406578063a5ba3b1e14610451578063a7aad3db14610475578063b42652e9146104ae578063bc4b010f146104cf578063c8187cf114610536578063dd4e7cfd1461054e578063e1e3f9151461056f578063f3fef3a3146105a0578063f96c8720146105c4578063fc0c546a14610619578063fce1ccca1461062e575b600080fd5b34801561014357600080fd5b50610158600160a060020a0360043516610643565b005b34801561016657600080fd5b5061016f610679565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a9578181015183820152602001610191565b50505050905090810190601f1680156101d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f057600080fd5b50610205600160a060020a0360043516610707565b604080519115158252519081900360200190f35b34801561022557600080fd5b50610205600160a060020a0360043516610843565b34801561024657600080fd5b50610158600160a060020a0360043516602435610869565b34801561026a57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610158948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610a259650505050505050565b3480156102d357600080fd5b506040805160206004803580820135838102808601850190965280855261015895369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610eda9650505050505050565b34801561036157600080fd5b50610205600160a060020a0360043516610fae565b34801561038257600080fd5b50610397600160a060020a0360043516610fca565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b3480156103d657600080fd5b50610205600160a060020a0360043516611005565b3480156103f757600080fd5b50610158600435602435611050565b34801561041257600080fd5b5061041e600435611322565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b34801561045d57600080fd5b50610205600435600160a060020a036024351661135e565b34801561048157600080fd5b5061049c600160a060020a036004351660243560443561138c565b60408051918252519081900360200190f35b3480156104ba57600080fd5b50610158600160a060020a036004351661145b565b3480156104db57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049c958335600160a060020a031695369560449491939091019190819084018382808284375094975061164a9650505050505050565b34801561054257600080fd5b5061049c600435611f39565b34801561055a57600080fd5b50610205600160a060020a0360043516612165565b34801561057b57600080fd5b50610584612207565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b50610158600160a060020a0360043516602435612216565b3480156105d057600080fd5b5060408051602060048035808201358381028086018501909652808552610158953695939460249493850192918291850190849080828437509497506125bc9650505050505050565b34801561062557600080fd5b506105846125f4565b34801561063a57600080fd5b50610584612603565b61064c81612165565b1561065f5761065a81612612565b610676565b61066881610707565b156101325761065a81612696565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b820191906000526020600020905b8154815290600101906020018083116106e257829003601f168201915b505050505081565b600160a060020a03811660009081526001602052604081206003015461072c83611005565b15156107a7576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72204c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b505191505b50919050565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146108e8576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b600280820180548401905554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b505115156109d4576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b6000610a3084610843565b15610a85576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b610a8e84610fae565b15610b09576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050506040513d6020811015610bad57600080fd5b5051831015610c2c576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e00000000000000000000000000000000000000604483015291519395610d1c9592169363693ec85e9360648084019491938390030190829087803b158015610ce357600080fd5b505af1158015610cf7573d6000803e3d6000fd5b505050506040513d6020811015610d0d57600080fd5b5051429063ffffffff6129f516565b81556002808201849055546001820154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b505050506040513d6020811015610dcd57600080fd5b50511515610e13576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610e98578181015183820152602001610e80565b50505050905090810190601f168015610ec55780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050565b8051825160009114610f5c576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b8251811015610fa957610fa18382815181101515610f7a57fe5b906020019060200201518383815181101515610f9257fe5b90602001906020020151611050565b600101610f60565b505050565b600160a060020a03166000908152600160205260408120541190565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a0381166000908152600160205260408120600301548181118015611049575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff16156110c5576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff1615151461113a576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fb43bd06900000000000000000000000000000000000000000000000000000000815233600482015260248101879052604481018690529051600160a060020a039092169163b43bd069916064808201926020929091908290030181600087803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b505050506040513d60208110156111d857600080fd5b505191506111e733858561138c565b6000858152602081815260408083206003810180548890039055805485900381553380855260049182018452828520805460ff19166001179055600254835160e060020a63a9059cbb02815292830191909152602482018690529151949550600160a060020a039091169363a9059cbb93604480840194938390030190829087803b15801561127557600080fd5b505af1158015611289573d6000803e3d6000fd5b505050506040513d602081101561129f57600080fd5b505115156112e5576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152602081815260408083206003808201549154905483517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a905260448201899052945193959294879492169263b43bd0699260648084019382900301818787803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b505050506040513d602081101561143e57600080fd5b505190508282820281151561144f57fe5b04979650505050505050565b600160a060020a0380821660009081526001602081905260409091209081015490913361010090920416146114da576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6114e382610843565b151561155f576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003810154158061158d5750600381015460009081526020819052604090206001015460a060020a900460ff165b1515611609576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b61161282612a02565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b1580156116e257600080fd5b505af11580156116f6573d6000803e3d6000fd5b505050506040513d602081101561170c57600080fd5b5051945061171989610fae565b806117285750600186015460ff165b15156117ca576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b600386015415806117f85750600386015460009081526020819052604090206001015460a060020a900460ff165b1515611874576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b84866002015410156118c65761188989612a02565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a260009650611f2d565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b15801561194d57600080fd5b505af1158015611961573d6000803e3d6000fd5b505050506040513d602081101561197757600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156119f357600080fd5b505af1158015611a07573d6000803e3d6000fd5b505050506040513d6020811015611a1d57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015611a9957600080fd5b505af1158015611aad573d6000803e3d6000fd5b505050506040513d6020811015611ac357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b158015611b2857600080fd5b505af1158015611b3c573d6000803e3d6000fd5b505050506040513d6020811015611b5257600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e484015292519397506064965090928392611c45928892611c39928c92611c2d92600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050506040513d6020811015611c1e57600080fd5b50518a9063ffffffff612be416565b9063ffffffff612bf616565b9063ffffffff612c1f16565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c90039055945485517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b158015611d5e57600080fd5b505af1158015611d72573d6000803e3d6000fd5b505050506040513d6020811015611d8857600080fd5b50511515611dce576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b158015611e3557600080fd5b505af1158015611e49573d6000803e3d6000fd5b505050506040513d60a0811015611e5f57600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b83811015611eed578181015183820152602001611ed5565b50505050905090810190601f168015611f1a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b60008181526020819052604081206001015460a060020a900460ff1615611faa576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561201157600080fd5b505af1158015612025573d6000803e3d6000fd5b505050506040513d602081101561203b57600080fd5b50511515612093576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b1580156120fa57600080fd5b505af115801561210e573d6000803e3d6000fd5b505050506040513d602081101561212457600080fd5b505115156121475750600081815260208190526040902060029081015402610864565b50600090815260208190526040902080546002918201549091020390565b600160a060020a03811660009081526001602052604081206003015461218a83610fae565b80156121ad5750600160a060020a03831660009081526001602052604090205442115b80156121bf57506121bd83610843565b155b80156121f057508015806121f05750600081815260208190526040902060019081015460a060020a900460ff161515145b156121fe576001915061083d565b50600092915050565b600454600160a060020a031681565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314612295576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115612317576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b600381015415806123455750600381015460009081526020819052604090206001015460a060020a900460ff165b1561249a57600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156123c457600080fd5b505af11580156123d8573d6000803e3d6000fd5b505050506040513d60208110156123ee57600080fd5b50516002820154839003101561249a576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156124fb57600080fd5b505af115801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b5051151561256b576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b60005b81518110156125f0576125e882828151811015156125d957fe5b90602001906020020151610643565b6001016125bf565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a0381166000908152600160208190526040909120015460ff16151561266d57604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a038116600090815260016020526040812060030154906126bc82611f39565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561275157600080fd5b505af1158015612765573d6000803e3d6000fd5b505050506040513d602081101561277b57600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156127f557600080fd5b505af1158015612809573d6000803e3d6000fd5b505050506040513d602081101561281f57600080fd5b5051156128a35761282f83612612565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3610fa9565b6128ac83612a02565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b15801561291057600080fd5b505af1158015612924573d6000803e3d6000fd5b505050506040513d602081101561293a57600080fd5b50511515612992576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b8181018281101561138657fe5b600160a060020a0381166000908152600160208190526040822090810154909190819060ff1615612a6657604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a2612a9b565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff19169055928501839055600390940182905561010090920490921691811115612bde576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612b5c57600080fd5b505af1158015612b70573d6000803e3d6000fd5b505050506040513d6020811015612b8657600080fd5b50511515612bde576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b600082821115612bf057fe5b50900390565b6000821515612c0757506000611386565b50818102818382811515612c1757fe5b041461138657fe5b60008183811515612c2c57fe5b0493925050505600546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a723058208727268bdc490006160e8e6fcf5613b8c995495125aaa0531e39d67fd6a530ad0029\",\n  \"deployedBytecode\": \"0x6080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301162b93811461013757806306fdde031461015a5780632ea9b696146101e45780633af32abf1461021957806347e7ef241461023a57806355246b9c1461025e5780635f02116f146102c757806361a9a8ca1461035557806365d96c82146103765780636eefcab9146103ca57806386bb8f37146103eb5780638f1d377614610406578063a5ba3b1e14610451578063a7aad3db14610475578063b42652e9146104ae578063bc4b010f146104cf578063c8187cf114610536578063dd4e7cfd1461054e578063e1e3f9151461056f578063f3fef3a3146105a0578063f96c8720146105c4578063fc0c546a14610619578063fce1ccca1461062e575b600080fd5b34801561014357600080fd5b50610158600160a060020a0360043516610643565b005b34801561016657600080fd5b5061016f610679565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a9578181015183820152602001610191565b50505050905090810190601f1680156101d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f057600080fd5b50610205600160a060020a0360043516610707565b604080519115158252519081900360200190f35b34801561022557600080fd5b50610205600160a060020a0360043516610843565b34801561024657600080fd5b50610158600160a060020a0360043516602435610869565b34801561026a57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610158948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610a259650505050505050565b3480156102d357600080fd5b506040805160206004803580820135838102808601850190965280855261015895369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610eda9650505050505050565b34801561036157600080fd5b50610205600160a060020a0360043516610fae565b34801561038257600080fd5b50610397600160a060020a0360043516610fca565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b3480156103d657600080fd5b50610205600160a060020a0360043516611005565b3480156103f757600080fd5b50610158600435602435611050565b34801561041257600080fd5b5061041e600435611322565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b34801561045d57600080fd5b50610205600435600160a060020a036024351661135e565b34801561048157600080fd5b5061049c600160a060020a036004351660243560443561138c565b60408051918252519081900360200190f35b3480156104ba57600080fd5b50610158600160a060020a036004351661145b565b3480156104db57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049c958335600160a060020a031695369560449491939091019190819084018382808284375094975061164a9650505050505050565b34801561054257600080fd5b5061049c600435611f39565b34801561055a57600080fd5b50610205600160a060020a0360043516612165565b34801561057b57600080fd5b50610584612207565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b50610158600160a060020a0360043516602435612216565b3480156105d057600080fd5b5060408051602060048035808201358381028086018501909652808552610158953695939460249493850192918291850190849080828437509497506125bc9650505050505050565b34801561062557600080fd5b506105846125f4565b34801561063a57600080fd5b50610584612603565b61064c81612165565b1561065f5761065a81612612565b610676565b61066881610707565b156101325761065a81612696565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b820191906000526020600020905b8154815290600101906020018083116106e257829003601f168201915b505050505081565b600160a060020a03811660009081526001602052604081206003015461072c83611005565b15156107a7576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72204c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b505191505b50919050565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146108e8576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b600280820180548401905554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b505115156109d4576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b6000610a3084610843565b15610a85576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b610a8e84610fae565b15610b09576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050506040513d6020811015610bad57600080fd5b5051831015610c2c576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e00000000000000000000000000000000000000604483015291519395610d1c9592169363693ec85e9360648084019491938390030190829087803b158015610ce357600080fd5b505af1158015610cf7573d6000803e3d6000fd5b505050506040513d6020811015610d0d57600080fd5b5051429063ffffffff6129f516565b81556002808201849055546001820154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b158015610da357600080fd5b505af1158015610db7573d6000803e3d6000fd5b505050506040513d6020811015610dcd57600080fd5b50511515610e13576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610e98578181015183820152602001610e80565b50505050905090810190601f168015610ec55780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050565b8051825160009114610f5c576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b8251811015610fa957610fa18382815181101515610f7a57fe5b906020019060200201518383815181101515610f9257fe5b90602001906020020151611050565b600101610f60565b505050565b600160a060020a03166000908152600160205260408120541190565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a0381166000908152600160205260408120600301548181118015611049575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff16156110c5576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff1615151461113a576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fb43bd06900000000000000000000000000000000000000000000000000000000815233600482015260248101879052604481018690529051600160a060020a039092169163b43bd069916064808201926020929091908290030181600087803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b505050506040513d60208110156111d857600080fd5b505191506111e733858561138c565b6000858152602081815260408083206003810180548890039055805485900381553380855260049182018452828520805460ff19166001179055600254835160e060020a63a9059cbb02815292830191909152602482018690529151949550600160a060020a039091169363a9059cbb93604480840194938390030190829087803b15801561127557600080fd5b505af1158015611289573d6000803e3d6000fd5b505050506040513d602081101561129f57600080fd5b505115156112e5576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152602081815260408083206003808201549154905483517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a905260448201899052945193959294879492169263b43bd0699260648084019382900301818787803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b505050506040513d602081101561143e57600080fd5b505190508282820281151561144f57fe5b04979650505050505050565b600160a060020a0380821660009081526001602081905260409091209081015490913361010090920416146114da576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6114e382610843565b151561155f576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003810154158061158d5750600381015460009081526020819052604090206001015460a060020a900460ff165b1515611609576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b61161282612a02565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b1580156116e257600080fd5b505af11580156116f6573d6000803e3d6000fd5b505050506040513d602081101561170c57600080fd5b5051945061171989610fae565b806117285750600186015460ff165b15156117ca576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b600386015415806117f85750600386015460009081526020819052604090206001015460a060020a900460ff165b1515611874576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b84866002015410156118c65761188989612a02565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a260009650611f2d565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b15801561194d57600080fd5b505af1158015611961573d6000803e3d6000fd5b505050506040513d602081101561197757600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156119f357600080fd5b505af1158015611a07573d6000803e3d6000fd5b505050506040513d6020811015611a1d57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015611a9957600080fd5b505af1158015611aad573d6000803e3d6000fd5b505050506040513d6020811015611ac357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b158015611b2857600080fd5b505af1158015611b3c573d6000803e3d6000fd5b505050506040513d6020811015611b5257600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e484015292519397506064965090928392611c45928892611c39928c92611c2d92600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050506040513d6020811015611c1e57600080fd5b50518a9063ffffffff612be416565b9063ffffffff612bf616565b9063ffffffff612c1f16565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c90039055945485517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b158015611d5e57600080fd5b505af1158015611d72573d6000803e3d6000fd5b505050506040513d6020811015611d8857600080fd5b50511515611dce576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b158015611e3557600080fd5b505af1158015611e49573d6000803e3d6000fd5b505050506040513d60a0811015611e5f57600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b83811015611eed578181015183820152602001611ed5565b50505050905090810190601f168015611f1a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b60008181526020819052604081206001015460a060020a900460ff1615611faa576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561201157600080fd5b505af1158015612025573d6000803e3d6000fd5b505050506040513d602081101561203b57600080fd5b50511515612093576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b1580156120fa57600080fd5b505af115801561210e573d6000803e3d6000fd5b505050506040513d602081101561212457600080fd5b505115156121475750600081815260208190526040902060029081015402610864565b50600090815260208190526040902080546002918201549091020390565b600160a060020a03811660009081526001602052604081206003015461218a83610fae565b80156121ad5750600160a060020a03831660009081526001602052604090205442115b80156121bf57506121bd83610843565b155b80156121f057508015806121f05750600081815260208190526040902060019081015460a060020a900460ff161515145b156121fe576001915061083d565b50600092915050565b600454600160a060020a031681565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314612295576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115612317576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b600381015415806123455750600381015460009081526020819052604090206001015460a060020a900460ff165b1561249a57600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156123c457600080fd5b505af11580156123d8573d6000803e3d6000fd5b505050506040513d60208110156123ee57600080fd5b50516002820154839003101561249a576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156124fb57600080fd5b505af115801561250f573d6000803e3d6000fd5b505050506040513d602081101561252557600080fd5b5051151561256b576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612c35833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b60005b81518110156125f0576125e882828151811015156125d957fe5b90602001906020020151610643565b6001016125bf565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a0381166000908152600160208190526040909120015460ff16151561266d57604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a038116600090815260016020526040812060030154906126bc82611f39565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561275157600080fd5b505af1158015612765573d6000803e3d6000fd5b505050506040513d602081101561277b57600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156127f557600080fd5b505af1158015612809573d6000803e3d6000fd5b505050506040513d602081101561281f57600080fd5b5051156128a35761282f83612612565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3610fa9565b6128ac83612a02565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b15801561291057600080fd5b505af1158015612924573d6000803e3d6000fd5b505050506040513d602081101561293a57600080fd5b50511515612992576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b8181018281101561138657fe5b600160a060020a0381166000908152600160208190526040822090810154909190819060ff1615612a6657604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a2612a9b565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff19169055928501839055600390940182905561010090920490921691811115612bde576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612b5c57600080fd5b505af1158015612b70573d6000803e3d6000fd5b505050506040513d6020811015612b8657600080fd5b50511515612bde576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b600082821115612bf057fe5b50900390565b6000821515612c0757506000611386565b50818102818382811515612c1757fe5b041461138657fe5b60008183811515612c2c57fe5b0493925050505600546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a723058208727268bdc490006160e8e6fcf5613b8c995495125aaa0531e39d67fd6a530ad0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"listings\",\n      \"outputs\": [\n        {\n          \"name\": \"applicationExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"unstakedDeposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challenges\",\n      \"outputs\": [\n        {\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"resolved\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"stake\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"parameterizer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_token\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_voting\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_parameterizer\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"applicant\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Application\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Challenge\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"added\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Deposit\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"withdrew\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Withdrawal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationWhitelisted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingWithdrawn\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_TouchAndRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeSucceeded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_RewardClaimed\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"apply\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"deposit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdraw\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"exit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"challenge\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"updateStatus\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddresses\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"name\": \"updateStatuses\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"claimRewards\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"voterReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"canBeWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"appWasMade\",\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"determineReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"tokenClaims\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/AttributeStore.json",
    "content": "{\n  \"contractName\": \"AttributeStore\",\n  \"bytecode\": \"0x610257610030600b82828239805160001a6073146000811461002057610022565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600436106100625763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166350389f5c8114610067578063977aa031146100cc575b600080fd5b604080516020600460443581810135601f81018490048402850184019095528484526100ba9482359460248035953695946064949201919081908401838280828437509497506101309650505050505050565b60408051918252519081900360200190f35b8180156100d857600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261012e94823594602480359536959460649492019190819084018382808284375094975050933594506101ae9350505050565b005b6040518281528151600091829185918591602080830191908401908083835b6020831061016e5780518252601f19909201916020918201910161014f565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060009081529a90525090972054979650505050505050565b60405183815282516000918591859190602080830191908401908083835b602083106101eb5780518252601f1990920191602091820191016101cc565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060009081529a905250909720939093555050505050505600a165627a7a7230582079ab66d305fc0d9403e2a82ed5a7c4091142c9ec363996370b09386ef5b19a420029\",\n  \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600436106100625763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166350389f5c8114610067578063977aa031146100cc575b600080fd5b604080516020600460443581810135601f81018490048402850184019095528484526100ba9482359460248035953695946064949201919081908401838280828437509497506101309650505050505050565b60408051918252519081900360200190f35b8180156100d857600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261012e94823594602480359536959460649492019190819084018382808284375094975050933594506101ae9350505050565b005b6040518281528151600091829185918591602080830191908401908083835b6020831061016e5780518252601f19909201916020918201910161014f565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060009081529a90525090972054979650505050505050565b60405183815282516000918591859190602080830191908401908083835b602083106101eb5780518252601f1990920191602091820191016101cc565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912060009081529a905250909720939093555050505050505600a165627a7a7230582079ab66d305fc0d9403e2a82ed5a7c4091142c9ec363996370b09386ef5b19a420029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"AttributeStore.Data storage\"\n        },\n        {\n          \"name\": \"_UUID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"_attrName\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"getAttribute\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"AttributeStore.Data storage\"\n        },\n        {\n          \"name\": \"_UUID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"_attrName\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"_attrVal\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"setAttribute\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x393e69e7ae7addcfd744b71d209b1f04800d89e5\",\n      \"transactionHash\": \"0xcea1feb4c485e63783277ec35149e56f369d3c51da96f3a13825bc28bcbe5207\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x0584ee9107eebfc100994ad88c380fb8108fbc2d\",\n      \"transactionHash\": \"0xcac7087ae3bd4989c4f046354760c689c8dde25f87878b91b39388285fdee4cb\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/CVLToken.json",
    "content": "{\n  \"contractName\": \"CVLToken\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b50604051620011dc380380620011dc83398101604090815281516020808401519284015160608501516080860151948601805194969095929491019285918491869162000065916003919086019062000229565b5081516200007b90600490602085019062000229565b506005805460ff191660ff929092169190911761010060a860020a03191661010033021790555050600160a060020a03811615156200011b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e74726f6c6c6572206e6f742070726f7669646564000000000000000000604482015290519081900360640190fd5b60068054600160a060020a031916600160a060020a0383161790556200014b338664010000000062000156810204565b5050505050620002ce565b600160a060020a03821615156200016c57600080fd5b60025462000189908264010000000062000d416200021582021704565b600255600160a060020a038216600090815260208190526040902054620001bf908264010000000062000d416200021582021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b818101828110156200022357fe5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026c57805160ff19168380011785556200029c565b828001600101855582156200029c579182015b828111156200029c5782518255916020019190600101906200027f565b50620002aa929150620002ae565b5090565b620002cb91905b80821115620002aa5760008155600101620002b5565b90565b610efe80620002de6000396000f3006080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e9578063313ce56714610213578063395093511461023e5780633cebb8231461026257806370a0823114610285578063715018a6146102a65780637f4ab1dd146102bb5780638da5cb5b146102d657806395d89b4114610307578063a457c2d71461031c578063a9059cbb14610340578063d4ce141514610364578063dd62ed3e1461038e578063f2fde38b146103b5578063f77c4791146103d6575b600080fd5b34801561010c57600080fd5b506101156103eb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a0360043516602435610481565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d76104ff565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610505565b34801561021f57600080fd5b5061022861061e565b6040805160ff9092168252519081900360200190f35b34801561024a57600080fd5b506101ae600160a060020a0360043516602435610627565b34801561026e57600080fd5b50610283600160a060020a03600435166106d7565b005b34801561029157600080fd5b506101d7600160a060020a03600435166107cd565b3480156102b257600080fd5b506102836107e8565b3480156102c757600080fd5b5061011560ff600435166108ab565b3480156102e257600080fd5b506102eb6109a1565b60408051600160a060020a039092168252519081900360200190f35b34801561031357600080fd5b506101156109b5565b34801561032857600080fd5b506101ae600160a060020a0360043516602435610a16565b34801561034c57600080fd5b506101ae600160a060020a0360043516602435610a61565b34801561037057600080fd5b50610228600160a060020a0360043581169060243516604435610b79565b34801561039a57600080fd5b506101d7600160a060020a0360043581169060243516610c27565b3480156103c157600080fd5b50610283600160a060020a0360043516610c52565b3480156103e257600080fd5b506102eb610cc5565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104775780601f1061044c57610100808354040283529160200191610477565b820191906000526020600020905b81548152906001019060200180831161045a57829003601f168201915b5050505050905090565b6000600160a060020a038316151561049857600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600654604080517fd4ce1415000000000000000000000000000000000000000000000000000000008152600160a060020a0380871660048301528086166024830152604482018590529151600093879387938793919092169163d4ce141591606480830192602092919082900301818a87803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b505160ff1615610608576040805160e560020a62461bcd02815260206004820152601960248201527f746f6b656e207472616e73666572207265737472696374656400000000000000604482015290519081900360640190fd5b610613878787610cd4565b979650505050505050565b60055460ff1690565b6000600160a060020a038316151561063e57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610672908363ffffffff610d4116565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6005546101009004600160a060020a0316331461073e576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561079e576040805160e560020a62461bcd02815260206004820152601760248201527f636f6e74726f6c6c6572206e6f742070726f7669646564000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526020819052604090205490565b6005546101009004600160a060020a0316331461084f576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600554604051610100909104600160a060020a0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26005805474ffffffffffffffffffffffffffffffffffffffff0019169055565b600654604080517f7f4ab1dd00000000000000000000000000000000000000000000000000000000815260ff841660048201529051606092600160a060020a031691637f4ab1dd91602480830192600092919082900301818387803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561095057600080fd5b81019080805164010000000081111561096857600080fd5b8201602081018481111561097b57600080fd5b815164010000000081118282018710171561099557600080fd5b50909695505050505050565b6005546101009004600160a060020a031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104775780601f1061044c57610100808354040283529160200191610477565b6000600160a060020a0383161515610a2d57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610672908363ffffffff610d5416565b600654604080517fd4ce14150000000000000000000000000000000000000000000000000000000081523360048201819052600160a060020a038087166024840152604483018690529251600094919387938793919091169163d4ce14159160648082019260209290919082900301818a87803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050506040513d6020811015610b0b57600080fd5b505160ff1615610b65576040805160e560020a62461bcd02815260206004820152601960248201527f746f6b656e207472616e73666572207265737472696374656400000000000000604482015290519081900360640190fd5b610b6f8686610d66565b9695505050505050565b600654604080517fd4ce1415000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152604482018590529151600093929092169163d4ce14159160648082019260209290919082900301818787803b158015610bf357600080fd5b505af1158015610c07573d6000803e3d6000fd5b505050506040513d6020811015610c1d57600080fd5b5051949350505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6005546101009004600160a060020a03163314610cb9576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610cc281610d7c565b50565b600654600160a060020a031681565b600160a060020a0383166000908152600160209081526040808320338452909152812054610d08908363ffffffff610d5416565b600160a060020a0385166000908152600160209081526040808320338452909152902055610d37848484610e05565b5060019392505050565b81810182811015610d4e57fe5b92915050565b600082821115610d6057fe5b50900390565b6000610d73338484610e05565b50600192915050565b600160a060020a0381161515610d9157600080fd5b600554604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360058054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600160a060020a0382161515610e1a57600080fd5b600160a060020a038316600090815260208190526040902054610e43908263ffffffff610d5416565b600160a060020a038085166000908152602081905260408082209390935590841681522054610e78908263ffffffff610d4116565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505600a165627a7a72305820dac04f05458cdeb4af0f3e06354cc2974db1073b65c7dde071a446ac4443cfc30029\",\n  \"deployedBytecode\": \"0x6080604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610100578063095ea7b31461018a57806318160ddd146101c257806323b872dd146101e9578063313ce56714610213578063395093511461023e5780633cebb8231461026257806370a0823114610285578063715018a6146102a65780637f4ab1dd146102bb5780638da5cb5b146102d657806395d89b4114610307578063a457c2d71461031c578063a9059cbb14610340578063d4ce141514610364578063dd62ed3e1461038e578063f2fde38b146103b5578063f77c4791146103d6575b600080fd5b34801561010c57600080fd5b506101156103eb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019657600080fd5b506101ae600160a060020a0360043516602435610481565b604080519115158252519081900360200190f35b3480156101ce57600080fd5b506101d76104ff565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101ae600160a060020a0360043581169060243516604435610505565b34801561021f57600080fd5b5061022861061e565b6040805160ff9092168252519081900360200190f35b34801561024a57600080fd5b506101ae600160a060020a0360043516602435610627565b34801561026e57600080fd5b50610283600160a060020a03600435166106d7565b005b34801561029157600080fd5b506101d7600160a060020a03600435166107cd565b3480156102b257600080fd5b506102836107e8565b3480156102c757600080fd5b5061011560ff600435166108ab565b3480156102e257600080fd5b506102eb6109a1565b60408051600160a060020a039092168252519081900360200190f35b34801561031357600080fd5b506101156109b5565b34801561032857600080fd5b506101ae600160a060020a0360043516602435610a16565b34801561034c57600080fd5b506101ae600160a060020a0360043516602435610a61565b34801561037057600080fd5b50610228600160a060020a0360043581169060243516604435610b79565b34801561039a57600080fd5b506101d7600160a060020a0360043581169060243516610c27565b3480156103c157600080fd5b50610283600160a060020a0360043516610c52565b3480156103e257600080fd5b506102eb610cc5565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104775780601f1061044c57610100808354040283529160200191610477565b820191906000526020600020905b81548152906001019060200180831161045a57829003601f168201915b5050505050905090565b6000600160a060020a038316151561049857600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600654604080517fd4ce1415000000000000000000000000000000000000000000000000000000008152600160a060020a0380871660048301528086166024830152604482018590529151600093879387938793919092169163d4ce141591606480830192602092919082900301818a87803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b505160ff1615610608576040805160e560020a62461bcd02815260206004820152601960248201527f746f6b656e207472616e73666572207265737472696374656400000000000000604482015290519081900360640190fd5b610613878787610cd4565b979650505050505050565b60055460ff1690565b6000600160a060020a038316151561063e57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610672908363ffffffff610d4116565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6005546101009004600160a060020a0316331461073e576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561079e576040805160e560020a62461bcd02815260206004820152601760248201527f636f6e74726f6c6c6572206e6f742070726f7669646564000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526020819052604090205490565b6005546101009004600160a060020a0316331461084f576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600554604051610100909104600160a060020a0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26005805474ffffffffffffffffffffffffffffffffffffffff0019169055565b600654604080517f7f4ab1dd00000000000000000000000000000000000000000000000000000000815260ff841660048201529051606092600160a060020a031691637f4ab1dd91602480830192600092919082900301818387803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561095057600080fd5b81019080805164010000000081111561096857600080fd5b8201602081018481111561097b57600080fd5b815164010000000081118282018710171561099557600080fd5b50909695505050505050565b6005546101009004600160a060020a031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104775780601f1061044c57610100808354040283529160200191610477565b6000600160a060020a0383161515610a2d57600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610672908363ffffffff610d5416565b600654604080517fd4ce14150000000000000000000000000000000000000000000000000000000081523360048201819052600160a060020a038087166024840152604483018690529251600094919387938793919091169163d4ce14159160648082019260209290919082900301818a87803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050506040513d6020811015610b0b57600080fd5b505160ff1615610b65576040805160e560020a62461bcd02815260206004820152601960248201527f746f6b656e207472616e73666572207265737472696374656400000000000000604482015290519081900360640190fd5b610b6f8686610d66565b9695505050505050565b600654604080517fd4ce1415000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301528581166024830152604482018590529151600093929092169163d4ce14159160648082019260209290919082900301818787803b158015610bf357600080fd5b505af1158015610c07573d6000803e3d6000fd5b505050506040513d6020811015610c1d57600080fd5b5051949350505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6005546101009004600160a060020a03163314610cb9576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610cc281610d7c565b50565b600654600160a060020a031681565b600160a060020a0383166000908152600160209081526040808320338452909152812054610d08908363ffffffff610d5416565b600160a060020a0385166000908152600160209081526040808320338452909152902055610d37848484610e05565b5060019392505050565b81810182811015610d4e57fe5b92915050565b600082821115610d6057fe5b50900390565b6000610d73338484610e05565b50600192915050565b600160a060020a0381161515610d9157600080fd5b600554604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360058054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600160a060020a0382161515610e1a57600080fd5b600160a060020a038316600090815260208190526040902054610e43908263ffffffff610d5416565b600160a060020a038085166000908152602081905260408082209390935590841681522054610e78908263ffffffff610d4116565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505600a165627a7a72305820dac04f05458cdeb4af0f3e06354cc2974db1073b65c7dde071a446ac4443cfc30029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"decimals\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"addedValue\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"increaseAllowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"symbol\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"subtractedValue\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"decreaseAllowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"controller\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_initialAmount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_tokenName\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"_decimalUnits\",\n          \"type\": \"uint8\"\n        },\n        {\n          \"name\": \"_tokenSymbol\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"_controller\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_controller\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"changeController\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"name\": \"success\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"name\": \"success\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"detectTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"restrictionCode\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"name\": \"messageForTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {\n        \"0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"previousOwner\",\n              \"type\": \"address\"\n            }\n          ],\n          \"name\": \"OwnershipRenounced\",\n          \"type\": \"event\"\n        },\n        \"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"previousOwner\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": true,\n              \"name\": \"newOwner\",\n              \"type\": \"address\"\n            }\n          ],\n          \"name\": \"OwnershipTransferred\",\n          \"type\": \"event\"\n        },\n        \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"from\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": true,\n              \"name\": \"to\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": false,\n              \"name\": \"value\",\n              \"type\": \"uint256\"\n            }\n          ],\n          \"name\": \"Transfer\",\n          \"type\": \"event\"\n        },\n        \"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"owner\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": true,\n              \"name\": \"spender\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": false,\n              \"name\": \"value\",\n              \"type\": \"uint256\"\n            }\n          ],\n          \"name\": \"Approval\",\n          \"type\": \"event\"\n        }\n      },\n      \"links\": {},\n      \"address\": \"0x01FA555c97D7958Fa6f771f3BbD5CCD508f81e22\",\n      \"transactionHash\": \"0x2fec07865194447d25786ecf846adfa067de02db8750a5aaa7d256e2aa050504\"\n    },\n    \"4\": {\n      \"events\": {\n        \"0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"previousOwner\",\n              \"type\": \"address\"\n            }\n          ],\n          \"name\": \"OwnershipRenounced\",\n          \"type\": \"event\"\n        },\n        \"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"previousOwner\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": true,\n              \"name\": \"newOwner\",\n              \"type\": \"address\"\n            }\n          ],\n          \"name\": \"OwnershipTransferred\",\n          \"type\": \"event\"\n        },\n        \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"from\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": true,\n              \"name\": \"to\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": false,\n              \"name\": \"value\",\n              \"type\": \"uint256\"\n            }\n          ],\n          \"name\": \"Transfer\",\n          \"type\": \"event\"\n        },\n        \"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\": {\n          \"anonymous\": false,\n          \"inputs\": [\n            {\n              \"indexed\": true,\n              \"name\": \"owner\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": true,\n              \"name\": \"spender\",\n              \"type\": \"address\"\n            },\n            {\n              \"indexed\": false,\n              \"name\": \"value\",\n              \"type\": \"uint256\"\n            }\n          ],\n          \"name\": \"Approval\",\n          \"type\": \"event\"\n        }\n      },\n      \"links\": {},\n      \"address\": \"0x3e39fa983abcd349d95aed608e798817397cf0d1\",\n      \"transactionHash\": \"0x94724e5f073881e2af29d03e87af8d83c07408dbcba3bc08fcd3a9e516af28b3\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/CivilPLCRVoting.json",
    "content": "{\n  \"contractName\": \"CivilPLCRVoting\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50604051604080611eb583398101604052805160209091015181600160a060020a038116151561003f57600080fd5b60058054600160a060020a031916600160a060020a03928316179055600080558116151561006c57600080fd5b60068054600160a060020a031916600160a060020a039290921691909117905550611e198061009c6000396000f3006080604052600436106101925763ffffffff60e060020a600035041663053e71a681146101975780632173a10f146101c15780632c052031146101d657806332ed3d60146101fd5780633b9302941461021b5780633ec36b991461023c57806340f41c1914610282578063427fa1d2146102b3578063441c77c0146102d457806349403183146103005780636148fed5146103185780636afa97a81461035b5780636b2d95d4146103825780636cbf9c5e146103a35780637f97e836146103c45780638090f92e146103e8578063819b02931461042057806388d21ff31461044a57806397508f36146104625780639760356014610477578063a1103f371461048f578063a25236fe146104b3578063a4439dc5146104cb578063aa7ca464146104e3578063b11d8bb814610507578063b43bd06914610525578063bb11ed7e1461054c578063d1382092146105a1578063d901402b146105c5578063d9548e53146105e9578063e7b1d43c14610601578063e8cfa3f014610619578063ee68483014610631578063fc0c546a14610649575b600080fd5b3480156101a357600080fd5b506101af60043561065e565b60408051918252519081900360200190f35b3480156101cd57600080fd5b506101af6106b3565b3480156101e257600080fd5b506101af600160a060020a03600435166024356044356106b8565b34801561020957600080fd5b506101af600435602435604435610881565b34801561022757600080fd5b506101af600160a060020a036004351661095d565b34801561024857600080fd5b50610280602460048035828101929082013591813580830192908201359160443580830192908201359160643591820191013561096f565b005b34801561028e57600080fd5b50610297610a0f565b60408051600160a060020a039092168252519081900360200190f35b3480156102bf57600080fd5b506101af600160a060020a0360043516610a1e565b3480156102e057600080fd5b506102ec600435610ad8565b604080519115158252519081900360200190f35b34801561030c57600080fd5b506102ec600435610b23565b34801561032457600080fd5b50610330600435610ba0565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561036757600080fd5b506101af600160a060020a0360043516602435604435610bce565b34801561038e57600080fd5b506101af600160a060020a0360043516610c85565b3480156103af57600080fd5b50610280600435602435604435606435610c99565b3480156103d057600080fd5b506102ec600160a060020a036004351660243561120b565b3480156103f457600080fd5b506102806024600480358281019290820135918135808301929082013591604435918201910135611250565b34801561042c57600080fd5b506102ec600435602435600160a060020a03604435166064356112cc565b34801561045657600080fd5b506102ec60043561130a565b34801561046e57600080fd5b506101af61131f565b34801561048357600080fd5b50610280600435611325565b34801561049b57600080fd5b506101af600160a060020a03600435166024356114c9565b3480156104bf57600080fd5b50610280600435611500565b3480156104d757600080fd5b506102ec60043561159a565b3480156104ef57600080fd5b506102ec600160a060020a03600435166024356115c8565b34801561051357600080fd5b5061028060043560243560443561160d565b34801561053157600080fd5b506101af600160a060020a0360043516602435604435611810565b34801561055857600080fd5b50604080516020600480358082013583810280860185019096528085526102809536959394602494938501929182918501908490808284375094975061189c9650505050505050565b3480156105ad57600080fd5b506101af600160a060020a03600435166024356118d4565b3480156105d157600080fd5b506101af600160a060020a03600435166024356119a6565b3480156105f557600080fd5b506102ec600435611a45565b34801561060d57600080fd5b50610280600435611a4a565b34801561062557600080fd5b506101af600435611b76565b34801561063d57600080fd5b506102ec600435611bca565b34801561065557600080fd5b50610297611bfc565b600061066982611bca565b151561067457600080fd5b61067d82610b23565b1561069a57506000818152600160205260409020600301546106ae565b506000818152600160205260409020600401545b919050565b600081565b60008060006106c686610a1e565b91506106d286836118d4565b90505b8115610874576106e586836118d4565b90508481116107b757838214156107af57600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b15801561078057600080fd5b505af4158015610794573d6000803e3d6000fd5b505050506040513d60208110156107aa57600080fd5b505191505b819250610878565b600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b15801561084157600080fd5b505af4158015610855573d6000803e3d6000fd5b505050506040513d602081101561086b57600080fd5b505191506106d5565b8192505b50509392505050565b600080546001018155808061089c428663ffffffff611c0b16565b91506108ae828563ffffffff611c0b16565b6040805160a08101825284815260208082018481528284018b8152600060608086018281526080870183815283548452600180885289852098518955955195880195909555925160028701559151600386015591516004909401939093555483518b8152918201879052818401859052925193945033937f404f1f1c229d9eb2a949e7584da6ffde9d059ef2169f487ca815434cce0640d0929181900390910190a35050600054949350505050565b60026020526000908152604090205481565b600087861461097d57600080fd5b87841461098957600080fd5b87821461099557600080fd5b5060005b87811015610a04576109fc8989838181106109b057fe5b9050602002013588888481811015156109c557fe5b602002919091013590508787858181106109db57fe5b9050602002013586868681811015156109f057fe5b90506020020135610c99565b600101610999565b505050505050505050565b600654600160a060020a031681565b600160a060020a038116600090815260036020908152604080832081517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________926330fe0a0a9260448082019391829003018186803b158015610aa657600080fd5b505af4158015610aba573d6000803e3d6000fd5b505050506040513d6020811015610ad057600080fd5b505192915050565b6000610ae38261130a565b1515610aee57600080fd5b60008281526001602081905260409091200154610b0a90611a45565b158015610b1d5750610b1b8261159a565b155b92915050565b6000610b2d611dbd565b610b3683611bca565b1515610b4157600080fd5b5050600090815260016020818152604092839020835160a0810185528154815292810154918301919091526002810154928201839052600381015460608301819052600490910154608090920182905290810190910260649091021190565b6001602081905260009182526040909120805491810154600282015460038301546004909301549192909185565b600080600080610bdd86611bca565b1515610be857600080fd5b6000868152600160209081526040808320600160a060020a038b16845260060190915290205460ff161515610c1c57600080fd5b610c2586610b23565b610c30576001610c33565b60005b60ff1692508285604051808381526020018281526020019250505060405180910390209150610c6287876119a6565b9050818114610c7057600080fd5b610c7a87876118d4565b979650505050505050565b6000610b1d82610c9484610a1e565b6118d4565b6000806000610ca78761159a565b1515610cb257600080fd5b33600090815260026020526040902054851115610cf55733600090815260026020526040902054610cea90869063ffffffff611c1816565b9250610cf583611500565b33600090815260026020526040902054851115610d1157600080fd5b861515610d1d57600080fd5b851515610d2957600080fd5b831580610ddf57503360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b158015610db257600080fd5b505af4158015610dc6573d6000803e3d6000fd5b505050506040513d6020811015610ddc57600080fd5b50515b1515610dea57600080fd5b3360009081526003602090815260409182902082517f07d29ac9000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610e6b57600080fd5b505af4158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b5051915086821415610f51573360009081526003602090815260409182902082517f07d29ac90000000000000000000000000000000000000000000000000000000081526004810191909152602481018a9052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610f2257600080fd5b505af4158015610f36573d6000803e3d6000fd5b505050506040513d6020811015610f4c57600080fd5b505191505b610f5d848333886112cc565b1515610f6857600080fd5b3360009081526003602052604080822081517f9735c51b000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052604481018a905260648101859052905173__DLL___________________________________92639735c51b9260848082019391829003018186803b158015610ff357600080fd5b505af4158015611007573d6000803e3d6000fd5b5050505061101533886114c9565b604080517f977aa031000000000000000000000000000000000000000000000000000000008152600481810152602481018390526064810188905260806044820152600960848201527f6e756d546f6b656e73000000000000000000000000000000000000000000000060a4820152905191925073__AttributeStore________________________9163977aa0319160c480820192600092909190829003018186803b1580156110c557600080fd5b505af41580156110d9573d6000803e3d6000fd5b5050604080517f977aa03100000000000000000000000000000000000000000000000000000000815260048181015260248101859052606481018a905260806044820152600a60848201527f636f6d6d6974486173680000000000000000000000000000000000000000000060a4820152905173__AttributeStore________________________935063977aa031925060c4808301926000929190829003018186803b15801561118957600080fd5b505af415801561119d573d6000803e3d6000fd5b5050506000888152600160208181526040808420338086526005909101835293819020805460ff1916909317909255815189815291519293508a927fea7979e4280d7e6bffc1c7d83a1ac99f16d02ecc14465ce41016226783b663d79281900390910190a350505050505050565b60006112168261130a565b151561122157600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260059093019052205460ff1690565b600085841461125e57600080fd5b85821461126a57600080fd5b5060005b858110156112c3576112bb87878381811061128557fe5b90506020020135868684818110151561129a57fe5b9050602002013585858581811015156112af57fe5b9050602002013561160d565b60010161126e565b50505050505050565b60008060006112db85886118d4565b84101591506112ea85876118d4565b841115806112f6575085155b9050818015610c7a57509695505050505050565b60008115801590610b1d575050600054101590565b60005481565b6000818152600160208190526040909120015461134190611a45565b151561134c57600080fd5b3360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b1580156113cd57600080fd5b505af41580156113e1573d6000803e3d6000fd5b505050506040513d60208110156113f757600080fd5b5051151561140457600080fd5b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561148157600080fd5b505af4158015611495573d6000803e3d6000fd5b50506040513392508391507f402507661c8c8cb90e0a796450b8bdd28b6c516f05279c0cd29e84c344e1699a90600090a350565b604080516c01000000000000000000000000600160a060020a03851602815260148101839052905190819003603401902092915050565b61150981611c2a565b600654336000818152600260205260408082205481517f725248730000000000000000000000000000000000000000000000000000000081526004810194909452602484015251600160a060020a0390931692637252487392604480820193929182900301818387803b15801561157f57600080fd5b505af1158015611593573d6000803e3d6000fd5b5050505050565b60006115a58261130a565b15156115b057600080fd5b600082815260016020526040902054610b1b90611a45565b60006115d38261130a565b15156115de57600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260069093019052205460ff1690565b600061161884610ad8565b151561162357600080fd5b600084815260016020908152604080832033845260050190915290205460ff16151561164e57600080fd5b600084815260016020908152604080832033845260060190915290205460ff161561167857600080fd5b61168233856119a6565b60408051858152602081018590528151908190039091019020146116a557600080fd5b6116af33856118d4565b905082600114156116d65760008481526001602052604090206003018054820190556116ee565b60008481526001602052604090206004018054820190555b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561176b57600080fd5b505af415801561177f573d6000803e3d6000fd5b505050600085815260016020818152604080842033808652600682018452828620805460ff191686179055948a9052928252600383015460049093015481518781529283019390935281810192909252606081018690529051919250859187917f9b19aaec524fad29c0ced9b9973a15e3045d7c3be156d71394ab40f0d5f119ff919081900360800190a450505050565b60008060008061181f86611bca565b151561182a57600080fd5b6000868152600160209081526040808320600160a060020a038b16845260060190915290205460ff16151561185e57600080fd5b61186786610b23565b611872576000610c33565b6040805160018082526020820188905282519182900390920190209093509150610c6287876119a6565b60005b81518110156118d0576118c882828151811015156118b957fe5b90602001906020020151611325565b60010161189f565b5050565b600073__AttributeStore________________________6350389f5c60046118fc86866114c9565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600960648301527f6e756d546f6b656e73000000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561197357600080fd5b505af4158015611987573d6000803e3d6000fd5b505050506040513d602081101561199d57600080fd5b50519392505050565b600073__AttributeStore________________________6350389f5c60046119ce86866114c9565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600a60648301527f636f6d6d6974486173680000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561197357600080fd5b421190565b6000611a74611a5833610c85565b336000908152600260205260409020549063ffffffff611c1816565b905081811015611a8357600080fd5b3360008181526002602090815260408083208054879003905560055481517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810195909552602485018790529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015611b0557600080fd5b505af1158015611b19573d6000803e3d6000fd5b505050506040513d6020811015611b2f57600080fd5b50511515611b3c57600080fd5b60408051838152905133917ffaeb7dbb9992397d26ea1944efd40c80b40f702faf69b46c67ad10aba68ccb79919081900360200190a25050565b6000611b8182611bca565b1515611b8c57600080fd5b611b9582610b23565b15611bb257506000818152600160205260409020600401546106ae565b506000818152600160205260409020600301546106ae565b6000611bd58261130a565b1515611be057600080fd5b60008281526001602081905260409091200154610b1d90611a45565b600554600160a060020a031681565b81810182811015610b1d57fe5b600082821115611c2457fe5b50900390565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518392600160a060020a0316916370a082319160248083019260209291908290030181600087803b158015611c8f57600080fd5b505af1158015611ca3573d6000803e3d6000fd5b505050506040513d6020811015611cb957600080fd5b50511015611cc657600080fd5b33600081815260026020908152604080832080548601905560055481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018690529051600160a060020a03909116936323b872dd9360648083019493928390030190829087803b158015611d4d57600080fd5b505af1158015611d61573d6000803e3d6000fd5b505050506040513d6020811015611d7757600080fd5b50511515611d8457600080fd5b60408051828152905133917ff7aaf024511d9982df8cd0d437c71c30106e6848cd1ba3d288d7a9c0e276aeda919081900360200190a250565b60a060405190810160405280600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820dfb0bd5ea70ad6f1df929d57bad9a8a3a61facd419e162e3168c26c446d299260029\",\n  \"deployedBytecode\": \"0x6080604052600436106101925763ffffffff60e060020a600035041663053e71a681146101975780632173a10f146101c15780632c052031146101d657806332ed3d60146101fd5780633b9302941461021b5780633ec36b991461023c57806340f41c1914610282578063427fa1d2146102b3578063441c77c0146102d457806349403183146103005780636148fed5146103185780636afa97a81461035b5780636b2d95d4146103825780636cbf9c5e146103a35780637f97e836146103c45780638090f92e146103e8578063819b02931461042057806388d21ff31461044a57806397508f36146104625780639760356014610477578063a1103f371461048f578063a25236fe146104b3578063a4439dc5146104cb578063aa7ca464146104e3578063b11d8bb814610507578063b43bd06914610525578063bb11ed7e1461054c578063d1382092146105a1578063d901402b146105c5578063d9548e53146105e9578063e7b1d43c14610601578063e8cfa3f014610619578063ee68483014610631578063fc0c546a14610649575b600080fd5b3480156101a357600080fd5b506101af60043561065e565b60408051918252519081900360200190f35b3480156101cd57600080fd5b506101af6106b3565b3480156101e257600080fd5b506101af600160a060020a03600435166024356044356106b8565b34801561020957600080fd5b506101af600435602435604435610881565b34801561022757600080fd5b506101af600160a060020a036004351661095d565b34801561024857600080fd5b50610280602460048035828101929082013591813580830192908201359160443580830192908201359160643591820191013561096f565b005b34801561028e57600080fd5b50610297610a0f565b60408051600160a060020a039092168252519081900360200190f35b3480156102bf57600080fd5b506101af600160a060020a0360043516610a1e565b3480156102e057600080fd5b506102ec600435610ad8565b604080519115158252519081900360200190f35b34801561030c57600080fd5b506102ec600435610b23565b34801561032457600080fd5b50610330600435610ba0565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561036757600080fd5b506101af600160a060020a0360043516602435604435610bce565b34801561038e57600080fd5b506101af600160a060020a0360043516610c85565b3480156103af57600080fd5b50610280600435602435604435606435610c99565b3480156103d057600080fd5b506102ec600160a060020a036004351660243561120b565b3480156103f457600080fd5b506102806024600480358281019290820135918135808301929082013591604435918201910135611250565b34801561042c57600080fd5b506102ec600435602435600160a060020a03604435166064356112cc565b34801561045657600080fd5b506102ec60043561130a565b34801561046e57600080fd5b506101af61131f565b34801561048357600080fd5b50610280600435611325565b34801561049b57600080fd5b506101af600160a060020a03600435166024356114c9565b3480156104bf57600080fd5b50610280600435611500565b3480156104d757600080fd5b506102ec60043561159a565b3480156104ef57600080fd5b506102ec600160a060020a03600435166024356115c8565b34801561051357600080fd5b5061028060043560243560443561160d565b34801561053157600080fd5b506101af600160a060020a0360043516602435604435611810565b34801561055857600080fd5b50604080516020600480358082013583810280860185019096528085526102809536959394602494938501929182918501908490808284375094975061189c9650505050505050565b3480156105ad57600080fd5b506101af600160a060020a03600435166024356118d4565b3480156105d157600080fd5b506101af600160a060020a03600435166024356119a6565b3480156105f557600080fd5b506102ec600435611a45565b34801561060d57600080fd5b50610280600435611a4a565b34801561062557600080fd5b506101af600435611b76565b34801561063d57600080fd5b506102ec600435611bca565b34801561065557600080fd5b50610297611bfc565b600061066982611bca565b151561067457600080fd5b61067d82610b23565b1561069a57506000818152600160205260409020600301546106ae565b506000818152600160205260409020600401545b919050565b600081565b60008060006106c686610a1e565b91506106d286836118d4565b90505b8115610874576106e586836118d4565b90508481116107b757838214156107af57600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b15801561078057600080fd5b505af4158015610794573d6000803e3d6000fd5b505050506040513d60208110156107aa57600080fd5b505191505b819250610878565b600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b15801561084157600080fd5b505af4158015610855573d6000803e3d6000fd5b505050506040513d602081101561086b57600080fd5b505191506106d5565b8192505b50509392505050565b600080546001018155808061089c428663ffffffff611c0b16565b91506108ae828563ffffffff611c0b16565b6040805160a08101825284815260208082018481528284018b8152600060608086018281526080870183815283548452600180885289852098518955955195880195909555925160028701559151600386015591516004909401939093555483518b8152918201879052818401859052925193945033937f404f1f1c229d9eb2a949e7584da6ffde9d059ef2169f487ca815434cce0640d0929181900390910190a35050600054949350505050565b60026020526000908152604090205481565b600087861461097d57600080fd5b87841461098957600080fd5b87821461099557600080fd5b5060005b87811015610a04576109fc8989838181106109b057fe5b9050602002013588888481811015156109c557fe5b602002919091013590508787858181106109db57fe5b9050602002013586868681811015156109f057fe5b90506020020135610c99565b600101610999565b505050505050505050565b600654600160a060020a031681565b600160a060020a038116600090815260036020908152604080832081517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________926330fe0a0a9260448082019391829003018186803b158015610aa657600080fd5b505af4158015610aba573d6000803e3d6000fd5b505050506040513d6020811015610ad057600080fd5b505192915050565b6000610ae38261130a565b1515610aee57600080fd5b60008281526001602081905260409091200154610b0a90611a45565b158015610b1d5750610b1b8261159a565b155b92915050565b6000610b2d611dbd565b610b3683611bca565b1515610b4157600080fd5b5050600090815260016020818152604092839020835160a0810185528154815292810154918301919091526002810154928201839052600381015460608301819052600490910154608090920182905290810190910260649091021190565b6001602081905260009182526040909120805491810154600282015460038301546004909301549192909185565b600080600080610bdd86611bca565b1515610be857600080fd5b6000868152600160209081526040808320600160a060020a038b16845260060190915290205460ff161515610c1c57600080fd5b610c2586610b23565b610c30576001610c33565b60005b60ff1692508285604051808381526020018281526020019250505060405180910390209150610c6287876119a6565b9050818114610c7057600080fd5b610c7a87876118d4565b979650505050505050565b6000610b1d82610c9484610a1e565b6118d4565b6000806000610ca78761159a565b1515610cb257600080fd5b33600090815260026020526040902054851115610cf55733600090815260026020526040902054610cea90869063ffffffff611c1816565b9250610cf583611500565b33600090815260026020526040902054851115610d1157600080fd5b861515610d1d57600080fd5b851515610d2957600080fd5b831580610ddf57503360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b158015610db257600080fd5b505af4158015610dc6573d6000803e3d6000fd5b505050506040513d6020811015610ddc57600080fd5b50515b1515610dea57600080fd5b3360009081526003602090815260409182902082517f07d29ac9000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610e6b57600080fd5b505af4158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b5051915086821415610f51573360009081526003602090815260409182902082517f07d29ac90000000000000000000000000000000000000000000000000000000081526004810191909152602481018a9052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610f2257600080fd5b505af4158015610f36573d6000803e3d6000fd5b505050506040513d6020811015610f4c57600080fd5b505191505b610f5d848333886112cc565b1515610f6857600080fd5b3360009081526003602052604080822081517f9735c51b000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052604481018a905260648101859052905173__DLL___________________________________92639735c51b9260848082019391829003018186803b158015610ff357600080fd5b505af4158015611007573d6000803e3d6000fd5b5050505061101533886114c9565b604080517f977aa031000000000000000000000000000000000000000000000000000000008152600481810152602481018390526064810188905260806044820152600960848201527f6e756d546f6b656e73000000000000000000000000000000000000000000000060a4820152905191925073__AttributeStore________________________9163977aa0319160c480820192600092909190829003018186803b1580156110c557600080fd5b505af41580156110d9573d6000803e3d6000fd5b5050604080517f977aa03100000000000000000000000000000000000000000000000000000000815260048181015260248101859052606481018a905260806044820152600a60848201527f636f6d6d6974486173680000000000000000000000000000000000000000000060a4820152905173__AttributeStore________________________935063977aa031925060c4808301926000929190829003018186803b15801561118957600080fd5b505af415801561119d573d6000803e3d6000fd5b5050506000888152600160208181526040808420338086526005909101835293819020805460ff1916909317909255815189815291519293508a927fea7979e4280d7e6bffc1c7d83a1ac99f16d02ecc14465ce41016226783b663d79281900390910190a350505050505050565b60006112168261130a565b151561122157600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260059093019052205460ff1690565b600085841461125e57600080fd5b85821461126a57600080fd5b5060005b858110156112c3576112bb87878381811061128557fe5b90506020020135868684818110151561129a57fe5b9050602002013585858581811015156112af57fe5b9050602002013561160d565b60010161126e565b50505050505050565b60008060006112db85886118d4565b84101591506112ea85876118d4565b841115806112f6575085155b9050818015610c7a57509695505050505050565b60008115801590610b1d575050600054101590565b60005481565b6000818152600160208190526040909120015461134190611a45565b151561134c57600080fd5b3360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b1580156113cd57600080fd5b505af41580156113e1573d6000803e3d6000fd5b505050506040513d60208110156113f757600080fd5b5051151561140457600080fd5b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561148157600080fd5b505af4158015611495573d6000803e3d6000fd5b50506040513392508391507f402507661c8c8cb90e0a796450b8bdd28b6c516f05279c0cd29e84c344e1699a90600090a350565b604080516c01000000000000000000000000600160a060020a03851602815260148101839052905190819003603401902092915050565b61150981611c2a565b600654336000818152600260205260408082205481517f725248730000000000000000000000000000000000000000000000000000000081526004810194909452602484015251600160a060020a0390931692637252487392604480820193929182900301818387803b15801561157f57600080fd5b505af1158015611593573d6000803e3d6000fd5b5050505050565b60006115a58261130a565b15156115b057600080fd5b600082815260016020526040902054610b1b90611a45565b60006115d38261130a565b15156115de57600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260069093019052205460ff1690565b600061161884610ad8565b151561162357600080fd5b600084815260016020908152604080832033845260050190915290205460ff16151561164e57600080fd5b600084815260016020908152604080832033845260060190915290205460ff161561167857600080fd5b61168233856119a6565b60408051858152602081018590528151908190039091019020146116a557600080fd5b6116af33856118d4565b905082600114156116d65760008481526001602052604090206003018054820190556116ee565b60008481526001602052604090206004018054820190555b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561176b57600080fd5b505af415801561177f573d6000803e3d6000fd5b505050600085815260016020818152604080842033808652600682018452828620805460ff191686179055948a9052928252600383015460049093015481518781529283019390935281810192909252606081018690529051919250859187917f9b19aaec524fad29c0ced9b9973a15e3045d7c3be156d71394ab40f0d5f119ff919081900360800190a450505050565b60008060008061181f86611bca565b151561182a57600080fd5b6000868152600160209081526040808320600160a060020a038b16845260060190915290205460ff16151561185e57600080fd5b61186786610b23565b611872576000610c33565b6040805160018082526020820188905282519182900390920190209093509150610c6287876119a6565b60005b81518110156118d0576118c882828151811015156118b957fe5b90602001906020020151611325565b60010161189f565b5050565b600073__AttributeStore________________________6350389f5c60046118fc86866114c9565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600960648301527f6e756d546f6b656e73000000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561197357600080fd5b505af4158015611987573d6000803e3d6000fd5b505050506040513d602081101561199d57600080fd5b50519392505050565b600073__AttributeStore________________________6350389f5c60046119ce86866114c9565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600a60648301527f636f6d6d6974486173680000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561197357600080fd5b421190565b6000611a74611a5833610c85565b336000908152600260205260409020549063ffffffff611c1816565b905081811015611a8357600080fd5b3360008181526002602090815260408083208054879003905560055481517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810195909552602485018790529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015611b0557600080fd5b505af1158015611b19573d6000803e3d6000fd5b505050506040513d6020811015611b2f57600080fd5b50511515611b3c57600080fd5b60408051838152905133917ffaeb7dbb9992397d26ea1944efd40c80b40f702faf69b46c67ad10aba68ccb79919081900360200190a25050565b6000611b8182611bca565b1515611b8c57600080fd5b611b9582610b23565b15611bb257506000818152600160205260409020600401546106ae565b506000818152600160205260409020600301546106ae565b6000611bd58261130a565b1515611be057600080fd5b60008281526001602081905260409091200154610b1d90611a45565b600554600160a060020a031681565b81810182811015610b1d57fe5b600082821115611c2457fe5b50900390565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518392600160a060020a0316916370a082319160248083019260209291908290030181600087803b158015611c8f57600080fd5b505af1158015611ca3573d6000803e3d6000fd5b505050506040513d6020811015611cb957600080fd5b50511015611cc657600080fd5b33600081815260026020908152604080832080548601905560055481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018690529051600160a060020a03909116936323b872dd9360648083019493928390030190829087803b158015611d4d57600080fd5b505af1158015611d61573d6000803e3d6000fd5b505050506040513d6020811015611d7757600080fd5b50511515611d8457600080fd5b60408051828152905133917ff7aaf024511d9982df8cd0d437c71c30106e6848cd1ba3d288d7a9c0e276aeda919081900360200190a250565b60a060405190810160405280600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820dfb0bd5ea70ad6f1df929d57bad9a8a3a61facd419e162e3168c26c446d299260029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getTotalNumberOfTokensForWinningOption\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"INITIAL_POLL_NONCE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getInsertPointForNumTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"prevNode\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_voteQuorum\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_commitDuration\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_revealDuration\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"startPoll\",\n      \"outputs\": [\n        {\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"voteTokenBalance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_secretHashes\",\n          \"type\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"_numsTokens\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_prevPollIDs\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"commitVotes\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"telemetry\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getLastNode\",\n      \"outputs\": [\n        {\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"revealPeriodActive\",\n      \"outputs\": [\n        {\n          \"name\": \"active\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isPassed\",\n      \"outputs\": [\n        {\n          \"name\": \"passed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"pollMap\",\n      \"outputs\": [\n        {\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"voteQuorum\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"votesFor\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"votesAgainst\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getLockedTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_secretHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_prevPollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"commitVote\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"didCommit\",\n      \"outputs\": [\n        {\n          \"name\": \"committed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_voteOptions\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"revealVotes\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_prevID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_nextID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"validPosition\",\n      \"outputs\": [\n        {\n          \"name\": \"valid\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"pollExists\",\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"pollNonce\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"rescueTokens\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"attrUUID\",\n      \"outputs\": [\n        {\n          \"name\": \"UUID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"pure\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"commitPeriodActive\",\n      \"outputs\": [\n        {\n          \"name\": \"active\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"didReveal\",\n      \"outputs\": [\n        {\n          \"name\": \"revealed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voteOption\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"revealVote\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getNumPassingTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"correctVotes\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollIDs\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"rescueTokensInMultiplePolls\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getNumTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getCommitHash\",\n      \"outputs\": [\n        {\n          \"name\": \"commitHash\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_terminationDate\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isExpired\",\n      \"outputs\": [\n        {\n          \"name\": \"expired\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdrawVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"pollEnded\",\n      \"outputs\": [\n        {\n          \"name\": \"ended\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"tokenAddr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"telemetryAddr\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_VoteCommitted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"votesFor\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"votesAgainst\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"choice\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_VoteRevealed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"voteQuorum\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"creator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_PollCreated\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_VotingRightsGranted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_VotingRightsWithdrawn\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_TokensRescued\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"requestVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getNumLosingTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"correctVotes\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getTotalNumberOfTokensForLosingOption\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {\n        \"DLL\": \"0x739f1745e415782861373c5ff1a6dc56d2d41451\",\n        \"AttributeStore\": \"0x393e69e7ae7addcfd744b71d209b1f04800d89e5\"\n      },\n      \"address\": \"0x55656b8a58df94c1e8b5142f8da973301452ea65\",\n      \"transactionHash\": \"0x432e1660900510843f82adfbc0807d2426dc30cb0e8a7acce6c85c3cc72afe74\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {\n        \"DLL\": \"0x132f69eb9416cf555cc16e21fb0bbd21f38947c0\",\n        \"AttributeStore\": \"0x0584ee9107eebfc100994ad88c380fb8108fbc2d\"\n      },\n      \"address\": \"0x570bf68d286dd4225e2e77384c08dfebc4b01b5c\",\n      \"transactionHash\": \"0x44e716278d983db08cc05db50f2572b24d105f1230d0a5fb7d79f32dd74b5c8a\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/CivilParameterizer.json",
    "content": "{\n  \"contractName\": \"CivilParameterizer\",\n  \"bytecode\": \"0x608060405262093a806005553480156200001857600080fd5b506040516200294e3803806200294e83398101604081815282516020808501518386015160038054600160a060020a03808716600160a060020a0319928316179092556004805492851692909116919091179055848601909452600a85527f6d696e4465706f736974000000000000000000000000000000000000000000009185019190915291909301805191929091849184918491620000e09183906000908110620000c157fe5b90602001906020020151620004f8640100000000026401000000009004565b6200012a6040805190810160405280600b81526020017f704d696e4465706f736974000000000000000000000000000000000000000000815250826001815181101515620000c157fe5b620001746040805190810160405280600d81526020017f6170706c7953746167654c656e00000000000000000000000000000000000000815250826002815181101515620000c157fe5b620001be6040805190810160405280600e81526020017f704170706c7953746167654c656e000000000000000000000000000000000000815250826003815181101515620000c157fe5b620002086040805190810160405280600e81526020017f636f6d6d697453746167654c656e000000000000000000000000000000000000815250826004815181101515620000c157fe5b620002526040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250826005815181101515620000c157fe5b6200029c6040805190810160405280600e81526020017f72657665616c53746167654c656e000000000000000000000000000000000000815250826006815181101515620000c157fe5b620002e66040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250826007815181101515620000c157fe5b620003306040805190810160405280600f81526020017f64697370656e736174696f6e5063740000000000000000000000000000000000815250826008815181101515620000c157fe5b6200037a6040805190810160405280601081526020017f7044697370656e736174696f6e50637400000000000000000000000000000000815250826009815181101515620000c157fe5b620003c46040805190810160405280600a81526020017f766f746551756f72756d0000000000000000000000000000000000000000000081525082600a815181101515620000c157fe5b6200040e6040805190810160405280600b81526020017f70566f746551756f72756d00000000000000000000000000000000000000000081525082600b815181101515620000c157fe5b5050506200045b6040805190810160405280601281526020017f6368616c6c656e676541707065616c4c656e000000000000000000000000000081525082600c815181101515620000c157fe5b620004a56040805190810160405280601881526020017f6368616c6c656e676541707065616c436f6d6d69744c656e000000000000000081525082600d815181101515620000c157fe5b620004ef6040805190810160405280601881526020017f6368616c6c656e676541707065616c52657665616c4c656e000000000000000081525082600e815181101515620000c157fe5b50505062000570565b80600080846040518082805190602001908083835b602083106200052e5780518252601f1990920191602091820191016200050d565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b6123ce80620005806000396000f3006080604052600436106100fa5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166229514f81146100ff57806330490e911461012657806332ed5b1214610140578063353009901461020c57806350411552146102385780635f02116f14610250578063693ec85e146102de57806377609a41146103375780638240ae4b1461034f57806386bb8f37146103675780638f1d377614610382578063a5ba3b1e146103cd578063a7aad3db146103f1578063bade1c5414610418578063c51131fb14610473578063dc6ab5271461048b578063fc0c546a146104a3578063fce1ccca146104d4575b600080fd5b34801561010b57600080fd5b506101146104e9565b60408051918252519081900360200190f35b34801561013257600080fd5b5061013e6004356104ef565b005b34801561014c57600080fd5b506101586004356109ca565b604051808881526020018781526020018681526020018060200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156101cb5781810151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34801561021857600080fd5b50610224600435610a96565b604080519115158252519081900360200190f35b34801561024457600080fd5b50610114600435610aaf565b34801561025c57600080fd5b506040805160206004803580820135838102808601850190965280855261013e95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b819650505050505050565b3480156102ea57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610114943694929360249392840191908190840183828082843750949750610be49650505050505050565b34801561034357600080fd5b50610224600435610c5a565b34801561035b57600080fd5b50610114600435610e73565b34801561037357600080fd5b5061013e6004356024356113ab565b34801561038e57600080fd5b5061039a6004356115b7565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b3480156103d957600080fd5b50610224600435600160a060020a03602435166115f4565b3480156103fd57600080fd5b50610114600160a060020a0360043516602435604435611624565b34801561042457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261011494369492936024939284019190819084018382808284375094975050933594506116fa9350505050565b34801561047f57600080fd5b50610224600435611bd0565b34801561049757600080fd5b50610114600435611cf3565b3480156104af57600080fd5b506104b8611d05565b60408051600160a060020a039092168252519081900360200190f35b3480156104e057600080fd5b506104b8611d14565b60055481565b60008181526002602081905260409091206004810154918101549091600160a060020a03169061051e84611bd0565b1561077857600383018054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526105c193909290918301828280156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b50505050508460060154611d23565b600683015460408051602081018390528181526003860180546002610100600183161502600019019091160492820183905287937f37f3986c71e1aa2c470cfc4a92af70820610c3065589d35ef1664ea27f3e73a5939192909181906060820190859080156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b5050935050505060405180910390a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b506004818101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005830181905560069092018290556003546040805160e060020a63a9059cbb028152600160a060020a0387811694820194909452602481018690529051929091169263a9059cbb926044808401936020939083900390910190829087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b505050506040513d602081101561076657600080fd5b5051151561077357600080fd5b6107f4565b61078184610c5a565b1561078f5761077384611d99565b82600501544211156100fa5760405184907f29026cb2acebe6d0a4b6d593ccadf76e3fc6d0a02254e078b0c4a619608089d790600090a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b60646108346040805190810160405280600f81526020017f64697370656e736174696f6e5063740000000000000000000000000000000000815250610be4565b111561083c57fe5b606461087c6040805190810160405280601081526020017f7044697370656e736174696f6e50637400000000000000000000000000000000815250610be4565b111561088457fe5b61096660055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b61095a61090c6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b61095a61094d6040805190810160405280600e81526020017f704170706c7953746167654c656e000000000000000000000000000000000000815250610be4565b429063ffffffff6121e116565b9063ffffffff6121e116565b50600084815260026020819052604082208281556001810183905590810182905590610995600383018261223e565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820181905560069091015550505050565b60026020818152600092835260409283902080546001808301548386015460038501805489519481161561010002600019011697909704601f8101879004870284018701909852878352929690959294919291830182828015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b50505050600483015460058401546006909401549293600160a060020a039091169290915087565b600081815260026020526040812060050154115b919050565b60048054604080517f053e71a600000000000000000000000000000000000000000000000000000000815292830184905251600092600160a060020a039092169163053e71a691602480830192602092919082900301818787803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050506040513d6020811015610b4057600080fd5b50511515610b635750600081815260016020526040902060029081015402610aaa565b50600090815260016020526040902080546002918201549091020390565b8051825160009114610b9257600080fd5b5060005b8251811015610bdf57610bd78382815181101515610bb057fe5b906020019060200201518383815181101515610bc857fe5b906020019060200201516113ab565b600101610b96565b505050565b6000806000836040518082805190602001908083835b60208310610c195780518252601f199092019160209182019101610bfa565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b6000610c64612285565b610c6c6122cc565b600084815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b50505091835250506004820154600160a060020a039081166020808401919091526005840154604080850191909152600690940154606093840152848101805160009081526001808452868220875160a08101895281548152918101549586169482019490945260a060020a90940460ff1615159584019590955260028201549383019390935260030154608082015290519294509250108015610dcf57506040810151155b8015610e6b575060048054602080850151604080517fee6848300000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a039092169263ee68483092602480830193928290030181600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50515b949350505050565b6000610e7d612285565b6000838152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f810186900486028201860190945283815286958695869593949360608601939291830182828015610f3c5780601f10610f1157610100808354040283529160200191610f3c565b820191906000526020600020905b815481529060010190602001808311610f1f57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040808301919091526006909201546060909101528101519095509350610f8287610a96565b8015610f9057506020850151155b1515610f9b57600080fd5b60045460408051808201909152600b81527f70566f746551756f72756d0000000000000000000000000000000000000000006020820152600160a060020a03909116906332ed3d6090610fed90610be4565b61102b6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b6110696040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b505050506040513d60208110156110f357600080fd5b50516040805160e08101909152601060a082019081527f7044697370656e736174696f6e5063740000000000000000000000000000000060c083015291945090819061116e9060649061116290899061115690849061115190610be4565b6121ee565b9063ffffffff61220016565b9063ffffffff61222916565b81523360208083018290526000604080850182905260608086018b905260809586018390528983526001808552828420885181558886015181830180548b87015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a911515919091021790559289015160028083019190915598909701516003978801558e8452968452818320909601899055935484517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018a9052935193909416936323b872dd936064808501949192918390030190829087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d60208110156112b457600080fd5b505115156112c157600080fd5b60048054604080517f6148fed500000000000000000000000000000000000000000000000000000000815292830186905251600160a060020a0390911691636148fed59160248083019260a09291908290030181600087803b15801561132657600080fd5b505af115801561133a573d6000803e3d6000fd5b505050506040513d60a081101561135057600080fd5b50805160209182015160408051878152938401839052838101829052519194509250339189917fe94e3086c4bfe84acba4437b85a80fca3721dfc419d1f7afe4fa4e470e670b489181900360600190a3509095945050505050565b6000828152600160209081526040808320338452600401909152812054819060ff16156113d757600080fd5b600084815260016020819052604090912081015460a060020a900460ff1615151461140157600080fd5b60048054604080517fb43bd0690000000000000000000000000000000000000000000000000000000081523393810193909352602483018790526044830186905251600160a060020a039091169163b43bd0699160648083019260209291908290030181600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050506040513d60208110156114a057600080fd5b505191506114af338585611624565b6000858152600160208181526040808420600381018054899003905580548690038155338086526004909101835293819020805460ff191690931790925581518481529151939450919287927f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f59957928290030190a36003546040805160e060020a63a9059cbb028152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b505050506040513d60208110156115a457600080fd5b505115156115b157600080fd5b50505050565b60016020819052600091825260409091208054918101546002820154600390920154600160a060020a0382169260a060020a90920460ff16919085565b6000828152600160209081526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152600160209081526040808320600381015490546004805484517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038b811693820193909352602481018a9052604481018990529451939592948794929091169263b43bd0699260648084019382900301818787803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b505050506040513d60208110156116dd57600080fd5b50519050828282028115156116ee57fe5b04979650505050505050565b600080600061173d6040805190810160405280600b81526020017f704d696e4465706f736974000000000000000000000000000000000000000000815250610be4565b915084846040518083805190602001908083835b602083106117705780518252601f199092019160209182019101611751565b51815160001960209485036101000a019081169019919091161790529201938452506040805193849003820184207f64697370656e736174696f6e50637400000000000000000000000000000000008552905193849003600f0184208a5191965094508993925082918401908083835b602083106117ff5780518252601f1990920191602091820191016117e0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614806118cc5750604080517f7044697370656e736174696f6e5063740000000000000000000000000000000081529051908190036010018120865190918791819060208401908083835b602083106118995780518252601f19909201916020918201910161187a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b156118df5760648411156118df57600080fd5b6118e881610a96565b156118f257600080fd5b836118fc86610be4565b141561190757600080fd5b604080516101208101909152600e60e082019081527f704170706c7953746167654c656e00000000000000000000000000000000000061010083015281906119529061094d90610be4565b81526020016000815260200183815260200186815260200133600160a060020a031681526020016119c060055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b8152602090810186905260008381526002808352604091829020845181558484015160018201559184015190820155606083015180519192611a0a92600385019290910190612307565b5060808201516004828101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393841617905560a0840151600584015560c090930151600690920191909155600354604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945230602485015260448401869052519116916323b872dd9160648083019260209291908290030181600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b505050506040513d6020811015611ae957600080fd5b50511515611af657600080fd5b6000818152600260209081526040808320548151808401899052918201859052606082018690526080820181905260a0808352895190830152885133947fb25bdef16105f099e5c185f9c7fd969571e8e0caa3f7bd75409512fe0a41a60b948b948b9489948b949193839260c0840192918a0191908190849084905b83811015611b8a578181015183820152602001611b72565b50505050905090810190601f168015611bb75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a2949350505050565b6000611bda612285565b600083815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015611c975780601f10611c6c57610100808354040283529160200191611c97565b820191906000526020600020905b815481529060010190602001808311611c7a57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040820152600690910154606090910152805190915042118015611cde57508060a0015142105b8015611cec57506020810151155b9392505050565b60006020819052908152604090205481565b600354600160a060020a031681565b600454600160a060020a031681565b80600080846040518082805190602001908083835b60208310611d575780518252601f199092019160209182019101611d38565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b611da1612285565b6000828152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f81018690048602820186019094528381528695919492936060860193919291830182828015611e5e5780601f10611e3357610100808354040283529160200191611e5e565b820191906000526020600020905b815481529060010190602001808311611e4157829003601f168201915b505050505081526020016004820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160058201548152602001600682015481525050925060016000846020015181526020019081526020016000209150611ed28360200151610aaf565b60048054602080870151604080517f053e71a60000000000000000000000000000000000000000000000000000000081529485019190915251939450600160a060020a039091169263053e71a69260248082019392918290030181600087803b158015611f3e57600080fd5b505af1158015611f52573d6000803e3d6000fd5b505050506040513d6020811015611f6857600080fd5b5051600383015560018201805474ff0000000000000000000000000000000000000000191660a060020a17905560048054602085810151604080517f494031830000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a0390921692634940318392602480830193928290030181600087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b50511561212e57428360a00151111561204c5761204c83606001518460c00151611d23565b6020808401518354600385015460408051928352938201528251919287927fc4497224aa78dd50c9b3e344aab02596201ca1e6dca4057a91a6c02f83f4f6c19281900390910190a360035460808401516040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156120f257600080fd5b505af1158015612106573d6000803e3d6000fd5b505050506040513d602081101561211c57600080fd5b5051151561212957600080fd5b6115b1565b6020808401518354600385015460408051928352938201528251919287927f362a12431f779a2baff4f77f75ba7960ae993a5c41b425df11f7fd0af2b9cbe69281900390910190a360035460208085015160009081526001808352604080832090910154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb9360448084019491938390030190829087803b15801561157a57600080fd5b8181018281101561161e57fe5b6000828211156121fa57fe5b50900390565b60008215156122115750600061161e565b5081810281838281151561222157fe5b041461161e57fe5b6000818381151561223657fe5b049392505050565b50805460018160011615610100020316600290046000825580601f106122645750612282565b601f0160209004906000526020600020908101906122829190612385565b50565b60e060405190810160405280600081526020016000815260200160008152602001606081526020016000600160a060020a0316815260200160008152602001600081525090565b60a060405190810160405280600081526020016000600160a060020a0316815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234857805160ff1916838001178555612375565b82800160010185558215612375579182015b8281111561237557825182559160200191906001019061235a565b50612381929150612385565b5090565b61239f91905b80821115612381576000815560010161238b565b905600a165627a7a72305820ed840535900f894fb89ac1b708fbec598795cafcab5034977f4db1cc2ec92cea0029\",\n  \"deployedBytecode\": \"0x6080604052600436106100fa5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166229514f81146100ff57806330490e911461012657806332ed5b1214610140578063353009901461020c57806350411552146102385780635f02116f14610250578063693ec85e146102de57806377609a41146103375780638240ae4b1461034f57806386bb8f37146103675780638f1d377614610382578063a5ba3b1e146103cd578063a7aad3db146103f1578063bade1c5414610418578063c51131fb14610473578063dc6ab5271461048b578063fc0c546a146104a3578063fce1ccca146104d4575b600080fd5b34801561010b57600080fd5b506101146104e9565b60408051918252519081900360200190f35b34801561013257600080fd5b5061013e6004356104ef565b005b34801561014c57600080fd5b506101586004356109ca565b604051808881526020018781526020018681526020018060200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156101cb5781810151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34801561021857600080fd5b50610224600435610a96565b604080519115158252519081900360200190f35b34801561024457600080fd5b50610114600435610aaf565b34801561025c57600080fd5b506040805160206004803580820135838102808601850190965280855261013e95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b819650505050505050565b3480156102ea57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610114943694929360249392840191908190840183828082843750949750610be49650505050505050565b34801561034357600080fd5b50610224600435610c5a565b34801561035b57600080fd5b50610114600435610e73565b34801561037357600080fd5b5061013e6004356024356113ab565b34801561038e57600080fd5b5061039a6004356115b7565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b3480156103d957600080fd5b50610224600435600160a060020a03602435166115f4565b3480156103fd57600080fd5b50610114600160a060020a0360043516602435604435611624565b34801561042457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261011494369492936024939284019190819084018382808284375094975050933594506116fa9350505050565b34801561047f57600080fd5b50610224600435611bd0565b34801561049757600080fd5b50610114600435611cf3565b3480156104af57600080fd5b506104b8611d05565b60408051600160a060020a039092168252519081900360200190f35b3480156104e057600080fd5b506104b8611d14565b60055481565b60008181526002602081905260409091206004810154918101549091600160a060020a03169061051e84611bd0565b1561077857600383018054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526105c193909290918301828280156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b50505050508460060154611d23565b600683015460408051602081018390528181526003860180546002610100600183161502600019019091160492820183905287937f37f3986c71e1aa2c470cfc4a92af70820610c3065589d35ef1664ea27f3e73a5939192909181906060820190859080156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b5050935050505060405180910390a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b506004818101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005830181905560069092018290556003546040805160e060020a63a9059cbb028152600160a060020a0387811694820194909452602481018690529051929091169263a9059cbb926044808401936020939083900390910190829087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b505050506040513d602081101561076657600080fd5b5051151561077357600080fd5b6107f4565b61078184610c5a565b1561078f5761077384611d99565b82600501544211156100fa5760405184907f29026cb2acebe6d0a4b6d593ccadf76e3fc6d0a02254e078b0c4a619608089d790600090a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b60646108346040805190810160405280600f81526020017f64697370656e736174696f6e5063740000000000000000000000000000000000815250610be4565b111561083c57fe5b606461087c6040805190810160405280601081526020017f7044697370656e736174696f6e50637400000000000000000000000000000000815250610be4565b111561088457fe5b61096660055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b61095a61090c6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b61095a61094d6040805190810160405280600e81526020017f704170706c7953746167654c656e000000000000000000000000000000000000815250610be4565b429063ffffffff6121e116565b9063ffffffff6121e116565b50600084815260026020819052604082208281556001810183905590810182905590610995600383018261223e565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820181905560069091015550505050565b60026020818152600092835260409283902080546001808301548386015460038501805489519481161561010002600019011697909704601f8101879004870284018701909852878352929690959294919291830182828015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b50505050600483015460058401546006909401549293600160a060020a039091169290915087565b600081815260026020526040812060050154115b919050565b60048054604080517f053e71a600000000000000000000000000000000000000000000000000000000815292830184905251600092600160a060020a039092169163053e71a691602480830192602092919082900301818787803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050506040513d6020811015610b4057600080fd5b50511515610b635750600081815260016020526040902060029081015402610aaa565b50600090815260016020526040902080546002918201549091020390565b8051825160009114610b9257600080fd5b5060005b8251811015610bdf57610bd78382815181101515610bb057fe5b906020019060200201518383815181101515610bc857fe5b906020019060200201516113ab565b600101610b96565b505050565b6000806000836040518082805190602001908083835b60208310610c195780518252601f199092019160209182019101610bfa565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b6000610c64612285565b610c6c6122cc565b600084815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b50505091835250506004820154600160a060020a039081166020808401919091526005840154604080850191909152600690940154606093840152848101805160009081526001808452868220875160a08101895281548152918101549586169482019490945260a060020a90940460ff1615159584019590955260028201549383019390935260030154608082015290519294509250108015610dcf57506040810151155b8015610e6b575060048054602080850151604080517fee6848300000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a039092169263ee68483092602480830193928290030181600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50515b949350505050565b6000610e7d612285565b6000838152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f810186900486028201860190945283815286958695869593949360608601939291830182828015610f3c5780601f10610f1157610100808354040283529160200191610f3c565b820191906000526020600020905b815481529060010190602001808311610f1f57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040808301919091526006909201546060909101528101519095509350610f8287610a96565b8015610f9057506020850151155b1515610f9b57600080fd5b60045460408051808201909152600b81527f70566f746551756f72756d0000000000000000000000000000000000000000006020820152600160a060020a03909116906332ed3d6090610fed90610be4565b61102b6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b6110696040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b505050506040513d60208110156110f357600080fd5b50516040805160e08101909152601060a082019081527f7044697370656e736174696f6e5063740000000000000000000000000000000060c083015291945090819061116e9060649061116290899061115690849061115190610be4565b6121ee565b9063ffffffff61220016565b9063ffffffff61222916565b81523360208083018290526000604080850182905260608086018b905260809586018390528983526001808552828420885181558886015181830180548b87015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a911515919091021790559289015160028083019190915598909701516003978801558e8452968452818320909601899055935484517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018a9052935193909416936323b872dd936064808501949192918390030190829087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d60208110156112b457600080fd5b505115156112c157600080fd5b60048054604080517f6148fed500000000000000000000000000000000000000000000000000000000815292830186905251600160a060020a0390911691636148fed59160248083019260a09291908290030181600087803b15801561132657600080fd5b505af115801561133a573d6000803e3d6000fd5b505050506040513d60a081101561135057600080fd5b50805160209182015160408051878152938401839052838101829052519194509250339189917fe94e3086c4bfe84acba4437b85a80fca3721dfc419d1f7afe4fa4e470e670b489181900360600190a3509095945050505050565b6000828152600160209081526040808320338452600401909152812054819060ff16156113d757600080fd5b600084815260016020819052604090912081015460a060020a900460ff1615151461140157600080fd5b60048054604080517fb43bd0690000000000000000000000000000000000000000000000000000000081523393810193909352602483018790526044830186905251600160a060020a039091169163b43bd0699160648083019260209291908290030181600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050506040513d60208110156114a057600080fd5b505191506114af338585611624565b6000858152600160208181526040808420600381018054899003905580548690038155338086526004909101835293819020805460ff191690931790925581518481529151939450919287927f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f59957928290030190a36003546040805160e060020a63a9059cbb028152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b505050506040513d60208110156115a457600080fd5b505115156115b157600080fd5b50505050565b60016020819052600091825260409091208054918101546002820154600390920154600160a060020a0382169260a060020a90920460ff16919085565b6000828152600160209081526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152600160209081526040808320600381015490546004805484517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038b811693820193909352602481018a9052604481018990529451939592948794929091169263b43bd0699260648084019382900301818787803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b505050506040513d60208110156116dd57600080fd5b50519050828282028115156116ee57fe5b04979650505050505050565b600080600061173d6040805190810160405280600b81526020017f704d696e4465706f736974000000000000000000000000000000000000000000815250610be4565b915084846040518083805190602001908083835b602083106117705780518252601f199092019160209182019101611751565b51815160001960209485036101000a019081169019919091161790529201938452506040805193849003820184207f64697370656e736174696f6e50637400000000000000000000000000000000008552905193849003600f0184208a5191965094508993925082918401908083835b602083106117ff5780518252601f1990920191602091820191016117e0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614806118cc5750604080517f7044697370656e736174696f6e5063740000000000000000000000000000000081529051908190036010018120865190918791819060208401908083835b602083106118995780518252601f19909201916020918201910161187a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b156118df5760648411156118df57600080fd5b6118e881610a96565b156118f257600080fd5b836118fc86610be4565b141561190757600080fd5b604080516101208101909152600e60e082019081527f704170706c7953746167654c656e00000000000000000000000000000000000061010083015281906119529061094d90610be4565b81526020016000815260200183815260200186815260200133600160a060020a031681526020016119c060055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b8152602090810186905260008381526002808352604091829020845181558484015160018201559184015190820155606083015180519192611a0a92600385019290910190612307565b5060808201516004828101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393841617905560a0840151600584015560c090930151600690920191909155600354604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945230602485015260448401869052519116916323b872dd9160648083019260209291908290030181600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b505050506040513d6020811015611ae957600080fd5b50511515611af657600080fd5b6000818152600260209081526040808320548151808401899052918201859052606082018690526080820181905260a0808352895190830152885133947fb25bdef16105f099e5c185f9c7fd969571e8e0caa3f7bd75409512fe0a41a60b948b948b9489948b949193839260c0840192918a0191908190849084905b83811015611b8a578181015183820152602001611b72565b50505050905090810190601f168015611bb75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a2949350505050565b6000611bda612285565b600083815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015611c975780601f10611c6c57610100808354040283529160200191611c97565b820191906000526020600020905b815481529060010190602001808311611c7a57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040820152600690910154606090910152805190915042118015611cde57508060a0015142105b8015611cec57506020810151155b9392505050565b60006020819052908152604090205481565b600354600160a060020a031681565b600454600160a060020a031681565b80600080846040518082805190602001908083835b60208310611d575780518252601f199092019160209182019101611d38565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b611da1612285565b6000828152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f81018690048602820186019094528381528695919492936060860193919291830182828015611e5e5780601f10611e3357610100808354040283529160200191611e5e565b820191906000526020600020905b815481529060010190602001808311611e4157829003601f168201915b505050505081526020016004820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160058201548152602001600682015481525050925060016000846020015181526020019081526020016000209150611ed28360200151610aaf565b60048054602080870151604080517f053e71a60000000000000000000000000000000000000000000000000000000081529485019190915251939450600160a060020a039091169263053e71a69260248082019392918290030181600087803b158015611f3e57600080fd5b505af1158015611f52573d6000803e3d6000fd5b505050506040513d6020811015611f6857600080fd5b5051600383015560018201805474ff0000000000000000000000000000000000000000191660a060020a17905560048054602085810151604080517f494031830000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a0390921692634940318392602480830193928290030181600087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b50511561212e57428360a00151111561204c5761204c83606001518460c00151611d23565b6020808401518354600385015460408051928352938201528251919287927fc4497224aa78dd50c9b3e344aab02596201ca1e6dca4057a91a6c02f83f4f6c19281900390910190a360035460808401516040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156120f257600080fd5b505af1158015612106573d6000803e3d6000fd5b505050506040513d602081101561211c57600080fd5b5051151561212957600080fd5b6115b1565b6020808401518354600385015460408051928352938201528251919287927f362a12431f779a2baff4f77f75ba7960ae993a5c41b425df11f7fd0af2b9cbe69281900390910190a360035460208085015160009081526001808352604080832090910154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb9360448084019491938390030190829087803b15801561157a57600080fd5b8181018281101561161e57fe5b6000828211156121fa57fe5b50900390565b60008215156122115750600061161e565b5081810281838281151561222157fe5b041461161e57fe5b6000818381151561223657fe5b049392505050565b50805460018160011615610100020316600290046000825580601f106122645750612282565b601f0160209004906000526020600020908101906122829190612385565b50565b60e060405190810160405280600081526020016000815260200160008152602001606081526020016000600160a060020a0316815260200160008152602001600081525090565b60a060405190810160405280600081526020016000600160a060020a0316815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234857805160ff1916838001178555612375565b82800160010185558215612375579182015b8281111561237557825182559160200191906001019061235a565b50612381929150612385565b5090565b61239f91905b80821115612381576000815560010161238b565b905600a165627a7a72305820ed840535900f894fb89ac1b708fbec598795cafcab5034977f4db1cc2ec92cea0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"PROCESSBY\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"processProposal\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"proposals\",\n      \"outputs\": [\n        {\n          \"name\": \"appExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"processBy\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"propExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challengeWinnerReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"claimRewards\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"get\",\n      \"outputs\": [\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"challengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"challengeReparameterization\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challenges\",\n      \"outputs\": [\n        {\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"resolved\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"stake\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"winningTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"tokenClaims\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"voterReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"_value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"proposeReparameterization\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"canBeSet\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"params\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"tokenAddr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"plcrAddr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"parameters\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"proposer\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ReparameterizationProposal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_NewChallenge\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ProposalAccepted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"_ProposalExpired\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeSucceeded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_RewardClaimed\",\n      \"type\": \"event\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x0b8170f7cec8564492ffea951be88b915a4e26d2\",\n      \"transactionHash\": \"0x7414207569987e069e276668ade15c063449acb7e9414772eda5122c68ab06e4\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x4f4b97a4faebf2bd835a10c479e61faccef8755d\",\n      \"transactionHash\": \"0x3fa875cd4e6a022cf8a5c465ed2158050bf7dddb347c0ed93e7eaa9556a29934\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/CivilTCR.json",
    "content": "{\n  \"contractName\": \"CivilTCR\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b506040516080806200543d833981016040818152825160208085015183860151606090960151848601909452600885527f436976696c54435200000000000000000000000000000000000000000000000091850191909152909390929091908490849084908383838383838383600160a060020a0384161515620000f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5f746f6b656e2061646472657373206973203000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831615156200016e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5f766f74696e6720616464726573732069732030000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515620001e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f706172616d65746572697a6572206164647265737320697320300000000000604482015290519081900360640190fd5b60028054600160a060020a03808716600160a060020a03199283161790925560038054868416908316179055600480549285169290911691909117905580516200023890600590602084019062000418565b50505050600160a060020a038a1615159850620002bf97505050505050505057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f676f7674206164647265737320776173207a65726f0000000000000000000000604482015290519081900360640190fd5b80600160a060020a0316635793b9cf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200031757600080fd5b505af11580156200032c573d6000803e3d6000fd5b505050506040513d60208110156200034357600080fd5b5051600160a060020a03161515620003e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f676f76742e676574476f7665726e6d656e74436f6e74726f6c6c65722061646460448201527f7265737320776173203000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60068054600160a060020a03948516600160a060020a031991821617909155600780549290941691161790915550620004bd9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200045b57805160ff19168380011785556200048b565b828001600101855582156200048b579182015b828111156200048b5782518255916020019190600101906200046e565b50620004999291506200049d565b5090565b620004ba91905b80821115620004995760008155600101620004a4565b90565b614f7080620004cd6000396000f3006080604052600436106101875763ffffffff60e060020a60003504166301162b93811461018c57806306fdde03146101af5780630aac454314610239578063120c40c61461026e5780631e39d8d7146102e757806325ecef04146103185780632672f526146103395780632ea9b6961461034e5780633af32abf1461036f57806347e7ef241461039057806355246b9c146103b45780635b5d4e731461041d5780635f02116f1461043e57806361a9a8ca146104cc57806364c37318146104ed57806365d96c82146105055780636eefcab91461055957806386bb8f371461057a5780638f1d377614610595578063a5ba3b1e146105e0578063a7aad3db14610604578063acff86871461062b578063b42652e914610687578063bc4b010f146106a8578063c8187cf11461070f578063c931674b14610727578063dd4e7cfd14610754578063e1e3f91514610775578063f3fef3a31461078a578063f4c8cfc5146107ae578063f96c8720146107db578063fc0c546a14610830578063fce1ccca14610845575b600080fd5b34801561019857600080fd5b506101ad600160a060020a036004351661085a565b005b3480156101bb57600080fd5b506101c46108be565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101fe5781810151838201526020016101e6565b50505050905090810190601f16801561022b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024557600080fd5b5061025a600160a060020a036004351661094c565b604080519115158252519081900360200190f35b34801561027a57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102d5958335600160a060020a0316953695604494919390910191908190840183828082843750949750610aaf9650505050505050565b60408051918252519081900360200190f35b3480156102f357600080fd5b506102fc6111ce565b60408051600160a060020a039092168252519081900360200190f35b34801561032457600080fd5b5061025a600160a060020a03600435166111dd565b34801561034557600080fd5b506102fc6112d6565b34801561035a57600080fd5b5061025a600160a060020a03600435166112e5565b34801561037b57600080fd5b5061025a600160a060020a03600435166113c0565b34801561039c57600080fd5b506101ad600160a060020a03600435166024356113e2565b3480156103c057600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ad948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506115889650505050505050565b34801561042957600080fd5b506101ad600160a060020a0360043516611598565b34801561044a57600080fd5b50604080516020600480358082013583810280860185019096528085526101ad95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061175d9650505050505050565b3480156104d857600080fd5b5061025a600160a060020a036004351661182c565b3480156104f957600080fd5b506102d5600435611848565b34801561051157600080fd5b50610526600160a060020a036004351661185a565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b34801561056557600080fd5b5061025a600160a060020a0360043516611895565b34801561058657600080fd5b506101ad6004356024356118e0565b3480156105a157600080fd5b506105ad600435611b59565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b3480156105ec57600080fd5b5061025a600435600160a060020a0360243516611b95565b34801561061057600080fd5b506102d5600160a060020a0360043516602435604435611bc3565b34801561063757600080fd5b50610643600435611c06565b60408051600160a060020a0390981688526020880196909652868601949094529115156060860152608085015260a0840152151560c0830152519081900360e00190f35b34801561069357600080fd5b506101ad600160a060020a0360043516611c53565b3480156106b457600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102d5958335600160a060020a0316953695604494919390910191908190840183828082843750949750611e429650505050505050565b34801561071b57600080fd5b506102d5600435612098565b34801561073357600080fd5b506101ad60048035600160a060020a031690602480359081019101356123bd565b34801561076057600080fd5b5061025a600160a060020a03600435166126b5565b34801561078157600080fd5b506102fc612757565b34801561079657600080fd5b506101ad600160a060020a0360043516602435612766565b3480156107ba57600080fd5b506101ad60048035600160a060020a03169060248035908101910135612b0c565b3480156107e757600080fd5b50604080516020600480358082013583810280860185019096528085526101ad95369593946024949385019291829185019084908082843750949750612ff79650505050505050565b34801561083c57600080fd5b506102fc61302f565b34801561085157600080fd5b506102fc61303e565b610863816126b5565b15610876576108718161304d565b6108bb565b61087f816112e5565b1561088d5761087181613073565b610896816111dd565b156108a457610871816133d2565b6108ad8161094c565b15610187576108718161356e565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b505050505081565b600160a060020a0381166000908152600160209081526040808320600301548084526009909252822061097e84611895565b15156109f9576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72206c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60058101541515610a0d5760009250610aa8565b6003546005820154604080517fee684830000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b505050506040513d6020811015610aa357600080fd5b505192505b5050919050565b600160a060020a0382166000908152600160209081526040808320600380820154855260099093529083209182015490919083908190819060ff161515610b40576040805160e560020a62461bcd02815260206004820152601260248201527f41707065616c206e6f74206772616e7465640000000000000000000000000000604482015290519081900360640190fd5b600584015415610b9a576040805160e560020a62461bcd02815260206004820152601960248201527f41707065616c20616c7265616479206368616c6c656e67656400000000000000604482015290519081900360640190fd5b60048401544210610c1b576040805160e560020a62461bcd02815260206004820152602260248201527f41707065616c206e6f206c6f6e676572206f70656e20746f206368616c6c656e60448201527f6765000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003546007546040805160e160020a63349f642f028152602060048201819052601460248301527f61707065616c566f746550657263656e7461676500000000000000000000000060448301529151600160a060020a03948516946332ed3d6094169263693ec85e92606480820193918290030181600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d6020811015610ccb57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052601860248201527f6368616c6c656e676541707065616c436f6d6d69744c656e000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015610d4757600080fd5b505af1158015610d5b573d6000803e3d6000fd5b505050506040513d6020811015610d7157600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052601860248201527f6368616c6c656e676541707065616c52657665616c4c656e000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015610ded57600080fd5b505af1158015610e01573d6000803e3d6000fd5b505050506040513d6020811015610e1757600080fd5b50516040805160e060020a63ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b158015610e6357600080fd5b505af1158015610e77573d6000803e3d6000fd5b505050506040513d6020811015610e8d57600080fd5b505160018501546007546040805160e160020a63349f642f028152602060048201819052602260248301527f61707065616c4368616c6c656e6765566f746544697370656e736174696f6e5060448301527f63740000000000000000000000000000000000000000000000000000000000006064838101919091529251959850919650610fa1948794610f95949093610f8993600160a060020a039092169263693ec85e9260848082019392918290030181600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b505050506040513d6020811015610f7a57600080fd5b5051879063ffffffff61398016565b9063ffffffff61399216565b9063ffffffff6139bb16565b6040805160a081018252828152336020808301828152600084860181815260018c8101805460608901908152608089018581528e86528588528a862099518a5595519289018054945173ffffffffffffffffffffffffffffffffffffffff19909516600160a060020a039485161774ff0000000000000000000000000000000000000000191660a060020a95151595909502949094179093559151600280890191909155935160039097019690965560058c018b905591549154865160e060020a6323b872dd028152600481019590955230602486015260448501529451959650909216936323b872dd93606480840194938390030190829087803b1580156110a957600080fd5b505af11580156110bd573d6000803e3d6000fd5b505050506040513d60208110156110d357600080fd5b50511515611119576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b82856003015489600160a060020a03167fedfe36bf00610fb3b5474f1efd2de0d52ffb9a50b056ee37c33cea805fd441618a6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611188578181015183820152602001611170565b50505050905090810190601f1680156111b55780820380516001836020036101000a031916815260200191505b509250505060405180910390a450909695505050505050565b600654600160a060020a031681565b600160a060020a0381166000908152600160209081526040808320600301548084526009909252822061120f84611895565b151561128a576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72206c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002810154151561129e5760009250610aa8565b600381015460ff1615156112ba57428160020154109250610aa8565b4281600401541080156112cf57506005810154155b9250610aa8565b600754600160a060020a031681565b600160a060020a03811660009081526001602052604081206003015461130a83611895565b1515611385576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72206c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600860205260409020544210156113a457600091506113ba565b6000818152600960205260409020600201541591505b50919050565b600160a060020a03166000908152600160208190526040909120015460ff1690565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314611461576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b6002808201805484019055546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b505050506040513d60208110156114f157600080fd5b50511515611537576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b6115938383836139d0565b505050565b600760009054906101000a9004600160a060020a0316600160a060020a0316635793b9cf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156115eb57600080fd5b505af11580156115ff573d6000803e3d6000fd5b505050506040513d602081101561161557600080fd5b5051600160a060020a0316331461169c576040805160e560020a62461bcd02815260206004820152602860248201527f73656e64657220776173206e6f742074686520476f7665726e6d656e7420436f60448201527f6e74726f6c6c6572000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03811615156116fc576040805160e560020a62461bcd02815260206004820152601b60248201527f4e657720476f7665726e6d656e74206164647265737320697320300000000000604482015290519081900360640190fd5b60078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f016b4781993f669e6eac42012fead2d96f8381769b4efbb4ad686cca6031ea889181900360200190a150565b80518251600091146117df576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b82518110156115935761182483828151811015156117fd57fe5b90602001906020020151838381518110151561181557fe5b906020019060200201516118e0565b6001016117e3565b600160a060020a03166000908152600160205260408120541190565b60086020526000908152604090205481565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a03811660009081526001602052604081206003015481811180156118d9575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff1615611955576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff161515146119ca576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b6119d5338585613ab3565b91506119e2338585611bc3565b600085815260208190526040902060030154909150611a07908363ffffffff61398016565b6000858152602081905260409020600381019190915554611a2e908263ffffffff61398016565b6000858152602081815260408083209384553380845260049485018352818420805460ff19166001179055600254825160e060020a63a9059cbb02815295860191909152602485018690529051600160a060020a03919091169363a9059cbb9360448083019493928390030190829087803b158015611aac57600080fd5b505af1158015611ac0573d6000803e3d6000fd5b505050506040513d6020811015611ad657600080fd5b50511515611b1c576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b60008281526020819052604081206003810154815483611be4888888613ab3565b9050611bfa83610f95838563ffffffff61399216565b98975050505050505050565b6009602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a03909516959394929360ff92831693919290911687565b600160a060020a038082166000908152600160208190526040909120908101549091336101009092041614611cd2576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b611cdb826113c0565b1515611d57576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038101541580611d855750600381015460009081526020819052604090206001015460a060020a900460ff165b1515611e01576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b611e0a82613c0f565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b6000806000611e518585613df1565b91506000821115612090576007546040805160e160020a63349f642f028152602060048201819052601060248301527f7265717565737441707065616c4c656e000000000000000000000000000000006044830152915161206e93600160a060020a03169263693ec85e92606480820193918290030181600087803b158015611ed957600080fd5b505af1158015611eed573d6000803e3d6000fd5b505050506040513d6020811015611f0357600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e0000000000000000000000000000000000006044820152905161206293600160a060020a039093169263693ec85e92606480820193918290030181600087803b158015611f8457600080fd5b505af1158015611f98573d6000803e3d6000fd5b505050506040513d6020811015611fae57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561202a57600080fd5b505af115801561203e573d6000803e3d6000fd5b505050506040513d602081101561205457600080fd5b50519063ffffffff61469916565b9063ffffffff61469916565b9050612080428263ffffffff61469916565b6000838152600860205260409020555b509392505050565b600081815260208190526040812060010154819060a060020a900460ff161561210b576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561217257600080fd5b505af1158015612186573d6000803e3d6000fd5b505050506040513d602081101561219c57600080fd5b505115156121f4576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b60008381526009602052604090206003015460ff168015612227575060008381526009602052604090206006015460ff16155b905080156122e957600654604080517fe8cfa3f0000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163e8cfa3f0916024808201926020929091908290030181600087803b15801561229657600080fd5b505af11580156122aa573d6000803e3d6000fd5b505050506040513d60208110156122c057600080fd5b505115156122e45760008381526020819052604090206002908101540291506113ba565b61239e565b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b15801561235057600080fd5b505af1158015612364573d6000803e3d6000fd5b505050506040513d602081101561237a57600080fd5b5051151561239e5760008381526020819052604090206002908101540291506113ba565b5050600090815260208190526040902080546002918201549091020390565b600080600760009054906101000a9004600160a060020a0316600160a060020a03166356e1fb886040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561241357600080fd5b505af1158015612427573d6000803e3d6000fd5b505050506040513d602081101561243d57600080fd5b5051600160a060020a0316331461249e576040805160e560020a62461bcd02815260206004820152601c60248201527f73656e64657220776173206e6f742074686520417070656c6c61746500000000604482015290519081900360640190fd5b5050600160a060020a038316600090815260016020908152604080832060038101548452600990925290912060028101544210612525576040805160e560020a62461bcd02815260206004820152601d60248201527f4a756467652041707065616c207068617365206e6f7420616374697665000000604482015290519081900360640190fd5b600381015460ff1615612582576040805160e560020a62461bcd02815260206004820152601f60248201527f41707065616c2068617320616c7265616479206265656e206772616e74656400604482015290519081900360640190fd5b60038101805460ff19166001179055600480546040805160e160020a63349f642f0281526020938101849052601260248201527f6368616c6c656e676541707065616c4c656e00000000000000000000000000006044820152905161264993600160a060020a039093169263693ec85e92606480820193918290030181600087803b15801561261057600080fd5b505af1158015612624573d6000803e3d6000fd5b505050506040513d602081101561263a57600080fd5b5051429063ffffffff61469916565b600482015560038201546040805160208082528101869052600160a060020a038816917f85f61fe0f1b618d4efbf918ec1be0591560df9463fe15cbfb435c3537a1fc1029188918891908190810184848082843760405192018290039550909350505050a35050505050565b600160a060020a0381166000908152600160205260408120600301546126da8361182c565b80156126fd5750600160a060020a03831660009081526001602052604090205442115b801561270f575061270d836113c0565b155b801561274057508015806127405750600081815260208190526040902060019081015460a060020a900460ff161515145b1561274e57600191506113ba565b50600092915050565b600454600160a060020a031681565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146127e5576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115612867576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b600381015415806128955750600381015460009081526020819052604090206001015460a060020a900460ff165b156129ea57600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561291457600080fd5b505af1158015612928573d6000803e3d6000fd5b505050506040513d602081101561293e57600080fd5b5051600282015483900310156129ea576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015612a4b57600080fd5b505af1158015612a5f573d6000803e3d6000fd5b505050506040513d6020811015612a7557600080fd5b50511515612abb576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b600160a060020a038084166000908152600160209081526040808320600380549082015483517fee684830000000000000000000000000000000000000000000000000000000008152600481019190915292519195859491169263ee684830926024808301939282900301818787803b158015612b8857600080fd5b505af1158015612b9c573d6000803e3d6000fd5b505050506040513d6020811015612bb257600080fd5b50511515612c30576040805160e560020a62461bcd02815260206004820152602860248201527f506f6c6c20666f72206c697374696e67206368616c6c656e676520686173206e60448201527f6f7420656e646564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038301546000908152600860205260409020544210612c9a576040805160e560020a62461bcd02815260206004820152601c60248201527f526571756573742041707065616c207068617365206973206f76657200000000604482015290519081900360640190fd5b6003830154600090815260096020526040902054600160a060020a031615612d32576040805160e560020a62461bcd02815260206004820152602f60248201527f41707065616c20666f722074686973206368616c6c656e67652068617320616c60448201527f7265616479206265656e206d6164650000000000000000000000000000000000606482015290519081900360840190fd5b6007546040805160e160020a63349f642f028152602060048201819052600960248301527f61707065616c466565000000000000000000000000000000000000000000000060448301529151600160a060020a039093169263693ec85e926064808401939192918290030181600087803b158015612daf57600080fd5b505af1158015612dc3573d6000803e3d6000fd5b505050506040513d6020811015612dd957600080fd5b505160038401546000908152600960209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19163317815560018101859055600754825160e160020a63349f642f02815260048101859052600e60248201527f6a7564676541707065616c4c656e00000000000000000000000000000000000060448201529251959750909550612e9a94600160a060020a03919091169363693ec85e93606480850194919392918390030190829087803b15801561261057600080fd5b600280830191909155546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b505050506040513d6020811015612f2857600080fd5b50511515612f6e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b826003015486600160a060020a03167fdb6f1c08edff9a1f7e425164118b0473e04404404b2c2d38d6e96e41fcbc7fb1843389896040518085815260200184600160a060020a0316600160a060020a03168152602001806020018281038252848482818152602001925080828437604051920182900397509095505050505050a3505050505050565b60005b815181101561302b57613023828281518110151561301457fe5b9060200190602002015161085a565b600101612ffa565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b613056816146a6565b600160a060020a0316600090815260016020526040812060030155565b600160a060020a0381166000908152600160205260408120600301549061309982612098565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561312e57600080fd5b505af1158015613142573d6000803e3d6000fd5b505050506040513d602081101561315857600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050506040513d60208110156131fc57600080fd5b5051156132805761320c8361304d565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3611593565b61328983613c0f565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b1580156132ed57600080fd5b505af1158015613301573d6000803e3d6000fd5b505050506040513d602081101561331757600080fd5b5051151561336f576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b600160a060020a03811660009081526001602090815260408083206003808201548552600990935290832091820154909290819060ff16156134ec576134178561472a565b600254835460018501546040805160e060020a63a9059cbb028152600160a060020a039384166004820152602481019290925251919092169163a9059cbb9160448083019260209291908290030181600087803b15801561347757600080fd5b505af115801561348b573d6000803e3d6000fd5b505050506040513d60208110156134a157600080fd5b505115156134e7576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b613567565b60038401546000908152602081905260409020600184015490925061351890600263ffffffff6139bb16565b825490915061352d908263ffffffff61469916565b8255600183015461355990613548908363ffffffff61398016565b60028401549063ffffffff61469916565b600283015561356785613073565b5050505050565b600160a060020a03811660009081526001602090815260408083206003810154808552600984528285206005810154808752948690529285209194909391906135b683612098565b60018301805474ff0000000000000000000000000000000000000000191660a060020a179055600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018790529051929350600160a060020a039091169163053e71a6916024808201926020929091908290030181600087803b15801561364657600080fd5b505af115801561365a573d6000803e3d6000fd5b505050506040513d602081101561367057600080fd5b505160038084019190915554604080517f49403183000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a03909216916349403183916024808201926020929091908290030181600087803b1580156136e057600080fd5b505af11580156136f4573d6000803e3d6000fd5b505050506040513d602081101561370a57600080fd5b50511561384f5760068401805460ff1916600117905561372987613073565b60025460018301546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561378757600080fd5b505af115801561379b573d6000803e3d6000fd5b505050506040513d60208110156137b157600080fd5b505115156137f7576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b828588600160a060020a03167fc49556ab8bcbdd0403e98b6dac260ac86008640cda2a5a229c895353b87f2feb85600001548660030154604051808381526020018281526020019250505060405180910390a4613977565b6138588761472a565b60025484546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156138b357600080fd5b505af11580156138c7573d6000803e3d6000fd5b505050506040513d60208110156138dd57600080fd5b50511515613923576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b828588600160a060020a03167f8a7e8d1076fec4f93e4d57111b034ab3975009f601977350c4542e15d2e8b0f685600001548660030154604051808381526020018281526020019250505060405180910390a45b50505050505050565b60008282111561398c57fe5b50900390565b60008215156139a357506000611bbd565b508181028183828115156139b357fe5b0414611bbd57fe5b600081838115156139c857fe5b049392505050565b82600081905033600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613a1e57600080fd5b505af1158015613a32573d6000803e3d6000fd5b505050506040513d6020811015613a4857600080fd5b5051600160a060020a031614613aa8576040805160e560020a62461bcd02815260206004820152601f60248201527f53656e646572206973206e6f74206f776e6572206f6620636f6e747261637400604482015290519081900360640190fd5b613567858585614a5d565b600082815260096020526040812060030154819060ff168015613ae8575060008481526009602052604090206006015460ff16155b90508015613b9957600654604080517f6afa97a8000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018890526044820187905291519190921691636afa97a89160648083019260209291908290030181600087803b158015613b6657600080fd5b505af1158015613b7a573d6000803e3d6000fd5b505050506040513d6020811015613b9057600080fd5b50519150612090565b600354604080517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015260248201889052604482018790529151919092169163b43bd0699160648083019260209291908290030181600087803b158015613b6657600080fd5b600160a060020a0381166000908152600160208190526040822090810154909190819060ff1615613c7357604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a2613ca8565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff19169055928501839055600390940182905561010090920490921691811115613deb576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015613d6957600080fd5b505af1158015613d7d573d6000803e3d6000fd5b505050506040513d6020811015613d9357600080fd5b50511515613deb576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b158015613e8957600080fd5b505af1158015613e9d573d6000803e3d6000fd5b505050506040513d6020811015613eb357600080fd5b50519450613ec08961182c565b80613ecf5750600186015460ff165b1515613f71576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b60038601541580613f9f5750600386015460009081526020819052604090206001015460a060020a900460ff165b151561401b576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b848660020154101561406d5761403089613c0f565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a26000965061468d565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b1580156140f457600080fd5b505af1158015614108573d6000803e3d6000fd5b505050506040513d602081101561411e57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561419a57600080fd5b505af11580156141ae573d6000803e3d6000fd5b505050506040513d60208110156141c457600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561424057600080fd5b505af1158015614254573d6000803e3d6000fd5b505050506040513d602081101561426a57600080fd5b50516040805160e060020a63ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b1580156142b657600080fd5b505af11580156142ca573d6000803e3d6000fd5b505050506040513d60208110156142e057600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e4840152925193975060649650909283926143bb928892610f95928c92610f8992600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b50518a9063ffffffff61398016565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c900390559454855160e060020a6323b872dd0281526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b1580156144be57600080fd5b505af11580156144d2573d6000803e3d6000fd5b505050506040513d60208110156144e857600080fd5b5051151561452e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b15801561459557600080fd5b505af11580156145a9573d6000803e3d6000fd5b505050506040513d60a08110156145bf57600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b8381101561464d578181015183820152602001614635565b50505050905090810190601f16801561467a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b81810182811015611bbd57fe5b600160a060020a0381166000908152600160208190526040909120015460ff16151561470157604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a0381166000908152600160209081526040808320600381015480855292849052908320909261475f83612098565b60018301805474ff0000000000000000000000000000000000000000191660a060020a179055600654604080517fe8cfa3f0000000000000000000000000000000000000000000000000000000008152600481018790529051929350600160a060020a039091169163e8cfa3f0916024808201926020929091908290030181600087803b1580156147ef57600080fd5b505af1158015614803573d6000803e3d6000fd5b505050506040513d602081101561481957600080fd5b505160038084019190915554604080517f49403183000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a03909216916349403183916024808201926020929091908290030181600087803b15801561488957600080fd5b505af115801561489d573d6000803e3d6000fd5b505050506040513d60208110156148b357600080fd5b50511515614931576148c48561304d565b60028401546148d9908263ffffffff61469916565b60028501558154600383015460408051928352602083019190915280518592600160a060020a038916927f72506b3ce4d8f0cf8cf6ccb7cd5281af2b0d020121fb20abfa073eeb3f6d296e92918290030190a3613567565b61493a85613c0f565b60025460018301546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561499857600080fd5b505af11580156149ac573d6000803e3d6000fd5b505050506040513d60208110156149c257600080fd5b50511515614a08576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b8154600383015460408051928352602083019190915280518592600160a060020a038916927f446922bbfdaa528d4a969857cd0894d6bf8bbff52226624e752b3f1be7513b0a92918290030190a35050505050565b82803b60008111614ab8576040805160e560020a62461bcd02815260206004820152601960248201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b6135678585856000614ac9846113c0565b15614b1e576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b614b278461182c565b15614ba2576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015614c1c57600080fd5b505af1158015614c30573d6000803e3d6000fd5b505050506040513d6020811015614c4657600080fd5b5051831015614cc5576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e00000000000000000000000000000000000000604483015291519395614d7c9592169363693ec85e9360648084019491938390030190829087803b15801561261057600080fd5b815560028082018490555460018201546040805160e060020a6323b872dd028152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b158015614ded57600080fd5b505af1158015614e01573d6000803e3d6000fd5b505050506040513d6020811015614e1757600080fd5b50511515614e5d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614ee2578181015183820152602001614eca565b50505050905090810190601f168015614f0f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050505600546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a723058206bacf351822cd256e053c82d7193ba145a743ea3d6a46dc684273e25e65351cc0029\",\n  \"deployedBytecode\": \"0x6080604052600436106101875763ffffffff60e060020a60003504166301162b93811461018c57806306fdde03146101af5780630aac454314610239578063120c40c61461026e5780631e39d8d7146102e757806325ecef04146103185780632672f526146103395780632ea9b6961461034e5780633af32abf1461036f57806347e7ef241461039057806355246b9c146103b45780635b5d4e731461041d5780635f02116f1461043e57806361a9a8ca146104cc57806364c37318146104ed57806365d96c82146105055780636eefcab91461055957806386bb8f371461057a5780638f1d377614610595578063a5ba3b1e146105e0578063a7aad3db14610604578063acff86871461062b578063b42652e914610687578063bc4b010f146106a8578063c8187cf11461070f578063c931674b14610727578063dd4e7cfd14610754578063e1e3f91514610775578063f3fef3a31461078a578063f4c8cfc5146107ae578063f96c8720146107db578063fc0c546a14610830578063fce1ccca14610845575b600080fd5b34801561019857600080fd5b506101ad600160a060020a036004351661085a565b005b3480156101bb57600080fd5b506101c46108be565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101fe5781810151838201526020016101e6565b50505050905090810190601f16801561022b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024557600080fd5b5061025a600160a060020a036004351661094c565b604080519115158252519081900360200190f35b34801561027a57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102d5958335600160a060020a0316953695604494919390910191908190840183828082843750949750610aaf9650505050505050565b60408051918252519081900360200190f35b3480156102f357600080fd5b506102fc6111ce565b60408051600160a060020a039092168252519081900360200190f35b34801561032457600080fd5b5061025a600160a060020a03600435166111dd565b34801561034557600080fd5b506102fc6112d6565b34801561035a57600080fd5b5061025a600160a060020a03600435166112e5565b34801561037b57600080fd5b5061025a600160a060020a03600435166113c0565b34801561039c57600080fd5b506101ad600160a060020a03600435166024356113e2565b3480156103c057600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ad948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506115889650505050505050565b34801561042957600080fd5b506101ad600160a060020a0360043516611598565b34801561044a57600080fd5b50604080516020600480358082013583810280860185019096528085526101ad95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061175d9650505050505050565b3480156104d857600080fd5b5061025a600160a060020a036004351661182c565b3480156104f957600080fd5b506102d5600435611848565b34801561051157600080fd5b50610526600160a060020a036004351661185a565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b34801561056557600080fd5b5061025a600160a060020a0360043516611895565b34801561058657600080fd5b506101ad6004356024356118e0565b3480156105a157600080fd5b506105ad600435611b59565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b3480156105ec57600080fd5b5061025a600435600160a060020a0360243516611b95565b34801561061057600080fd5b506102d5600160a060020a0360043516602435604435611bc3565b34801561063757600080fd5b50610643600435611c06565b60408051600160a060020a0390981688526020880196909652868601949094529115156060860152608085015260a0840152151560c0830152519081900360e00190f35b34801561069357600080fd5b506101ad600160a060020a0360043516611c53565b3480156106b457600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102d5958335600160a060020a0316953695604494919390910191908190840183828082843750949750611e429650505050505050565b34801561071b57600080fd5b506102d5600435612098565b34801561073357600080fd5b506101ad60048035600160a060020a031690602480359081019101356123bd565b34801561076057600080fd5b5061025a600160a060020a03600435166126b5565b34801561078157600080fd5b506102fc612757565b34801561079657600080fd5b506101ad600160a060020a0360043516602435612766565b3480156107ba57600080fd5b506101ad60048035600160a060020a03169060248035908101910135612b0c565b3480156107e757600080fd5b50604080516020600480358082013583810280860185019096528085526101ad95369593946024949385019291829185019084908082843750949750612ff79650505050505050565b34801561083c57600080fd5b506102fc61302f565b34801561085157600080fd5b506102fc61303e565b610863816126b5565b15610876576108718161304d565b6108bb565b61087f816112e5565b1561088d5761087181613073565b610896816111dd565b156108a457610871816133d2565b6108ad8161094c565b15610187576108718161356e565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b505050505081565b600160a060020a0381166000908152600160209081526040808320600301548084526009909252822061097e84611895565b15156109f9576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72206c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60058101541515610a0d5760009250610aa8565b6003546005820154604080517fee684830000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b505050506040513d6020811015610aa357600080fd5b505192505b5050919050565b600160a060020a0382166000908152600160209081526040808320600380820154855260099093529083209182015490919083908190819060ff161515610b40576040805160e560020a62461bcd02815260206004820152601260248201527f41707065616c206e6f74206772616e7465640000000000000000000000000000604482015290519081900360640190fd5b600584015415610b9a576040805160e560020a62461bcd02815260206004820152601960248201527f41707065616c20616c7265616479206368616c6c656e67656400000000000000604482015290519081900360640190fd5b60048401544210610c1b576040805160e560020a62461bcd02815260206004820152602260248201527f41707065616c206e6f206c6f6e676572206f70656e20746f206368616c6c656e60448201527f6765000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003546007546040805160e160020a63349f642f028152602060048201819052601460248301527f61707065616c566f746550657263656e7461676500000000000000000000000060448301529151600160a060020a03948516946332ed3d6094169263693ec85e92606480820193918290030181600087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d6020811015610ccb57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052601860248201527f6368616c6c656e676541707065616c436f6d6d69744c656e000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015610d4757600080fd5b505af1158015610d5b573d6000803e3d6000fd5b505050506040513d6020811015610d7157600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052601860248201527f6368616c6c656e676541707065616c52657665616c4c656e000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015610ded57600080fd5b505af1158015610e01573d6000803e3d6000fd5b505050506040513d6020811015610e1757600080fd5b50516040805160e060020a63ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b158015610e6357600080fd5b505af1158015610e77573d6000803e3d6000fd5b505050506040513d6020811015610e8d57600080fd5b505160018501546007546040805160e160020a63349f642f028152602060048201819052602260248301527f61707065616c4368616c6c656e6765566f746544697370656e736174696f6e5060448301527f63740000000000000000000000000000000000000000000000000000000000006064838101919091529251959850919650610fa1948794610f95949093610f8993600160a060020a039092169263693ec85e9260848082019392918290030181600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b505050506040513d6020811015610f7a57600080fd5b5051879063ffffffff61398016565b9063ffffffff61399216565b9063ffffffff6139bb16565b6040805160a081018252828152336020808301828152600084860181815260018c8101805460608901908152608089018581528e86528588528a862099518a5595519289018054945173ffffffffffffffffffffffffffffffffffffffff19909516600160a060020a039485161774ff0000000000000000000000000000000000000000191660a060020a95151595909502949094179093559151600280890191909155935160039097019690965560058c018b905591549154865160e060020a6323b872dd028152600481019590955230602486015260448501529451959650909216936323b872dd93606480840194938390030190829087803b1580156110a957600080fd5b505af11580156110bd573d6000803e3d6000fd5b505050506040513d60208110156110d357600080fd5b50511515611119576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b82856003015489600160a060020a03167fedfe36bf00610fb3b5474f1efd2de0d52ffb9a50b056ee37c33cea805fd441618a6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611188578181015183820152602001611170565b50505050905090810190601f1680156111b55780820380516001836020036101000a031916815260200191505b509250505060405180910390a450909695505050505050565b600654600160a060020a031681565b600160a060020a0381166000908152600160209081526040808320600301548084526009909252822061120f84611895565b151561128a576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72206c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002810154151561129e5760009250610aa8565b600381015460ff1615156112ba57428160020154109250610aa8565b4281600401541080156112cf57506005810154155b9250610aa8565b600754600160a060020a031681565b600160a060020a03811660009081526001602052604081206003015461130a83611895565b1515611385576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72206c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600860205260409020544210156113a457600091506113ba565b6000818152600960205260409020600201541591505b50919050565b600160a060020a03166000908152600160208190526040909120015460ff1690565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314611461576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b6002808201805484019055546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b505050506040513d60208110156114f157600080fd5b50511515611537576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b6115938383836139d0565b505050565b600760009054906101000a9004600160a060020a0316600160a060020a0316635793b9cf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156115eb57600080fd5b505af11580156115ff573d6000803e3d6000fd5b505050506040513d602081101561161557600080fd5b5051600160a060020a0316331461169c576040805160e560020a62461bcd02815260206004820152602860248201527f73656e64657220776173206e6f742074686520476f7665726e6d656e7420436f60448201527f6e74726f6c6c6572000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03811615156116fc576040805160e560020a62461bcd02815260206004820152601b60248201527f4e657720476f7665726e6d656e74206164647265737320697320300000000000604482015290519081900360640190fd5b60078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f016b4781993f669e6eac42012fead2d96f8381769b4efbb4ad686cca6031ea889181900360200190a150565b80518251600091146117df576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b82518110156115935761182483828151811015156117fd57fe5b90602001906020020151838381518110151561181557fe5b906020019060200201516118e0565b6001016117e3565b600160a060020a03166000908152600160205260408120541190565b60086020526000908152604090205481565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a03811660009081526001602052604081206003015481811180156118d9575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff1615611955576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff161515146119ca576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b6119d5338585613ab3565b91506119e2338585611bc3565b600085815260208190526040902060030154909150611a07908363ffffffff61398016565b6000858152602081905260409020600381019190915554611a2e908263ffffffff61398016565b6000858152602081815260408083209384553380845260049485018352818420805460ff19166001179055600254825160e060020a63a9059cbb02815295860191909152602485018690529051600160a060020a03919091169363a9059cbb9360448083019493928390030190829087803b158015611aac57600080fd5b505af1158015611ac0573d6000803e3d6000fd5b505050506040513d6020811015611ad657600080fd5b50511515611b1c576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b60008281526020819052604081206003810154815483611be4888888613ab3565b9050611bfa83610f95838563ffffffff61399216565b98975050505050505050565b6009602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154600160a060020a03909516959394929360ff92831693919290911687565b600160a060020a038082166000908152600160208190526040909120908101549091336101009092041614611cd2576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b611cdb826113c0565b1515611d57576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038101541580611d855750600381015460009081526020819052604090206001015460a060020a900460ff165b1515611e01576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b611e0a82613c0f565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b6000806000611e518585613df1565b91506000821115612090576007546040805160e160020a63349f642f028152602060048201819052601060248301527f7265717565737441707065616c4c656e000000000000000000000000000000006044830152915161206e93600160a060020a03169263693ec85e92606480820193918290030181600087803b158015611ed957600080fd5b505af1158015611eed573d6000803e3d6000fd5b505050506040513d6020811015611f0357600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e0000000000000000000000000000000000006044820152905161206293600160a060020a039093169263693ec85e92606480820193918290030181600087803b158015611f8457600080fd5b505af1158015611f98573d6000803e3d6000fd5b505050506040513d6020811015611fae57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561202a57600080fd5b505af115801561203e573d6000803e3d6000fd5b505050506040513d602081101561205457600080fd5b50519063ffffffff61469916565b9063ffffffff61469916565b9050612080428263ffffffff61469916565b6000838152600860205260409020555b509392505050565b600081815260208190526040812060010154819060a060020a900460ff161561210b576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561217257600080fd5b505af1158015612186573d6000803e3d6000fd5b505050506040513d602081101561219c57600080fd5b505115156121f4576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b60008381526009602052604090206003015460ff168015612227575060008381526009602052604090206006015460ff16155b905080156122e957600654604080517fe8cfa3f0000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163e8cfa3f0916024808201926020929091908290030181600087803b15801561229657600080fd5b505af11580156122aa573d6000803e3d6000fd5b505050506040513d60208110156122c057600080fd5b505115156122e45760008381526020819052604090206002908101540291506113ba565b61239e565b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b15801561235057600080fd5b505af1158015612364573d6000803e3d6000fd5b505050506040513d602081101561237a57600080fd5b5051151561239e5760008381526020819052604090206002908101540291506113ba565b5050600090815260208190526040902080546002918201549091020390565b600080600760009054906101000a9004600160a060020a0316600160a060020a03166356e1fb886040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561241357600080fd5b505af1158015612427573d6000803e3d6000fd5b505050506040513d602081101561243d57600080fd5b5051600160a060020a0316331461249e576040805160e560020a62461bcd02815260206004820152601c60248201527f73656e64657220776173206e6f742074686520417070656c6c61746500000000604482015290519081900360640190fd5b5050600160a060020a038316600090815260016020908152604080832060038101548452600990925290912060028101544210612525576040805160e560020a62461bcd02815260206004820152601d60248201527f4a756467652041707065616c207068617365206e6f7420616374697665000000604482015290519081900360640190fd5b600381015460ff1615612582576040805160e560020a62461bcd02815260206004820152601f60248201527f41707065616c2068617320616c7265616479206265656e206772616e74656400604482015290519081900360640190fd5b60038101805460ff19166001179055600480546040805160e160020a63349f642f0281526020938101849052601260248201527f6368616c6c656e676541707065616c4c656e00000000000000000000000000006044820152905161264993600160a060020a039093169263693ec85e92606480820193918290030181600087803b15801561261057600080fd5b505af1158015612624573d6000803e3d6000fd5b505050506040513d602081101561263a57600080fd5b5051429063ffffffff61469916565b600482015560038201546040805160208082528101869052600160a060020a038816917f85f61fe0f1b618d4efbf918ec1be0591560df9463fe15cbfb435c3537a1fc1029188918891908190810184848082843760405192018290039550909350505050a35050505050565b600160a060020a0381166000908152600160205260408120600301546126da8361182c565b80156126fd5750600160a060020a03831660009081526001602052604090205442115b801561270f575061270d836113c0565b155b801561274057508015806127405750600081815260208190526040902060019081015460a060020a900460ff161515145b1561274e57600191506113ba565b50600092915050565b600454600160a060020a031681565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146127e5576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115612867576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b600381015415806128955750600381015460009081526020819052604090206001015460a060020a900460ff165b156129ea57600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561291457600080fd5b505af1158015612928573d6000803e3d6000fd5b505050506040513d602081101561293e57600080fd5b5051600282015483900310156129ea576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015612a4b57600080fd5b505af1158015612a5f573d6000803e3d6000fd5b505050506040513d6020811015612a7557600080fd5b50511515612abb576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b600160a060020a038084166000908152600160209081526040808320600380549082015483517fee684830000000000000000000000000000000000000000000000000000000008152600481019190915292519195859491169263ee684830926024808301939282900301818787803b158015612b8857600080fd5b505af1158015612b9c573d6000803e3d6000fd5b505050506040513d6020811015612bb257600080fd5b50511515612c30576040805160e560020a62461bcd02815260206004820152602860248201527f506f6c6c20666f72206c697374696e67206368616c6c656e676520686173206e60448201527f6f7420656e646564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60038301546000908152600860205260409020544210612c9a576040805160e560020a62461bcd02815260206004820152601c60248201527f526571756573742041707065616c207068617365206973206f76657200000000604482015290519081900360640190fd5b6003830154600090815260096020526040902054600160a060020a031615612d32576040805160e560020a62461bcd02815260206004820152602f60248201527f41707065616c20666f722074686973206368616c6c656e67652068617320616c60448201527f7265616479206265656e206d6164650000000000000000000000000000000000606482015290519081900360840190fd5b6007546040805160e160020a63349f642f028152602060048201819052600960248301527f61707065616c466565000000000000000000000000000000000000000000000060448301529151600160a060020a039093169263693ec85e926064808401939192918290030181600087803b158015612daf57600080fd5b505af1158015612dc3573d6000803e3d6000fd5b505050506040513d6020811015612dd957600080fd5b505160038401546000908152600960209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19163317815560018101859055600754825160e160020a63349f642f02815260048101859052600e60248201527f6a7564676541707065616c4c656e00000000000000000000000000000000000060448201529251959750909550612e9a94600160a060020a03919091169363693ec85e93606480850194919392918390030190829087803b15801561261057600080fd5b600280830191909155546040805160e060020a6323b872dd028152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015612efe57600080fd5b505af1158015612f12573d6000803e3d6000fd5b505050506040513d6020811015612f2857600080fd5b50511515612f6e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b826003015486600160a060020a03167fdb6f1c08edff9a1f7e425164118b0473e04404404b2c2d38d6e96e41fcbc7fb1843389896040518085815260200184600160a060020a0316600160a060020a03168152602001806020018281038252848482818152602001925080828437604051920182900397509095505050505050a3505050505050565b60005b815181101561302b57613023828281518110151561301457fe5b9060200190602002015161085a565b600101612ffa565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b613056816146a6565b600160a060020a0316600090815260016020526040812060030155565b600160a060020a0381166000908152600160205260408120600301549061309982612098565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561312e57600080fd5b505af1158015613142573d6000803e3d6000fd5b505050506040513d602081101561315857600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050506040513d60208110156131fc57600080fd5b5051156132805761320c8361304d565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3611593565b61328983613c0f565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b1580156132ed57600080fd5b505af1158015613301573d6000803e3d6000fd5b505050506040513d602081101561331757600080fd5b5051151561336f576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b600160a060020a03811660009081526001602090815260408083206003808201548552600990935290832091820154909290819060ff16156134ec576134178561472a565b600254835460018501546040805160e060020a63a9059cbb028152600160a060020a039384166004820152602481019290925251919092169163a9059cbb9160448083019260209291908290030181600087803b15801561347757600080fd5b505af115801561348b573d6000803e3d6000fd5b505050506040513d60208110156134a157600080fd5b505115156134e7576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b613567565b60038401546000908152602081905260409020600184015490925061351890600263ffffffff6139bb16565b825490915061352d908263ffffffff61469916565b8255600183015461355990613548908363ffffffff61398016565b60028401549063ffffffff61469916565b600283015561356785613073565b5050505050565b600160a060020a03811660009081526001602090815260408083206003810154808552600984528285206005810154808752948690529285209194909391906135b683612098565b60018301805474ff0000000000000000000000000000000000000000191660a060020a179055600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018790529051929350600160a060020a039091169163053e71a6916024808201926020929091908290030181600087803b15801561364657600080fd5b505af115801561365a573d6000803e3d6000fd5b505050506040513d602081101561367057600080fd5b505160038084019190915554604080517f49403183000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a03909216916349403183916024808201926020929091908290030181600087803b1580156136e057600080fd5b505af11580156136f4573d6000803e3d6000fd5b505050506040513d602081101561370a57600080fd5b50511561384f5760068401805460ff1916600117905561372987613073565b60025460018301546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561378757600080fd5b505af115801561379b573d6000803e3d6000fd5b505050506040513d60208110156137b157600080fd5b505115156137f7576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b828588600160a060020a03167fc49556ab8bcbdd0403e98b6dac260ac86008640cda2a5a229c895353b87f2feb85600001548660030154604051808381526020018281526020019250505060405180910390a4613977565b6138588761472a565b60025484546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156138b357600080fd5b505af11580156138c7573d6000803e3d6000fd5b505050506040513d60208110156138dd57600080fd5b50511515613923576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b828588600160a060020a03167f8a7e8d1076fec4f93e4d57111b034ab3975009f601977350c4542e15d2e8b0f685600001548660030154604051808381526020018281526020019250505060405180910390a45b50505050505050565b60008282111561398c57fe5b50900390565b60008215156139a357506000611bbd565b508181028183828115156139b357fe5b0414611bbd57fe5b600081838115156139c857fe5b049392505050565b82600081905033600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613a1e57600080fd5b505af1158015613a32573d6000803e3d6000fd5b505050506040513d6020811015613a4857600080fd5b5051600160a060020a031614613aa8576040805160e560020a62461bcd02815260206004820152601f60248201527f53656e646572206973206e6f74206f776e6572206f6620636f6e747261637400604482015290519081900360640190fd5b613567858585614a5d565b600082815260096020526040812060030154819060ff168015613ae8575060008481526009602052604090206006015460ff16155b90508015613b9957600654604080517f6afa97a8000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018890526044820187905291519190921691636afa97a89160648083019260209291908290030181600087803b158015613b6657600080fd5b505af1158015613b7a573d6000803e3d6000fd5b505050506040513d6020811015613b9057600080fd5b50519150612090565b600354604080517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015260248201889052604482018790529151919092169163b43bd0699160648083019260209291908290030181600087803b158015613b6657600080fd5b600160a060020a0381166000908152600160208190526040822090810154909190819060ff1615613c7357604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a2613ca8565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff19169055928501839055600390940182905561010090920490921691811115613deb576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015613d6957600080fd5b505af1158015613d7d573d6000803e3d6000fd5b505050506040513d6020811015613d9357600080fd5b50511515613deb576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b158015613e8957600080fd5b505af1158015613e9d573d6000803e3d6000fd5b505050506040513d6020811015613eb357600080fd5b50519450613ec08961182c565b80613ecf5750600186015460ff165b1515613f71576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b60038601541580613f9f5750600386015460009081526020819052604090206001015460a060020a900460ff165b151561401b576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b848660020154101561406d5761403089613c0f565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a26000965061468d565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b1580156140f457600080fd5b505af1158015614108573d6000803e3d6000fd5b505050506040513d602081101561411e57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561419a57600080fd5b505af11580156141ae573d6000803e3d6000fd5b505050506040513d60208110156141c457600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561424057600080fd5b505af1158015614254573d6000803e3d6000fd5b505050506040513d602081101561426a57600080fd5b50516040805160e060020a63ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b1580156142b657600080fd5b505af11580156142ca573d6000803e3d6000fd5b505050506040513d60208110156142e057600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e4840152925193975060649650909283926143bb928892610f95928c92610f8992600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b15801561438257600080fd5b505af1158015614396573d6000803e3d6000fd5b505050506040513d60208110156143ac57600080fd5b50518a9063ffffffff61398016565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c900390559454855160e060020a6323b872dd0281526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b1580156144be57600080fd5b505af11580156144d2573d6000803e3d6000fd5b505050506040513d60208110156144e857600080fd5b5051151561452e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b15801561459557600080fd5b505af11580156145a9573d6000803e3d6000fd5b505050506040513d60a08110156145bf57600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b8381101561464d578181015183820152602001614635565b50505050905090810190601f16801561467a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b81810182811015611bbd57fe5b600160a060020a0381166000908152600160208190526040909120015460ff16151561470157604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a0381166000908152600160209081526040808320600381015480855292849052908320909261475f83612098565b60018301805474ff0000000000000000000000000000000000000000191660a060020a179055600654604080517fe8cfa3f0000000000000000000000000000000000000000000000000000000008152600481018790529051929350600160a060020a039091169163e8cfa3f0916024808201926020929091908290030181600087803b1580156147ef57600080fd5b505af1158015614803573d6000803e3d6000fd5b505050506040513d602081101561481957600080fd5b505160038084019190915554604080517f49403183000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a03909216916349403183916024808201926020929091908290030181600087803b15801561488957600080fd5b505af115801561489d573d6000803e3d6000fd5b505050506040513d60208110156148b357600080fd5b50511515614931576148c48561304d565b60028401546148d9908263ffffffff61469916565b60028501558154600383015460408051928352602083019190915280518592600160a060020a038916927f72506b3ce4d8f0cf8cf6ccb7cd5281af2b0d020121fb20abfa073eeb3f6d296e92918290030190a3613567565b61493a85613c0f565b60025460018301546040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561499857600080fd5b505af11580156149ac573d6000803e3d6000fd5b505050506040513d60208110156149c257600080fd5b50511515614a08576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b8154600383015460408051928352602083019190915280518592600160a060020a038916927f446922bbfdaa528d4a969857cd0894d6bf8bbff52226624e752b3f1be7513b0a92918290030190a35050505050565b82803b60008111614ab8576040805160e560020a62461bcd02815260206004820152601960248201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b6135678585856000614ac9846113c0565b15614b1e576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b614b278461182c565b15614ba2576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015614c1c57600080fd5b505af1158015614c30573d6000803e3d6000fd5b505050506040513d6020811015614c4657600080fd5b5051831015614cc5576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e00000000000000000000000000000000000000604483015291519395614d7c9592169363693ec85e9360648084019491938390030190829087803b15801561261057600080fd5b815560028082018490555460018201546040805160e060020a6323b872dd028152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b158015614ded57600080fd5b505af1158015614e01573d6000803e3d6000fd5b505050506040513d6020811015614e1757600080fd5b50511515614e5d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020614f25833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614ee2578181015183820152602001614eca565b50505050905090810190601f168015614f0f5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050505600546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a723058206bacf351822cd256e053c82d7193ba145a743ea3d6a46dc684273e25e65351cc0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"civilVoting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"government\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"deposit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"claimRewards\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"appWasMade\",\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challengeRequestAppealExpiries\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"listings\",\n      \"outputs\": [\n        {\n          \"name\": \"applicationExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"unstakedDeposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challenges\",\n      \"outputs\": [\n        {\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"resolved\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"stake\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"tokenClaims\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"appeals\",\n      \"outputs\": [\n        {\n          \"name\": \"requester\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"appealFeePaid\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"appealPhaseExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"appealGranted\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"appealOpenToChallengeExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"appealChallengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"overturned\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"exit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"canBeWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"parameterizer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdraw\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddresses\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"name\": \"updateStatuses\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"token\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"plcr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"param\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"govt\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appealFeePaid\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"requester\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"_AppealRequested\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"_AppealGranted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_FailedChallengeOverturned\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_SuccessfulChallengeOverturned\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"appealChallengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"_GrantedAppealChallenged\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"appealChallengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_GrantedAppealOverturned\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"appealChallengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_GrantedAppealConfirmed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"newGovernment\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_GovernmentTransfered\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"applicant\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Application\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Challenge\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"added\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Deposit\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"withdrew\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Withdrawal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationWhitelisted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingWithdrawn\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_TouchAndRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeSucceeded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_RewardClaimed\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"apply\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"requestAppeal\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"grantAppeal\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"newGovernment\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferGovernment\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"updateStatus\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"challenge\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"challengeGrantedAppeal\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"determineReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"voterReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"canBeResolved\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"appealCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"canBeResolved\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"appealChallengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"canBeResolved\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xbd5a95a66dd4e78bcb597198df222c4eddc14da7\",\n      \"transactionHash\": \"0x7ed74c61ba31a254e5eaf7a179afaa8b129087d3d8e9119e56a39bfab1e4ef51\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xdad6d7ea1e43f8492a78bab8bb0d45a889ed6ac3\",\n      \"transactionHash\": \"0xcf9e354de1162725950e287ecbf01ea52eb77551d9a818d4c4ea070e7d067225\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/CivilTokenController.json",
    "content": "{\n  \"contractName\": \"CivilTokenController\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b5060008054600160a060020a03191633178155604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020820190815291517f6ef3054c0000000000000000000000000000000000000000000000000000000081526008600482018181526024830186905260606044840190815284516064850152845173__MessagesAndCodes______________________97636ef3054c97949690959094608490910191808383895b83811015620000e7578181015183820152602001620000cd565b50505050905090810190601f168015620001155780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b1580156200013557600080fd5b505af41580156200014a573d6000803e3d6000fd5b505050506040513d60208110156200016157600080fd5b5050604080518082018252601281527f4d5553545f42455f415f434956494c49414e00000000000000000000000000006020820190815291517f6ef3054c00000000000000000000000000000000000000000000000000000000815260086004820181815260016024840181905260606044850190815285516064860152855173__MessagesAndCodes______________________97636ef3054c979596939594936084019180838360005b83811015620002275781810151838201526020016200020d565b50505050905090810190601f168015620002555780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b1580156200027557600080fd5b505af41580156200028a573d6000803e3d6000fd5b505050506040513d6020811015620002a157600080fd5b5050604080518082018252601081527f4d5553545f42455f554e4c4f434b4544000000000000000000000000000000006020820190815291517f6ef3054c00000000000000000000000000000000000000000000000000000000815260086004820181815260026024840181905260606044850190815285516064860152855173__MessagesAndCodes______________________97636ef3054c979596939594936084019180838360005b83811015620003675781810151838201526020016200034d565b50505050905090810190601f168015620003955780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b158015620003b557600080fd5b505af4158015620003ca573d6000803e3d6000fd5b505050506040513d6020811015620003e157600080fd5b5050604080518082018252601081527f4d5553545f42455f5645524946494544000000000000000000000000000000006020820190815291517f6ef3054c00000000000000000000000000000000000000000000000000000000815260086004820181815260036024840181905260606044850190815285516064860152855173__MessagesAndCodes______________________97636ef3054c979596939594936084019180838360005b83811015620004a75781810151838201526020016200048d565b50505050905090810190601f168015620004d55780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b158015620004f557600080fd5b505af41580156200050a573d6000803e3d6000fd5b505050506040513d60208110156200052157600080fd5b505061143480620005336000396000f3006080604052600436106101d75763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630e969a0581146101dc5780631299090a1461020757806314862ea51461022a578063166542b31461024b5780632d06177a146102805780633c421424146102a15780633f16b282146102c2578063439b650b146102e35780634b3d1485146102f8578063607c60bb14610319578063715018a61461033a578063725248731461034f57806373c601821461037357806378a21ddb146103945780637f4ab1dd1461041e57806381601496146104395780638bdeb4521461045a5780638da5cb5b1461047b5780639685cc57146104ac578063ab3d0c7a146104cd578063ac18de43146104ee578063ac1f38531461050f578063adbb916014610530578063bdcadb3b14610551578063c0e9794a14610566578063c56a3e881461057b578063ca3aaa9a14610590578063d4ce1415146105a5578063e7984d17146105cf578063e79a4fd4146105e4578063e99f29a414610605578063ee37c29f14610626578063ee56f4fa14610647578063f0fbca0614610668578063f198391814610689578063f281e7d11461069e578063f2fde38b146106bf578063fdff9b4d146106e0575b600080fd5b3480156101e857600080fd5b506101f1610701565b6040805160ff9092168252519081900360200190f35b34801561021357600080fd5b50610228600160a060020a0360043516610706565b005b34801561023657600080fd5b50610228600160a060020a03600435166107a0565b34801561025757600080fd5b5061026c600160a060020a0360043516610837565b604080519115158252519081900360200190f35b34801561028c57600080fd5b50610228600160a060020a036004351661084c565b3480156102ad57600080fd5b50610228600160a060020a036004351661088a565b3480156102ce57600080fd5b50610228600160a060020a0360043516610921565b3480156102ef57600080fd5b506101f16109bb565b34801561030457600080fd5b50610228600160a060020a03600435166109c0565b34801561032557600080fd5b50610228600160a060020a0360043516610a57565b34801561034657600080fd5b50610228610af1565b34801561035b57600080fd5b50610228600160a060020a0360043516602435610b5d565b34801561037f57600080fd5b50610228600160a060020a0360043516610b6a565b3480156103a057600080fd5b506103a9610c04565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e35781810151838201526020016103cb565b50505050905090810190601f1680156104105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042a57600080fd5b506103a960ff60043516610c3b565b34801561044557600080fd5b5061026c600160a060020a0360043516610ce0565b34801561046657600080fd5b5061026c600160a060020a0360043516610cf5565b34801561048757600080fd5b50610490610d0a565b60408051600160a060020a039092168252519081900360200190f35b3480156104b857600080fd5b5061026c600160a060020a0360043516610d19565b3480156104d957600080fd5b50610228600160a060020a0360043516610d2e565b3480156104fa57600080fd5b50610228600160a060020a0360043516610dc5565b34801561051b57600080fd5b50610228600160a060020a0360043516610dfd565b34801561053c57600080fd5b50610228600160a060020a0360043516610e97565b34801561055d57600080fd5b506103a9610f2e565b34801561057257600080fd5b506101f1610f65565b34801561058757600080fd5b5061026c610f6a565b34801561059c57600080fd5b506101f1610f7a565b3480156105b157600080fd5b506101f1600160a060020a0360043581169060243516604435610f7f565b3480156105db57600080fd5b506103a961112c565b3480156105f057600080fd5b50610228600160a060020a0360043516611163565b34801561061157600080fd5b50610228600160a060020a03600435166111fa565b34801561063257600080fd5b50610228600160a060020a03600435166111fd565b34801561065357600080fd5b5061026c600160a060020a0360043516611297565b34801561067457600080fd5b5061026c600160a060020a03600435166112ac565b34801561069557600080fd5b506103a96112c1565b3480156106aa57600080fd5b5061026c600160a060020a03600435166112f8565b3480156106cb57600080fd5b50610228600160a060020a0360043516611316565b3480156106ec57600080fd5b5061026c600160a060020a0360043516611336565b600081565b61070f336112f8565b806107245750600054600160a060020a031633145b151561077c576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19166001179055565b6107a9336112f8565b806107be5750600054600160a060020a031633145b1515610816576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19169055565b60076020526000908152604090205460ff1681565b600054600160a060020a0316331461086357600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610893336112f8565b806108a85750600054600160a060020a031633145b1515610900576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19169055565b61092a336112f8565b8061093f5750600054600160a060020a031633145b1515610997576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19166001179055565b600181565b6109c9336112f8565b806109de5750600054600160a060020a031633145b1515610a36576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19169055565b610a60336112f8565b80610a755750600054600160a060020a031633145b1515610acd576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b600054600160a060020a03163314610b0857600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b610b6682610921565b5050565b610b73336112f8565b80610b885750600054600160a060020a031633145b1515610be0576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19166001179055565b60408051808201909152601281527f4d5553545f42455f415f434956494c49414e0000000000000000000000000000602082015281565b60ff811660009081526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610cd45780601f10610ca957610100808354040283529160200191610cd4565b820191906000526020600020905b815481529060010190602001808311610cb757829003601f168201915b50505050509050919050565b60056020526000908152604090205460ff1681565b60046020526000908152604090205460ff1681565b600054600160a060020a031681565b60026020526000908152604090205460ff1681565b610d37336112f8565b80610d4c5750600054600160a060020a031633145b1515610da4576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19169055565b600054600160a060020a03163314610ddc57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b610e06336112f8565b80610e1b5750600054600160a060020a031633145b1515610e73576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19166001179055565b610ea0336112f8565b80610eb55750600054600160a060020a031633145b1515610f0d576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19169055565b60408051808201909152601081527f4d5553545f42455f564552494649454400000000000000000000000000000000602082015281565b600381565b6000610f75336112f8565b905090565b600281565b600160a060020a03831660009081526002602052604081205460ff1680610fbe5750600160a060020a03841660009081526004602052604090205460ff165b15610fcb57506000611125565b600160a060020a03841660009081526006602052604090205460ff161561104057600160a060020a03831660009081526005602052604090205460ff168061102b5750600160a060020a03831660009081526002602052604090205460ff165b1561103857506000611125565b506003611125565b600160a060020a03841660009081526007602052604090205460ff16156110b557600160a060020a03831660009081526002602052604090205460ff16806110a05750600160a060020a03831660009081526003602052604090205460ff165b156110ad57506000611125565b506002611125565b600160a060020a03841660009081526003602052604090205460ff161561112157600160a060020a03831660009081526002602052604090205460ff16806110a05750600160a060020a03831660009081526007602052604090205460ff16156110ad57506000611125565b5060015b9392505050565b60408051808201909152600781527f5355434345535300000000000000000000000000000000000000000000000000602082015281565b61116c336112f8565b806111815750600054600160a060020a031633145b15156111d9576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19169055565b50565b611206336112f8565b8061121b5750600054600160a060020a031633145b1515611273576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19166001179055565b60036020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b60408051808201909152601081527f4d5553545f42455f554e4c4f434b454400000000000000000000000000000000602082015281565b600160a060020a031660009081526001602052604090205460ff1690565b600054600160a060020a0316331461132d57600080fd5b6111fa8161134b565b60016020526000908152604090205460ff1681565b600160a060020a038116151561136057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556006f726d207468697320616374696f6e00000000000000000000000000000000004f6e6c79206d616e6167657273206f72206f776e657273206d61792070657266a165627a7a72305820d72b701db11797950783bc2e00b52cb3d591869b6b0296d74de92ec7a7182b2c0029\",\n  \"deployedBytecode\": \"0x6080604052600436106101d75763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630e969a0581146101dc5780631299090a1461020757806314862ea51461022a578063166542b31461024b5780632d06177a146102805780633c421424146102a15780633f16b282146102c2578063439b650b146102e35780634b3d1485146102f8578063607c60bb14610319578063715018a61461033a578063725248731461034f57806373c601821461037357806378a21ddb146103945780637f4ab1dd1461041e57806381601496146104395780638bdeb4521461045a5780638da5cb5b1461047b5780639685cc57146104ac578063ab3d0c7a146104cd578063ac18de43146104ee578063ac1f38531461050f578063adbb916014610530578063bdcadb3b14610551578063c0e9794a14610566578063c56a3e881461057b578063ca3aaa9a14610590578063d4ce1415146105a5578063e7984d17146105cf578063e79a4fd4146105e4578063e99f29a414610605578063ee37c29f14610626578063ee56f4fa14610647578063f0fbca0614610668578063f198391814610689578063f281e7d11461069e578063f2fde38b146106bf578063fdff9b4d146106e0575b600080fd5b3480156101e857600080fd5b506101f1610701565b6040805160ff9092168252519081900360200190f35b34801561021357600080fd5b50610228600160a060020a0360043516610706565b005b34801561023657600080fd5b50610228600160a060020a03600435166107a0565b34801561025757600080fd5b5061026c600160a060020a0360043516610837565b604080519115158252519081900360200190f35b34801561028c57600080fd5b50610228600160a060020a036004351661084c565b3480156102ad57600080fd5b50610228600160a060020a036004351661088a565b3480156102ce57600080fd5b50610228600160a060020a0360043516610921565b3480156102ef57600080fd5b506101f16109bb565b34801561030457600080fd5b50610228600160a060020a03600435166109c0565b34801561032557600080fd5b50610228600160a060020a0360043516610a57565b34801561034657600080fd5b50610228610af1565b34801561035b57600080fd5b50610228600160a060020a0360043516602435610b5d565b34801561037f57600080fd5b50610228600160a060020a0360043516610b6a565b3480156103a057600080fd5b506103a9610c04565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e35781810151838201526020016103cb565b50505050905090810190601f1680156104105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042a57600080fd5b506103a960ff60043516610c3b565b34801561044557600080fd5b5061026c600160a060020a0360043516610ce0565b34801561046657600080fd5b5061026c600160a060020a0360043516610cf5565b34801561048757600080fd5b50610490610d0a565b60408051600160a060020a039092168252519081900360200190f35b3480156104b857600080fd5b5061026c600160a060020a0360043516610d19565b3480156104d957600080fd5b50610228600160a060020a0360043516610d2e565b3480156104fa57600080fd5b50610228600160a060020a0360043516610dc5565b34801561051b57600080fd5b50610228600160a060020a0360043516610dfd565b34801561053c57600080fd5b50610228600160a060020a0360043516610e97565b34801561055d57600080fd5b506103a9610f2e565b34801561057257600080fd5b506101f1610f65565b34801561058757600080fd5b5061026c610f6a565b34801561059c57600080fd5b506101f1610f7a565b3480156105b157600080fd5b506101f1600160a060020a0360043581169060243516604435610f7f565b3480156105db57600080fd5b506103a961112c565b3480156105f057600080fd5b50610228600160a060020a0360043516611163565b34801561061157600080fd5b50610228600160a060020a03600435166111fa565b34801561063257600080fd5b50610228600160a060020a03600435166111fd565b34801561065357600080fd5b5061026c600160a060020a0360043516611297565b34801561067457600080fd5b5061026c600160a060020a03600435166112ac565b34801561069557600080fd5b506103a96112c1565b3480156106aa57600080fd5b5061026c600160a060020a03600435166112f8565b3480156106cb57600080fd5b50610228600160a060020a0360043516611316565b3480156106ec57600080fd5b5061026c600160a060020a0360043516611336565b600081565b61070f336112f8565b806107245750600054600160a060020a031633145b151561077c576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19166001179055565b6107a9336112f8565b806107be5750600054600160a060020a031633145b1515610816576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19169055565b60076020526000908152604090205460ff1681565b600054600160a060020a0316331461086357600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b610893336112f8565b806108a85750600054600160a060020a031633145b1515610900576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19169055565b61092a336112f8565b8061093f5750600054600160a060020a031633145b1515610997576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19166001179055565b600181565b6109c9336112f8565b806109de5750600054600160a060020a031633145b1515610a36576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19169055565b610a60336112f8565b80610a755750600054600160a060020a031633145b1515610acd576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b600054600160a060020a03163314610b0857600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b610b6682610921565b5050565b610b73336112f8565b80610b885750600054600160a060020a031633145b1515610be0576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19166001179055565b60408051808201909152601281527f4d5553545f42455f415f434956494c49414e0000000000000000000000000000602082015281565b60ff811660009081526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610cd45780601f10610ca957610100808354040283529160200191610cd4565b820191906000526020600020905b815481529060010190602001808311610cb757829003601f168201915b50505050509050919050565b60056020526000908152604090205460ff1681565b60046020526000908152604090205460ff1681565b600054600160a060020a031681565b60026020526000908152604090205460ff1681565b610d37336112f8565b80610d4c5750600054600160a060020a031633145b1515610da4576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19169055565b600054600160a060020a03163314610ddc57600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b610e06336112f8565b80610e1b5750600054600160a060020a031633145b1515610e73576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19166001179055565b610ea0336112f8565b80610eb55750600054600160a060020a031633145b1515610f0d576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19169055565b60408051808201909152601081527f4d5553545f42455f564552494649454400000000000000000000000000000000602082015281565b600381565b6000610f75336112f8565b905090565b600281565b600160a060020a03831660009081526002602052604081205460ff1680610fbe5750600160a060020a03841660009081526004602052604090205460ff165b15610fcb57506000611125565b600160a060020a03841660009081526006602052604090205460ff161561104057600160a060020a03831660009081526005602052604090205460ff168061102b5750600160a060020a03831660009081526002602052604090205460ff165b1561103857506000611125565b506003611125565b600160a060020a03841660009081526007602052604090205460ff16156110b557600160a060020a03831660009081526002602052604090205460ff16806110a05750600160a060020a03831660009081526003602052604090205460ff165b156110ad57506000611125565b506002611125565b600160a060020a03841660009081526003602052604090205460ff161561112157600160a060020a03831660009081526002602052604090205460ff16806110a05750600160a060020a03831660009081526007602052604090205460ff16156110ad57506000611125565b5060015b9392505050565b60408051808201909152600781527f5355434345535300000000000000000000000000000000000000000000000000602082015281565b61116c336112f8565b806111815750600054600160a060020a031633145b15156111d9576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19169055565b50565b611206336112f8565b8061121b5750600054600160a060020a031633145b1515611273576040805160e560020a62461bcd02815260206004820152602f60248201526000805160206113e983398151915260448201526000805160206113c9833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19166001179055565b60036020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b60408051808201909152601081527f4d5553545f42455f554e4c4f434b454400000000000000000000000000000000602082015281565b600160a060020a031660009081526001602052604090205460ff1690565b600054600160a060020a0316331461132d57600080fd5b6111fa8161134b565b60016020526000908152604090205460ff1681565b600160a060020a038116151561136057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556006f726d207468697320616374696f6e00000000000000000000000000000000004f6e6c79206d616e6167657273206f72206f776e657273206d61792070657266a165627a7a72305820d72b701db11797950783bc2e00b52cb3d591869b6b0296d74de92ec7a7182b2c0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"SUCCESS_CODE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToCivilians\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromUnlocked\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"newsroomMultisigList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addManager\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromCore\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToUnlocked\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MUST_BE_A_CIVILIAN_CODE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromVerified\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToNewsroomMultisigs\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToCore\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MUST_BE_A_CIVILIAN_ERROR\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"verifiedList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"unlockedList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"coreList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromCivilians\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeManager\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToStorefront\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromStorefront\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MUST_BE_VERIFIED_ERROR\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MUST_BE_VERIFIED_CODE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"isManager\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MUST_BE_UNLOCKED_CODE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"SUCCESS_MESSAGE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromNewsroomMultisigs\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"checkProofOfUse\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToVerified\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"civilianList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"storefrontList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MUST_BE_UNLOCKED_ERROR\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"checkManagerStatus\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"managers\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"detectTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"restrictionCode\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"name\": \"messageForTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"tokenAmount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"onRequestVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {\n        \"MessagesAndCodes\": \"0x99Ed479b711f1Dec9377d8a1C63Bfa2D51486954\"\n      },\n      \"address\": \"0x6d3dc15e04dd1d8968556d02cf209a4fb4ab8736\",\n      \"transactionHash\": \"0x37a0f967335aad27ed10bb83d1df1065ef2b7e39e1057ff553b3d9808feb0ede\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {\n        \"MessagesAndCodes\": \"0x908d7ca8704592342a6b869687d81fa461e4d34f\"\n      },\n      \"address\": \"0x6c343cfded474f9800e7b49287b210b608c2ea9b\",\n      \"transactionHash\": \"0x71c5c36106d10fbe6e0b1200ff1f01001ead2cf806393b1bfa003531e6460aba\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ContractAddressRegistry.json",
    "content": "{\n  \"contractName\": \"ContractAddressRegistry\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b5060405162002fad38038062002fad83398101604090815281516020830151918301516060840151919390910183838383600160a060020a0384161515620000ba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5f746f6b656e2061646472657373206973203000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831615156200013257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5f766f74696e6720616464726573732069732030000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515620001aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f706172616d65746572697a6572206164647265737320697320300000000000604482015290519081900360640190fd5b60028054600160a060020a03808716600160a060020a0319928316179092556003805486841690831617905560048054928516929091169190911790558051620001fc9060059060208401906200020b565b505050505050505050620002b0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024e57805160ff19168380011785556200027e565b828001600101855582156200027e579182015b828111156200027e57825182559160200191906001019062000261565b506200028c92915062000290565b5090565b620002ad91905b808211156200028c576000815560010162000297565b90565b612ced80620002c06000396000f3006080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301162b93811461013757806306fdde031461015a5780632ea9b696146101e45780633af32abf1461021957806347e7ef241461023a57806355246b9c1461025e5780635f02116f146102c757806361a9a8ca1461035557806365d96c82146103765780636eefcab9146103ca57806386bb8f37146103eb5780638f1d377614610406578063a5ba3b1e14610451578063a7aad3db14610475578063b42652e9146104ae578063bc4b010f146104cf578063c8187cf114610536578063dd4e7cfd1461054e578063e1e3f9151461056f578063f3fef3a3146105a0578063f96c8720146105c4578063fc0c546a14610619578063fce1ccca1461062e575b600080fd5b34801561014357600080fd5b50610158600160a060020a0360043516610643565b005b34801561016657600080fd5b5061016f610679565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a9578181015183820152602001610191565b50505050905090810190601f1680156101d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f057600080fd5b50610205600160a060020a0360043516610707565b604080519115158252519081900360200190f35b34801561022557600080fd5b50610205600160a060020a0360043516610843565b34801561024657600080fd5b50610158600160a060020a0360043516602435610869565b34801561026a57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610158948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610a259650505050505050565b3480156102d357600080fd5b506040805160206004803580820135838102808601850190965280855261015895369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610a929650505050505050565b34801561036157600080fd5b50610205600160a060020a0360043516610b66565b34801561038257600080fd5b50610397600160a060020a0360043516610b82565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b3480156103d657600080fd5b50610205600160a060020a0360043516610bbd565b3480156103f757600080fd5b50610158600435602435610c08565b34801561041257600080fd5b5061041e600435610eda565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b34801561045d57600080fd5b50610205600435600160a060020a0360243516610f16565b34801561048157600080fd5b5061049c600160a060020a0360043516602435604435610f44565b60408051918252519081900360200190f35b3480156104ba57600080fd5b50610158600160a060020a0360043516611013565b3480156104db57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049c958335600160a060020a03169536956044949193909101919081908401838280828437509497506112029650505050505050565b34801561054257600080fd5b5061049c600435611af1565b34801561055a57600080fd5b50610205600160a060020a0360043516611d1d565b34801561057b57600080fd5b50610584611dbf565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b50610158600160a060020a0360043516602435611dce565b3480156105d057600080fd5b5060408051602060048035808201358381028086018501909652808552610158953695939460249493850192918291850190849080828437509497506121749650505050505050565b34801561062557600080fd5b506105846121ac565b34801561063a57600080fd5b506105846121bb565b61064c81611d1d565b1561065f5761065a816121ca565b610676565b61066881610707565b156101325761065a8161224e565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b820191906000526020600020905b8154815290600101906020018083116106e257829003601f168201915b505050505081565b600160a060020a03811660009081526001602052604081206003015461072c83610bbd565b15156107a7576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72204c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b505191505b50919050565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146108e8576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b600280820180548401905554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b505115156109d4576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b82803b60008111610a80576040805160e560020a62461bcd02815260206004820152601960248201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b610a8b8585856125ad565b5050505050565b8051825160009114610b14576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b8251811015610b6157610b598382815181101515610b3257fe5b906020019060200201518383815181101515610b4a57fe5b90602001906020020151610c08565b600101610b18565b505050565b600160a060020a03166000908152600160205260408120541190565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a0381166000908152600160205260408120600301548181118015610c01575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff1615610c7d576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff16151514610cf2576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fb43bd06900000000000000000000000000000000000000000000000000000000815233600482015260248101879052604481018690529051600160a060020a039092169163b43bd069916064808201926020929091908290030181600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b505050506040513d6020811015610d9057600080fd5b50519150610d9f338585610f44565b6000858152602081815260408083206003810180548890039055805485900381553380855260049182018452828520805460ff19166001179055600254835160e060020a63a9059cbb02815292830191909152602482018690529151949550600160a060020a039091169363a9059cbb93604480840194938390030190829087803b158015610e2d57600080fd5b505af1158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b50511515610e9d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152602081815260408083206003808201549154905483517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a905260448201899052945193959294879492169263b43bd0699260648084019382900301818787803b158015610fcc57600080fd5b505af1158015610fe0573d6000803e3d6000fd5b505050506040513d6020811015610ff657600080fd5b505190508282820281151561100757fe5b04979650505050505050565b600160a060020a038082166000908152600160208190526040909120908101549091336101009092041614611092576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b61109b82610843565b1515611117576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600381015415806111455750600381015460009081526020819052604090206001015460a060020a900460ff165b15156111c1576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b6111ca82612a62565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b505050506040513d60208110156112c457600080fd5b505194506112d189610b66565b806112e05750600186015460ff165b1515611382576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b600386015415806113b05750600386015460009081526020819052604090206001015460a060020a900460ff165b151561142c576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b848660020154101561147e5761144189612a62565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a260009650611ae5565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b15801561150557600080fd5b505af1158015611519573d6000803e3d6000fd5b505050506040513d602081101561152f57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156115ab57600080fd5b505af11580156115bf573d6000803e3d6000fd5b505050506040513d60208110156115d557600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561165157600080fd5b505af1158015611665573d6000803e3d6000fd5b505050506040513d602081101561167b57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b1580156116e057600080fd5b505af11580156116f4573d6000803e3d6000fd5b505050506040513d602081101561170a57600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e4840152925193975060649650909283926117fd9288926117f1928c926117e592600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b505050506040513d60208110156117d657600080fd5b50518a9063ffffffff612c4416565b9063ffffffff612c5616565b9063ffffffff612c7f16565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c90039055945485517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050506040513d602081101561194057600080fd5b50511515611986576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b505050506040513d60a0811015611a1757600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b83811015611aa5578181015183820152602001611a8d565b50505050905090810190601f168015611ad25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b60008181526020819052604081206001015460a060020a900460ff1615611b62576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b158015611bc957600080fd5b505af1158015611bdd573d6000803e3d6000fd5b505050506040513d6020811015611bf357600080fd5b50511515611c4b576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b50511515611cff5750600081815260208190526040902060029081015402610864565b50600090815260208190526040902080546002918201549091020390565b600160a060020a038116600090815260016020526040812060030154611d4283610b66565b8015611d655750600160a060020a03831660009081526001602052604090205442115b8015611d775750611d7583610843565b155b8015611da85750801580611da85750600081815260208190526040902060019081015460a060020a900460ff161515145b15611db6576001915061083d565b50600092915050565b600454600160a060020a031681565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314611e4d576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115611ecf576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b60038101541580611efd5750600381015460009081526020819052604090206001015460a060020a900460ff165b1561205257600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015611f7c57600080fd5b505af1158015611f90573d6000803e3d6000fd5b505050506040513d6020811015611fa657600080fd5b505160028201548390031015612052576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156120b357600080fd5b505af11580156120c7573d6000803e3d6000fd5b505050506040513d60208110156120dd57600080fd5b50511515612123576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b60005b81518110156121a8576121a0828281518110151561219157fe5b90602001906020020151610643565b600101612177565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a0381166000908152600160208190526040909120015460ff16151561222557604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a0381166000908152600160205260408120600301549061227482611af1565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561230957600080fd5b505af115801561231d573d6000803e3d6000fd5b505050506040513d602081101561233357600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156123ad57600080fd5b505af11580156123c1573d6000803e3d6000fd5b505050506040513d60208110156123d757600080fd5b50511561245b576123e7836121ca565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3610b61565b61246483612a62565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b505050506040513d60208110156124f257600080fd5b5051151561254a576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b60006125b884610843565b1561260d576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b61261684610b66565b15612691576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561270b57600080fd5b505af115801561271f573d6000803e3d6000fd5b505050506040513d602081101561273557600080fd5b50518310156127b4576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e000000000000000000000000000000000000006044830152915193956128a49592169363693ec85e9360648084019491938390030190829087803b15801561286b57600080fd5b505af115801561287f573d6000803e3d6000fd5b505050506040513d602081101561289557600080fd5b5051429063ffffffff612c9416565b81556002808201849055546001820154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b15801561292b57600080fd5b505af115801561293f573d6000803e3d6000fd5b505050506040513d602081101561295557600080fd5b5051151561299b576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a20578181015183820152602001612a08565b50505050905090810190601f168015612a4d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050565b600160a060020a0381166000908152600160208190526040822090810154909190819060ff1615612ac657604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a2612afb565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff19169055928501839055600390940182905561010090920490921691811115612c3e576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612bbc57600080fd5b505af1158015612bd0573d6000803e3d6000fd5b505050506040513d6020811015612be657600080fd5b50511515612c3e576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b600082821115612c5057fe5b50900390565b6000821515612c6757506000610f3e565b50818102818382811515612c7757fe5b0414610f3e57fe5b60008183811515612c8c57fe5b049392505050565b81810182811015610f3e57fe00546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a7230582009b5b072ae612c343edec7f7d8a7fbe1a0bf36c6024922a77b937617eb0e23960029\",\n  \"deployedBytecode\": \"0x6080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301162b93811461013757806306fdde031461015a5780632ea9b696146101e45780633af32abf1461021957806347e7ef241461023a57806355246b9c1461025e5780635f02116f146102c757806361a9a8ca1461035557806365d96c82146103765780636eefcab9146103ca57806386bb8f37146103eb5780638f1d377614610406578063a5ba3b1e14610451578063a7aad3db14610475578063b42652e9146104ae578063bc4b010f146104cf578063c8187cf114610536578063dd4e7cfd1461054e578063e1e3f9151461056f578063f3fef3a3146105a0578063f96c8720146105c4578063fc0c546a14610619578063fce1ccca1461062e575b600080fd5b34801561014357600080fd5b50610158600160a060020a0360043516610643565b005b34801561016657600080fd5b5061016f610679565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a9578181015183820152602001610191565b50505050905090810190601f1680156101d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f057600080fd5b50610205600160a060020a0360043516610707565b604080519115158252519081900360200190f35b34801561022557600080fd5b50610205600160a060020a0360043516610843565b34801561024657600080fd5b50610158600160a060020a0360043516602435610869565b34801561026a57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610158948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610a259650505050505050565b3480156102d357600080fd5b506040805160206004803580820135838102808601850190965280855261015895369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610a929650505050505050565b34801561036157600080fd5b50610205600160a060020a0360043516610b66565b34801561038257600080fd5b50610397600160a060020a0360043516610b82565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b3480156103d657600080fd5b50610205600160a060020a0360043516610bbd565b3480156103f757600080fd5b50610158600435602435610c08565b34801561041257600080fd5b5061041e600435610eda565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b34801561045d57600080fd5b50610205600435600160a060020a0360243516610f16565b34801561048157600080fd5b5061049c600160a060020a0360043516602435604435610f44565b60408051918252519081900360200190f35b3480156104ba57600080fd5b50610158600160a060020a0360043516611013565b3480156104db57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049c958335600160a060020a03169536956044949193909101919081908401838280828437509497506112029650505050505050565b34801561054257600080fd5b5061049c600435611af1565b34801561055a57600080fd5b50610205600160a060020a0360043516611d1d565b34801561057b57600080fd5b50610584611dbf565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b50610158600160a060020a0360043516602435611dce565b3480156105d057600080fd5b5060408051602060048035808201358381028086018501909652808552610158953695939460249493850192918291850190849080828437509497506121749650505050505050565b34801561062557600080fd5b506105846121ac565b34801561063a57600080fd5b506105846121bb565b61064c81611d1d565b1561065f5761065a816121ca565b610676565b61066881610707565b156101325761065a8161224e565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ff5780601f106106d4576101008083540402835291602001916106ff565b820191906000526020600020905b8154815290600101906020018083116106e257829003601f168201915b505050505081565b600160a060020a03811660009081526001602052604081206003015461072c83610bbd565b15156107a7576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72204c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b505191505b50919050565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146108e8576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b600280820180548401905554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561096457600080fd5b505af1158015610978573d6000803e3d6000fd5b505050506040513d602081101561098e57600080fd5b505115156109d4576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b82803b60008111610a80576040805160e560020a62461bcd02815260206004820152601960248201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b610a8b8585856125ad565b5050505050565b8051825160009114610b14576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b8251811015610b6157610b598382815181101515610b3257fe5b906020019060200201518383815181101515610b4a57fe5b90602001906020020151610c08565b600101610b18565b505050565b600160a060020a03166000908152600160205260408120541190565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a0381166000908152600160205260408120600301548181118015610c01575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff1615610c7d576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff16151514610cf2576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fb43bd06900000000000000000000000000000000000000000000000000000000815233600482015260248101879052604481018690529051600160a060020a039092169163b43bd069916064808201926020929091908290030181600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b505050506040513d6020811015610d9057600080fd5b50519150610d9f338585610f44565b6000858152602081815260408083206003810180548890039055805485900381553380855260049182018452828520805460ff19166001179055600254835160e060020a63a9059cbb02815292830191909152602482018690529151949550600160a060020a039091169363a9059cbb93604480840194938390030190829087803b158015610e2d57600080fd5b505af1158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b50511515610e9d576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152602081815260408083206003808201549154905483517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a905260448201899052945193959294879492169263b43bd0699260648084019382900301818787803b158015610fcc57600080fd5b505af1158015610fe0573d6000803e3d6000fd5b505050506040513d6020811015610ff657600080fd5b505190508282820281151561100757fe5b04979650505050505050565b600160a060020a038082166000908152600160208190526040909120908101549091336101009092041614611092576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b61109b82610843565b1515611117576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600381015415806111455750600381015460009081526020819052604090206001015460a060020a900460ff165b15156111c1576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b6111ca82612a62565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b505050506040513d60208110156112c457600080fd5b505194506112d189610b66565b806112e05750600186015460ff165b1515611382576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b600386015415806113b05750600386015460009081526020819052604090206001015460a060020a900460ff165b151561142c576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b848660020154101561147e5761144189612a62565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a260009650611ae5565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b15801561150557600080fd5b505af1158015611519573d6000803e3d6000fd5b505050506040513d602081101561152f57600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156115ab57600080fd5b505af11580156115bf573d6000803e3d6000fd5b505050506040513d60208110156115d557600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561165157600080fd5b505af1158015611665573d6000803e3d6000fd5b505050506040513d602081101561167b57600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b1580156116e057600080fd5b505af11580156116f4573d6000803e3d6000fd5b505050506040513d602081101561170a57600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e4840152925193975060649650909283926117fd9288926117f1928c926117e592600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b505050506040513d60208110156117d657600080fd5b50518a9063ffffffff612c4416565b9063ffffffff612c5616565b9063ffffffff612c7f16565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c90039055945485517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050506040513d602081101561194057600080fd5b50511515611986576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b1580156119ed57600080fd5b505af1158015611a01573d6000803e3d6000fd5b505050506040513d60a0811015611a1757600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b83811015611aa5578181015183820152602001611a8d565b50505050905090810190601f168015611ad25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b60008181526020819052604081206001015460a060020a900460ff1615611b62576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b158015611bc957600080fd5b505af1158015611bdd573d6000803e3d6000fd5b505050506040513d6020811015611bf357600080fd5b50511515611c4b576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b158015611cb257600080fd5b505af1158015611cc6573d6000803e3d6000fd5b505050506040513d6020811015611cdc57600080fd5b50511515611cff5750600081815260208190526040902060029081015402610864565b50600090815260208190526040902080546002918201549091020390565b600160a060020a038116600090815260016020526040812060030154611d4283610b66565b8015611d655750600160a060020a03831660009081526001602052604090205442115b8015611d775750611d7583610843565b155b8015611da85750801580611da85750600081815260208190526040902060019081015460a060020a900460ff161515145b15611db6576001915061083d565b50600092915050565b600454600160a060020a031681565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314611e4d576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115611ecf576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b60038101541580611efd5750600381015460009081526020819052604090206001015460a060020a900460ff165b1561205257600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015611f7c57600080fd5b505af1158015611f90573d6000803e3d6000fd5b505050506040513d6020811015611fa657600080fd5b505160028201548390031015612052576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156120b357600080fd5b505af11580156120c7573d6000803e3d6000fd5b505050506040513d60208110156120dd57600080fd5b50511515612123576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b60005b81518110156121a8576121a0828281518110151561219157fe5b90602001906020020151610643565b600101612177565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a0381166000908152600160208190526040909120015460ff16151561222557604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a0381166000908152600160205260408120600301549061227482611af1565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561230957600080fd5b505af115801561231d573d6000803e3d6000fd5b505050506040513d602081101561233357600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156123ad57600080fd5b505af11580156123c1573d6000803e3d6000fd5b505050506040513d60208110156123d757600080fd5b50511561245b576123e7836121ca565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3610b61565b61246483612a62565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b505050506040513d60208110156124f257600080fd5b5051151561254a576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b60006125b884610843565b1561260d576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b61261684610b66565b15612691576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561270b57600080fd5b505af115801561271f573d6000803e3d6000fd5b505050506040513d602081101561273557600080fd5b50518310156127b4576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e000000000000000000000000000000000000006044830152915193956128a49592169363693ec85e9360648084019491938390030190829087803b15801561286b57600080fd5b505af115801561287f573d6000803e3d6000fd5b505050506040513d602081101561289557600080fd5b5051429063ffffffff612c9416565b81556002808201849055546001820154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b15801561292b57600080fd5b505af115801561293f573d6000803e3d6000fd5b505050506040513d602081101561295557600080fd5b5051151561299b576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612ca2833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a20578181015183820152602001612a08565b50505050905090810190601f168015612a4d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050565b600160a060020a0381166000908152600160208190526040822090810154909190819060ff1615612ac657604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a2612afb565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff19169055928501839055600390940182905561010090920490921691811115612c3e576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015612bbc57600080fd5b505af1158015612bd0573d6000803e3d6000fd5b505050506040513d6020811015612be657600080fd5b50511515612c3e576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b600082821115612c5057fe5b50900390565b6000821515612c6757506000610f3e565b50818102818382811515612c7757fe5b0414610f3e57fe5b60008183811515612c8c57fe5b049392505050565b81810182811015610f3e57fe00546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a7230582009b5b072ae612c343edec7f7d8a7fbe1a0bf36c6024922a77b937617eb0e23960029\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"updateStatus\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"deposit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"claimRewards\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"appWasMade\",\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"listings\",\n      \"outputs\": [\n        {\n          \"name\": \"applicationExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"unstakedDeposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challenges\",\n      \"outputs\": [\n        {\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"resolved\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"stake\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"tokenClaims\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"voterReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"exit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"challenge\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"determineReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"canBeWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"parameterizer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdraw\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddresses\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"name\": \"updateStatuses\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_token\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_voting\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_parameterizer\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"applicant\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Application\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Challenge\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"added\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Deposit\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"withdrew\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Withdrawal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationWhitelisted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingWithdrawn\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_TouchAndRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeSucceeded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_RewardClaimed\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"apply\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/CreateNewsroomInGroup.json",
    "content": "{\n  \"contractName\": \"CreateNewsroomInGroup\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060405160408061056383398101604052805160209091015160008054600160a060020a03938416600160a060020a031991821617909155600180549390921692169190911790556104fc806100676000396000f3006080604052600436106100405763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360bb9dab8114610045575b600080fd5b34801561005157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261011e94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020808901358a01803580830284810184018652818552999c8b359c909b909a95019850929650810194509092508291908501908490808284375094975050933594506101479350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60008083511115156101e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f696e697469616c4f776e657273206d7573742068617665206174206c6561737460448201527f206f6e65206d656d626572000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080546040517f60bb9dab000000000000000000000000000000000000000000000000000000008152604481018790526084810185905260a060048201908152895160a4830152895173ffffffffffffffffffffffffffffffffffffffff909316936360bb9dab938b938b938b938b938b9383926024820192606483019260c4019160208c0191908190849084905b83811015610288578181015183820152602001610270565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156102e85781810151838201526020016102d0565b50505050905090810190601f1680156103155780820380516001836020036101000a031916815260200191505b508481038252865181528651602091820191808901910280838360005b8381101561034a578181015183820152602001610332565b5050505090500198505050505050505050602060405180830381600087803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505050506040513d602081101561039f57600080fd5b5051600154604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905192935073ffffffffffffffffffffffffffffffffffffffff9182169263607c60bb92851691638da5cb5b9160048083019260209291908290030181600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b505050506040513d602081101561044357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff909216600483015251602480830192600092919082900301818387803b1580156104af57600080fd5b505af11580156104c3573d6000803e3d6000fd5b50505050959450505050505600a165627a7a7230582020e80a80750a59f561c2e5f3958cab326c2079b79ceb08cb2cc80b234b7ed1360029\",\n  \"deployedBytecode\": \"0x6080604052600436106100405763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360bb9dab8114610045575b600080fd5b34801561005157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261011e94369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020808901358a01803580830284810184018652818552999c8b359c909b909a95019850929650810194509092508291908501908490808284375094975050933594506101479350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60008083511115156101e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f696e697469616c4f776e657273206d7573742068617665206174206c6561737460448201527f206f6e65206d656d626572000000000000000000000000000000000000000000606482015290519081900360840190fd5b600080546040517f60bb9dab000000000000000000000000000000000000000000000000000000008152604481018790526084810185905260a060048201908152895160a4830152895173ffffffffffffffffffffffffffffffffffffffff909316936360bb9dab938b938b938b938b938b9383926024820192606483019260c4019160208c0191908190849084905b83811015610288578181015183820152602001610270565b50505050905090810190601f1680156102b55780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156102e85781810151838201526020016102d0565b50505050905090810190601f1680156103155780820380516001836020036101000a031916815260200191505b508481038252865181528651602091820191808901910280838360005b8381101561034a578181015183820152602001610332565b5050505090500198505050505050505050602060405180830381600087803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505050506040513d602081101561039f57600080fd5b5051600154604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905192935073ffffffffffffffffffffffffffffffffffffffff9182169263607c60bb92851691638da5cb5b9160048083019260209291908290030181600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b505050506040513d602081101561044357600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff909216600483015251602480830192600092919082900301818387803b1580156104af57600080fd5b505af11580156104c3573d6000803e3d6000fd5b50505050959450505050505600a165627a7a7230582020e80a80750a59f561c2e5f3958cab326c2079b79ceb08cb2cc80b234b7ed1360029\",\n  \"abi\": [\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_factory\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_controller\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"charterUri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"charterHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"initialOwners\",\n          \"type\": \"address[]\"\n        },\n        {\n          \"name\": \"initialRequired\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"create\",\n      \"outputs\": [\n        {\n          \"name\": \"newsroom\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x870188243e72210d2b9a276be411fd4f32c8eb40\",\n      \"transactionHash\": \"0x2908b0b0a2abd60525c3eac018a7f5290c7ec453966e05a283f3d6a22a8e61c2\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x49d731e07c37f2e6eb9022a14b4198dbccc4452a\",\n      \"transactionHash\": \"0x3bb3cba57c23fbbff8de793ef4bebc562495ef82ff99d906911d1914aa5f8c25\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/DLL.json",
    "content": "{\n  \"contractName\": \"DLL\",\n  \"bytecode\": \"0x610369610030600b82828239805160001a6073146000811461002057610022565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600436106100a45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307d29ac981146100a957806330fe0a0a146100c9578063366a5ba2146100d75780636d900ed0146100f95780637c11cf64146101165780639735c51b14610121578063c426b00614610142578063ee4f1ac41461014d575b600080fd5b6100b7600435602435610158565b60408051918252519081900360200190f35b6100b760043560243561016b565b6100e5600435602435610181565b604080519115158252519081900360200190f35b81801561010557600080fd5b506101146004356024356101ff565b005b6100b7600435610261565b81801561012d57600080fd5b50610114600435602435604435606435610274565b6100e560043561031d565b6100b7600435610330565b6000908152602091909152604090205490565b6000908152602091909152604090206001015490565b600080600061018f8561031d565b80610198575083155b156101a657600092506101f7565b836101b086610330565b1480156101c45750836101c286610261565b145b915060006101d28686610158565b1480156101e8575060006101e6868661016b565b145b905081806101f4575080155b92505b505092915050565b60008061020c8484610181565b15156102175761025b565b6102218484610158565b915061022d848461016b565b6000838152602086905260408082206001908101849055838352818320869055868352908220828155015590505b50505050565b600061026e82600061016b565b92915050565b81151561028057600080fd5b61028a84836101ff565b82158061029c575061029c8484610181565b15156102a757600080fd5b8015806102b957506102b98482610181565b15156102c457600080fd5b806102cf8585610158565b146102d957600080fd5b826102e4858361016b565b146102ee57600080fd5b600082815260209490945260408085206001808201869055908390559385528085208390559084529092200155565b60008061032983610330565b1492915050565b600061026e8260006101585600a165627a7a72305820c3dc97a814bfbdde2012e6b0f81874a811b3bf4c31a4e7c101760b3a6e4c4bdf0029\",\n  \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600436106100a45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307d29ac981146100a957806330fe0a0a146100c9578063366a5ba2146100d75780636d900ed0146100f95780637c11cf64146101165780639735c51b14610121578063c426b00614610142578063ee4f1ac41461014d575b600080fd5b6100b7600435602435610158565b60408051918252519081900360200190f35b6100b760043560243561016b565b6100e5600435602435610181565b604080519115158252519081900360200190f35b81801561010557600080fd5b506101146004356024356101ff565b005b6100b7600435610261565b81801561012d57600080fd5b50610114600435602435604435606435610274565b6100e560043561031d565b6100b7600435610330565b6000908152602091909152604090205490565b6000908152602091909152604090206001015490565b600080600061018f8561031d565b80610198575083155b156101a657600092506101f7565b836101b086610330565b1480156101c45750836101c286610261565b145b915060006101d28686610158565b1480156101e8575060006101e6868661016b565b145b905081806101f4575080155b92505b505092915050565b60008061020c8484610181565b15156102175761025b565b6102218484610158565b915061022d848461016b565b6000838152602086905260408082206001908101849055838352818320869055868352908220828155015590505b50505050565b600061026e82600061016b565b92915050565b81151561028057600080fd5b61028a84836101ff565b82158061029c575061029c8484610181565b15156102a757600080fd5b8015806102b957506102b98482610181565b15156102c457600080fd5b806102cf8585610158565b146102d957600080fd5b826102e4858361016b565b146102ee57600080fd5b600082815260209490945260408085206001808201869055908390559385528085208390559084529092200155565b60008061032983610330565b1492915050565b600061026e8260006101585600a165627a7a72305820c3dc97a814bfbdde2012e6b0f81874a811b3bf4c31a4e7c101760b3a6e4c4bdf0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        }\n      ],\n      \"name\": \"isEmpty\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        },\n        {\n          \"name\": \"_curr\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"contains\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        },\n        {\n          \"name\": \"_curr\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getNext\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        },\n        {\n          \"name\": \"_curr\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getPrev\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        }\n      ],\n      \"name\": \"getStart\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        }\n      ],\n      \"name\": \"getEnd\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        },\n        {\n          \"name\": \"_prev\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_curr\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_next\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"insert\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"DLL.Data storage\"\n        },\n        {\n          \"name\": \"_curr\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"remove\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x739f1745e415782861373c5ff1a6dc56d2d41451\",\n      \"transactionHash\": \"0x3df1e3ecf9e6df6c8e4a96431cf90e855940819003e8278765923f017e9311c3\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x132f69eb9416cf555cc16e21fb0bbd21f38947c0\",\n      \"transactionHash\": \"0x5dc8e17f9ba17cb2a54c1aafd69d8ff58e27e40945ba2951758120a77683fe9d\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/DummyACL.json",
    "content": "{\n  \"contractName\": \"DummyACL\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060008054600160a060020a031916331790556107c8806100326000396000f30060806040526004361061008d5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631bfe03088114610092578063217fe6c6146100fb5780632f54bf6e146101765780633ad554d014610197578063715018a6146102215780637d72aa65146102365780638da5cb5b1461029d578063f2fde38b146102ce575b600080fd5b34801561009e57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100f9958335600160a060020a03169536956044949193909101919081908401838280828437509497506102ef9650505050505050565b005b34801561010757600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610162958335600160a060020a03169536956044949193909101919081908401838280828437509497506103569650505050505050565b604080519115158252519081900360200190f35b34801561018257600080fd5b50610162600160a060020a03600435166103da565b3480156101a357600080fd5b506101ac6103ee565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101e65781810151838201526020016101ce565b50505050905090810190601f1680156102135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022d57600080fd5b506100f9610425565b34801561024257600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100f9958335600160a060020a03169536956044949193909101919081908401838280828437509497506104919650505050505050565b3480156102a957600080fd5b506102b26104f3565b60408051600160a060020a039092168252519081900360200190f35b3480156102da57600080fd5b506100f9600160a060020a0360043516610502565b60408051808201909152600881527f74657374726f6c65000000000000000000000000000000000000000000000000602082015261032c336103da565b8061033c575061033c3382610356565b151561034757600080fd5b6103518383610525565b505050565b60006001826040518082805190602001908083835b6020831061038a5780518252601f19909201916020918201910161036b565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b60408051808201909152600881527f74657374726f6c65000000000000000000000000000000000000000000000000602082015281565b600054600160a060020a0316331461043c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60408051808201909152600881527f74657374726f6c6500000000000000000000000000000000000000000000000060208201526104ce336103da565b806104de57506104de3382610356565b15156104e957600080fd5b610351838361063f565b600054600160a060020a031681565b600054600160a060020a0316331461051957600080fd5b6105228161071f565b50565b6001816040518082805190602001908083835b602083106105575780518252601f199092019160209182019101610538565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0388166000818152918452828220805460ff19169055838752875187850152875190963396507f6a52fb0cb0e75e6a6721483d2e539b38273ec6fe95b648a41e1a901594aeccb895508894909384939084019291860191908190849084905b838110156106015781810151838201526020016105e9565b50505050905090810190601f16801561062e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050565b600180826040518082805190602001908083835b602083106106725780518252601f199092019160209182019101610653565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0389166000818152918452828220805460ff191698151598909817909755828652875186840152875133967fa40c1dc2b34f6b51c3ea614b688f243e50047ed9fa3ea19010303d70dac781ed96508995509384938401929086019190819084908490838110156106015781810151838201526020016105e9565b600160a060020a038116151561073457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058201421ccdf0c904fb3153c11d645e2964674a679dbfc554483108975e2707d2cd20029\",\n  \"deployedBytecode\": \"0x60806040526004361061008d5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631bfe03088114610092578063217fe6c6146100fb5780632f54bf6e146101765780633ad554d014610197578063715018a6146102215780637d72aa65146102365780638da5cb5b1461029d578063f2fde38b146102ce575b600080fd5b34801561009e57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100f9958335600160a060020a03169536956044949193909101919081908401838280828437509497506102ef9650505050505050565b005b34801561010757600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610162958335600160a060020a03169536956044949193909101919081908401838280828437509497506103569650505050505050565b604080519115158252519081900360200190f35b34801561018257600080fd5b50610162600160a060020a03600435166103da565b3480156101a357600080fd5b506101ac6103ee565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101e65781810151838201526020016101ce565b50505050905090810190601f1680156102135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022d57600080fd5b506100f9610425565b34801561024257600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100f9958335600160a060020a03169536956044949193909101919081908401838280828437509497506104919650505050505050565b3480156102a957600080fd5b506102b26104f3565b60408051600160a060020a039092168252519081900360200190f35b3480156102da57600080fd5b506100f9600160a060020a0360043516610502565b60408051808201909152600881527f74657374726f6c65000000000000000000000000000000000000000000000000602082015261032c336103da565b8061033c575061033c3382610356565b151561034757600080fd5b6103518383610525565b505050565b60006001826040518082805190602001908083835b6020831061038a5780518252601f19909201916020918201910161036b565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b60408051808201909152600881527f74657374726f6c65000000000000000000000000000000000000000000000000602082015281565b600054600160a060020a0316331461043c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60408051808201909152600881527f74657374726f6c6500000000000000000000000000000000000000000000000060208201526104ce336103da565b806104de57506104de3382610356565b15156104e957600080fd5b610351838361063f565b600054600160a060020a031681565b600054600160a060020a0316331461051957600080fd5b6105228161071f565b50565b6001816040518082805190602001908083835b602083106105575780518252601f199092019160209182019101610538565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0388166000818152918452828220805460ff19169055838752875187850152875190963396507f6a52fb0cb0e75e6a6721483d2e539b38273ec6fe95b648a41e1a901594aeccb895508894909384939084019291860191908190849084905b838110156106015781810151838201526020016105e9565b50505050905090810190601f16801561062e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050565b600180826040518082805190602001908083835b602083106106725780518252601f199092019160209182019101610653565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0389166000818152918452828220805460ff191698151598909817909755828652875186840152875133967fa40c1dc2b34f6b51c3ea614b688f243e50047ed9fa3ea19010303d70dac781ed96508995509384938401929086019190819084908490838110156106015781810151838201526020016105e9565b600160a060020a038116151561073457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058201421ccdf0c904fb3153c11d645e2964674a679dbfc554483108975e2707d2cd20029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"hasRole\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isOwner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"TEST_ROLE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"granter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"grantee\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleAdded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"granter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"grantee\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"what\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"addRole\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"what\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"removeRole\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/DummyTokenTelemetry.json",
    "content": "{\n  \"contractName\": \"DummyTokenTelemetry\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060a38061001f6000396000f300608060405260043610603e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416637252487381146043575b600080fd5b348015604e57600080fd5b50607173ffffffffffffffffffffffffffffffffffffffff600435166024356073565b005b50505600a165627a7a7230582089d5d5be2c07c845a1d0213c3930ca84eb4ed8af463b6d8fced6c457ad012ae40029\",\n  \"deployedBytecode\": \"0x608060405260043610603e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416637252487381146043575b600080fd5b348015604e57600080fd5b50607173ffffffffffffffffffffffffffffffffffffffff600435166024356073565b005b50505600a165627a7a7230582089d5d5be2c07c845a1d0213c3930ca84eb4ed8af463b6d8fced6c457ad012ae40029\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"tokenAmount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"onRequestVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ECRecovery.json",
    "content": "{\n  \"contractName\": \"ECRecovery\",\n  \"bytecode\": \"0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058207908cba412f3804a638418afca8c553575433d1929b9fbfed8c7d69eed359dc60029\",\n  \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058207908cba412f3804a638418afca8c553575433d1929b9fbfed8c7d69eed359dc60029\",\n  \"abi\": [],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x944712803bc20ac97464a5130f624f125d1fa4c2\",\n      \"transactionHash\": \"0xbf6d7c02c5a9d008b5b7c5dbfa76dc08bb0d5f16dd492ffb10bd98115e4aab2a\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xb01f514594b731da26ba9cac6977c3f5395b2891\",\n      \"transactionHash\": \"0x13aa22f9b40fa8381bf283db30bd75499c77e43c61c5dfd3dd443941cc7b84a1\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ERC1404.json",
    "content": "{\n  \"contractName\": \"ERC1404\",\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"detectTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"restrictionCode\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"name\": \"messageForTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ERC20.json",
    "content": "{\n  \"contractName\": \"ERC20\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50610535806100206000396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009257806318160ddd146100ca57806323b872dd146100f1578063395093511461011b57806370a082311461013f578063a457c2d714610160578063a9059cbb14610184578063dd62ed3e146101a8575b600080fd5b34801561009e57600080fd5b506100b6600160a060020a03600435166024356101cf565b604080519115158252519081900360200190f35b3480156100d657600080fd5b506100df61024d565b60408051918252519081900360200190f35b3480156100fd57600080fd5b506100b6600160a060020a0360043581169060243516604435610253565b34801561012757600080fd5b506100b6600160a060020a03600435166024356102c0565b34801561014b57600080fd5b506100df600160a060020a0360043516610370565b34801561016c57600080fd5b506100b6600160a060020a036004351660243561038b565b34801561019057600080fd5b506100b6600160a060020a03600435166024356103d6565b3480156101b457600080fd5b506100df600160a060020a03600435811690602435166103ec565b6000600160a060020a03831615156101e657600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600160a060020a0383166000908152600160209081526040808320338452909152812054610287908363ffffffff61041716565b600160a060020a03851660009081526001602090815260408083203384529091529020556102b6848484610429565b5060019392505050565b6000600160a060020a03831615156102d757600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461030b908363ffffffff6104f616565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a031660009081526020819052604090205490565b6000600160a060020a03831615156103a257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461030b908363ffffffff61041716565b60006103e3338484610429565b50600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b60008282111561042357fe5b50900390565b600160a060020a038216151561043e57600080fd5b600160a060020a038316600090815260208190526040902054610467908263ffffffff61041716565b600160a060020a03808516600090815260208190526040808220939093559084168152205461049c908263ffffffff6104f616565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b8181018281101561050357fe5b929150505600a165627a7a7230582037c6c2ff5a4e8f47ff5a68e8e7186424f545994cc301b2c864d2ed93e7f7fdcf0029\",\n  \"deployedBytecode\": \"0x60806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009257806318160ddd146100ca57806323b872dd146100f1578063395093511461011b57806370a082311461013f578063a457c2d714610160578063a9059cbb14610184578063dd62ed3e146101a8575b600080fd5b34801561009e57600080fd5b506100b6600160a060020a03600435166024356101cf565b604080519115158252519081900360200190f35b3480156100d657600080fd5b506100df61024d565b60408051918252519081900360200190f35b3480156100fd57600080fd5b506100b6600160a060020a0360043581169060243516604435610253565b34801561012757600080fd5b506100b6600160a060020a03600435166024356102c0565b34801561014b57600080fd5b506100df600160a060020a0360043516610370565b34801561016c57600080fd5b506100b6600160a060020a036004351660243561038b565b34801561019057600080fd5b506100b6600160a060020a03600435166024356103d6565b3480156101b457600080fd5b506100df600160a060020a03600435811690602435166103ec565b6000600160a060020a03831615156101e657600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b600160a060020a0383166000908152600160209081526040808320338452909152812054610287908363ffffffff61041716565b600160a060020a03851660009081526001602090815260408083203384529091529020556102b6848484610429565b5060019392505050565b6000600160a060020a03831615156102d757600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461030b908363ffffffff6104f616565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a031660009081526020819052604090205490565b6000600160a060020a03831615156103a257600080fd5b336000908152600160209081526040808320600160a060020a038716845290915290205461030b908363ffffffff61041716565b60006103e3338484610429565b50600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b60008282111561042357fe5b50900390565b600160a060020a038216151561043e57600080fd5b600160a060020a038316600090815260208190526040902054610467908263ffffffff61041716565b600160a060020a03808516600090815260208190526040808220939093559084168152205461049c908263ffffffff6104f616565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b8181018281101561050357fe5b929150505600a165627a7a7230582037c6c2ff5a4e8f47ff5a68e8e7186424f545994cc301b2c864d2ed93e7f7fdcf0029\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"addedValue\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"increaseAllowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"subtractedValue\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"decreaseAllowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ERC20Detailed.json",
    "content": "{\n  \"contractName\": \"ERC20Detailed\",\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"symbol\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"decimals\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"symbol\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"decimals\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/EventStorage.json",
    "content": "{\n  \"contractName\": \"EventStorage\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b506101bc806100206000396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663131a06808114610045575b600080fd5b34801561005157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261009e9436949293602493928401919081908401838280828437509497506100a09650505050505050565b005b806040518082805190602001908083835b602083106100d05780518252601f1990920191602091820191016100b1565b51815160209384036101000a60001901801990921691161790526040805192909401829003822081835287518383015287519096507f2162a3c4a129c520b65f2837a045d97d2119710c87276c5ca08ed28155daa13a95508794929350839283019185019080838360005b8381101561015357818101518382015260200161013b565b50505050905090810190601f1680156101805780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505600a165627a7a72305820d317eab53c4c69e58b5e68e4360454842082a7998c37d283f042ae7a62c414c80029\",\n  \"deployedBytecode\": \"0x6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663131a06808114610045575b600080fd5b34801561005157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261009e9436949293602493928401919081908401838280828437509497506100a09650505050505050565b005b806040518082805190602001908083835b602083106100d05780518252601f1990920191602091820191016100b1565b51815160209384036101000a60001901801990921691161790526040805192909401829003822081835287518383015287519096507f2162a3c4a129c520b65f2837a045d97d2119710c87276c5ca08ed28155daa13a95508794929350839283019185019080838360005b8381101561015357818101518382015260200161013b565b50505050905090810190601f1680156101805780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505600a165627a7a72305820d317eab53c4c69e58b5e68e4360454842082a7998c37d283f042ae7a62c414c80029\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"dataHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"StringStored\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"store\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xe649d7dbefa1111f0614d418ff06e895313cba6a\",\n      \"transactionHash\": \"0xfe7934cadf19f7ea6ba329b04dc63e2268e1295a59a18569bfb4686b706e4914\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x7e858704d81a72d908a81ce4fedbb5be3fc99d53\",\n      \"transactionHash\": \"0xd4266421e9bc775eca7fabe2f38431ea1414b94cacd06109e2f7e80b2a217ce7\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Factory.json",
    "content": "{\n  \"contractName\": \"Factory\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b506101e4806100206000396000f3006080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f4f3316811461005b57806357183c821461009d5780638f838478146100f7575b600080fd5b34801561006757600080fd5b5061008973ffffffffffffffffffffffffffffffffffffffff60043516610137565b604080519115158252519081900360200190f35b3480156100a957600080fd5b506100ce73ffffffffffffffffffffffffffffffffffffffff6004351660243561014c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010357600080fd5b5061012573ffffffffffffffffffffffffffffffffffffffff60043516610190565b60408051918252519081900360200190f35b60006020819052908152604090205460ff1681565b60016020528160005260406000208181548110151561016757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902054905600a165627a7a723058205a2875f8d6cc23a6354fba88ca79d49079e026f47111ab476da3aad2b58dca190029\",\n  \"deployedBytecode\": \"0x6080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f4f3316811461005b57806357183c821461009d5780638f838478146100f7575b600080fd5b34801561006757600080fd5b5061008973ffffffffffffffffffffffffffffffffffffffff60043516610137565b604080519115158252519081900360200190f35b3480156100a957600080fd5b506100ce73ffffffffffffffffffffffffffffffffffffffff6004351660243561014c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010357600080fd5b5061012573ffffffffffffffffffffffffffffffffffffffff60043516610190565b60408051918252519081900360200190f35b60006020819052908152604090205460ff1681565b60016020528160005260406000208181548110151561016757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b73ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040902054905600a165627a7a723058205a2875f8d6cc23a6354fba88ca79d49079e026f47111ab476da3aad2b58dca190029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isInstantiation\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"instantiations\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"instantiation\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ContractInstantiation\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"creator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getInstantiationCount\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Government.json",
    "content": "{\n  \"contractName\": \"Government\",\n  \"bytecode\": \"0x608060405262093a806007553480156200001857600080fd5b5060405162001c6638038062001c6683398101604090815281516020830151918301516060840151608085015160a086015160c087015160e08801516101008901516101208a01516101408b01516101608c01516101808d01519a9c999a98999798969795969495939492939192909101600160a060020a038d1615156200010157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f617070656c6c6174654164647220616464726573732069732030000000000000604482015290519081900360640190fd5b600160a060020a038c1615156200017957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f676f7665726e6d656e74436f6e74726f6c6c6572416464722069732030000000604482015290519081900360640190fd5b8c6000806101000a815481600160a060020a030219169083600160a060020a031602179055508b600160006101000a815481600160a060020a030219169083600160a060020a031602179055508a600660006101000a815481600160a060020a030219169083600160a060020a031602179055506200023d6040805190810160405280601081526020017f7265717565737441707065616c4c656e000000000000000000000000000000008152508a6200044f640100000000026401000000009004565b60408051808201909152600e81527f6a7564676541707065616c4c656e00000000000000000000000000000000000060208201526200028690896401000000006200044f810204565b60408051808201909152600981527f61707065616c46656500000000000000000000000000000000000000000000006020820152620002cf908b6401000000006200044f810204565b60408051808201909152601481527f61707065616c566f746550657263656e7461676500000000000000000000000060208201526200031890886401000000006200044f810204565b6200038f606060405190810160405280602281526020017f61707065616c4368616c6c656e6765566f746544697370656e736174696f6e5081526020017f6374000000000000000000000000000000000000000000000000000000000000815250876200044f640100000000026401000000009004565b60408051808201909152601381527f676f767450436f6d6d697453746167654c656e000000000000000000000000006020820152620003d890856401000000006200044f810204565b60408051808201909152601381527f676f76745052657665616c53746167654c656e0000000000000000000000000060208201526200042190846401000000006200044f810204565b600282905580516200043b90600390602084019062000575565b50505050505050505050505050506200061a565b8060046000846040518082805190602001908083835b60208310620004865780518252601f19909201916020918201910162000465565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020819055507f0e92bd4b74871caaf73a4a51ca5ad4f01e5c5215e940a2f2a1f4c755b955066c82826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015620005355781810151838201526020016200051b565b50505050905090810190601f168015620005635780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005b857805160ff1916838001178555620005e8565b82800160010185558215620005e8579182015b82811115620005e8578251825591602001919060010190620005cb565b50620005f6929150620005fa565b5090565b6200061791905b80821115620005f6576000815560010162000601565b90565b61163c806200062a6000396000f3006080604052600436106100ef5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166229514f81146100f457806330490e911461011b57806332ed5b121461013557806335300990146101da578063551224251461020657806356e1fb88146102275780635793b9cf14610258578063693ec85e1461026d5780638ca7f51c146102c6578063b0924d6e14610350578063bade1c54146103ae578063c7d93fd414610409578063d5fd9e661461041e578063dc6ab52714610433578063f2a2129b1461044b578063fce1ccca14610460578063ffa1bdf014610475575b600080fd5b34801561010057600080fd5b5061010961048d565b60408051918252519081900360200190f35b34801561012757600080fd5b50610133600435610493565b005b34801561014157600080fd5b5061014d6004356104ad565b6040518085815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561019c578181015183820152602001610184565b50505050905090810190601f1680156101c95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156101e657600080fd5b506101f2600435610560565b604080519115158252519081900360200190f35b34801561021257600080fd5b50610133600160a060020a0360043516610576565b34801561023357600080fd5b5061023c6106e5565b60408051600160a060020a039092168252519081900360200190f35b34801561026457600080fd5b5061023c6106f5565b34801561027957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101099436949293602493928401919081908401838280828437509497506107049650505050505050565b3480156102d257600080fd5b506102db61077b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103155781810151838201526020016102fd565b50505050905090810190601f1680156103425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101339583359536956044949193909101919081908401838280828437509497506108099650505050505050565b3480156103ba57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610109943694929360249392840191908190840183828082843750949750509335945061092b9350505050565b34801561041557600080fd5b50610109610ffd565b34801561042a57600080fd5b5061023c611003565b34801561043f57600080fd5b50610109600435611012565b34801561045757600080fd5b5061023c611024565b34801561046c57600080fd5b5061023c611033565b34801561048157600080fd5b506101f2600435611042565b60075481565b61049c81611042565b156100ef576104aa816111c6565b50565b6005602090815260009182526040918290208054600180830180548651600293821615610100026000190190911692909204601f81018690048602830186019096528582529194929390929083018282801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b5050505050908060020154908060030154905084565b6000908152600560205260408120600201541190565b600154600160a060020a031633146105fe576040805160e560020a62461bcd02815260206004820152602360248201527f53656e646572206973206e6f7420476f7665726e6d656e7420436f6e74726f6c60448201527f6c65720000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0381161515610684576040805160e560020a62461bcd02815260206004820152602260248201527f6e6577417070656c6c6174652061646472657373206d757374206e6f7420626560448201527f2030000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f759a9d1715f38685bd08c7fb25060b7b6795cddf54214336e02a0533c5c7b89e9181900360200190a150565b600054600160a060020a03165b90565b600154600160a060020a031690565b600060046000836040518082805190602001908083835b6020831061073a5780518252601f19909201916020918201910161071b565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b505050505081565b600054600160a060020a0316331461086b576040805160e560020a62461bcd02815260206004820152601760248201527f53656e646572206973206e6f7420417070656c6c617465000000000000000000604482015290519081900360640190fd5b6002829055805161088390600390602084019061150f565b5060408051838152602080820183815284519383019390935283517f2f6679e95449d4806445cd50a14e77e4b83ea193ae84e30f8a3247436442c25593869386939092606084019185019080838360005b838110156108ec5781810151838201526020016108d4565b50505050905090810190601f1680156109195780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000805481908190600160a060020a03163314610992576040805160e560020a62461bcd02815260206004820152601760248201527f53656e646572206973206e6f7420417070656c6c617465000000000000000000604482015290519081900360640190fd5b84846040518083805190602001908083835b602083106109c35780518252601f1990920191602091820191016109a4565b51815160001960209485036101000a019081169019919091161790529201938452506040805193849003820184207f61707065616c566f746550657263656e74616765000000000000000000000000855290519384900360140184208a5191975094508993925082918401908083835b60208310610a525780518252601f199092019160209182019101610a33565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161480610b485750604080517f61707065616c4368616c6c656e6765566f746544697370656e736174696f6e5081527f637400000000000000000000000000000000000000000000000000000000000060208083019190915291519081900360220181208751909288929182918401908083835b60208310610b155780518252601f199092019160209182019101610af6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b15610bcc576064841115610bcc576040805160e560020a62461bcd02815260206004820152603760248201527f50657263656e7461676520706172616d6574657273206d757374206265206c6560448201527f7373207468616e206f7220657175616c20746f20313030000000000000000000606482015290519081900360840190fd5b610bd582610560565b15610c50576040805160e560020a62461bcd02815260206004820152602a60248201527f50726f706f736564207265706172616d65746572697a6174696f6e20616c726560448201527f6164792065786973747300000000000000000000000000000000000000000000606482015290519081900360840190fd5b83610c5a86610704565b1415610cd6576040805160e560020a62461bcd02815260206004820152603c60248201527f50726f706f736564207265706172616d65746572697a6174696f6e20776f756c60448201527f64206e6f74206368616e676520706172616d657465722076616c756500000000606482015290519081900360840190fd5b60065460408051808201909152601481527f61707065616c566f746550657263656e746167650000000000000000000000006020820152600160a060020a03909116906332ed3d6090610d2890610704565b610d666040805190810160405280601381526020017f676f767450436f6d6d697453746167654c656e00000000000000000000000000815250610704565b610da46040805190810160405280601381526020017f676f76745052657665616c53746167654c656e00000000000000000000000000815250610704565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b158015610e0457600080fd5b505af1158015610e18573d6000803e3d6000fd5b505050506040513d6020811015610e2e57600080fd5b505160408051608081018252828152602081810189905260075483518085018552601381527f676f76745052657665616c53746167654c656e0000000000000000000000000092810192909252939450909291830191610eef91610ee390610e9590610704565b610ee3610ed66040805190810160405280601381526020017f676f767450436f6d6d697453746167654c656e00000000000000000000000000815250610704565b429063ffffffff61141b16565b9063ffffffff61141b16565b8152602090810186905260008481526005825260409020825181558282015180519192610f249260018501929091019061150f565b5060408201518160020155606082015181600301559050507f74adf299a4c734e1ae114977ab264221c2f4a914c02243561aaa9158735d32248585848460405180806020018581526020018460001916600019168152602001838152602001828103825286818151815260200191508051906020019080838360005b83811015610fb8578181015183820152602001610fa0565b50505050905090810190601f168015610fe55780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1509392505050565b60025481565b600054600160a060020a031681565b60046020526000908152604090205481565b600154600160a060020a031681565b600654600160a060020a031681565b600061104c61158d565b600083815260056020908152604091829020825160808101845281548152600180830180548651600260001994831615610100029490940190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b50505050508152602001600282015481526020016003820154815250509050600081600001511180156111bf57506006548151604080517fee684830000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b505050506040513d60208110156111bc57600080fd5b50515b9392505050565b6000818152600560209081526040808320600654815483517f49403183000000000000000000000000000000000000000000000000000000008152600481019190915292519194600160a060020a03909116936349403183936024808201949293918390030190829087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b5051156113aa57428160020154111561136757611325816001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113165780601f106112eb57610100808354040283529160200191611316565b820191906000526020600020905b8154815290600101906020018083116112f957829003601f168201915b5050505050826003015461142e565b805460408051848152602081019290925280517fe040346a7ca6935dfd5ccdb81e13933d6af35a399b27c7c61d2888b4960336479281900390910190a16113a5565b805460408051848152602081019290925280517f0571dcf79f562f7040389aac4b84570b60ed77c3a1f6d9f10f2e3dc86d647e8f9281900390910190a15b6113e8565b805460408051848152602081019290925280517fcbc6fb3892c732a14043baca80213f571ebc1a385c676b25d9907fe8e7a2e37b9281900390910190a15b60008281526005602052604081208181559061140760018301826115b6565b506000600282018190556003909101555050565b8181018281101561142857fe5b92915050565b8060046000846040518082805190602001908083835b602083106114635780518252601f199092019160209182019101611444565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020819055507f0e92bd4b74871caaf73a4a51ca5ad4f01e5c5215e940a2f2a1f4c755b955066c8282604051808060200183815260200182810382528481815181526020019150805190602001908083836000838110156108ec5781810151838201526020016108d4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061155057805160ff191683800117855561157d565b8280016001018555821561157d579182015b8281111561157d578251825591602001919060010190611562565b506115899291506115f6565b5090565b608060405190810160405280600081526020016060815260200160008152602001600081525090565b50805460018160011615610100020316600290046000825580601f106115dc57506104aa565b601f0160209004906000526020600020908101906104aa91905b6106f291905b8082111561158957600081556001016115fc5600a165627a7a7230582035fa71b840b4110f8e60e666f6fd5a19b10da33825fdc2453d3c4cf448e963170029\",\n  \"deployedBytecode\": \"0x6080604052600436106100ef5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166229514f81146100f457806330490e911461011b57806332ed5b121461013557806335300990146101da578063551224251461020657806356e1fb88146102275780635793b9cf14610258578063693ec85e1461026d5780638ca7f51c146102c6578063b0924d6e14610350578063bade1c54146103ae578063c7d93fd414610409578063d5fd9e661461041e578063dc6ab52714610433578063f2a2129b1461044b578063fce1ccca14610460578063ffa1bdf014610475575b600080fd5b34801561010057600080fd5b5061010961048d565b60408051918252519081900360200190f35b34801561012757600080fd5b50610133600435610493565b005b34801561014157600080fd5b5061014d6004356104ad565b6040518085815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561019c578181015183820152602001610184565b50505050905090810190601f1680156101c95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156101e657600080fd5b506101f2600435610560565b604080519115158252519081900360200190f35b34801561021257600080fd5b50610133600160a060020a0360043516610576565b34801561023357600080fd5b5061023c6106e5565b60408051600160a060020a039092168252519081900360200190f35b34801561026457600080fd5b5061023c6106f5565b34801561027957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101099436949293602493928401919081908401838280828437509497506107049650505050505050565b3480156102d257600080fd5b506102db61077b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103155781810151838201526020016102fd565b50505050905090810190601f1680156103425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101339583359536956044949193909101919081908401838280828437509497506108099650505050505050565b3480156103ba57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610109943694929360249392840191908190840183828082843750949750509335945061092b9350505050565b34801561041557600080fd5b50610109610ffd565b34801561042a57600080fd5b5061023c611003565b34801561043f57600080fd5b50610109600435611012565b34801561045757600080fd5b5061023c611024565b34801561046c57600080fd5b5061023c611033565b34801561048157600080fd5b506101f2600435611042565b60075481565b61049c81611042565b156100ef576104aa816111c6565b50565b6005602090815260009182526040918290208054600180830180548651600293821615610100026000190190911692909204601f81018690048602830186019096528582529194929390929083018282801561054a5780601f1061051f5761010080835404028352916020019161054a565b820191906000526020600020905b81548152906001019060200180831161052d57829003601f168201915b5050505050908060020154908060030154905084565b6000908152600560205260408120600201541190565b600154600160a060020a031633146105fe576040805160e560020a62461bcd02815260206004820152602360248201527f53656e646572206973206e6f7420476f7665726e6d656e7420436f6e74726f6c60448201527f6c65720000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0381161515610684576040805160e560020a62461bcd02815260206004820152602260248201527f6e6577417070656c6c6174652061646472657373206d757374206e6f7420626560448201527f2030000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f759a9d1715f38685bd08c7fb25060b7b6795cddf54214336e02a0533c5c7b89e9181900360200190a150565b600054600160a060020a03165b90565b600154600160a060020a031690565b600060046000836040518082805190602001908083835b6020831061073a5780518252601f19909201916020918201910161071b565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b505050505081565b600054600160a060020a0316331461086b576040805160e560020a62461bcd02815260206004820152601760248201527f53656e646572206973206e6f7420417070656c6c617465000000000000000000604482015290519081900360640190fd5b6002829055805161088390600390602084019061150f565b5060408051838152602080820183815284519383019390935283517f2f6679e95449d4806445cd50a14e77e4b83ea193ae84e30f8a3247436442c25593869386939092606084019185019080838360005b838110156108ec5781810151838201526020016108d4565b50505050905090810190601f1680156109195780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6000805481908190600160a060020a03163314610992576040805160e560020a62461bcd02815260206004820152601760248201527f53656e646572206973206e6f7420417070656c6c617465000000000000000000604482015290519081900360640190fd5b84846040518083805190602001908083835b602083106109c35780518252601f1990920191602091820191016109a4565b51815160001960209485036101000a019081169019919091161790529201938452506040805193849003820184207f61707065616c566f746550657263656e74616765000000000000000000000000855290519384900360140184208a5191975094508993925082918401908083835b60208310610a525780518252601f199092019160209182019101610a33565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161480610b485750604080517f61707065616c4368616c6c656e6765566f746544697370656e736174696f6e5081527f637400000000000000000000000000000000000000000000000000000000000060208083019190915291519081900360220181208751909288929182918401908083835b60208310610b155780518252601f199092019160209182019101610af6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b15610bcc576064841115610bcc576040805160e560020a62461bcd02815260206004820152603760248201527f50657263656e7461676520706172616d6574657273206d757374206265206c6560448201527f7373207468616e206f7220657175616c20746f20313030000000000000000000606482015290519081900360840190fd5b610bd582610560565b15610c50576040805160e560020a62461bcd02815260206004820152602a60248201527f50726f706f736564207265706172616d65746572697a6174696f6e20616c726560448201527f6164792065786973747300000000000000000000000000000000000000000000606482015290519081900360840190fd5b83610c5a86610704565b1415610cd6576040805160e560020a62461bcd02815260206004820152603c60248201527f50726f706f736564207265706172616d65746572697a6174696f6e20776f756c60448201527f64206e6f74206368616e676520706172616d657465722076616c756500000000606482015290519081900360840190fd5b60065460408051808201909152601481527f61707065616c566f746550657263656e746167650000000000000000000000006020820152600160a060020a03909116906332ed3d6090610d2890610704565b610d666040805190810160405280601381526020017f676f767450436f6d6d697453746167654c656e00000000000000000000000000815250610704565b610da46040805190810160405280601381526020017f676f76745052657665616c53746167654c656e00000000000000000000000000815250610704565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b158015610e0457600080fd5b505af1158015610e18573d6000803e3d6000fd5b505050506040513d6020811015610e2e57600080fd5b505160408051608081018252828152602081810189905260075483518085018552601381527f676f76745052657665616c53746167654c656e0000000000000000000000000092810192909252939450909291830191610eef91610ee390610e9590610704565b610ee3610ed66040805190810160405280601381526020017f676f767450436f6d6d697453746167654c656e00000000000000000000000000815250610704565b429063ffffffff61141b16565b9063ffffffff61141b16565b8152602090810186905260008481526005825260409020825181558282015180519192610f249260018501929091019061150f565b5060408201518160020155606082015181600301559050507f74adf299a4c734e1ae114977ab264221c2f4a914c02243561aaa9158735d32248585848460405180806020018581526020018460001916600019168152602001838152602001828103825286818151815260200191508051906020019080838360005b83811015610fb8578181015183820152602001610fa0565b50505050905090810190601f168015610fe55780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1509392505050565b60025481565b600054600160a060020a031681565b60046020526000908152604090205481565b600154600160a060020a031681565b600654600160a060020a031681565b600061104c61158d565b600083815260056020908152604091829020825160808101845281548152600180830180548651600260001994831615610100029490940190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b50505050508152602001600282015481526020016003820154815250509050600081600001511180156111bf57506006548151604080517fee684830000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b505050506040513d60208110156111bc57600080fd5b50515b9392505050565b6000818152600560209081526040808320600654815483517f49403183000000000000000000000000000000000000000000000000000000008152600481019190915292519194600160a060020a03909116936349403183936024808201949293918390030190829087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b5051156113aa57428160020154111561136757611325816001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113165780601f106112eb57610100808354040283529160200191611316565b820191906000526020600020905b8154815290600101906020018083116112f957829003601f168201915b5050505050826003015461142e565b805460408051848152602081019290925280517fe040346a7ca6935dfd5ccdb81e13933d6af35a399b27c7c61d2888b4960336479281900390910190a16113a5565b805460408051848152602081019290925280517f0571dcf79f562f7040389aac4b84570b60ed77c3a1f6d9f10f2e3dc86d647e8f9281900390910190a15b6113e8565b805460408051848152602081019290925280517fcbc6fb3892c732a14043baca80213f571ebc1a385c676b25d9907fe8e7a2e37b9281900390910190a15b60008281526005602052604081208181559061140760018301826115b6565b506000600282018190556003909101555050565b8181018281101561142857fe5b92915050565b8060046000846040518082805190602001908083835b602083106114635780518252601f199092019160209182019101611444565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600019168152602001908152602001600020819055507f0e92bd4b74871caaf73a4a51ca5ad4f01e5c5215e940a2f2a1f4c755b955066c8282604051808060200183815260200182810382528481815181526020019150805190602001908083836000838110156108ec5781810151838201526020016108d4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061155057805160ff191683800117855561157d565b8280016001018555821561157d579182015b8281111561157d578251825591602001919060010190611562565b506115899291506115f6565b5090565b608060405190810160405280600081526020016060815260200160008152602001600081525090565b50805460018160011615610100020316600290046000825580601f106115dc57506104aa565b601f0160209004906000526020600020908101906104aa91905b6106f291905b8082111561158957600081556001016115fc5600a165627a7a7230582035fa71b840b4110f8e60e666f6fd5a19b10da33825fdc2453d3c4cf448e963170029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"PROCESSBY\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"proposals\",\n      \"outputs\": [\n        {\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"processBy\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"constitutionURI\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"constitutionHash\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"appellate\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"params\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"governmentController\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"appellateAddr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"governmentControllerAddr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"plcrAddr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"appealFeeAmount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"requestAppealLength\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"judgeAppealLength\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"appealSupermajorityPercentage\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"appealChallengeVoteDispensationPct\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"pDeposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"pCommitStageLength\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"pRevealStageLength\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"constHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"constURI\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"newAppellate\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_AppellateSet\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ParameterSet\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_GovtReparameterizationProposal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"propId\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ProposalPassed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"propId\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ProposalExpired\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"propId\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ProposalFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"proposedHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"proposedURI\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"_NewConstSet\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"getAppellate\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"getGovernmentController\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"get\",\n      \"outputs\": [\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"_value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"proposeReparameterization\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newConstHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"_newConstURI\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"setNewConstitution\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"processProposal\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"propExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"propCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"newAppellate\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"setAppellate\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xc625fc42ab6d07746b953ae98b4ec22622e1b9a9\",\n      \"transactionHash\": \"0xce40a08667372af7663cc1453e2f730b1ea978f6d98a9fb30f9bf8703eedeab1\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x4dc4168bfbe5b8bb2a4ccad35fe15e2417c022e8\",\n      \"transactionHash\": \"0x20d26446303aaa71241e0f755687210bba1756d104cd063dc2d1a08a3d1ce7ad\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/IERC20.json",
    "content": "{\n  \"contractName\": \"IERC20\",\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/IGovernment.json",
    "content": "{\n  \"contractName\": \"IGovernment\",\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"getAppellate\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"getGovernmentController\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"get\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/IMultiSigWalletFactory.json",
    "content": "{\n  \"contractName\": \"IMultiSigWalletFactory\",\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_owners\",\n          \"type\": \"address[]\"\n        },\n        {\n          \"name\": \"_required\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"create\",\n      \"outputs\": [\n        {\n          \"name\": \"wallet\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Managed.json",
    "content": "{\n  \"contractName\": \"Managed\",\n  \"bytecode\": \"0x608060405260008054600160a060020a031916331790556103a8806100256000396000f30060806040526004361061008d5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632d06177a8114610092578063715018a6146100b55780638da5cb5b146100ca578063ac18de43146100fb578063c56a3e881461011c578063f281e7d114610145578063f2fde38b14610166578063fdff9b4d14610187575b600080fd5b34801561009e57600080fd5b506100b3600160a060020a03600435166101a8565b005b3480156100c157600080fd5b506100b36101e6565b3480156100d657600080fd5b506100df610252565b60408051600160a060020a039092168252519081900360200190f35b34801561010757600080fd5b506100b3600160a060020a0360043516610261565b34801561012857600080fd5b50610131610299565b604080519115158252519081900360200190f35b34801561015157600080fd5b50610131600160a060020a03600435166102a9565b34801561017257600080fd5b506100b3600160a060020a03600435166102c7565b34801561019357600080fd5b50610131600160a060020a03600435166102ea565b600054600160a060020a031633146101bf57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600054600160a060020a031633146101fd57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a0316331461027857600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b60006102a4336102a9565b905090565b600160a060020a031660009081526001602052604090205460ff1690565b600054600160a060020a031633146102de57600080fd5b6102e7816102ff565b50565b60016020526000908152604090205460ff1681565b600160a060020a038116151561031457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820857ede70e317fc03c266a267a7047d1df819bc8bacb0177900580c4f2c5fd3050029\",\n  \"deployedBytecode\": \"0x60806040526004361061008d5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632d06177a8114610092578063715018a6146100b55780638da5cb5b146100ca578063ac18de43146100fb578063c56a3e881461011c578063f281e7d114610145578063f2fde38b14610166578063fdff9b4d14610187575b600080fd5b34801561009e57600080fd5b506100b3600160a060020a03600435166101a8565b005b3480156100c157600080fd5b506100b36101e6565b3480156100d657600080fd5b506100df610252565b60408051600160a060020a039092168252519081900360200190f35b34801561010757600080fd5b506100b3600160a060020a0360043516610261565b34801561012857600080fd5b50610131610299565b604080519115158252519081900360200190f35b34801561015157600080fd5b50610131600160a060020a03600435166102a9565b34801561017257600080fd5b506100b3600160a060020a03600435166102c7565b34801561019357600080fd5b50610131600160a060020a03600435166102ea565b600054600160a060020a031633146101bf57600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600054600160a060020a031633146101fd57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a0316331461027857600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b60006102a4336102a9565b905090565b600160a060020a031660009081526001602052604090205460ff1690565b600054600160a060020a031633146102de57600080fd5b6102e7816102ff565b50565b60016020526000908152604090205460ff1681565b600160a060020a038116151561031457600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820857ede70e317fc03c266a267a7047d1df819bc8bacb0177900580c4f2c5fd3050029\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"managers\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"checkManagerStatus\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"isManager\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addManager\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeManager\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/ManagedWhitelist.json",
    "content": "{\n  \"contractName\": \"ManagedWhitelist\",\n  \"bytecode\": \"0x608060405260008054600160a060020a03191633179055610ed0806100256000396000f30060806040526004361061015e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631299090a811461016357806314862ea514610186578063166542b3146101a75780632d06177a146101dc5780633c421424146101fd5780633f16b2821461021e5780634b3d14851461023f578063607c60bb14610260578063715018a61461028157806373c601821461029657806381601496146102b75780638bdeb452146102d85780638da5cb5b146102f95780639685cc571461032a578063ab3d0c7a1461034b578063ac18de431461036c578063ac1f38531461038d578063adbb9160146103ae578063c56a3e88146103cf578063e79a4fd4146103e4578063e99f29a414610405578063ee37c29f14610426578063ee56f4fa14610447578063f0fbca0614610468578063f281e7d114610489578063f2fde38b146104aa578063fdff9b4d146104cb575b600080fd5b34801561016f57600080fd5b50610184600160a060020a03600435166104ec565b005b34801561019257600080fd5b50610184600160a060020a0360043516610586565b3480156101b357600080fd5b506101c8600160a060020a036004351661061d565b604080519115158252519081900360200190f35b3480156101e857600080fd5b50610184600160a060020a0360043516610632565b34801561020957600080fd5b50610184600160a060020a0360043516610670565b34801561022a57600080fd5b50610184600160a060020a0360043516610707565b34801561024b57600080fd5b50610184600160a060020a03600435166107a1565b34801561026c57600080fd5b50610184600160a060020a0360043516610838565b34801561028d57600080fd5b506101846108d2565b3480156102a257600080fd5b50610184600160a060020a036004351661093e565b3480156102c357600080fd5b506101c8600160a060020a03600435166109d8565b3480156102e457600080fd5b506101c8600160a060020a03600435166109ed565b34801561030557600080fd5b5061030e610a02565b60408051600160a060020a039092168252519081900360200190f35b34801561033657600080fd5b506101c8600160a060020a0360043516610a11565b34801561035757600080fd5b50610184600160a060020a0360043516610a26565b34801561037857600080fd5b50610184600160a060020a0360043516610abd565b34801561039957600080fd5b50610184600160a060020a0360043516610af5565b3480156103ba57600080fd5b50610184600160a060020a0360043516610b8f565b3480156103db57600080fd5b506101c8610c26565b3480156103f057600080fd5b50610184600160a060020a0360043516610c36565b34801561041157600080fd5b50610184600160a060020a0360043516610ccd565b34801561043257600080fd5b50610184600160a060020a0360043516610cd0565b34801561045357600080fd5b506101c8600160a060020a0360043516610d6a565b34801561047457600080fd5b506101c8600160a060020a0360043516610d7f565b34801561049557600080fd5b506101c8600160a060020a0360043516610d94565b3480156104b657600080fd5b50610184600160a060020a0360043516610db2565b3480156104d757600080fd5b506101c8600160a060020a0360043516610dd2565b6104f533610d94565b8061050a5750600054600160a060020a031633145b1515610562576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19166001179055565b61058f33610d94565b806105a45750600054600160a060020a031633145b15156105fc576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19169055565b60076020526000908152604090205460ff1681565b600054600160a060020a0316331461064957600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b61067933610d94565b8061068e5750600054600160a060020a031633145b15156106e6576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19169055565b61071033610d94565b806107255750600054600160a060020a031633145b151561077d576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19166001179055565b6107aa33610d94565b806107bf5750600054600160a060020a031633145b1515610817576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19169055565b61084133610d94565b806108565750600054600160a060020a031633145b15156108ae576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b600054600160a060020a031633146108e957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61094733610d94565b8061095c5750600054600160a060020a031633145b15156109b4576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19166001179055565b60056020526000908152604090205460ff1681565b60046020526000908152604090205460ff1681565b600054600160a060020a031681565b60026020526000908152604090205460ff1681565b610a2f33610d94565b80610a445750600054600160a060020a031633145b1515610a9c576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19169055565b600054600160a060020a03163314610ad457600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b610afe33610d94565b80610b135750600054600160a060020a031633145b1515610b6b576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19166001179055565b610b9833610d94565b80610bad5750600054600160a060020a031633145b1515610c05576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19169055565b6000610c3133610d94565b905090565b610c3f33610d94565b80610c545750600054600160a060020a031633145b1515610cac576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19169055565b50565b610cd933610d94565b80610cee5750600054600160a060020a031633145b1515610d46576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19166001179055565b60036020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b600160a060020a031660009081526001602052604090205460ff1690565b600054600160a060020a03163314610dc957600080fd5b610ccd81610de7565b60016020526000908152604090205460ff1681565b600160a060020a0381161515610dfc57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556006f726d207468697320616374696f6e00000000000000000000000000000000004f6e6c79206d616e6167657273206f72206f776e657273206d61792070657266a165627a7a7230582018948cf633264309374c866bb9a843c540d638fc0fdf4c0058040d0caaead7110029\",\n  \"deployedBytecode\": \"0x60806040526004361061015e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631299090a811461016357806314862ea514610186578063166542b3146101a75780632d06177a146101dc5780633c421424146101fd5780633f16b2821461021e5780634b3d14851461023f578063607c60bb14610260578063715018a61461028157806373c601821461029657806381601496146102b75780638bdeb452146102d85780638da5cb5b146102f95780639685cc571461032a578063ab3d0c7a1461034b578063ac18de431461036c578063ac1f38531461038d578063adbb9160146103ae578063c56a3e88146103cf578063e79a4fd4146103e4578063e99f29a414610405578063ee37c29f14610426578063ee56f4fa14610447578063f0fbca0614610468578063f281e7d114610489578063f2fde38b146104aa578063fdff9b4d146104cb575b600080fd5b34801561016f57600080fd5b50610184600160a060020a03600435166104ec565b005b34801561019257600080fd5b50610184600160a060020a0360043516610586565b3480156101b357600080fd5b506101c8600160a060020a036004351661061d565b604080519115158252519081900360200190f35b3480156101e857600080fd5b50610184600160a060020a0360043516610632565b34801561020957600080fd5b50610184600160a060020a0360043516610670565b34801561022a57600080fd5b50610184600160a060020a0360043516610707565b34801561024b57600080fd5b50610184600160a060020a03600435166107a1565b34801561026c57600080fd5b50610184600160a060020a0360043516610838565b34801561028d57600080fd5b506101846108d2565b3480156102a257600080fd5b50610184600160a060020a036004351661093e565b3480156102c357600080fd5b506101c8600160a060020a03600435166109d8565b3480156102e457600080fd5b506101c8600160a060020a03600435166109ed565b34801561030557600080fd5b5061030e610a02565b60408051600160a060020a039092168252519081900360200190f35b34801561033657600080fd5b506101c8600160a060020a0360043516610a11565b34801561035757600080fd5b50610184600160a060020a0360043516610a26565b34801561037857600080fd5b50610184600160a060020a0360043516610abd565b34801561039957600080fd5b50610184600160a060020a0360043516610af5565b3480156103ba57600080fd5b50610184600160a060020a0360043516610b8f565b3480156103db57600080fd5b506101c8610c26565b3480156103f057600080fd5b50610184600160a060020a0360043516610c36565b34801561041157600080fd5b50610184600160a060020a0360043516610ccd565b34801561043257600080fd5b50610184600160a060020a0360043516610cd0565b34801561045357600080fd5b506101c8600160a060020a0360043516610d6a565b34801561047457600080fd5b506101c8600160a060020a0360043516610d7f565b34801561049557600080fd5b506101c8600160a060020a0360043516610d94565b3480156104b657600080fd5b50610184600160a060020a0360043516610db2565b3480156104d757600080fd5b506101c8600160a060020a0360043516610dd2565b6104f533610d94565b8061050a5750600054600160a060020a031633145b1515610562576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19166001179055565b61058f33610d94565b806105a45750600054600160a060020a031633145b15156105fc576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19169055565b60076020526000908152604090205460ff1681565b600054600160a060020a0316331461064957600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b61067933610d94565b8061068e5750600054600160a060020a031633145b15156106e6576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19169055565b61071033610d94565b806107255750600054600160a060020a031633145b151561077d576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600460205260409020805460ff19166001179055565b6107aa33610d94565b806107bf5750600054600160a060020a031633145b1515610817576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19169055565b61084133610d94565b806108565750600054600160a060020a031633145b15156108ae576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b600054600160a060020a031633146108e957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b61094733610d94565b8061095c5750600054600160a060020a031633145b15156109b4576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600260205260409020805460ff19166001179055565b60056020526000908152604090205460ff1681565b60046020526000908152604090205460ff1681565b600054600160a060020a031681565b60026020526000908152604090205460ff1681565b610a2f33610d94565b80610a445750600054600160a060020a031633145b1515610a9c576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600360205260409020805460ff19169055565b600054600160a060020a03163314610ad457600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b610afe33610d94565b80610b135750600054600160a060020a031633145b1515610b6b576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19166001179055565b610b9833610d94565b80610bad5750600054600160a060020a031633145b1515610c05576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600660205260409020805460ff19169055565b6000610c3133610d94565b905090565b610c3f33610d94565b80610c545750600054600160a060020a031633145b1515610cac576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600760205260409020805460ff19169055565b50565b610cd933610d94565b80610cee5750600054600160a060020a031633145b1515610d46576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020610e858339815191526044820152600080516020610e65833981519152606482015290519081900360840190fd5b600160a060020a03166000908152600560205260409020805460ff19166001179055565b60036020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b600160a060020a031660009081526001602052604090205460ff1690565b600054600160a060020a03163314610dc957600080fd5b610ccd81610de7565b60016020526000908152604090205460ff1681565b600160a060020a0381161515610dfc57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556006f726d207468697320616374696f6e00000000000000000000000000000000004f6e6c79206d616e6167657273206f72206f776e657273206d61792070657266a165627a7a7230582018948cf633264309374c866bb9a843c540d638fc0fdf4c0058040d0caaead7110029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"newsroomMultisigList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addManager\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"verifiedList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"unlockedList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"coreList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeManager\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"isManager\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"civilianList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"storefrontList\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"managerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"checkManagerStatus\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"managers\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToCore\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromCore\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToCivilians\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromCivilians\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToUnlocked\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromUnlocked\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToVerified\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromVerified\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToStorefront\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromStorefront\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addToNewsroomMultisigs\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeFromNewsroomMultisigs\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"checkProofOfUse\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/MessagesAndCodes.json",
    "content": "{\n  \"contractName\": \"MessagesAndCodes\",\n  \"bytecode\": \"0x610a88610030600b82828239805160001a6073146000811461002057610022565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600436106100995763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ef3054c811461009e57806379bb4acc14610117578063832a10ef14610194578063d7118140146101f7578063d87d728914610215578063ef0067941461021d578063f7feed761461027b575b600080fd5b8180156100aa57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610101948235946024803560ff16953695946064949201919081908401838280828437509497506102839650505050505050565b6040805160ff9092168252519081900360200190f35b61011f610456565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610159578181015183820152602001610141565b50505050905090810190601f1680156101865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b8180156101a057600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610101948235946024803560ff169536959460649492019190819084018382808284375094975061047b9650505050505050565b81801561020357600080fd5b5061010160043560ff602435166105de565b61011f6107cc565b81801561022957600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261010195833595369560449491939091019190819084018382808284375094975061082c9650505050505050565b61011f6108d9565b600061028e82610939565b60408051808201909152601e8152600080516020610a3d8339815191526020820152901561033d5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610348848461093e565b60408051606081018252602b81527f476976656e20636f646520697320616c726561647920706f696e74696e67207460208201527f6f2061206d6573736167650000000000000000000000000000000000000000009181019190915290156103f55760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b5060ff8316600090815260208581526040909120835161041792850190610968565b505050600191820180549283018155600090815260209081902090830401805460ff808416601f9095166101000a948502940219169290921790915590565b60408051808201909152601e8152600080516020610a3d833981519152602082015281565b600061048682610939565b60408051808201909152601e8152600080516020610a3d833981519152602082015290156104f95760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b50610504848461093e565b606060405190810160405280602681526020017f476976656e20636f646520646f6573206e6f7420706f696e7420746f2061206d81526020017f65737361676500000000000000000000000000000000000000000000000000008152509015156105b35760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b5060ff831660009081526020858152604090912083516105d592850190610968565b50919392505050565b60008060006105ed858561093e565b606060405190810160405280602681526020017f476976656e20636f646520646f6573206e6f7420706f696e7420746f2061206d81526020017f657373616765000000000000000000000000000000000000000000000000000081525090151561069c5760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b50600091505b8360ff16856001018360ff168154811015156106ba57fe5b60009182526020918290209181049091015460ff601f9092166101000a900416146106ea576001909101906106a2565b50805b60018501546000190160ff8216101561078257846001018160010160ff1681548110151561071757fe5b90600052602060002090602091828204019190069054906101000a900460ff16856001018260ff1681548110151561074b57fe5b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555080806001019150506106ed565b600185018054906107979060001983016109e6565b50604080516020818101808452600080845260ff891681529189905292902090516107c29290610968565b5092949350505050565b606060405190810160405280602681526020017f476976656e20636f646520646f6573206e6f7420706f696e7420746f2061206d81526020017f657373616765000000000000000000000000000000000000000000000000000081525081565b600061083782610939565b60408051808201909152601e8152600080516020610a3d833981519152602082015290156108aa5760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b50600090505b6108ba838261093e565b156108c7576001016108b0565b6108d2838284610283565b5092915050565b606060405190810160405280602b81526020017f476976656e20636f646520697320616c726561647920706f696e74696e67207481526020017f6f2061206d65737361676500000000000000000000000000000000000000000081525081565b511590565b60ff1660009081526020919091526040812054600260001961010060018416150201909116041190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109a957805160ff19168380011785556109d6565b828001600101855582156109d6579182015b828111156109d65782518255916020019190600101906109bb565b506109e2929150610a1f565b5090565b815481835581811115610a1a57601f016020900481601f01602090048360005260206000209182019101610a1a9190610a1f565b505050565b610a3991905b808211156109e25760008155600101610a25565b9056004d6573736167652063616e6e6f7420626520656d70747920737472696e670000a165627a7a723058203316a332657354bcd1343d28645cfb43554d085b9143092d97b1e09a98365c9e0029\",\n  \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600436106100995763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416636ef3054c811461009e57806379bb4acc14610117578063832a10ef14610194578063d7118140146101f7578063d87d728914610215578063ef0067941461021d578063f7feed761461027b575b600080fd5b8180156100aa57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610101948235946024803560ff16953695946064949201919081908401838280828437509497506102839650505050505050565b6040805160ff9092168252519081900360200190f35b61011f610456565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610159578181015183820152602001610141565b50505050905090810190601f1680156101865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b8180156101a057600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610101948235946024803560ff169536959460649492019190819084018382808284375094975061047b9650505050505050565b81801561020357600080fd5b5061010160043560ff602435166105de565b61011f6107cc565b81801561022957600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261010195833595369560449491939091019190819084018382808284375094975061082c9650505050505050565b61011f6108d9565b600061028e82610939565b60408051808201909152601e8152600080516020610a3d8339815191526020820152901561033d5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610348848461093e565b60408051606081018252602b81527f476976656e20636f646520697320616c726561647920706f696e74696e67207460208201527f6f2061206d6573736167650000000000000000000000000000000000000000009181019190915290156103f55760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b5060ff8316600090815260208581526040909120835161041792850190610968565b505050600191820180549283018155600090815260209081902090830401805460ff808416601f9095166101000a948502940219169290921790915590565b60408051808201909152601e8152600080516020610a3d833981519152602082015281565b600061048682610939565b60408051808201909152601e8152600080516020610a3d833981519152602082015290156104f95760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b50610504848461093e565b606060405190810160405280602681526020017f476976656e20636f646520646f6573206e6f7420706f696e7420746f2061206d81526020017f65737361676500000000000000000000000000000000000000000000000000008152509015156105b35760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b5060ff831660009081526020858152604090912083516105d592850190610968565b50919392505050565b60008060006105ed858561093e565b606060405190810160405280602681526020017f476976656e20636f646520646f6573206e6f7420706f696e7420746f2061206d81526020017f657373616765000000000000000000000000000000000000000000000000000081525090151561069c5760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b50600091505b8360ff16856001018360ff168154811015156106ba57fe5b60009182526020918290209181049091015460ff601f9092166101000a900416146106ea576001909101906106a2565b50805b60018501546000190160ff8216101561078257846001018160010160ff1681548110151561071757fe5b90600052602060002090602091828204019190069054906101000a900460ff16856001018260ff1681548110151561074b57fe5b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555080806001019150506106ed565b600185018054906107979060001983016109e6565b50604080516020818101808452600080845260ff891681529189905292902090516107c29290610968565b5092949350505050565b606060405190810160405280602681526020017f476976656e20636f646520646f6573206e6f7420706f696e7420746f2061206d81526020017f657373616765000000000000000000000000000000000000000000000000000081525081565b600061083782610939565b60408051808201909152601e8152600080516020610a3d833981519152602082015290156108aa5760405160e560020a62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156103025781810151838201526020016102ea565b50600090505b6108ba838261093e565b156108c7576001016108b0565b6108d2838284610283565b5092915050565b606060405190810160405280602b81526020017f476976656e20636f646520697320616c726561647920706f696e74696e67207481526020017f6f2061206d65737361676500000000000000000000000000000000000000000081525081565b511590565b60ff1660009081526020919091526040812054600260001961010060018416150201909116041190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109a957805160ff19168380011785556109d6565b828001600101855582156109d6579182015b828111156109d65782518255916020019190600101906109bb565b506109e2929150610a1f565b5090565b815481835581811115610a1a57601f016020900481601f01602090048360005260206000209182019101610a1a9190610a1f565b505050565b610a3991905b808211156109e25760008155600101610a25565b9056004d6573736167652063616e6e6f7420626520656d70747920737472696e670000a165627a7a723058203316a332657354bcd1343d28645cfb43554d085b9143092d97b1e09a98365c9e0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"EMPTY_MESSAGE_ERROR\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"CODE_UNASSIGNED_ERROR\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"CODE_RESERVED_ERROR\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"MessagesAndCodes.Data storage\"\n        },\n        {\n          \"name\": \"_code\",\n          \"type\": \"uint8\"\n        },\n        {\n          \"name\": \"_message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"addMessage\",\n      \"outputs\": [\n        {\n          \"name\": \"code\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"MessagesAndCodes.Data storage\"\n        },\n        {\n          \"name\": \"_message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"autoAddMessage\",\n      \"outputs\": [\n        {\n          \"name\": \"code\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"MessagesAndCodes.Data storage\"\n        },\n        {\n          \"name\": \"_code\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"name\": \"removeMessage\",\n      \"outputs\": [\n        {\n          \"name\": \"code\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"self\",\n          \"type\": \"MessagesAndCodes.Data storage\"\n        },\n        {\n          \"name\": \"_code\",\n          \"type\": \"uint8\"\n        },\n        {\n          \"name\": \"_message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"updateMessage\",\n      \"outputs\": [\n        {\n          \"name\": \"code\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x99Ed479b711f1Dec9377d8a1C63Bfa2D51486954\",\n      \"transactionHash\": \"0xe85b40dbc84b9be09b08dda29965050057754e3b003115fc353dbe342c4e0e51\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x908d7ca8704592342a6b869687d81fa461e4d34f\",\n      \"transactionHash\": \"0xae78712dfb6415c599eb5075bac1ce99537e27583d3ec450d18a317a5a7c9fce\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Migrations.json",
    "content": "{\n  \"contractName\": \"Migrations\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060008054600160a060020a0319163317905561023c806100326000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630900f0108114610066578063445df0ac146100965780638da5cb5b146100bd578063fdacd576146100fb575b600080fd5b34801561007257600080fd5b5061009473ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100a257600080fd5b506100ab6101c5565b60408051918252519081900360200190f35b3480156100c957600080fd5b506100d26101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010757600080fd5b506100946004356101e7565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156101c1578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156101a857600080fd5b505af11580156101bc573d6000803e3d6000fd5b505050505b5050565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633141561020d5760018190555b505600a165627a7a7230582074fe09b9d2bb05f0f5174691f1b13ebeff6ec4d39bc8c0ebc32b1680ffa298080029\",\n  \"deployedBytecode\": \"0x6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630900f0108114610066578063445df0ac146100965780638da5cb5b146100bd578063fdacd576146100fb575b600080fd5b34801561007257600080fd5b5061009473ffffffffffffffffffffffffffffffffffffffff60043516610113565b005b3480156100a257600080fd5b506100ab6101c5565b60408051918252519081900360200190f35b3480156100c957600080fd5b506100d26101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010757600080fd5b506100946004356101e7565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156101c1578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156101a857600080fd5b505af11580156101bc573d6000803e3d6000fd5b505050505b5050565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633141561020d5760018190555b505600a165627a7a7230582074fe09b9d2bb05f0f5174691f1b13ebeff6ec4d39bc8c0ebc32b1680ffa298080029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"last_completed_migration\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"completed\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"setCompleted\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"newAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"upgrade\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x4c65b5d73c193dba847def751339324c0693b122\",\n      \"transactionHash\": \"0x05b626d4689485a69bfeb8a2f41080a952a018e33bf867680a5d35d814a72122\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x7bf363c45e455c8032a2a6753647aa08c4806973\",\n      \"transactionHash\": \"0x4872f9337d4be8f164b0a44a0c154fda72c042618d609e2698598c7d4e5364c3\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/MultiSigWallet.json",
    "content": "{\n  \"contractName\": \"MultiSigWallet\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b50604051620016a6380380620016a68339810160405280516020820151910180519091906000908260328211156200004857600080fd5b818111156200005657600080fd5b8015156200006357600080fd5b8115156200007057600080fd5b600092505b845183101562000149576002600086858151811015156200009257fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16158015620000e957508451600090869085908110620000d357fe5b90602001906020020151600160a060020a031614155b1515620000f557600080fd5b60016002600087868151811015156200010a57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001929092019162000075565b84516200015e90600390602088019062000170565b50505060049190915550620002049050565b828054828255906000526020600020908101928215620001c8579160200282015b82811115620001c85782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019062000191565b50620001d6929150620001da565b5090565b6200020191905b80821115620001d6578054600160a060020a0319168155600101620001e1565b90565b61149280620002146000396000f30060806040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461015e578063173825d91461019257806320ea8d86146101b35780632f54bf6e146101cb5780633411c81c1461020057806354741525146102245780637065cb4814610255578063784547a7146102765780638b51d13f1461028e5780639ace38c2146102a6578063a0e67e2b14610361578063a8abe69a146103c6578063b5dc40c3146103eb578063b77bf60014610403578063ba51a6df14610418578063c01a8c8414610430578063c642747414610448578063d74f8edd146104b1578063dc8452cd146104c6578063e20056e6146104db578063ee22610b14610502575b600034111561015c5760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561016a57600080fd5b5061017660043561051a565b60408051600160a060020a039092168252519081900360200190f35b34801561019e57600080fd5b5061015c600160a060020a0360043516610542565b3480156101bf57600080fd5b5061015c6004356106b9565b3480156101d757600080fd5b506101ec600160a060020a0360043516610773565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600435600160a060020a0360243516610788565b34801561023057600080fd5b50610243600435151560243515156107a8565b60408051918252519081900360200190f35b34801561026157600080fd5b5061015c600160a060020a0360043516610814565b34801561028257600080fd5b506101ec60043561093a565b34801561029a57600080fd5b506102436004356109be565b3480156102b257600080fd5b506102be600435610a2d565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561036d57600080fd5b50610376610aeb565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103b257818101518382015260200161039a565b505050509050019250505060405180910390f35b3480156103d257600080fd5b5061037660043560243560443515156064351515610b4e565b3480156103f757600080fd5b50610376600435610c87565b34801561040f57600080fd5b50610243610e00565b34801561042457600080fd5b5061015c600435610e06565b34801561043c57600080fd5b5061015c600435610e86565b34801561045457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610243948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610f519650505050505050565b3480156104bd57600080fd5b50610243610f70565b3480156104d257600080fd5b50610243610f75565b3480156104e757600080fd5b5061015c600160a060020a0360043581169060243516610f7b565b34801561050e57600080fd5b5061015c600435611105565b600380548290811061052857fe5b600091825260209091200154600160a060020a0316905081565b600033301461055057600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057957600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105c357fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105f057fe5b60009182526020909120015460038054600160a060020a03909216918490811061061657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610654565b60019091019061059c565b60038054600019019061066790826113a5565b5060035460045411156106805760035461068090610e06565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1615156106d757600080fd5b60008281526001602090815260408083203380855292529091205483919060ff16151561070357600080fd5b600084815260208190526040902060030154849060ff161561072457600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561080d578380156107d5575060008181526020819052604090206003015460ff16155b806107f957508280156107f9575060008181526020819052604090206003015460ff165b15610805576001820191505b6001016107ac565b5092915050565b33301461082057600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561084857600080fd5b81600160a060020a038116151561085e57600080fd5b600354600454600190910190603282111561087857600080fd5b8181111561088557600080fd5b80151561089157600080fd5b81151561089d57600080fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156109b7576000848152600160205260408120600380549192918490811061096857fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561099c576001820191505b6004548214156109af57600192506109b7565b60010161093f565b5050919050565b6000805b600354811015610a2757600083815260016020526040812060038054919291849081106109eb57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a1f576001820191505b6001016109c2565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a0390931695909491929190830182828015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610b4357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b25575b505050505090505b90565b606080600080600554604051908082528060200260200182016040528015610b80578160200160208202803883390190505b50925060009150600090505b600554811015610c0757858015610bb5575060008181526020819052604090206003015460ff16155b80610bd95750848015610bd9575060008181526020819052604090206003015460ff165b15610bff57808383815181101515610bed57fe5b60209081029091010152600191909101905b600101610b8c565b878703604051908082528060200260200182016040528015610c33578160200160208202803883390190505b5093508790505b86811015610c7c578281815181101515610c5057fe5b9060200190602002015184898303815181101515610c6a57fe5b60209081029091010152600101610c3a565b505050949350505050565b606080600080600380549050604051908082528060200260200182016040528015610cbc578160200160208202803883390190505b50925060009150600090505b600354811015610d795760008581526001602052604081206003805491929184908110610cf157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d71576003805482908110610d2c57fe5b6000918252602090912001548351600160a060020a0390911690849084908110610d5257fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610cc8565b81604051908082528060200260200182016040528015610da3578160200160208202803883390190505b509350600090505b81811015610df8578281815181101515610dc157fe5b906020019060200201518482815181101515610dd957fe5b600160a060020a03909216602092830290910190910152600101610dab565b505050919050565b60055481565b333014610e1257600080fd5b600354816032821115610e2457600080fd5b81811115610e3157600080fd5b801515610e3d57600080fd5b811515610e4957600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff161515610ea457600080fd5b6000828152602081905260409020548290600160a060020a03161515610ec957600080fd5b60008381526001602090815260408083203380855292529091205484919060ff1615610ef457600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610f4a85611105565b5050505050565b6000610f5e8484846112b5565b9050610f6981610e86565b9392505050565b603281565b60045481565b6000333014610f8957600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610fb257600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fda57600080fd5b600092505b60035483101561106b5784600160a060020a031660038481548110151561100257fe5b600091825260209091200154600160a060020a03161415611060578360038481548110151561102d57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061106b565b600190920191610fdf565b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604081205490919060ff16151561112657600080fd5b60008381526001602090815260408083203380855292529091205484919060ff16151561115257600080fd5b600085815260208190526040902060030154859060ff161561117357600080fd5b61117c8661093a565b156112ad576000868152602081905260409081902060038101805460ff19166001908117909155815481830154935160028085018054959b50600160a060020a039093169594929391928392859260001991831615610100029190910190911604801561122a5780601f106111ff5761010080835404028352916020019161122a565b820191906000526020600020905b81548152906001019060200180831161120d57829003601f168201915b505091505060006040518083038185875af192505050156112755760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a26112ad565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038501805460ff191690555b505050505050565b600083600160a060020a03811615156112cd57600080fd5b60055460408051608081018252600160a060020a0388811682526020808301898152838501898152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355516001830155925180519496509193909261134d9260028501929101906113ce565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b8154818355818111156113c9576000838152602090206113c991810190830161144c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061140f57805160ff191683800117855561143c565b8280016001018555821561143c579182015b8281111561143c578251825591602001919060010190611421565b5061144892915061144c565b5090565b610b4b91905b8082111561144857600081556001016114525600a165627a7a72305820e8ee551a5d8acd2ae22a24eec7633688fd4bbc740b3aa2cd8d47d9d6cb6847390029\",\n  \"deployedBytecode\": \"0x60806040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461015e578063173825d91461019257806320ea8d86146101b35780632f54bf6e146101cb5780633411c81c1461020057806354741525146102245780637065cb4814610255578063784547a7146102765780638b51d13f1461028e5780639ace38c2146102a6578063a0e67e2b14610361578063a8abe69a146103c6578063b5dc40c3146103eb578063b77bf60014610403578063ba51a6df14610418578063c01a8c8414610430578063c642747414610448578063d74f8edd146104b1578063dc8452cd146104c6578063e20056e6146104db578063ee22610b14610502575b600034111561015c5760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561016a57600080fd5b5061017660043561051a565b60408051600160a060020a039092168252519081900360200190f35b34801561019e57600080fd5b5061015c600160a060020a0360043516610542565b3480156101bf57600080fd5b5061015c6004356106b9565b3480156101d757600080fd5b506101ec600160a060020a0360043516610773565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600435600160a060020a0360243516610788565b34801561023057600080fd5b50610243600435151560243515156107a8565b60408051918252519081900360200190f35b34801561026157600080fd5b5061015c600160a060020a0360043516610814565b34801561028257600080fd5b506101ec60043561093a565b34801561029a57600080fd5b506102436004356109be565b3480156102b257600080fd5b506102be600435610a2d565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561036d57600080fd5b50610376610aeb565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103b257818101518382015260200161039a565b505050509050019250505060405180910390f35b3480156103d257600080fd5b5061037660043560243560443515156064351515610b4e565b3480156103f757600080fd5b50610376600435610c87565b34801561040f57600080fd5b50610243610e00565b34801561042457600080fd5b5061015c600435610e06565b34801561043c57600080fd5b5061015c600435610e86565b34801561045457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610243948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610f519650505050505050565b3480156104bd57600080fd5b50610243610f70565b3480156104d257600080fd5b50610243610f75565b3480156104e757600080fd5b5061015c600160a060020a0360043581169060243516610f7b565b34801561050e57600080fd5b5061015c600435611105565b600380548290811061052857fe5b600091825260209091200154600160a060020a0316905081565b600033301461055057600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057957600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105c357fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105f057fe5b60009182526020909120015460038054600160a060020a03909216918490811061061657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610654565b60019091019061059c565b60038054600019019061066790826113a5565b5060035460045411156106805760035461068090610e06565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1615156106d757600080fd5b60008281526001602090815260408083203380855292529091205483919060ff16151561070357600080fd5b600084815260208190526040902060030154849060ff161561072457600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561080d578380156107d5575060008181526020819052604090206003015460ff16155b806107f957508280156107f9575060008181526020819052604090206003015460ff165b15610805576001820191505b6001016107ac565b5092915050565b33301461082057600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561084857600080fd5b81600160a060020a038116151561085e57600080fd5b600354600454600190910190603282111561087857600080fd5b8181111561088557600080fd5b80151561089157600080fd5b81151561089d57600080fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156109b7576000848152600160205260408120600380549192918490811061096857fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561099c576001820191505b6004548214156109af57600192506109b7565b60010161093f565b5050919050565b6000805b600354811015610a2757600083815260016020526040812060038054919291849081106109eb57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a1f576001820191505b6001016109c2565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a0390931695909491929190830182828015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610b4357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b25575b505050505090505b90565b606080600080600554604051908082528060200260200182016040528015610b80578160200160208202803883390190505b50925060009150600090505b600554811015610c0757858015610bb5575060008181526020819052604090206003015460ff16155b80610bd95750848015610bd9575060008181526020819052604090206003015460ff165b15610bff57808383815181101515610bed57fe5b60209081029091010152600191909101905b600101610b8c565b878703604051908082528060200260200182016040528015610c33578160200160208202803883390190505b5093508790505b86811015610c7c578281815181101515610c5057fe5b9060200190602002015184898303815181101515610c6a57fe5b60209081029091010152600101610c3a565b505050949350505050565b606080600080600380549050604051908082528060200260200182016040528015610cbc578160200160208202803883390190505b50925060009150600090505b600354811015610d795760008581526001602052604081206003805491929184908110610cf157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d71576003805482908110610d2c57fe5b6000918252602090912001548351600160a060020a0390911690849084908110610d5257fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610cc8565b81604051908082528060200260200182016040528015610da3578160200160208202803883390190505b509350600090505b81811015610df8578281815181101515610dc157fe5b906020019060200201518482815181101515610dd957fe5b600160a060020a03909216602092830290910190910152600101610dab565b505050919050565b60055481565b333014610e1257600080fd5b600354816032821115610e2457600080fd5b81811115610e3157600080fd5b801515610e3d57600080fd5b811515610e4957600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff161515610ea457600080fd5b6000828152602081905260409020548290600160a060020a03161515610ec957600080fd5b60008381526001602090815260408083203380855292529091205484919060ff1615610ef457600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610f4a85611105565b5050505050565b6000610f5e8484846112b5565b9050610f6981610e86565b9392505050565b603281565b60045481565b6000333014610f8957600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610fb257600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fda57600080fd5b600092505b60035483101561106b5784600160a060020a031660038481548110151561100257fe5b600091825260209091200154600160a060020a03161415611060578360038481548110151561102d57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061106b565b600190920191610fdf565b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604081205490919060ff16151561112657600080fd5b60008381526001602090815260408083203380855292529091205484919060ff16151561115257600080fd5b600085815260208190526040902060030154859060ff161561117357600080fd5b61117c8661093a565b156112ad576000868152602081905260409081902060038101805460ff19166001908117909155815481830154935160028085018054959b50600160a060020a039093169594929391928392859260001991831615610100029190910190911604801561122a5780601f106111ff5761010080835404028352916020019161122a565b820191906000526020600020905b81548152906001019060200180831161120d57829003601f168201915b505091505060006040518083038185875af192505050156112755760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a26112ad565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038501805460ff191690555b505050505050565b600083600160a060020a03811615156112cd57600080fd5b60055460408051608081018252600160a060020a0388811682526020808301898152838501898152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355516001830155925180519496509193909261134d9260028501929101906113ce565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b8154818355818111156113c9576000838152602090206113c991810190830161144c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061140f57805160ff191683800117855561143c565b8280016001018555821561143c579182015b8281111561143c578251825591602001919060010190611421565b5061144892915061144c565b5090565b610b4b91905b8082111561144857600081556001016114525600a165627a7a72305820e8ee551a5d8acd2ae22a24eec7633688fd4bbc740b3aa2cd8d47d9d6cb6847390029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"owners\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isOwner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"confirmations\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transactions\",\n      \"outputs\": [\n        {\n          \"name\": \"destination\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\"\n        },\n        {\n          \"name\": \"executed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"transactionCount\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"MAX_OWNER_COUNT\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"required\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"initialOwners\",\n          \"type\": \"address[]\"\n        },\n        {\n          \"name\": \"initialRequired\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"payable\": true,\n      \"stateMutability\": \"payable\",\n      \"type\": \"fallback\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Confirmation\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Revocation\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Submission\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Execution\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ExecutionFailure\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Deposit\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnerAddition\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnerRemoval\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"required\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"RequirementChange\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addOwner\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeOwner\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"replaceOwner\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"newRequired\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"changeRequirement\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"destination\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"bytes\"\n        }\n      ],\n      \"name\": \"submitTransaction\",\n      \"outputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"confirmTransaction\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"revokeConfirmation\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"executeTransaction\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isConfirmed\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getConfirmationCount\",\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"pending\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"executed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"name\": \"getTransactionCount\",\n      \"outputs\": [\n        {\n          \"name\": \"count\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"getOwners\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"transactionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getConfirmations\",\n      \"outputs\": [\n        {\n          \"name\": \"_confirmations\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"pending\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"executed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"name\": \"getTransactionIds\",\n      \"outputs\": [\n        {\n          \"name\": \"_transactionIds\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/MultiSigWalletFactory.json",
    "content": "{\n  \"contractName\": \"MultiSigWalletFactory\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b506119cb806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f4f3316811461006657806357183c821461009b5780638f838478146100db578063f8f738081461010e575b600080fd5b34801561007257600080fd5b50610087600160a060020a0360043516610165565b604080519115158252519081900360200190f35b3480156100a757600080fd5b506100bf600160a060020a036004351660243561017a565b60408051600160a060020a039092168252519081900360200190f35b3480156100e757600080fd5b506100fc600160a060020a03600435166101b1565b60408051918252519081900360200190f35b34801561011a57600080fd5b50604080516020600480358082013583810280860185019096528085526100bf9536959394602494938501929182918501908490808284375094975050933594506101cc9350505050565b60006020819052908152604090205460ff1681565b60016020528160005260406000208181548110151561019557fe5b600091825260209091200154600160a060020a03169150829050565b600160a060020a031660009081526001602052604090205490565b600082826101d86102e9565b60208082018390526040808352845190830152835182916060830191868201910280838360005b838110156102175781810151838201526020016101ff565b505050509050019350505050604051809103906000f08015801561023f573d6000803e3d6000fd5b50905061024b81610251565b92915050565b600160a060020a038116600081815260208181526040808320805460ff19166001908117909155338085528184528285208054928301815585529383902001805473ffffffffffffffffffffffffffffffffffffffff19168517905580519283529082019290925281517f4fb057ad4a26ed17a57957fa69c306f11987596069b89521c511fc9a894e6161929181900390910190a150565b6040516116a6806102fa83390190560060806040523480156200001157600080fd5b50604051620016a6380380620016a68339810160405280516020820151910180519091906000908260328211156200004857600080fd5b818111156200005657600080fd5b8015156200006357600080fd5b8115156200007057600080fd5b600092505b845183101562000149576002600086858151811015156200009257fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16158015620000e957508451600090869085908110620000d357fe5b90602001906020020151600160a060020a031614155b1515620000f557600080fd5b60016002600087868151811015156200010a57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001929092019162000075565b84516200015e90600390602088019062000170565b50505060049190915550620002049050565b828054828255906000526020600020908101928215620001c8579160200282015b82811115620001c85782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019062000191565b50620001d6929150620001da565b5090565b6200020191905b80821115620001d6578054600160a060020a0319168155600101620001e1565b90565b61149280620002146000396000f30060806040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461015e578063173825d91461019257806320ea8d86146101b35780632f54bf6e146101cb5780633411c81c1461020057806354741525146102245780637065cb4814610255578063784547a7146102765780638b51d13f1461028e5780639ace38c2146102a6578063a0e67e2b14610361578063a8abe69a146103c6578063b5dc40c3146103eb578063b77bf60014610403578063ba51a6df14610418578063c01a8c8414610430578063c642747414610448578063d74f8edd146104b1578063dc8452cd146104c6578063e20056e6146104db578063ee22610b14610502575b600034111561015c5760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561016a57600080fd5b5061017660043561051a565b60408051600160a060020a039092168252519081900360200190f35b34801561019e57600080fd5b5061015c600160a060020a0360043516610542565b3480156101bf57600080fd5b5061015c6004356106b9565b3480156101d757600080fd5b506101ec600160a060020a0360043516610773565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600435600160a060020a0360243516610788565b34801561023057600080fd5b50610243600435151560243515156107a8565b60408051918252519081900360200190f35b34801561026157600080fd5b5061015c600160a060020a0360043516610814565b34801561028257600080fd5b506101ec60043561093a565b34801561029a57600080fd5b506102436004356109be565b3480156102b257600080fd5b506102be600435610a2d565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561036d57600080fd5b50610376610aeb565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103b257818101518382015260200161039a565b505050509050019250505060405180910390f35b3480156103d257600080fd5b5061037660043560243560443515156064351515610b4e565b3480156103f757600080fd5b50610376600435610c87565b34801561040f57600080fd5b50610243610e00565b34801561042457600080fd5b5061015c600435610e06565b34801561043c57600080fd5b5061015c600435610e86565b34801561045457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610243948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610f519650505050505050565b3480156104bd57600080fd5b50610243610f70565b3480156104d257600080fd5b50610243610f75565b3480156104e757600080fd5b5061015c600160a060020a0360043581169060243516610f7b565b34801561050e57600080fd5b5061015c600435611105565b600380548290811061052857fe5b600091825260209091200154600160a060020a0316905081565b600033301461055057600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057957600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105c357fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105f057fe5b60009182526020909120015460038054600160a060020a03909216918490811061061657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610654565b60019091019061059c565b60038054600019019061066790826113a5565b5060035460045411156106805760035461068090610e06565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1615156106d757600080fd5b60008281526001602090815260408083203380855292529091205483919060ff16151561070357600080fd5b600084815260208190526040902060030154849060ff161561072457600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561080d578380156107d5575060008181526020819052604090206003015460ff16155b806107f957508280156107f9575060008181526020819052604090206003015460ff165b15610805576001820191505b6001016107ac565b5092915050565b33301461082057600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561084857600080fd5b81600160a060020a038116151561085e57600080fd5b600354600454600190910190603282111561087857600080fd5b8181111561088557600080fd5b80151561089157600080fd5b81151561089d57600080fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156109b7576000848152600160205260408120600380549192918490811061096857fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561099c576001820191505b6004548214156109af57600192506109b7565b60010161093f565b5050919050565b6000805b600354811015610a2757600083815260016020526040812060038054919291849081106109eb57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a1f576001820191505b6001016109c2565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a0390931695909491929190830182828015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610b4357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b25575b505050505090505b90565b606080600080600554604051908082528060200260200182016040528015610b80578160200160208202803883390190505b50925060009150600090505b600554811015610c0757858015610bb5575060008181526020819052604090206003015460ff16155b80610bd95750848015610bd9575060008181526020819052604090206003015460ff165b15610bff57808383815181101515610bed57fe5b60209081029091010152600191909101905b600101610b8c565b878703604051908082528060200260200182016040528015610c33578160200160208202803883390190505b5093508790505b86811015610c7c578281815181101515610c5057fe5b9060200190602002015184898303815181101515610c6a57fe5b60209081029091010152600101610c3a565b505050949350505050565b606080600080600380549050604051908082528060200260200182016040528015610cbc578160200160208202803883390190505b50925060009150600090505b600354811015610d795760008581526001602052604081206003805491929184908110610cf157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d71576003805482908110610d2c57fe5b6000918252602090912001548351600160a060020a0390911690849084908110610d5257fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610cc8565b81604051908082528060200260200182016040528015610da3578160200160208202803883390190505b509350600090505b81811015610df8578281815181101515610dc157fe5b906020019060200201518482815181101515610dd957fe5b600160a060020a03909216602092830290910190910152600101610dab565b505050919050565b60055481565b333014610e1257600080fd5b600354816032821115610e2457600080fd5b81811115610e3157600080fd5b801515610e3d57600080fd5b811515610e4957600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff161515610ea457600080fd5b6000828152602081905260409020548290600160a060020a03161515610ec957600080fd5b60008381526001602090815260408083203380855292529091205484919060ff1615610ef457600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610f4a85611105565b5050505050565b6000610f5e8484846112b5565b9050610f6981610e86565b9392505050565b603281565b60045481565b6000333014610f8957600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610fb257600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fda57600080fd5b600092505b60035483101561106b5784600160a060020a031660038481548110151561100257fe5b600091825260209091200154600160a060020a03161415611060578360038481548110151561102d57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061106b565b600190920191610fdf565b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604081205490919060ff16151561112657600080fd5b60008381526001602090815260408083203380855292529091205484919060ff16151561115257600080fd5b600085815260208190526040902060030154859060ff161561117357600080fd5b61117c8661093a565b156112ad576000868152602081905260409081902060038101805460ff19166001908117909155815481830154935160028085018054959b50600160a060020a039093169594929391928392859260001991831615610100029190910190911604801561122a5780601f106111ff5761010080835404028352916020019161122a565b820191906000526020600020905b81548152906001019060200180831161120d57829003601f168201915b505091505060006040518083038185875af192505050156112755760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a26112ad565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038501805460ff191690555b505050505050565b600083600160a060020a03811615156112cd57600080fd5b60055460408051608081018252600160a060020a0388811682526020808301898152838501898152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355516001830155925180519496509193909261134d9260028501929101906113ce565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b8154818355818111156113c9576000838152602090206113c991810190830161144c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061140f57805160ff191683800117855561143c565b8280016001018555821561143c579182015b8281111561143c578251825591602001919060010190611421565b5061144892915061144c565b5090565b610b4b91905b8082111561144857600081556001016114525600a165627a7a72305820e8ee551a5d8acd2ae22a24eec7633688fd4bbc740b3aa2cd8d47d9d6cb6847390029a165627a7a72305820bfca035a444402a0fed02cb97f121f6142c3990834b45fe9d91cf63c9408a1800029\",\n  \"deployedBytecode\": \"0x6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f4f3316811461006657806357183c821461009b5780638f838478146100db578063f8f738081461010e575b600080fd5b34801561007257600080fd5b50610087600160a060020a0360043516610165565b604080519115158252519081900360200190f35b3480156100a757600080fd5b506100bf600160a060020a036004351660243561017a565b60408051600160a060020a039092168252519081900360200190f35b3480156100e757600080fd5b506100fc600160a060020a03600435166101b1565b60408051918252519081900360200190f35b34801561011a57600080fd5b50604080516020600480358082013583810280860185019096528085526100bf9536959394602494938501929182918501908490808284375094975050933594506101cc9350505050565b60006020819052908152604090205460ff1681565b60016020528160005260406000208181548110151561019557fe5b600091825260209091200154600160a060020a03169150829050565b600160a060020a031660009081526001602052604090205490565b600082826101d86102e9565b60208082018390526040808352845190830152835182916060830191868201910280838360005b838110156102175781810151838201526020016101ff565b505050509050019350505050604051809103906000f08015801561023f573d6000803e3d6000fd5b50905061024b81610251565b92915050565b600160a060020a038116600081815260208181526040808320805460ff19166001908117909155338085528184528285208054928301815585529383902001805473ffffffffffffffffffffffffffffffffffffffff19168517905580519283529082019290925281517f4fb057ad4a26ed17a57957fa69c306f11987596069b89521c511fc9a894e6161929181900390910190a150565b6040516116a6806102fa83390190560060806040523480156200001157600080fd5b50604051620016a6380380620016a68339810160405280516020820151910180519091906000908260328211156200004857600080fd5b818111156200005657600080fd5b8015156200006357600080fd5b8115156200007057600080fd5b600092505b845183101562000149576002600086858151811015156200009257fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff16158015620000e957508451600090869085908110620000d357fe5b90602001906020020151600160a060020a031614155b1515620000f557600080fd5b60016002600087868151811015156200010a57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001929092019162000075565b84516200015e90600390602088019062000170565b50505060049190915550620002049050565b828054828255906000526020600020908101928215620001c8579160200282015b82811115620001c85782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019062000191565b50620001d6929150620001da565b5090565b6200020191905b80821115620001d6578054600160a060020a0319168155600101620001e1565b90565b61149280620002146000396000f30060806040526004361061011c5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461015e578063173825d91461019257806320ea8d86146101b35780632f54bf6e146101cb5780633411c81c1461020057806354741525146102245780637065cb4814610255578063784547a7146102765780638b51d13f1461028e5780639ace38c2146102a6578063a0e67e2b14610361578063a8abe69a146103c6578063b5dc40c3146103eb578063b77bf60014610403578063ba51a6df14610418578063c01a8c8414610430578063c642747414610448578063d74f8edd146104b1578063dc8452cd146104c6578063e20056e6146104db578063ee22610b14610502575b600034111561015c5760408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b005b34801561016a57600080fd5b5061017660043561051a565b60408051600160a060020a039092168252519081900360200190f35b34801561019e57600080fd5b5061015c600160a060020a0360043516610542565b3480156101bf57600080fd5b5061015c6004356106b9565b3480156101d757600080fd5b506101ec600160a060020a0360043516610773565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600435600160a060020a0360243516610788565b34801561023057600080fd5b50610243600435151560243515156107a8565b60408051918252519081900360200190f35b34801561026157600080fd5b5061015c600160a060020a0360043516610814565b34801561028257600080fd5b506101ec60043561093a565b34801561029a57600080fd5b506102436004356109be565b3480156102b257600080fd5b506102be600435610a2d565b6040518085600160a060020a0316600160a060020a031681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561032357818101518382015260200161030b565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561036d57600080fd5b50610376610aeb565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103b257818101518382015260200161039a565b505050509050019250505060405180910390f35b3480156103d257600080fd5b5061037660043560243560443515156064351515610b4e565b3480156103f757600080fd5b50610376600435610c87565b34801561040f57600080fd5b50610243610e00565b34801561042457600080fd5b5061015c600435610e06565b34801561043c57600080fd5b5061015c600435610e86565b34801561045457600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610243948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610f519650505050505050565b3480156104bd57600080fd5b50610243610f70565b3480156104d257600080fd5b50610243610f75565b3480156104e757600080fd5b5061015c600160a060020a0360043581169060243516610f7b565b34801561050e57600080fd5b5061015c600435611105565b600380548290811061052857fe5b600091825260209091200154600160a060020a0316905081565b600033301461055057600080fd5b600160a060020a038216600090815260026020526040902054829060ff16151561057957600080fd5b600160a060020a0383166000908152600260205260408120805460ff1916905591505b600354600019018210156106545782600160a060020a03166003838154811015156105c357fe5b600091825260209091200154600160a060020a03161415610649576003805460001981019081106105f057fe5b60009182526020909120015460038054600160a060020a03909216918490811061061657fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550610654565b60019091019061059c565b60038054600019019061066790826113a5565b5060035460045411156106805760035461068090610e06565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b3360008181526002602052604090205460ff1615156106d757600080fd5b60008281526001602090815260408083203380855292529091205483919060ff16151561070357600080fd5b600084815260208190526040902060030154849060ff161561072457600080fd5b6000858152600160209081526040808320338085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35050505050565b60026020526000908152604090205460ff1681565b600160209081526000928352604080842090915290825290205460ff1681565b6000805b60055481101561080d578380156107d5575060008181526020819052604090206003015460ff16155b806107f957508280156107f9575060008181526020819052604090206003015460ff165b15610805576001820191505b6001016107ac565b5092915050565b33301461082057600080fd5b600160a060020a038116600090815260026020526040902054819060ff161561084857600080fd5b81600160a060020a038116151561085e57600080fd5b600354600454600190910190603282111561087857600080fd5b8181111561088557600080fd5b80151561089157600080fd5b81151561089d57600080fd5b600160a060020a038516600081815260026020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01805473ffffffffffffffffffffffffffffffffffffffff191684179055517ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d9190a25050505050565b600080805b6003548110156109b7576000848152600160205260408120600380549192918490811061096857fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561099c576001820191505b6004548214156109af57600192506109b7565b60010161093f565b5050919050565b6000805b600354811015610a2757600083815260016020526040812060038054919291849081106109eb57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610a1f576001820191505b6001016109c2565b50919050565b6000602081815291815260409081902080546001808301546002808501805487516101009582161595909502600019011691909104601f8101889004880284018801909652858352600160a060020a0390931695909491929190830182828015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b5050506003909301549192505060ff1684565b60606003805480602002602001604051908101604052809291908181526020018280548015610b4357602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b25575b505050505090505b90565b606080600080600554604051908082528060200260200182016040528015610b80578160200160208202803883390190505b50925060009150600090505b600554811015610c0757858015610bb5575060008181526020819052604090206003015460ff16155b80610bd95750848015610bd9575060008181526020819052604090206003015460ff165b15610bff57808383815181101515610bed57fe5b60209081029091010152600191909101905b600101610b8c565b878703604051908082528060200260200182016040528015610c33578160200160208202803883390190505b5093508790505b86811015610c7c578281815181101515610c5057fe5b9060200190602002015184898303815181101515610c6a57fe5b60209081029091010152600101610c3a565b505050949350505050565b606080600080600380549050604051908082528060200260200182016040528015610cbc578160200160208202803883390190505b50925060009150600090505b600354811015610d795760008581526001602052604081206003805491929184908110610cf157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff1615610d71576003805482908110610d2c57fe5b6000918252602090912001548351600160a060020a0390911690849084908110610d5257fe5b600160a060020a03909216602092830290910190910152600191909101905b600101610cc8565b81604051908082528060200260200182016040528015610da3578160200160208202803883390190505b509350600090505b81811015610df8578281815181101515610dc157fe5b906020019060200201518482815181101515610dd957fe5b600160a060020a03909216602092830290910190910152600101610dab565b505050919050565b60055481565b333014610e1257600080fd5b600354816032821115610e2457600080fd5b81811115610e3157600080fd5b801515610e3d57600080fd5b811515610e4957600080fd5b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b3360008181526002602052604090205460ff161515610ea457600080fd5b6000828152602081905260409020548290600160a060020a03161515610ec957600080fd5b60008381526001602090815260408083203380855292529091205484919060ff1615610ef457600080fd5b6000858152600160208181526040808420338086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610f4a85611105565b5050505050565b6000610f5e8484846112b5565b9050610f6981610e86565b9392505050565b603281565b60045481565b6000333014610f8957600080fd5b600160a060020a038316600090815260026020526040902054839060ff161515610fb257600080fd5b600160a060020a038316600090815260026020526040902054839060ff1615610fda57600080fd5b600092505b60035483101561106b5784600160a060020a031660038481548110151561100257fe5b600091825260209091200154600160a060020a03161415611060578360038481548110151561102d57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555061106b565b600190920191610fdf565b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b3360008181526002602052604081205490919060ff16151561112657600080fd5b60008381526001602090815260408083203380855292529091205484919060ff16151561115257600080fd5b600085815260208190526040902060030154859060ff161561117357600080fd5b61117c8661093a565b156112ad576000868152602081905260409081902060038101805460ff19166001908117909155815481830154935160028085018054959b50600160a060020a039093169594929391928392859260001991831615610100029190910190911604801561122a5780601f106111ff5761010080835404028352916020019161122a565b820191906000526020600020905b81548152906001019060200180831161120d57829003601f168201915b505091505060006040518083038185875af192505050156112755760405186907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a26112ad565b60405186907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038501805460ff191690555b505050505050565b600083600160a060020a03811615156112cd57600080fd5b60055460408051608081018252600160a060020a0388811682526020808301898152838501898152600060608601819052878152808452959095208451815473ffffffffffffffffffffffffffffffffffffffff19169416939093178355516001830155925180519496509193909261134d9260028501929101906113ce565b50606091909101516003909101805460ff191691151591909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b8154818355818111156113c9576000838152602090206113c991810190830161144c565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061140f57805160ff191683800117855561143c565b8280016001018555821561143c579182015b8281111561143c578251825591602001919060010190611421565b5061144892915061144c565b5090565b610b4b91905b8082111561144857600081556001016114525600a165627a7a72305820e8ee551a5d8acd2ae22a24eec7633688fd4bbc740b3aa2cd8d47d9d6cb6847390029a165627a7a72305820bfca035a444402a0fed02cb97f121f6142c3990834b45fe9d91cf63c9408a1800029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isInstantiation\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"instantiations\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"creator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getInstantiationCount\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"instantiation\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ContractInstantiation\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_owners\",\n          \"type\": \"address[]\"\n        },\n        {\n          \"name\": \"_required\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"create\",\n      \"outputs\": [\n        {\n          \"name\": \"wallet\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x15f91c1936d854e74d6793efffe9f0b1a81098c5\",\n      \"transactionHash\": \"0x52050d5dd130629109516b2c518d040f5e185fe4f2d56aee77af3e9493ffaff4\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x8c0938fe37e91a143fe25812c116241c9e49e14c\",\n      \"transactionHash\": \"0x0216a9ba0b3bc6eebbc0afcc2a996515f57ed986740a1db763f075ffa3c2fb87\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Newsroom.json",
    "content": "{\n  \"contractName\": \"Newsroom\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b506040516200232738038062002327833981016040908152815160208301519183015160008054600160a060020a0319163317905590830192919091019062000063836401000000006200009b810204565b620000918282600060206040519081016040528060008152506200018c640100000000026401000000009004565b50505050620009f2565b600054600160a060020a03163314620000b357600080fd5b8051600010620000c257600080fd5b8051620000d79060059060208401906200094d565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc939092918291820190849080156200017b5780601f106200014f576101008083540402835291602001916200017b565b820191906000526020600020905b8154815290600101906020018083116200015d57829003601f168201915b50509250505060405180910390a150565b6000806040805190810160405280600681526020017f656469746f720000000000000000000000000000000000000000000000000000815250620001df336200034a640100000000026401000000009004565b80620001fb5750620001fb33826401000000006200035e810204565b15156200020757600080fd5b60048054600181019091559150600160a060020a0385161580156200022b57508351155b806200024b5750600160a060020a038516158015906200024b5750835115155b15156200025757600080fd5b60008281526002602052604090206001018054600160a060020a031916600160a060020a0387161790556200029882888887640100000000620003e4810204565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000305578181015183820152602001620002eb565b50505050905090810190601f168015620003335780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a0390811691161490565b60006001826040518082805190602001908083835b60208310620003945780518252601f19909201916020918201910162000373565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600080600060045487101515620003fa57600080fd5b861515620004225762000416336401000000006200034a810204565b15156200042257600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936200049293928501929101906200094d565b506040820151600282015560608201518051620004ba9160038401916020909101906200094d565b50505050600182015482546200050691600160a060020a0316908990859085908110620004e357fe5b9060005260206000209060040201620005fd640100000000026401000000009004565b156200054b576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b83811015620005b85781810151838201526020016200059e565b50505050905090810190601f168015620005e65780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b60008080600160a060020a03861615806200062d5750600384015460026000196101006001841615020190911604155b156200066057600384015460026000196101006001841615020190911604156200065657600080fd5b60009250620007bc565b8354604080516c0100000000000000000000000030028152601481019290925251908190036034019020620006a39064010000000062001671620007c582021704565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a1693620007629390929091830182828015620007455780601f10620007195761010080835404028352916020019162000745565b820191906000526020600020905b8154815290600101906020018083116200072757829003601f168201915b5088949350506401000000006200171b6200087182021704915050565b600160a060020a0316146200077657600080fd5b506000818152600360205260409020805460ff1615806200079a5750848160010154145b1515620007a657600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106200083f5780518252601f1990920191602091820191016200081e565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600080600080845160411415156200088d576000935062000944565b50505060208201516040830151606084015160001a601b60ff82161015620008b357601b015b8060ff16601b14158015620008cc57508060ff16601c14155b15620008dc576000935062000944565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af115801562000937573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200099057805160ff1916838001178555620009c0565b82800160010185558215620009c0579182015b82811115620009c0578251825591602001919060010190620009a3565b50620009ce929150620009d2565b5090565b620009ef91905b80821115620009ce5760008155600101620009d9565b90565b6119258062000a026000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010b5780630b7ad54c146101955780631bfe0308146102aa578063217fe6c6146102d95780632f54bf6e146103545780635614bdc8146103755780636192e3e81461039f57806365462d96146103ba578063715018a6146103ef5780637d72aa651461040457806384a1176c146104315780638da5cb5b146104de578063a54d19881461050f578063c47f00271461052a578063cc45969614610583578063e45e1c7d14610598578063e5975bdc146105cc578063efc97390146105ed578063f2fde38b14610605575b600080fd5b34801561011757600080fd5b50610120610626565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015a578181015183820152602001610142565b50505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a157600080fd5b506101ad6004356106b4565b60408051868152908101849052600160a060020a038316606082015260a060208083018281528751928401929092528651608084019160c08501919089019080838360005b8381101561020a5781810151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561026a578181015183820152602001610252565b50505050905090810190601f1680156102975780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156102b657600080fd5b506102d760048035600160a060020a031690602480359081019101356106ed565b005b3480156102e557600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610340958335600160a060020a03169536956044949193909101919081908401838280828437509497506107719650505050505050565b604080519115158252519081900360200190f35b34801561036057600080fd5b50610340600160a060020a03600435166107f5565b34801561038157600080fd5b5061038d600435610809565b60408051918252519081900360200190f35b3480156103ab57600080fd5b506101ad60043560243561081b565b3480156103c657600080fd5b506102d760048035906024803591600160a060020a0360443516916064359081019101356109b6565b3480156103fb57600080fd5b506102d7610b2b565b34801561041057600080fd5b506102d760048035600160a060020a03169060248035908101910135610b97565b34801561043d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261038d94369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a89359a8a830135600160a060020a03169a91999098506060909101965091945090810192508190840183828082843750949750610c159650505050505050565b3480156104ea57600080fd5b506104f3610d9c565b60408051600160a060020a039092168252519081900360200190f35b34801561051b57600080fd5b50610340600435602435610dab565b34801561053657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d7943694929360249392840191908190840183828082843750949750610e059650505050505050565b34801561058f57600080fd5b5061038d610eee565b3480156105a457600080fd5b506102d760048035906024803580820192908101359160443591606435918201910135610ef4565b3480156105d857600080fd5b506102d7600160a060020a0360043516610fac565b3480156105f957600080fd5b5061034060043561101f565b34801561061157600080fd5b506102d7600160a060020a0360043516611043565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b505050505081565b6000818152600260205260408120546060908290819083906106db9087906000190161081b565b939a9299509097509550909350915050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610716336107f5565b8061072657506107263382610771565b151561073157600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611066945050505050565b50505050565b60006001826040518082805190602001908083835b602083106107a55780518252601f199092019160209182019101610786565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b60009081526002602052604090205490565b600082815260026020526040812080546060918391829184918390881061084157600080fd5b815482908990811061084f57fe5b600091825260209182902060049190910201805460028083015460018781015481860180546040805161010095831615959095026000190190911695909504601f810189900489028401890190955284835295975093959193600160a060020a031692600388019286919083018282801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950869450925084019050828280156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b505050505090509650965096509650965050509295509295909350565b60008060408051908101604052806006815260200160d160020a6532b234ba37b9028152506109e4336107f5565b806109f457506109f43382610771565b15156109ff57600080fd5b6004548810610a0d57600080fd5b60008881526002602052604090206001810154909350600160a060020a03161580610a4757506001830154600160a060020a038781169116145b1515610a5257600080fd5b82548710610a5f57600080fd5b871515610a7a57610a6f336107f5565b1515610a7a57600080fd5b60018301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388161790558254839088908110610ab257fe5b600091825260209091206004909102019150610ad26003830186866117f0565b50610ade868984611180565b1515610ae957600080fd5b85600160a060020a031687897f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6160405160405180910390a45050505050505050565b600054600160a060020a03163314610b4257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610bc0336107f5565b80610bd05750610bd03382610771565b1515610bdb57600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611323945050505050565b60008060408051908101604052806006815260200160d160020a6532b234ba37b902815250610c43336107f5565b80610c535750610c533382610771565b1515610c5e57600080fd5b60048054600181019091559150600160a060020a038516158015610c8157508351155b80610c9f5750600160a060020a03851615801590610c9f5750835115155b1515610caa57600080fd5b6000828152600260205260409020600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716179055610ced82888887611403565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d58578181015183820152602001610d40565b50505050905090810190601f168015610d855780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a031681565b600082815260026020526040812080548310610dc657600080fd5b8083815481101515610dd457fe5b6000918252602090912060036004909202010154600260001961010060018416150201909116041515949350505050565b600054600160a060020a03163314610e1c57600080fd5b8051600010610e2a57600080fd5b8051610e3d90600590602084019061186e565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc93909291829182019084908015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b50509250505060405180910390a150565b60045481565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610f1d336107f5565b80610f2d5750610f2d3382610771565b1515610f3857600080fd5b610fa28787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8c018190048102820181019092528a81528c955093508a92508991508190840183828082843750611403945050505050565b5050505050505050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610fd5336107f5565b80610fe55750610fe53382610771565b1515610ff057600080fd5b61101b8260408051908101604052806006815260200160d160020a6532b234ba37b902815250611323565b5050565b60008181526002602052604081205461103d90839060001901610dab565b92915050565b600054600160a060020a0316331461105a57600080fd5b611063816115f4565b50565b6001816040518082805190602001908083835b602083106110985780518252601f199092019160209182019101611079565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0388166000818152918452828220805460ff19169055838752875187850152875190963396507f6a52fb0cb0e75e6a6721483d2e539b38273ec6fe95b648a41e1a901594aeccb895508894909384939084019291860191908190849084905b8381101561114257818101518382015260200161112a565b50505050905090810190601f16801561116f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050565b60008080600160a060020a03861615806111af5750600384015460026000196101006001841615020190911604155b156111df57600384015460026000196101006001841615020190911604156111d657600080fd5b6000925061131a565b8354604080516c010000000000000000000000003002815260148101929092525190819003603401902061121290611671565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a16936112c393909290918301828280156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b50889493505063ffffffff61171b16915050565b600160a060020a0316146112d657600080fd5b506000818152600360205260409020805460ff1615806112f95750848160010154145b151561130457600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b600180826040518082805190602001908083835b602083106113565780518252601f199092019160209182019101611337565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0389166000818152918452828220805460ff191698151598909817909755828652875186840152875133967fa40c1dc2b34f6b51c3ea614b688f243e50047ed9fa3ea19010303d70dac781ed965089955093849384019290860191908190849084908381101561114257818101518382015260200161112a565b60008060006004548710151561141857600080fd5b86151561143357611428336107f5565b151561143357600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936114a1939285019291019061186e565b5060408201516002820155606082015180516114c791600384019160209091019061186e565b505050506001820154825461150191600160a060020a03169089908590859081106114ee57fe5b9060005260206000209060040201611180565b15611545576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b838110156115b0578181015183820152602001611598565b50505050905090810190601f1680156115dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b600160a060020a038116151561160957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106116e95780518252601f1990920191602091820191016116ca565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000806000808451604114151561173557600093506117e7565b50505060208201516040830151606084015160001a601b60ff8216101561175a57601b015b8060ff16601b1415801561177257508060ff16601c14155b1561178057600093506117e7565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156117da573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118315782800160ff1982351617855561185e565b8280016001018555821561185e579182015b8281111561185e578235825591602001919060010190611843565b5061186a9291506118dc565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118af57805160ff191683800117855561185e565b8280016001018555821561185e579182015b8281111561185e5782518255916020019190600101906118c1565b6118f691905b8082111561186a57600081556001016118e2565b905600a165627a7a72305820bbb8f14f037c6a58da466d96dc1aa6aa3e562c829066ed2d14b761e1b2a6b1f20029\",\n  \"deployedBytecode\": \"0x6080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010b5780630b7ad54c146101955780631bfe0308146102aa578063217fe6c6146102d95780632f54bf6e146103545780635614bdc8146103755780636192e3e81461039f57806365462d96146103ba578063715018a6146103ef5780637d72aa651461040457806384a1176c146104315780638da5cb5b146104de578063a54d19881461050f578063c47f00271461052a578063cc45969614610583578063e45e1c7d14610598578063e5975bdc146105cc578063efc97390146105ed578063f2fde38b14610605575b600080fd5b34801561011757600080fd5b50610120610626565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015a578181015183820152602001610142565b50505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a157600080fd5b506101ad6004356106b4565b60408051868152908101849052600160a060020a038316606082015260a060208083018281528751928401929092528651608084019160c08501919089019080838360005b8381101561020a5781810151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561026a578181015183820152602001610252565b50505050905090810190601f1680156102975780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156102b657600080fd5b506102d760048035600160a060020a031690602480359081019101356106ed565b005b3480156102e557600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610340958335600160a060020a03169536956044949193909101919081908401838280828437509497506107719650505050505050565b604080519115158252519081900360200190f35b34801561036057600080fd5b50610340600160a060020a03600435166107f5565b34801561038157600080fd5b5061038d600435610809565b60408051918252519081900360200190f35b3480156103ab57600080fd5b506101ad60043560243561081b565b3480156103c657600080fd5b506102d760048035906024803591600160a060020a0360443516916064359081019101356109b6565b3480156103fb57600080fd5b506102d7610b2b565b34801561041057600080fd5b506102d760048035600160a060020a03169060248035908101910135610b97565b34801561043d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261038d94369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a89359a8a830135600160a060020a03169a91999098506060909101965091945090810192508190840183828082843750949750610c159650505050505050565b3480156104ea57600080fd5b506104f3610d9c565b60408051600160a060020a039092168252519081900360200190f35b34801561051b57600080fd5b50610340600435602435610dab565b34801561053657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d7943694929360249392840191908190840183828082843750949750610e059650505050505050565b34801561058f57600080fd5b5061038d610eee565b3480156105a457600080fd5b506102d760048035906024803580820192908101359160443591606435918201910135610ef4565b3480156105d857600080fd5b506102d7600160a060020a0360043516610fac565b3480156105f957600080fd5b5061034060043561101f565b34801561061157600080fd5b506102d7600160a060020a0360043516611043565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b505050505081565b6000818152600260205260408120546060908290819083906106db9087906000190161081b565b939a9299509097509550909350915050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610716336107f5565b8061072657506107263382610771565b151561073157600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611066945050505050565b50505050565b60006001826040518082805190602001908083835b602083106107a55780518252601f199092019160209182019101610786565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b60009081526002602052604090205490565b600082815260026020526040812080546060918391829184918390881061084157600080fd5b815482908990811061084f57fe5b600091825260209182902060049190910201805460028083015460018781015481860180546040805161010095831615959095026000190190911695909504601f810189900489028401890190955284835295975093959193600160a060020a031692600388019286919083018282801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950869450925084019050828280156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b505050505090509650965096509650965050509295509295909350565b60008060408051908101604052806006815260200160d160020a6532b234ba37b9028152506109e4336107f5565b806109f457506109f43382610771565b15156109ff57600080fd5b6004548810610a0d57600080fd5b60008881526002602052604090206001810154909350600160a060020a03161580610a4757506001830154600160a060020a038781169116145b1515610a5257600080fd5b82548710610a5f57600080fd5b871515610a7a57610a6f336107f5565b1515610a7a57600080fd5b60018301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388161790558254839088908110610ab257fe5b600091825260209091206004909102019150610ad26003830186866117f0565b50610ade868984611180565b1515610ae957600080fd5b85600160a060020a031687897f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6160405160405180910390a45050505050505050565b600054600160a060020a03163314610b4257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610bc0336107f5565b80610bd05750610bd03382610771565b1515610bdb57600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611323945050505050565b60008060408051908101604052806006815260200160d160020a6532b234ba37b902815250610c43336107f5565b80610c535750610c533382610771565b1515610c5e57600080fd5b60048054600181019091559150600160a060020a038516158015610c8157508351155b80610c9f5750600160a060020a03851615801590610c9f5750835115155b1515610caa57600080fd5b6000828152600260205260409020600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716179055610ced82888887611403565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d58578181015183820152602001610d40565b50505050905090810190601f168015610d855780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a031681565b600082815260026020526040812080548310610dc657600080fd5b8083815481101515610dd457fe5b6000918252602090912060036004909202010154600260001961010060018416150201909116041515949350505050565b600054600160a060020a03163314610e1c57600080fd5b8051600010610e2a57600080fd5b8051610e3d90600590602084019061186e565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc93909291829182019084908015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b50509250505060405180910390a150565b60045481565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610f1d336107f5565b80610f2d5750610f2d3382610771565b1515610f3857600080fd5b610fa28787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8c018190048102820181019092528a81528c955093508a92508991508190840183828082843750611403945050505050565b5050505050505050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610fd5336107f5565b80610fe55750610fe53382610771565b1515610ff057600080fd5b61101b8260408051908101604052806006815260200160d160020a6532b234ba37b902815250611323565b5050565b60008181526002602052604081205461103d90839060001901610dab565b92915050565b600054600160a060020a0316331461105a57600080fd5b611063816115f4565b50565b6001816040518082805190602001908083835b602083106110985780518252601f199092019160209182019101611079565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0388166000818152918452828220805460ff19169055838752875187850152875190963396507f6a52fb0cb0e75e6a6721483d2e539b38273ec6fe95b648a41e1a901594aeccb895508894909384939084019291860191908190849084905b8381101561114257818101518382015260200161112a565b50505050905090810190601f16801561116f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050565b60008080600160a060020a03861615806111af5750600384015460026000196101006001841615020190911604155b156111df57600384015460026000196101006001841615020190911604156111d657600080fd5b6000925061131a565b8354604080516c010000000000000000000000003002815260148101929092525190819003603401902061121290611671565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a16936112c393909290918301828280156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b50889493505063ffffffff61171b16915050565b600160a060020a0316146112d657600080fd5b506000818152600360205260409020805460ff1615806112f95750848160010154145b151561130457600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b600180826040518082805190602001908083835b602083106113565780518252601f199092019160209182019101611337565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0389166000818152918452828220805460ff191698151598909817909755828652875186840152875133967fa40c1dc2b34f6b51c3ea614b688f243e50047ed9fa3ea19010303d70dac781ed965089955093849384019290860191908190849084908381101561114257818101518382015260200161112a565b60008060006004548710151561141857600080fd5b86151561143357611428336107f5565b151561143357600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936114a1939285019291019061186e565b5060408201516002820155606082015180516114c791600384019160209091019061186e565b505050506001820154825461150191600160a060020a03169089908590859081106114ee57fe5b9060005260206000209060040201611180565b15611545576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b838110156115b0578181015183820152602001611598565b50505050905090810190601f1680156115dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b600160a060020a038116151561160957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106116e95780518252601f1990920191602091820191016116ca565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000806000808451604114151561173557600093506117e7565b50505060208201516040830151606084015160001a601b60ff8216101561175a57601b015b8060ff16601b1415801561177257508060ff16601c14155b1561178057600093506117e7565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156117da573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118315782800160ff1982351617855561185e565b8280016001018555821561185e579182015b8281111561185e578235825591602001919060010190611843565b5061186a9291506118dc565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118af57805160ff191683800117855561185e565b8280016001018555821561185e579182015b8281111561185e5782518255916020019190600101906118c1565b6118f691905b8082111561186a57600081556001016118e2565b905600a165627a7a72305820bbb8f14f037c6a58da466d96dc1aa6aa3e562c829066ed2d14b761e1b2a6b1f20029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"hasRole\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isOwner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"contentCount\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"newsroomName\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"charterUri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"charterHash\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"editor\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"uri\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"ContentPublished\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"revisionId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"author\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"RevisionSigned\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"editor\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"revisionId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"uri\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RevisionUpdated\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"newName\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"NameChanged\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"granter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"grantee\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleAdded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"granter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"grantee\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getContent\",\n      \"outputs\": [\n        {\n          \"name\": \"contentHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"uri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"author\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"revisionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getRevision\",\n      \"outputs\": [\n        {\n          \"name\": \"contentHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"uri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"timestamp\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"author\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"revisionCount\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isContentSigned\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"revisionId\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isRevisionSigned\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"newName\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"setName\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"addRole\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addEditor\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"who\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"removeRole\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"contentUri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"contentHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"author\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\"\n        }\n      ],\n      \"name\": \"publishContent\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"contentUri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"contentHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\"\n        }\n      ],\n      \"name\": \"updateRevision\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"contentId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"revisionId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"author\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"signature\",\n          \"type\": \"bytes\"\n        }\n      ],\n      \"name\": \"signRevision\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/NewsroomFactory.json",
    "content": "{\n  \"contractName\": \"NewsroomFactory\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50604051602080612a6f833981016040525160028054600160a060020a031916600160a060020a03909216919091179055612a1f806100506000396000f3006080604052600436106200007e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f4f3316811462000083578063421b58d614620000bb57806357183c8214620000ef57806360bb9dab14620001165780638f83847814620001f25780639ec94e991462000228575b600080fd5b3480156200009057600080fd5b50620000a7600160a060020a03600435166200024c565b604080519115158252519081900360200190f35b348015620000c857600080fd5b50620000d362000261565b60408051600160a060020a039092168252519081900360200190f35b348015620000fc57600080fd5b50620000d3600160a060020a036004351660243562000270565b3480156200012357600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452620000d394369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020808901358a01803580830284810184018652818552999c8b359c909b909a9501985092965081019450909250829190850190849080828437509497505093359450620002a89350505050565b348015620001ff57600080fd5b5062000216600160a060020a0360043516620005ed565b60408051918252519081900360200190f35b3480156200023557600080fd5b50620000d3600160a060020a036004351662000608565b60006020819052908152604090205460ff1681565b600254600160a060020a031681565b6001602052816000526040600020818154811015156200028c57fe5b600091825260209091200154600160a060020a03169150829050565b600254604080517ff8f7380800000000000000000000000000000000000000000000000000000000815260248101849052600481019182528451604482015284516000938493600160a060020a039091169263f8f7380892889288929091829160640190602080870191028083838c5b838110156200033257818101518382015260200162000318565b505050509050019350505050602060405180830381600087803b1580156200035957600080fd5b505af11580156200036e573d6000803e3d6000fd5b505050506040513d60208110156200038557600080fd5b5051905086868662000396620006bb565b60408101829052606080825284519082015283518190602080830191608084019188019080838360005b83811015620003da578181015183820152602001620003c0565b50505050905090810190601f168015620004085780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200043d57818101518382015260200162000423565b50505050905090810190601f1680156200046b5780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f08015801562000490573d6000803e3d6000fd5b50604080517fe5975bdc0000000000000000000000000000000000000000000000000000000081523360048201529051919350600160a060020a0384169163e5975bdc9160248082019260009290919082900301818387803b158015620004f657600080fd5b505af11580156200050b573d6000803e3d6000fd5b5050505081600160a060020a031663f2fde38b826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156200058457600080fd5b505af115801562000599573d6000803e3d6000fd5b50505050600160a060020a038181166000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff1916918416919091179055620005e38262000623565b5095945050505050565b600160a060020a031660009081526001602052604090205490565b600360205260009081526040902054600160a060020a031681565b600160a060020a038116600081815260208181526040808320805460ff19166001908117909155338085528184528285208054928301815585529383902001805473ffffffffffffffffffffffffffffffffffffffff19168517905580519283529082019290925281517f4fb057ad4a26ed17a57957fa69c306f11987596069b89521c511fc9a894e6161929181900390910190a150565b60405161232780620006cd83390190560060806040523480156200001157600080fd5b506040516200232738038062002327833981016040908152815160208301519183015160008054600160a060020a0319163317905590830192919091019062000063836401000000006200009b810204565b620000918282600060206040519081016040528060008152506200018c640100000000026401000000009004565b50505050620009f2565b600054600160a060020a03163314620000b357600080fd5b8051600010620000c257600080fd5b8051620000d79060059060208401906200094d565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc939092918291820190849080156200017b5780601f106200014f576101008083540402835291602001916200017b565b820191906000526020600020905b8154815290600101906020018083116200015d57829003601f168201915b50509250505060405180910390a150565b6000806040805190810160405280600681526020017f656469746f720000000000000000000000000000000000000000000000000000815250620001df336200034a640100000000026401000000009004565b80620001fb5750620001fb33826401000000006200035e810204565b15156200020757600080fd5b60048054600181019091559150600160a060020a0385161580156200022b57508351155b806200024b5750600160a060020a038516158015906200024b5750835115155b15156200025757600080fd5b60008281526002602052604090206001018054600160a060020a031916600160a060020a0387161790556200029882888887640100000000620003e4810204565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000305578181015183820152602001620002eb565b50505050905090810190601f168015620003335780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a0390811691161490565b60006001826040518082805190602001908083835b60208310620003945780518252601f19909201916020918201910162000373565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600080600060045487101515620003fa57600080fd5b861515620004225762000416336401000000006200034a810204565b15156200042257600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936200049293928501929101906200094d565b506040820151600282015560608201518051620004ba9160038401916020909101906200094d565b50505050600182015482546200050691600160a060020a0316908990859085908110620004e357fe5b9060005260206000209060040201620005fd640100000000026401000000009004565b156200054b576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b83811015620005b85781810151838201526020016200059e565b50505050905090810190601f168015620005e65780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b60008080600160a060020a03861615806200062d5750600384015460026000196101006001841615020190911604155b156200066057600384015460026000196101006001841615020190911604156200065657600080fd5b60009250620007bc565b8354604080516c0100000000000000000000000030028152601481019290925251908190036034019020620006a39064010000000062001671620007c582021704565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a1693620007629390929091830182828015620007455780601f10620007195761010080835404028352916020019162000745565b820191906000526020600020905b8154815290600101906020018083116200072757829003601f168201915b5088949350506401000000006200171b6200087182021704915050565b600160a060020a0316146200077657600080fd5b506000818152600360205260409020805460ff1615806200079a5750848160010154145b1515620007a657600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106200083f5780518252601f1990920191602091820191016200081e565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600080600080845160411415156200088d576000935062000944565b50505060208201516040830151606084015160001a601b60ff82161015620008b357601b015b8060ff16601b14158015620008cc57508060ff16601c14155b15620008dc576000935062000944565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af115801562000937573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200099057805160ff1916838001178555620009c0565b82800160010185558215620009c0579182015b82811115620009c0578251825591602001919060010190620009a3565b50620009ce929150620009d2565b5090565b620009ef91905b80821115620009ce5760008155600101620009d9565b90565b6119258062000a026000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010b5780630b7ad54c146101955780631bfe0308146102aa578063217fe6c6146102d95780632f54bf6e146103545780635614bdc8146103755780636192e3e81461039f57806365462d96146103ba578063715018a6146103ef5780637d72aa651461040457806384a1176c146104315780638da5cb5b146104de578063a54d19881461050f578063c47f00271461052a578063cc45969614610583578063e45e1c7d14610598578063e5975bdc146105cc578063efc97390146105ed578063f2fde38b14610605575b600080fd5b34801561011757600080fd5b50610120610626565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015a578181015183820152602001610142565b50505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a157600080fd5b506101ad6004356106b4565b60408051868152908101849052600160a060020a038316606082015260a060208083018281528751928401929092528651608084019160c08501919089019080838360005b8381101561020a5781810151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561026a578181015183820152602001610252565b50505050905090810190601f1680156102975780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156102b657600080fd5b506102d760048035600160a060020a031690602480359081019101356106ed565b005b3480156102e557600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610340958335600160a060020a03169536956044949193909101919081908401838280828437509497506107719650505050505050565b604080519115158252519081900360200190f35b34801561036057600080fd5b50610340600160a060020a03600435166107f5565b34801561038157600080fd5b5061038d600435610809565b60408051918252519081900360200190f35b3480156103ab57600080fd5b506101ad60043560243561081b565b3480156103c657600080fd5b506102d760048035906024803591600160a060020a0360443516916064359081019101356109b6565b3480156103fb57600080fd5b506102d7610b2b565b34801561041057600080fd5b506102d760048035600160a060020a03169060248035908101910135610b97565b34801561043d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261038d94369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a89359a8a830135600160a060020a03169a91999098506060909101965091945090810192508190840183828082843750949750610c159650505050505050565b3480156104ea57600080fd5b506104f3610d9c565b60408051600160a060020a039092168252519081900360200190f35b34801561051b57600080fd5b50610340600435602435610dab565b34801561053657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d7943694929360249392840191908190840183828082843750949750610e059650505050505050565b34801561058f57600080fd5b5061038d610eee565b3480156105a457600080fd5b506102d760048035906024803580820192908101359160443591606435918201910135610ef4565b3480156105d857600080fd5b506102d7600160a060020a0360043516610fac565b3480156105f957600080fd5b5061034060043561101f565b34801561061157600080fd5b506102d7600160a060020a0360043516611043565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b505050505081565b6000818152600260205260408120546060908290819083906106db9087906000190161081b565b939a9299509097509550909350915050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610716336107f5565b8061072657506107263382610771565b151561073157600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611066945050505050565b50505050565b60006001826040518082805190602001908083835b602083106107a55780518252601f199092019160209182019101610786565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b60009081526002602052604090205490565b600082815260026020526040812080546060918391829184918390881061084157600080fd5b815482908990811061084f57fe5b600091825260209182902060049190910201805460028083015460018781015481860180546040805161010095831615959095026000190190911695909504601f810189900489028401890190955284835295975093959193600160a060020a031692600388019286919083018282801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950869450925084019050828280156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b505050505090509650965096509650965050509295509295909350565b60008060408051908101604052806006815260200160d160020a6532b234ba37b9028152506109e4336107f5565b806109f457506109f43382610771565b15156109ff57600080fd5b6004548810610a0d57600080fd5b60008881526002602052604090206001810154909350600160a060020a03161580610a4757506001830154600160a060020a038781169116145b1515610a5257600080fd5b82548710610a5f57600080fd5b871515610a7a57610a6f336107f5565b1515610a7a57600080fd5b60018301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388161790558254839088908110610ab257fe5b600091825260209091206004909102019150610ad26003830186866117f0565b50610ade868984611180565b1515610ae957600080fd5b85600160a060020a031687897f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6160405160405180910390a45050505050505050565b600054600160a060020a03163314610b4257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610bc0336107f5565b80610bd05750610bd03382610771565b1515610bdb57600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611323945050505050565b60008060408051908101604052806006815260200160d160020a6532b234ba37b902815250610c43336107f5565b80610c535750610c533382610771565b1515610c5e57600080fd5b60048054600181019091559150600160a060020a038516158015610c8157508351155b80610c9f5750600160a060020a03851615801590610c9f5750835115155b1515610caa57600080fd5b6000828152600260205260409020600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716179055610ced82888887611403565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d58578181015183820152602001610d40565b50505050905090810190601f168015610d855780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a031681565b600082815260026020526040812080548310610dc657600080fd5b8083815481101515610dd457fe5b6000918252602090912060036004909202010154600260001961010060018416150201909116041515949350505050565b600054600160a060020a03163314610e1c57600080fd5b8051600010610e2a57600080fd5b8051610e3d90600590602084019061186e565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc93909291829182019084908015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b50509250505060405180910390a150565b60045481565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610f1d336107f5565b80610f2d5750610f2d3382610771565b1515610f3857600080fd5b610fa28787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8c018190048102820181019092528a81528c955093508a92508991508190840183828082843750611403945050505050565b5050505050505050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610fd5336107f5565b80610fe55750610fe53382610771565b1515610ff057600080fd5b61101b8260408051908101604052806006815260200160d160020a6532b234ba37b902815250611323565b5050565b60008181526002602052604081205461103d90839060001901610dab565b92915050565b600054600160a060020a0316331461105a57600080fd5b611063816115f4565b50565b6001816040518082805190602001908083835b602083106110985780518252601f199092019160209182019101611079565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0388166000818152918452828220805460ff19169055838752875187850152875190963396507f6a52fb0cb0e75e6a6721483d2e539b38273ec6fe95b648a41e1a901594aeccb895508894909384939084019291860191908190849084905b8381101561114257818101518382015260200161112a565b50505050905090810190601f16801561116f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050565b60008080600160a060020a03861615806111af5750600384015460026000196101006001841615020190911604155b156111df57600384015460026000196101006001841615020190911604156111d657600080fd5b6000925061131a565b8354604080516c010000000000000000000000003002815260148101929092525190819003603401902061121290611671565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a16936112c393909290918301828280156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b50889493505063ffffffff61171b16915050565b600160a060020a0316146112d657600080fd5b506000818152600360205260409020805460ff1615806112f95750848160010154145b151561130457600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b600180826040518082805190602001908083835b602083106113565780518252601f199092019160209182019101611337565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0389166000818152918452828220805460ff191698151598909817909755828652875186840152875133967fa40c1dc2b34f6b51c3ea614b688f243e50047ed9fa3ea19010303d70dac781ed965089955093849384019290860191908190849084908381101561114257818101518382015260200161112a565b60008060006004548710151561141857600080fd5b86151561143357611428336107f5565b151561143357600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936114a1939285019291019061186e565b5060408201516002820155606082015180516114c791600384019160209091019061186e565b505050506001820154825461150191600160a060020a03169089908590859081106114ee57fe5b9060005260206000209060040201611180565b15611545576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b838110156115b0578181015183820152602001611598565b50505050905090810190601f1680156115dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b600160a060020a038116151561160957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106116e95780518252601f1990920191602091820191016116ca565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000806000808451604114151561173557600093506117e7565b50505060208201516040830151606084015160001a601b60ff8216101561175a57601b015b8060ff16601b1415801561177257508060ff16601c14155b1561178057600093506117e7565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156117da573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118315782800160ff1982351617855561185e565b8280016001018555821561185e579182015b8281111561185e578235825591602001919060010190611843565b5061186a9291506118dc565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118af57805160ff191683800117855561185e565b8280016001018555821561185e579182015b8281111561185e5782518255916020019190600101906118c1565b6118f691905b8082111561186a57600081556001016118e2565b905600a165627a7a72305820bbb8f14f037c6a58da466d96dc1aa6aa3e562c829066ed2d14b761e1b2a6b1f20029a165627a7a7230582061abee9df0f5aab95e391427cf7f772ee5fa9ba914d17d428b32b983c8fdc3ca0029\",\n  \"deployedBytecode\": \"0x6080604052600436106200007e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632f4f3316811462000083578063421b58d614620000bb57806357183c8214620000ef57806360bb9dab14620001165780638f83847814620001f25780639ec94e991462000228575b600080fd5b3480156200009057600080fd5b50620000a7600160a060020a03600435166200024c565b604080519115158252519081900360200190f35b348015620000c857600080fd5b50620000d362000261565b60408051600160a060020a039092168252519081900360200190f35b348015620000fc57600080fd5b50620000d3600160a060020a036004351660243562000270565b3480156200012357600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452620000d394369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020808901358a01803580830284810184018652818552999c8b359c909b909a9501985092965081019450909250829190850190849080828437509497505093359450620002a89350505050565b348015620001ff57600080fd5b5062000216600160a060020a0360043516620005ed565b60408051918252519081900360200190f35b3480156200023557600080fd5b50620000d3600160a060020a036004351662000608565b60006020819052908152604090205460ff1681565b600254600160a060020a031681565b6001602052816000526040600020818154811015156200028c57fe5b600091825260209091200154600160a060020a03169150829050565b600254604080517ff8f7380800000000000000000000000000000000000000000000000000000000815260248101849052600481019182528451604482015284516000938493600160a060020a039091169263f8f7380892889288929091829160640190602080870191028083838c5b838110156200033257818101518382015260200162000318565b505050509050019350505050602060405180830381600087803b1580156200035957600080fd5b505af11580156200036e573d6000803e3d6000fd5b505050506040513d60208110156200038557600080fd5b5051905086868662000396620006bb565b60408101829052606080825284519082015283518190602080830191608084019188019080838360005b83811015620003da578181015183820152602001620003c0565b50505050905090810190601f168015620004085780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200043d57818101518382015260200162000423565b50505050905090810190601f1680156200046b5780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f08015801562000490573d6000803e3d6000fd5b50604080517fe5975bdc0000000000000000000000000000000000000000000000000000000081523360048201529051919350600160a060020a0384169163e5975bdc9160248082019260009290919082900301818387803b158015620004f657600080fd5b505af11580156200050b573d6000803e3d6000fd5b5050505081600160a060020a031663f2fde38b826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156200058457600080fd5b505af115801562000599573d6000803e3d6000fd5b50505050600160a060020a038181166000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff1916918416919091179055620005e38262000623565b5095945050505050565b600160a060020a031660009081526001602052604090205490565b600360205260009081526040902054600160a060020a031681565b600160a060020a038116600081815260208181526040808320805460ff19166001908117909155338085528184528285208054928301815585529383902001805473ffffffffffffffffffffffffffffffffffffffff19168517905580519283529082019290925281517f4fb057ad4a26ed17a57957fa69c306f11987596069b89521c511fc9a894e6161929181900390910190a150565b60405161232780620006cd83390190560060806040523480156200001157600080fd5b506040516200232738038062002327833981016040908152815160208301519183015160008054600160a060020a0319163317905590830192919091019062000063836401000000006200009b810204565b620000918282600060206040519081016040528060008152506200018c640100000000026401000000009004565b50505050620009f2565b600054600160a060020a03163314620000b357600080fd5b8051600010620000c257600080fd5b8051620000d79060059060208401906200094d565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc939092918291820190849080156200017b5780601f106200014f576101008083540402835291602001916200017b565b820191906000526020600020905b8154815290600101906020018083116200015d57829003601f168201915b50509250505060405180910390a150565b6000806040805190810160405280600681526020017f656469746f720000000000000000000000000000000000000000000000000000815250620001df336200034a640100000000026401000000009004565b80620001fb5750620001fb33826401000000006200035e810204565b15156200020757600080fd5b60048054600181019091559150600160a060020a0385161580156200022b57508351155b806200024b5750600160a060020a038516158015906200024b5750835115155b15156200025757600080fd5b60008281526002602052604090206001018054600160a060020a031916600160a060020a0387161790556200029882888887640100000000620003e4810204565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000305578181015183820152602001620002eb565b50505050905090810190601f168015620003335780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a0390811691161490565b60006001826040518082805190602001908083835b60208310620003945780518252601f19909201916020918201910162000373565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600080600060045487101515620003fa57600080fd5b861515620004225762000416336401000000006200034a810204565b15156200042257600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936200049293928501929101906200094d565b506040820151600282015560608201518051620004ba9160038401916020909101906200094d565b50505050600182015482546200050691600160a060020a0316908990859085908110620004e357fe5b9060005260206000209060040201620005fd640100000000026401000000009004565b156200054b576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b83811015620005b85781810151838201526020016200059e565b50505050905090810190601f168015620005e65780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b60008080600160a060020a03861615806200062d5750600384015460026000196101006001841615020190911604155b156200066057600384015460026000196101006001841615020190911604156200065657600080fd5b60009250620007bc565b8354604080516c0100000000000000000000000030028152601481019290925251908190036034019020620006a39064010000000062001671620007c582021704565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a1693620007629390929091830182828015620007455780601f10620007195761010080835404028352916020019162000745565b820191906000526020600020905b8154815290600101906020018083116200072757829003601f168201915b5088949350506401000000006200171b6200087182021704915050565b600160a060020a0316146200077657600080fd5b506000818152600360205260409020805460ff1615806200079a5750848160010154145b1515620007a657600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106200083f5780518252601f1990920191602091820191016200081e565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600080600080845160411415156200088d576000935062000944565b50505060208201516040830151606084015160001a601b60ff82161015620008b357601b015b8060ff16601b14158015620008cc57508060ff16601c14155b15620008dc576000935062000944565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af115801562000937573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200099057805160ff1916838001178555620009c0565b82800160010185558215620009c0579182015b82811115620009c0578251825591602001919060010190620009a3565b50620009ce929150620009d2565b5090565b620009ef91905b80821115620009ce5760008155600101620009d9565b90565b6119258062000a026000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010b5780630b7ad54c146101955780631bfe0308146102aa578063217fe6c6146102d95780632f54bf6e146103545780635614bdc8146103755780636192e3e81461039f57806365462d96146103ba578063715018a6146103ef5780637d72aa651461040457806384a1176c146104315780638da5cb5b146104de578063a54d19881461050f578063c47f00271461052a578063cc45969614610583578063e45e1c7d14610598578063e5975bdc146105cc578063efc97390146105ed578063f2fde38b14610605575b600080fd5b34801561011757600080fd5b50610120610626565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015a578181015183820152602001610142565b50505050905090810190601f1680156101875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a157600080fd5b506101ad6004356106b4565b60408051868152908101849052600160a060020a038316606082015260a060208083018281528751928401929092528651608084019160c08501919089019080838360005b8381101561020a5781810151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561026a578181015183820152602001610252565b50505050905090810190601f1680156102975780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156102b657600080fd5b506102d760048035600160a060020a031690602480359081019101356106ed565b005b3480156102e557600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610340958335600160a060020a03169536956044949193909101919081908401838280828437509497506107719650505050505050565b604080519115158252519081900360200190f35b34801561036057600080fd5b50610340600160a060020a03600435166107f5565b34801561038157600080fd5b5061038d600435610809565b60408051918252519081900360200190f35b3480156103ab57600080fd5b506101ad60043560243561081b565b3480156103c657600080fd5b506102d760048035906024803591600160a060020a0360443516916064359081019101356109b6565b3480156103fb57600080fd5b506102d7610b2b565b34801561041057600080fd5b506102d760048035600160a060020a03169060248035908101910135610b97565b34801561043d57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261038d94369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a89359a8a830135600160a060020a03169a91999098506060909101965091945090810192508190840183828082843750949750610c159650505050505050565b3480156104ea57600080fd5b506104f3610d9c565b60408051600160a060020a039092168252519081900360200190f35b34801561051b57600080fd5b50610340600435602435610dab565b34801561053657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102d7943694929360249392840191908190840183828082843750949750610e059650505050505050565b34801561058f57600080fd5b5061038d610eee565b3480156105a457600080fd5b506102d760048035906024803580820192908101359160443591606435918201910135610ef4565b3480156105d857600080fd5b506102d7600160a060020a0360043516610fac565b3480156105f957600080fd5b5061034060043561101f565b34801561061157600080fd5b506102d7600160a060020a0360043516611043565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b505050505081565b6000818152600260205260408120546060908290819083906106db9087906000190161081b565b939a9299509097509550909350915050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610716336107f5565b8061072657506107263382610771565b151561073157600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611066945050505050565b50505050565b60006001826040518082805190602001908083835b602083106107a55780518252601f199092019160209182019101610786565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420600160a060020a0397909716600090815296905250509092205460ff1692915050565b600054600160a060020a0390811691161490565b60009081526002602052604090205490565b600082815260026020526040812080546060918391829184918390881061084157600080fd5b815482908990811061084f57fe5b600091825260209182902060049190910201805460028083015460018781015481860180546040805161010095831615959095026000190190911695909504601f810189900489028401890190955284835295975093959193600160a060020a031692600388019286919083018282801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959950869450925084019050828280156109995780601f1061096e57610100808354040283529160200191610999565b820191906000526020600020905b81548152906001019060200180831161097c57829003601f168201915b505050505090509650965096509650965050509295509295909350565b60008060408051908101604052806006815260200160d160020a6532b234ba37b9028152506109e4336107f5565b806109f457506109f43382610771565b15156109ff57600080fd5b6004548810610a0d57600080fd5b60008881526002602052604090206001810154909350600160a060020a03161580610a4757506001830154600160a060020a038781169116145b1515610a5257600080fd5b82548710610a5f57600080fd5b871515610a7a57610a6f336107f5565b1515610a7a57600080fd5b60018301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388161790558254839088908110610ab257fe5b600091825260209091206004909102019150610ad26003830186866117f0565b50610ade868984611180565b1515610ae957600080fd5b85600160a060020a031687897f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6160405160405180910390a45050505050505050565b600054600160a060020a03163314610b4257600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610bc0336107f5565b80610bd05750610bd03382610771565b1515610bdb57600080fd5b61076b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843750611323945050505050565b60008060408051908101604052806006815260200160d160020a6532b234ba37b902815250610c43336107f5565b80610c535750610c533382610771565b1515610c5e57600080fd5b60048054600181019091559150600160a060020a038516158015610c8157508351155b80610c9f5750600160a060020a03851615801590610c9f5750835115155b1515610caa57600080fd5b6000828152600260205260409020600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038716179055610ced82888887611403565b508133600160a060020a03167f1ede735f9b446d8014022fed176848ac3894c54942bef9ff452f7ae42b50d5ae896040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d58578181015183820152602001610d40565b50505050905090810190601f168015610d855780820380516001836020036101000a031916815260200191505b509250505060405180910390a35095945050505050565b600054600160a060020a031681565b600082815260026020526040812080548310610dc657600080fd5b8083815481101515610dd457fe5b6000918252602090912060036004909202010154600260001961010060018416150201909116041515949350505050565b600054600160a060020a03163314610e1c57600080fd5b8051600010610e2a57600080fd5b8051610e3d90600590602084019061186e565b5060408051602080825260058054600260001961010060018416150201909116049183018290527f4737457377f528cc8afd815f73ecb8b05df80d047dbffc41c17750a4033592bc93909291829182019084908015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b50509250505060405180910390a150565b60045481565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610f1d336107f5565b80610f2d5750610f2d3382610771565b1515610f3857600080fd5b610fa28787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f8c018190048102820181019092528a81528c955093508a92508991508190840183828082843750611403945050505050565b5050505050505050565b604080518082019091526006815260d160020a6532b234ba37b9026020820152610fd5336107f5565b80610fe55750610fe53382610771565b1515610ff057600080fd5b61101b8260408051908101604052806006815260200160d160020a6532b234ba37b902815250611323565b5050565b60008181526002602052604081205461103d90839060001901610dab565b92915050565b600054600160a060020a0316331461105a57600080fd5b611063816115f4565b50565b6001816040518082805190602001908083835b602083106110985780518252601f199092019160209182019101611079565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0388166000818152918452828220805460ff19169055838752875187850152875190963396507f6a52fb0cb0e75e6a6721483d2e539b38273ec6fe95b648a41e1a901594aeccb895508894909384939084019291860191908190849084905b8381101561114257818101518382015260200161112a565b50505050905090810190601f16801561116f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050565b60008080600160a060020a03861615806111af5750600384015460026000196101006001841615020190911604155b156111df57600384015460026000196101006001841615020190911604156111d657600080fd5b6000925061131a565b8354604080516c010000000000000000000000003002815260148101929092525190819003603401902061121290611671565b600385018054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939550600160a060020a038a16936112c393909290918301828280156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b50889493505063ffffffff61171b16915050565b600160a060020a0316146112d657600080fd5b506000818152600360205260409020805460ff1615806112f95750848160010154145b151561130457600080fd5b805460ff19166001908117825581810186905592505b50509392505050565b600180826040518082805190602001908083835b602083106113565780518252601f199092019160209182019101611337565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520600160a060020a0389166000818152918452828220805460ff191698151598909817909755828652875186840152875133967fa40c1dc2b34f6b51c3ea614b688f243e50047ed9fa3ea19010303d70dac781ed965089955093849384019290860191908190849084908381101561114257818101518382015260200161112a565b60008060006004548710151561141857600080fd5b86151561143357611428336107f5565b151561143357600080fd5b50506000858152600260209081526040808320805482516080810184528881528085018a815242948201949094526060810188905260018083018085558488529686902082516004850290910190815594518051949793969395929492936114a1939285019291019061186e565b5060408201516002820155606082015180516114c791600384019160209091019061186e565b505050506001820154825461150191600160a060020a03169089908590859081106114ee57fe5b9060005260206000209060040201611180565b15611545576001820154604051600160a060020a0390911690829089907f605611fc50d3effbe4af88e82f5daebfcffe0fb8f3b34ed32f1a746290ccbc6190600090a45b808733600160a060020a03167f18b6b5c485f8822a270464dd544d0715597dc8f1a007ee2b0252b62b8b9fb390896040518080602001828103825283818151815260200191508051906020019080838360005b838110156115b0578181015183820152602001611598565b50505050905090810190601f1680156115dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45050949350505050565b600160a060020a038116151561160957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083835b602083106116e95780518252601f1990920191602091820191016116ca565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000806000808451604114151561173557600093506117e7565b50505060208201516040830151606084015160001a601b60ff8216101561175a57601b015b8060ff16601b1415801561177257508060ff16601c14155b1561178057600093506117e7565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156117da573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118315782800160ff1982351617855561185e565b8280016001018555821561185e579182015b8281111561185e578235825591602001919060010190611843565b5061186a9291506118dc565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118af57805160ff191683800117855561185e565b8280016001018555821561185e579182015b8281111561185e5782518255916020019190600101906118c1565b6118f691905b8082111561186a57600081556001016118e2565b905600a165627a7a72305820bbb8f14f037c6a58da466d96dc1aa6aa3e562c829066ed2d14b761e1b2a6b1f20029a165627a7a7230582061abee9df0f5aab95e391427cf7f772ee5fa9ba914d17d428b32b983c8fdc3ca0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isInstantiation\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"multisigFactory\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"instantiations\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"creator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getInstantiationCount\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"multisigNewsrooms\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"multisigFactoryAddr\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"instantiation\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ContractInstantiation\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"charterUri\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"charterHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"initialOwners\",\n          \"type\": \"address[]\"\n        },\n        {\n          \"name\": \"initialRequired\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"create\",\n      \"outputs\": [\n        {\n          \"name\": \"newsroom\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x3e39fa983abcd349d95aed608e798817397cf0d1\",\n      \"transactionHash\": \"0x4ed89d96fddd5ed862f7652f6d4bedf115e627d9accab6332753425aecee4b22\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x0437bb69da983a508ce77b5f16dc86a96163318b\",\n      \"transactionHash\": \"0xdcdcb9108039bed24946a9e7177ffe96bfa879b0181968dfdca620d005838fde\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/NoOpTokenController.json",
    "content": "{\n  \"contractName\": \"NoOpTokenController\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50610216806100206000396000f3006080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630e969a0581146100665780637f4ab1dd14610091578063d4ce141514610121578063e7984d1714610158575b600080fd5b34801561007257600080fd5b5061007b61016d565b6040805160ff9092168252519081900360200190f35b34801561009d57600080fd5b506100ac60ff60043516610172565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e65781810151838201526020016100ce565b50505050905090810190601f1680156101135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012d57600080fd5b5061007b73ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356101aa565b34801561016457600080fd5b506100ac6101b3565b600081565b5060408051808201909152600781527f5355434345535300000000000000000000000000000000000000000000000000602082015290565b60009392505050565b60408051808201909152600781527f53554343455353000000000000000000000000000000000000000000000000006020820152815600a165627a7a72305820d56090aba1d725400a587dae6987101030e942980bb3be930c720c7e7bc9cc0d0029\",\n  \"deployedBytecode\": \"0x6080604052600436106100615763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630e969a0581146100665780637f4ab1dd14610091578063d4ce141514610121578063e7984d1714610158575b600080fd5b34801561007257600080fd5b5061007b61016d565b6040805160ff9092168252519081900360200190f35b34801561009d57600080fd5b506100ac60ff60043516610172565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e65781810151838201526020016100ce565b50505050905090810190601f1680156101135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012d57600080fd5b5061007b73ffffffffffffffffffffffffffffffffffffffff600435811690602435166044356101aa565b34801561016457600080fd5b506100ac6101b3565b600081565b5060408051808201909152600781527f5355434345535300000000000000000000000000000000000000000000000000602082015290565b60009392505050565b60408051808201909152600781527f53554343455353000000000000000000000000000000000000000000000000006020820152815600a165627a7a72305820d56090aba1d725400a587dae6987101030e942980bb3be930c720c7e7bc9cc0d0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"SUCCESS_CODE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"SUCCESS_MESSAGE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"detectTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"restrictionCode\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"name\": \"messageForTransferRestriction\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xd3661aa186d83692b29855d396a3a44bc8fd5836\",\n      \"transactionHash\": \"0x92972c8f1f8aa0c268d0532865a9a00e4cb56cf723e3a18168c396ee324b172d\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x15f91c1936d854e74d6793efffe9f0b1a81098c5\",\n      \"transactionHash\": \"0xa3b31e9ba2be964ebee3e95ccd266c4cf275b95ceb9ebd273504796a58bf5a2f\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Ownable.json",
    "content": "{\n  \"contractName\": \"Ownable\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060008054600160a060020a0319163317905561020b806100326000396000f3006080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663715018a6811461005b5780638da5cb5b14610072578063f2fde38b146100a3575b600080fd5b34801561006757600080fd5b506100706100c4565b005b34801561007e57600080fd5b50610087610130565b60408051600160a060020a039092168252519081900360200190f35b3480156100af57600080fd5b50610070600160a060020a036004351661013f565b600054600160a060020a031633146100db57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a0316331461015657600080fd5b61015f81610162565b50565b600160a060020a038116151561017757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582095d8eb5308d7c5c389b6182abeb94e0ac7500ada8771a228e93aec273d2905030029\",\n  \"deployedBytecode\": \"0x6080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663715018a6811461005b5780638da5cb5b14610072578063f2fde38b146100a3575b600080fd5b34801561006757600080fd5b506100706100c4565b005b34801561007e57600080fd5b50610087610130565b60408051600160a060020a039092168252519081900360200190f35b3480156100af57600080fd5b50610070600160a060020a036004351661013f565b600054600160a060020a031633146100db57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a0316331461015657600080fd5b61015f81610162565b50565b600160a060020a038116151561017757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582095d8eb5308d7c5c389b6182abeb94e0ac7500ada8771a228e93aec273d2905030029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/PLCRVoting.json",
    "content": "{\n  \"contractName\": \"PLCRVoting\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50604051602080611c7e8339810160405251600160a060020a038116151561003757600080fd5b60058054600160a060020a03909216600160a060020a031990921691909117905560008055611c138061006b6000396000f3006080604052600436106101715763ffffffff60e060020a600035041663053e71a681146101765780632173a10f146101a05780632c052031146101b557806332ed3d60146101dc5780633b930294146101fa5780633ec36b991461021b578063427fa1d214610261578063441c77c01461028257806349403183146102ae5780636148fed5146102c65780636b2d95d4146103095780636cbf9c5e1461032a5780637f97e8361461034b5780638090f92e1461036f578063819b0293146103a757806388d21ff3146103d157806397508f36146103e957806397603560146103fe578063a1103f3714610416578063a25236fe1461043a578063a4439dc514610452578063aa7ca4641461046a578063b11d8bb81461048e578063b43bd069146104ac578063bb11ed7e146104d3578063d138209214610528578063d901402b1461054c578063d9548e5314610570578063e7b1d43c14610588578063ee684830146105a0578063fc0c546a146105b8575b600080fd5b34801561018257600080fd5b5061018e6004356105e9565b60408051918252519081900360200190f35b3480156101ac57600080fd5b5061018e61063e565b3480156101c157600080fd5b5061018e600160a060020a0360043516602435604435610643565b3480156101e857600080fd5b5061018e60043560243560443561080c565b34801561020657600080fd5b5061018e600160a060020a03600435166108e8565b34801561022757600080fd5b5061025f60246004803582810192908201359181358083019290820135916044358083019290820135916064359182019101356108fa565b005b34801561026d57600080fd5b5061018e600160a060020a036004351661099a565b34801561028e57600080fd5b5061029a600435610a54565b604080519115158252519081900360200190f35b3480156102ba57600080fd5b5061029a600435610a9f565b3480156102d257600080fd5b506102de600435610b1c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561031557600080fd5b5061018e600160a060020a0360043516610b4a565b34801561033657600080fd5b5061025f600435602435604435606435610b5e565b34801561035757600080fd5b5061029a600160a060020a03600435166024356110d0565b34801561037b57600080fd5b5061025f6024600480358281019290820135918135808301929082013591604435918201910135611115565b3480156103b357600080fd5b5061029a600435602435600160a060020a0360443516606435611191565b3480156103dd57600080fd5b5061029a6004356111d2565b3480156103f557600080fd5b5061018e6111e7565b34801561040a57600080fd5b5061025f6004356111ed565b34801561042257600080fd5b5061018e600160a060020a0360043516602435611391565b34801561044657600080fd5b5061025f6004356113c8565b34801561045e57600080fd5b5061029a60043561155b565b34801561047657600080fd5b5061029a600160a060020a0360043516602435611589565b34801561049a57600080fd5b5061025f6004356024356044356115ce565b3480156104b857600080fd5b5061018e600160a060020a03600435166024356044356117d1565b3480156104df57600080fd5b506040805160206004803580820135838102808601850190965280855261025f9536959394602494938501929182918501908490808284375094975061187d9650505050505050565b34801561053457600080fd5b5061018e600160a060020a03600435166024356118b5565b34801561055857600080fd5b5061018e600160a060020a0360043516602435611987565b34801561057c57600080fd5b5061029a600435611a26565b34801561059457600080fd5b5061025f600435611a2b565b3480156105ac57600080fd5b5061029a600435611b57565b3480156105c457600080fd5b506105cd611b89565b60408051600160a060020a039092168252519081900360200190f35b60006105f482611b57565b15156105ff57600080fd5b61060882610a9f565b156106255750600081815260016020526040902060030154610639565b506000818152600160205260409020600401545b919050565b600081565b60008060006106518661099a565b915061065d86836118b5565b90505b81156107ff5761067086836118b5565b9050848111610742578382141561073a57600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b15801561070b57600080fd5b505af415801561071f573d6000803e3d6000fd5b505050506040513d602081101561073557600080fd5b505191505b819250610803565b600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b1580156107cc57600080fd5b505af41580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b50519150610660565b8192505b50509392505050565b6000805460010181558080610827428663ffffffff611b9816565b9150610839828563ffffffff611b9816565b6040805160a08101825284815260208082018481528284018b8152600060608086018281526080870183815283548452600180885289852098518955955195880195909555925160028701559151600386015591516004909401939093555483518b8152918201879052818401859052925193945033937f404f1f1c229d9eb2a949e7584da6ffde9d059ef2169f487ca815434cce0640d0929181900390910190a35050600054949350505050565b60026020526000908152604090205481565b600087861461090857600080fd5b87841461091457600080fd5b87821461092057600080fd5b5060005b8781101561098f5761098789898381811061093b57fe5b90506020020135888884818110151561095057fe5b6020029190910135905087878581811061096657fe5b90506020020135868686818110151561097b57fe5b90506020020135610b5e565b600101610924565b505050505050505050565b600160a060020a038116600090815260036020908152604080832081517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________926330fe0a0a9260448082019391829003018186803b158015610a2257600080fd5b505af4158015610a36573d6000803e3d6000fd5b505050506040513d6020811015610a4c57600080fd5b505192915050565b6000610a5f826111d2565b1515610a6a57600080fd5b60008281526001602081905260409091200154610a8690611a26565b158015610a995750610a978261155b565b155b92915050565b6000610aa9611bb7565b610ab283611b57565b1515610abd57600080fd5b5050600090815260016020818152604092839020835160a0810185528154815292810154918301919091526002810154928201839052600381015460608301819052600490910154608090920182905290810190910260649091021190565b6001602081905260009182526040909120805491810154600282015460038301546004909301549192909185565b6000610a9982610b598461099a565b6118b5565b6000806000610b6c8761155b565b1515610b7757600080fd5b33600090815260026020526040902054851115610bba5733600090815260026020526040902054610baf90869063ffffffff611ba516565b9250610bba836113c8565b33600090815260026020526040902054851115610bd657600080fd5b861515610be257600080fd5b851515610bee57600080fd5b831580610ca457503360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b158015610c7757600080fd5b505af4158015610c8b573d6000803e3d6000fd5b505050506040513d6020811015610ca157600080fd5b50515b1515610caf57600080fd5b3360009081526003602090815260409182902082517f07d29ac9000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610d3057600080fd5b505af4158015610d44573d6000803e3d6000fd5b505050506040513d6020811015610d5a57600080fd5b5051915086821415610e16573360009081526003602090815260409182902082517f07d29ac90000000000000000000000000000000000000000000000000000000081526004810191909152602481018a9052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610de757600080fd5b505af4158015610dfb573d6000803e3d6000fd5b505050506040513d6020811015610e1157600080fd5b505191505b610e2284833388611191565b1515610e2d57600080fd5b3360009081526003602052604080822081517f9735c51b000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052604481018a905260648101859052905173__DLL___________________________________92639735c51b9260848082019391829003018186803b158015610eb857600080fd5b505af4158015610ecc573d6000803e3d6000fd5b50505050610eda3388611391565b604080517f977aa031000000000000000000000000000000000000000000000000000000008152600481810152602481018390526064810188905260806044820152600960848201527f6e756d546f6b656e73000000000000000000000000000000000000000000000060a4820152905191925073__AttributeStore________________________9163977aa0319160c480820192600092909190829003018186803b158015610f8a57600080fd5b505af4158015610f9e573d6000803e3d6000fd5b5050604080517f977aa03100000000000000000000000000000000000000000000000000000000815260048181015260248101859052606481018a905260806044820152600a60848201527f636f6d6d6974486173680000000000000000000000000000000000000000000060a4820152905173__AttributeStore________________________935063977aa031925060c4808301926000929190829003018186803b15801561104e57600080fd5b505af4158015611062573d6000803e3d6000fd5b5050506000888152600160208181526040808420338086526005909101835293819020805460ff1916909317909255815189815291519293508a927fea7979e4280d7e6bffc1c7d83a1ac99f16d02ecc14465ce41016226783b663d79281900390910190a350505050505050565b60006110db826111d2565b15156110e657600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260059093019052205460ff1690565b600085841461112357600080fd5b85821461112f57600080fd5b5060005b858110156111885761118087878381811061114a57fe5b90506020020135868684818110151561115f57fe5b90506020020135858585818110151561117457fe5b905060200201356115ce565b600101611133565b50505050505050565b60008060006111a085886118b5565b84101591506111af85876118b5565b841115806111bb575085155b90508180156111c75750805b979650505050505050565b60008115801590610a99575050600054101590565b60005481565b6000818152600160208190526040909120015461120990611a26565b151561121457600080fd5b3360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b15801561129557600080fd5b505af41580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b505115156112cc57600080fd5b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561134957600080fd5b505af415801561135d573d6000803e3d6000fd5b50506040513392508391507f402507661c8c8cb90e0a796450b8bdd28b6c516f05279c0cd29e84c344e1699a90600090a350565b604080516c01000000000000000000000000600160a060020a03851602815260148101839052905190819003603401902092915050565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518392600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561142d57600080fd5b505af1158015611441573d6000803e3d6000fd5b505050506040513d602081101561145757600080fd5b5051101561146457600080fd5b33600081815260026020908152604080832080548601905560055481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018690529051600160a060020a03909116936323b872dd9360648083019493928390030190829087803b1580156114eb57600080fd5b505af11580156114ff573d6000803e3d6000fd5b505050506040513d602081101561151557600080fd5b5051151561152257600080fd5b60408051828152905133917ff7aaf024511d9982df8cd0d437c71c30106e6848cd1ba3d288d7a9c0e276aeda919081900360200190a250565b6000611566826111d2565b151561157157600080fd5b600082815260016020526040902054610a9790611a26565b6000611594826111d2565b151561159f57600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260069093019052205460ff1690565b60006115d984610a54565b15156115e457600080fd5b600084815260016020908152604080832033845260050190915290205460ff16151561160f57600080fd5b600084815260016020908152604080832033845260060190915290205460ff161561163957600080fd5b6116433385611987565b604080518581526020810185905281519081900390910190201461166657600080fd5b61167033856118b5565b905082600114156116975760008481526001602052604090206003018054820190556116af565b60008481526001602052604090206004018054820190555b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561172c57600080fd5b505af4158015611740573d6000803e3d6000fd5b505050600085815260016020818152604080842033808652600682018452828620805460ff191686179055948a9052928252600383015460049093015481518781529283019390935281810192909252606081018690529051919250859187917f9b19aaec524fad29c0ced9b9973a15e3045d7c3be156d71394ab40f0d5f119ff919081900360800190a450505050565b6000806000806117e086611b57565b15156117eb57600080fd5b6000868152600160209081526040808320600160a060020a038b16845260060190915290205460ff16151561181f57600080fd5b61182886610a9f565b611833576000611836565b60015b60ff16925082856040518083815260200182815260200192505050604051809103902091506118658787611987565b905081811461187357600080fd5b6111c787876118b5565b60005b81518110156118b1576118a9828281518110151561189a57fe5b906020019060200201516111ed565b600101611880565b5050565b600073__AttributeStore________________________6350389f5c60046118dd8686611391565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600960648301527f6e756d546f6b656e73000000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561195457600080fd5b505af4158015611968573d6000803e3d6000fd5b505050506040513d602081101561197e57600080fd5b50519392505050565b600073__AttributeStore________________________6350389f5c60046119af8686611391565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600a60648301527f636f6d6d6974486173680000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561195457600080fd5b421190565b6000611a55611a3933610b4a565b336000908152600260205260409020549063ffffffff611ba516565b905081811015611a6457600080fd5b3360008181526002602090815260408083208054879003905560055481517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810195909552602485018790529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015611ae657600080fd5b505af1158015611afa573d6000803e3d6000fd5b505050506040513d6020811015611b1057600080fd5b50511515611b1d57600080fd5b60408051838152905133917ffaeb7dbb9992397d26ea1944efd40c80b40f702faf69b46c67ad10aba68ccb79919081900360200190a25050565b6000611b62826111d2565b1515611b6d57600080fd5b60008281526001602081905260409091200154610a9990611a26565b600554600160a060020a031681565b81810182811015610a9957fe5b600082821115611bb157fe5b50900390565b60a060405190810160405280600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820ff005710c1354d39fc831ef485711030c736a039e71777dc40e17e4d4a7a08dc0029\",\n  \"deployedBytecode\": \"0x6080604052600436106101715763ffffffff60e060020a600035041663053e71a681146101765780632173a10f146101a05780632c052031146101b557806332ed3d60146101dc5780633b930294146101fa5780633ec36b991461021b578063427fa1d214610261578063441c77c01461028257806349403183146102ae5780636148fed5146102c65780636b2d95d4146103095780636cbf9c5e1461032a5780637f97e8361461034b5780638090f92e1461036f578063819b0293146103a757806388d21ff3146103d157806397508f36146103e957806397603560146103fe578063a1103f3714610416578063a25236fe1461043a578063a4439dc514610452578063aa7ca4641461046a578063b11d8bb81461048e578063b43bd069146104ac578063bb11ed7e146104d3578063d138209214610528578063d901402b1461054c578063d9548e5314610570578063e7b1d43c14610588578063ee684830146105a0578063fc0c546a146105b8575b600080fd5b34801561018257600080fd5b5061018e6004356105e9565b60408051918252519081900360200190f35b3480156101ac57600080fd5b5061018e61063e565b3480156101c157600080fd5b5061018e600160a060020a0360043516602435604435610643565b3480156101e857600080fd5b5061018e60043560243560443561080c565b34801561020657600080fd5b5061018e600160a060020a03600435166108e8565b34801561022757600080fd5b5061025f60246004803582810192908201359181358083019290820135916044358083019290820135916064359182019101356108fa565b005b34801561026d57600080fd5b5061018e600160a060020a036004351661099a565b34801561028e57600080fd5b5061029a600435610a54565b604080519115158252519081900360200190f35b3480156102ba57600080fd5b5061029a600435610a9f565b3480156102d257600080fd5b506102de600435610b1c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561031557600080fd5b5061018e600160a060020a0360043516610b4a565b34801561033657600080fd5b5061025f600435602435604435606435610b5e565b34801561035757600080fd5b5061029a600160a060020a03600435166024356110d0565b34801561037b57600080fd5b5061025f6024600480358281019290820135918135808301929082013591604435918201910135611115565b3480156103b357600080fd5b5061029a600435602435600160a060020a0360443516606435611191565b3480156103dd57600080fd5b5061029a6004356111d2565b3480156103f557600080fd5b5061018e6111e7565b34801561040a57600080fd5b5061025f6004356111ed565b34801561042257600080fd5b5061018e600160a060020a0360043516602435611391565b34801561044657600080fd5b5061025f6004356113c8565b34801561045e57600080fd5b5061029a60043561155b565b34801561047657600080fd5b5061029a600160a060020a0360043516602435611589565b34801561049a57600080fd5b5061025f6004356024356044356115ce565b3480156104b857600080fd5b5061018e600160a060020a03600435166024356044356117d1565b3480156104df57600080fd5b506040805160206004803580820135838102808601850190965280855261025f9536959394602494938501929182918501908490808284375094975061187d9650505050505050565b34801561053457600080fd5b5061018e600160a060020a03600435166024356118b5565b34801561055857600080fd5b5061018e600160a060020a0360043516602435611987565b34801561057c57600080fd5b5061029a600435611a26565b34801561059457600080fd5b5061025f600435611a2b565b3480156105ac57600080fd5b5061029a600435611b57565b3480156105c457600080fd5b506105cd611b89565b60408051600160a060020a039092168252519081900360200190f35b60006105f482611b57565b15156105ff57600080fd5b61060882610a9f565b156106255750600081815260016020526040902060030154610639565b506000818152600160205260409020600401545b919050565b600081565b60008060006106518661099a565b915061065d86836118b5565b90505b81156107ff5761067086836118b5565b9050848111610742578382141561073a57600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b15801561070b57600080fd5b505af415801561071f573d6000803e3d6000fd5b505050506040513d602081101561073557600080fd5b505191505b819250610803565b600160a060020a03861660009081526003602090815260409182902082517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101859052915173__DLL___________________________________926330fe0a0a926044808301939192829003018186803b1580156107cc57600080fd5b505af41580156107e0573d6000803e3d6000fd5b505050506040513d60208110156107f657600080fd5b50519150610660565b8192505b50509392505050565b6000805460010181558080610827428663ffffffff611b9816565b9150610839828563ffffffff611b9816565b6040805160a08101825284815260208082018481528284018b8152600060608086018281526080870183815283548452600180885289852098518955955195880195909555925160028701559151600386015591516004909401939093555483518b8152918201879052818401859052925193945033937f404f1f1c229d9eb2a949e7584da6ffde9d059ef2169f487ca815434cce0640d0929181900390910190a35050600054949350505050565b60026020526000908152604090205481565b600087861461090857600080fd5b87841461091457600080fd5b87821461092057600080fd5b5060005b8781101561098f5761098789898381811061093b57fe5b90506020020135888884818110151561095057fe5b6020029190910135905087878581811061096657fe5b90506020020135868686818110151561097b57fe5b90506020020135610b5e565b600101610924565b505050505050505050565b600160a060020a038116600090815260036020908152604080832081517f30fe0a0a000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________926330fe0a0a9260448082019391829003018186803b158015610a2257600080fd5b505af4158015610a36573d6000803e3d6000fd5b505050506040513d6020811015610a4c57600080fd5b505192915050565b6000610a5f826111d2565b1515610a6a57600080fd5b60008281526001602081905260409091200154610a8690611a26565b158015610a995750610a978261155b565b155b92915050565b6000610aa9611bb7565b610ab283611b57565b1515610abd57600080fd5b5050600090815260016020818152604092839020835160a0810185528154815292810154918301919091526002810154928201839052600381015460608301819052600490910154608090920182905290810190910260649091021190565b6001602081905260009182526040909120805491810154600282015460038301546004909301549192909185565b6000610a9982610b598461099a565b6118b5565b6000806000610b6c8761155b565b1515610b7757600080fd5b33600090815260026020526040902054851115610bba5733600090815260026020526040902054610baf90869063ffffffff611ba516565b9250610bba836113c8565b33600090815260026020526040902054851115610bd657600080fd5b861515610be257600080fd5b851515610bee57600080fd5b831580610ca457503360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b158015610c7757600080fd5b505af4158015610c8b573d6000803e3d6000fd5b505050506040513d6020811015610ca157600080fd5b50515b1515610caf57600080fd5b3360009081526003602090815260409182902082517f07d29ac9000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610d3057600080fd5b505af4158015610d44573d6000803e3d6000fd5b505050506040513d6020811015610d5a57600080fd5b5051915086821415610e16573360009081526003602090815260409182902082517f07d29ac90000000000000000000000000000000000000000000000000000000081526004810191909152602481018a9052915173__DLL___________________________________926307d29ac9926044808301939192829003018186803b158015610de757600080fd5b505af4158015610dfb573d6000803e3d6000fd5b505050506040513d6020811015610e1157600080fd5b505191505b610e2284833388611191565b1515610e2d57600080fd5b3360009081526003602052604080822081517f9735c51b000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052604481018a905260648101859052905173__DLL___________________________________92639735c51b9260848082019391829003018186803b158015610eb857600080fd5b505af4158015610ecc573d6000803e3d6000fd5b50505050610eda3388611391565b604080517f977aa031000000000000000000000000000000000000000000000000000000008152600481810152602481018390526064810188905260806044820152600960848201527f6e756d546f6b656e73000000000000000000000000000000000000000000000060a4820152905191925073__AttributeStore________________________9163977aa0319160c480820192600092909190829003018186803b158015610f8a57600080fd5b505af4158015610f9e573d6000803e3d6000fd5b5050604080517f977aa03100000000000000000000000000000000000000000000000000000000815260048181015260248101859052606481018a905260806044820152600a60848201527f636f6d6d6974486173680000000000000000000000000000000000000000000060a4820152905173__AttributeStore________________________935063977aa031925060c4808301926000929190829003018186803b15801561104e57600080fd5b505af4158015611062573d6000803e3d6000fd5b5050506000888152600160208181526040808420338086526005909101835293819020805460ff1916909317909255815189815291519293508a927fea7979e4280d7e6bffc1c7d83a1ac99f16d02ecc14465ce41016226783b663d79281900390910190a350505050505050565b60006110db826111d2565b15156110e657600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260059093019052205460ff1690565b600085841461112357600080fd5b85821461112f57600080fd5b5060005b858110156111885761118087878381811061114a57fe5b90506020020135868684818110151561115f57fe5b90506020020135858585818110151561117457fe5b905060200201356115ce565b600101611133565b50505050505050565b60008060006111a085886118b5565b84101591506111af85876118b5565b841115806111bb575085155b90508180156111c75750805b979650505050505050565b60008115801590610a99575050600054101590565b60005481565b6000818152600160208190526040909120015461120990611a26565b151561121457600080fd5b3360009081526003602090815260409182902082517f366a5ba2000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052915173__DLL___________________________________9263366a5ba2926044808301939192829003018186803b15801561129557600080fd5b505af41580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b505115156112cc57600080fd5b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101849052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561134957600080fd5b505af415801561135d573d6000803e3d6000fd5b50506040513392508391507f402507661c8c8cb90e0a796450b8bdd28b6c516f05279c0cd29e84c344e1699a90600090a350565b604080516c01000000000000000000000000600160a060020a03851602815260148101839052905190819003603401902092915050565b600554604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518392600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561142d57600080fd5b505af1158015611441573d6000803e3d6000fd5b505050506040513d602081101561145757600080fd5b5051101561146457600080fd5b33600081815260026020908152604080832080548601905560055481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018690529051600160a060020a03909116936323b872dd9360648083019493928390030190829087803b1580156114eb57600080fd5b505af11580156114ff573d6000803e3d6000fd5b505050506040513d602081101561151557600080fd5b5051151561152257600080fd5b60408051828152905133917ff7aaf024511d9982df8cd0d437c71c30106e6848cd1ba3d288d7a9c0e276aeda919081900360200190a250565b6000611566826111d2565b151561157157600080fd5b600082815260016020526040902054610a9790611a26565b6000611594826111d2565b151561159f57600080fd5b506000908152600160209081526040808320600160a060020a0394909416835260069093019052205460ff1690565b60006115d984610a54565b15156115e457600080fd5b600084815260016020908152604080832033845260050190915290205460ff16151561160f57600080fd5b600084815260016020908152604080832033845260060190915290205460ff161561163957600080fd5b6116433385611987565b604080518581526020810185905281519081900390910190201461166657600080fd5b61167033856118b5565b905082600114156116975760008481526001602052604090206003018054820190556116af565b60008481526001602052604090206004018054820190555b3360009081526003602052604080822081517f6d900ed0000000000000000000000000000000000000000000000000000000008152600481019190915260248101879052905173__DLL___________________________________92636d900ed09260448082019391829003018186803b15801561172c57600080fd5b505af4158015611740573d6000803e3d6000fd5b505050600085815260016020818152604080842033808652600682018452828620805460ff191686179055948a9052928252600383015460049093015481518781529283019390935281810192909252606081018690529051919250859187917f9b19aaec524fad29c0ced9b9973a15e3045d7c3be156d71394ab40f0d5f119ff919081900360800190a450505050565b6000806000806117e086611b57565b15156117eb57600080fd5b6000868152600160209081526040808320600160a060020a038b16845260060190915290205460ff16151561181f57600080fd5b61182886610a9f565b611833576000611836565b60015b60ff16925082856040518083815260200182815260200192505050604051809103902091506118658787611987565b905081811461187357600080fd5b6111c787876118b5565b60005b81518110156118b1576118a9828281518110151561189a57fe5b906020019060200201516111ed565b600101611880565b5050565b600073__AttributeStore________________________6350389f5c60046118dd8686611391565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600960648301527f6e756d546f6b656e73000000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561195457600080fd5b505af4158015611968573d6000803e3d6000fd5b505050506040513d602081101561197e57600080fd5b50519392505050565b600073__AttributeStore________________________6350389f5c60046119af8686611391565b6040805160e060020a63ffffffff86160281526004810193909352602483019190915260606044830152600a60648301527f636f6d6d6974486173680000000000000000000000000000000000000000000060848301525160a4808301926020929190829003018186803b15801561195457600080fd5b421190565b6000611a55611a3933610b4a565b336000908152600260205260409020549063ffffffff611ba516565b905081811015611a6457600080fd5b3360008181526002602090815260408083208054879003905560055481517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810195909552602485018790529051600160a060020a039091169363a9059cbb9360448083019493928390030190829087803b158015611ae657600080fd5b505af1158015611afa573d6000803e3d6000fd5b505050506040513d6020811015611b1057600080fd5b50511515611b1d57600080fd5b60408051838152905133917ffaeb7dbb9992397d26ea1944efd40c80b40f702faf69b46c67ad10aba68ccb79919081900360200190a25050565b6000611b62826111d2565b1515611b6d57600080fd5b60008281526001602081905260409091200154610a9990611a26565b600554600160a060020a031681565b81810182811015610a9957fe5b600082821115611bb157fe5b50900390565b60a060405190810160405280600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820ff005710c1354d39fc831ef485711030c736a039e71777dc40e17e4d4a7a08dc0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"INITIAL_POLL_NONCE\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"voteTokenBalance\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"pollMap\",\n      \"outputs\": [\n        {\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"voteQuorum\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"votesFor\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"votesAgainst\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"pollNonce\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_token\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_VoteCommitted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"votesFor\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"votesAgainst\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"choice\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_VoteRevealed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"voteQuorum\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"creator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_PollCreated\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_VotingRightsGranted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_VotingRightsWithdrawn\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_TokensRescued\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"requestVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdrawVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"rescueTokens\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollIDs\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"rescueTokensInMultiplePolls\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_secretHash\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_prevPollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"commitVote\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_secretHashes\",\n          \"type\": \"bytes32[]\"\n        },\n        {\n          \"name\": \"_numsTokens\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_prevPollIDs\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"commitVotes\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_prevID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_nextID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"validPosition\",\n      \"outputs\": [\n        {\n          \"name\": \"valid\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voteOption\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"revealVote\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_pollIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_voteOptions\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"revealVotes\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getNumPassingTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"correctVotes\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_voteQuorum\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_commitDuration\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_revealDuration\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"startPoll\",\n      \"outputs\": [\n        {\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isPassed\",\n      \"outputs\": [\n        {\n          \"name\": \"passed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getTotalNumberOfTokensForWinningOption\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"pollEnded\",\n      \"outputs\": [\n        {\n          \"name\": \"ended\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"commitPeriodActive\",\n      \"outputs\": [\n        {\n          \"name\": \"active\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"revealPeriodActive\",\n      \"outputs\": [\n        {\n          \"name\": \"active\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"didCommit\",\n      \"outputs\": [\n        {\n          \"name\": \"committed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"didReveal\",\n      \"outputs\": [\n        {\n          \"name\": \"revealed\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"pollExists\",\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getCommitHash\",\n      \"outputs\": [\n        {\n          \"name\": \"commitHash\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getNumTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getLastNode\",\n      \"outputs\": [\n        {\n          \"name\": \"pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getLockedTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"numTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_numTokens\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"getInsertPointForNumTokens\",\n      \"outputs\": [\n        {\n          \"name\": \"prevNode\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_terminationDate\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"isExpired\",\n      \"outputs\": [\n        {\n          \"name\": \"expired\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_pollID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"attrUUID\",\n      \"outputs\": [\n        {\n          \"name\": \"UUID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"pure\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Parameterizer.json",
    "content": "{\n  \"contractName\": \"Parameterizer\",\n  \"bytecode\": \"0x608060405262093a806005553480156200001857600080fd5b50604051620028683803806200286883398101604081815282516020808501518386015160038054600160a060020a03808716600160a060020a0319928316179092556004805492851692909116919091179055848601909452600a85527f6d696e4465706f736974000000000000000000000000000000000000000000009185019190915291909301805191929091620000db919083906000908110620000bc57fe5b9060200190602002015162000412640100000000026401000000009004565b620001256040805190810160405280600b81526020017f704d696e4465706f736974000000000000000000000000000000000000000000815250826001815181101515620000bc57fe5b6200016f6040805190810160405280600d81526020017f6170706c7953746167654c656e00000000000000000000000000000000000000815250826002815181101515620000bc57fe5b620001b96040805190810160405280600e81526020017f704170706c7953746167654c656e000000000000000000000000000000000000815250826003815181101515620000bc57fe5b620002036040805190810160405280600e81526020017f636f6d6d697453746167654c656e000000000000000000000000000000000000815250826004815181101515620000bc57fe5b6200024d6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250826005815181101515620000bc57fe5b620002976040805190810160405280600e81526020017f72657665616c53746167654c656e000000000000000000000000000000000000815250826006815181101515620000bc57fe5b620002e16040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250826007815181101515620000bc57fe5b6200032b6040805190810160405280600f81526020017f64697370656e736174696f6e5063740000000000000000000000000000000000815250826008815181101515620000bc57fe5b620003756040805190810160405280601081526020017f7044697370656e736174696f6e50637400000000000000000000000000000000815250826009815181101515620000bc57fe5b620003bf6040805190810160405280600a81526020017f766f746551756f72756d0000000000000000000000000000000000000000000081525082600a815181101515620000bc57fe5b620004096040805190810160405280600b81526020017f70566f746551756f72756d00000000000000000000000000000000000000000081525082600b815181101515620000bc57fe5b5050506200048a565b80600080846040518082805190602001908083835b60208310620004485780518252601f19909201916020918201910162000427565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b6123ce806200049a6000396000f3006080604052600436106100fa5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166229514f81146100ff57806330490e911461012657806332ed5b1214610140578063353009901461020c57806350411552146102385780635f02116f14610250578063693ec85e146102de57806377609a41146103375780638240ae4b1461034f57806386bb8f37146103675780638f1d377614610382578063a5ba3b1e146103cd578063a7aad3db146103f1578063bade1c5414610418578063c51131fb14610473578063dc6ab5271461048b578063fc0c546a146104a3578063fce1ccca146104d4575b600080fd5b34801561010b57600080fd5b506101146104e9565b60408051918252519081900360200190f35b34801561013257600080fd5b5061013e6004356104ef565b005b34801561014c57600080fd5b506101586004356109ca565b604051808881526020018781526020018681526020018060200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156101cb5781810151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34801561021857600080fd5b50610224600435610a96565b604080519115158252519081900360200190f35b34801561024457600080fd5b50610114600435610aaf565b34801561025c57600080fd5b506040805160206004803580820135838102808601850190965280855261013e95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b819650505050505050565b3480156102ea57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610114943694929360249392840191908190840183828082843750949750610be49650505050505050565b34801561034357600080fd5b50610224600435610c5a565b34801561035b57600080fd5b50610114600435610e73565b34801561037357600080fd5b5061013e6004356024356113ab565b34801561038e57600080fd5b5061039a6004356115b7565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b3480156103d957600080fd5b50610224600435600160a060020a03602435166115f4565b3480156103fd57600080fd5b50610114600160a060020a0360043516602435604435611624565b34801561042457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261011494369492936024939284019190819084018382808284375094975050933594506116fa9350505050565b34801561047f57600080fd5b50610224600435611bd0565b34801561049757600080fd5b50610114600435611cf3565b3480156104af57600080fd5b506104b8611d05565b60408051600160a060020a039092168252519081900360200190f35b3480156104e057600080fd5b506104b8611d14565b60055481565b60008181526002602081905260409091206004810154918101549091600160a060020a03169061051e84611bd0565b1561077857600383018054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526105c193909290918301828280156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b50505050508460060154611d23565b600683015460408051602081018390528181526003860180546002610100600183161502600019019091160492820183905287937f37f3986c71e1aa2c470cfc4a92af70820610c3065589d35ef1664ea27f3e73a5939192909181906060820190859080156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b5050935050505060405180910390a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b506004818101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005830181905560069092018290556003546040805160e060020a63a9059cbb028152600160a060020a0387811694820194909452602481018690529051929091169263a9059cbb926044808401936020939083900390910190829087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b505050506040513d602081101561076657600080fd5b5051151561077357600080fd5b6107f4565b61078184610c5a565b1561078f5761077384611d99565b82600501544211156100fa5760405184907f29026cb2acebe6d0a4b6d593ccadf76e3fc6d0a02254e078b0c4a619608089d790600090a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b60646108346040805190810160405280600f81526020017f64697370656e736174696f6e5063740000000000000000000000000000000000815250610be4565b111561083c57fe5b606461087c6040805190810160405280601081526020017f7044697370656e736174696f6e50637400000000000000000000000000000000815250610be4565b111561088457fe5b61096660055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b61095a61090c6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b61095a61094d6040805190810160405280600e81526020017f704170706c7953746167654c656e000000000000000000000000000000000000815250610be4565b429063ffffffff6121e116565b9063ffffffff6121e116565b50600084815260026020819052604082208281556001810183905590810182905590610995600383018261223e565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820181905560069091015550505050565b60026020818152600092835260409283902080546001808301548386015460038501805489519481161561010002600019011697909704601f8101879004870284018701909852878352929690959294919291830182828015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b50505050600483015460058401546006909401549293600160a060020a039091169290915087565b600081815260026020526040812060050154115b919050565b60048054604080517f053e71a600000000000000000000000000000000000000000000000000000000815292830184905251600092600160a060020a039092169163053e71a691602480830192602092919082900301818787803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050506040513d6020811015610b4057600080fd5b50511515610b635750600081815260016020526040902060029081015402610aaa565b50600090815260016020526040902080546002918201549091020390565b8051825160009114610b9257600080fd5b5060005b8251811015610bdf57610bd78382815181101515610bb057fe5b906020019060200201518383815181101515610bc857fe5b906020019060200201516113ab565b600101610b96565b505050565b6000806000836040518082805190602001908083835b60208310610c195780518252601f199092019160209182019101610bfa565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b6000610c64612285565b610c6c6122cc565b600084815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b50505091835250506004820154600160a060020a039081166020808401919091526005840154604080850191909152600690940154606093840152848101805160009081526001808452868220875160a08101895281548152918101549586169482019490945260a060020a90940460ff1615159584019590955260028201549383019390935260030154608082015290519294509250108015610dcf57506040810151155b8015610e6b575060048054602080850151604080517fee6848300000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a039092169263ee68483092602480830193928290030181600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50515b949350505050565b6000610e7d612285565b6000838152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f810186900486028201860190945283815286958695869593949360608601939291830182828015610f3c5780601f10610f1157610100808354040283529160200191610f3c565b820191906000526020600020905b815481529060010190602001808311610f1f57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040808301919091526006909201546060909101528101519095509350610f8287610a96565b8015610f9057506020850151155b1515610f9b57600080fd5b60045460408051808201909152600b81527f70566f746551756f72756d0000000000000000000000000000000000000000006020820152600160a060020a03909116906332ed3d6090610fed90610be4565b61102b6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b6110696040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b505050506040513d60208110156110f357600080fd5b50516040805160e08101909152601060a082019081527f7044697370656e736174696f6e5063740000000000000000000000000000000060c083015291945090819061116e9060649061116290899061115690849061115190610be4565b6121ee565b9063ffffffff61220016565b9063ffffffff61222916565b81523360208083018290526000604080850182905260608086018b905260809586018390528983526001808552828420885181558886015181830180548b87015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a911515919091021790559289015160028083019190915598909701516003978801558e8452968452818320909601899055935484517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018a9052935193909416936323b872dd936064808501949192918390030190829087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d60208110156112b457600080fd5b505115156112c157600080fd5b60048054604080517f6148fed500000000000000000000000000000000000000000000000000000000815292830186905251600160a060020a0390911691636148fed59160248083019260a09291908290030181600087803b15801561132657600080fd5b505af115801561133a573d6000803e3d6000fd5b505050506040513d60a081101561135057600080fd5b50805160209182015160408051878152938401839052838101829052519194509250339189917fe94e3086c4bfe84acba4437b85a80fca3721dfc419d1f7afe4fa4e470e670b489181900360600190a3509095945050505050565b6000828152600160209081526040808320338452600401909152812054819060ff16156113d757600080fd5b600084815260016020819052604090912081015460a060020a900460ff1615151461140157600080fd5b60048054604080517fb43bd0690000000000000000000000000000000000000000000000000000000081523393810193909352602483018790526044830186905251600160a060020a039091169163b43bd0699160648083019260209291908290030181600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050506040513d60208110156114a057600080fd5b505191506114af338585611624565b6000858152600160208181526040808420600381018054899003905580548690038155338086526004909101835293819020805460ff191690931790925581518481529151939450919287927f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f59957928290030190a36003546040805160e060020a63a9059cbb028152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b505050506040513d60208110156115a457600080fd5b505115156115b157600080fd5b50505050565b60016020819052600091825260409091208054918101546002820154600390920154600160a060020a0382169260a060020a90920460ff16919085565b6000828152600160209081526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152600160209081526040808320600381015490546004805484517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038b811693820193909352602481018a9052604481018990529451939592948794929091169263b43bd0699260648084019382900301818787803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b505050506040513d60208110156116dd57600080fd5b50519050828282028115156116ee57fe5b04979650505050505050565b600080600061173d6040805190810160405280600b81526020017f704d696e4465706f736974000000000000000000000000000000000000000000815250610be4565b915084846040518083805190602001908083835b602083106117705780518252601f199092019160209182019101611751565b51815160001960209485036101000a019081169019919091161790529201938452506040805193849003820184207f64697370656e736174696f6e50637400000000000000000000000000000000008552905193849003600f0184208a5191965094508993925082918401908083835b602083106117ff5780518252601f1990920191602091820191016117e0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614806118cc5750604080517f7044697370656e736174696f6e5063740000000000000000000000000000000081529051908190036010018120865190918791819060208401908083835b602083106118995780518252601f19909201916020918201910161187a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b156118df5760648411156118df57600080fd5b6118e881610a96565b156118f257600080fd5b836118fc86610be4565b141561190757600080fd5b604080516101208101909152600e60e082019081527f704170706c7953746167654c656e00000000000000000000000000000000000061010083015281906119529061094d90610be4565b81526020016000815260200183815260200186815260200133600160a060020a031681526020016119c060055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b8152602090810186905260008381526002808352604091829020845181558484015160018201559184015190820155606083015180519192611a0a92600385019290910190612307565b5060808201516004828101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393841617905560a0840151600584015560c090930151600690920191909155600354604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945230602485015260448401869052519116916323b872dd9160648083019260209291908290030181600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b505050506040513d6020811015611ae957600080fd5b50511515611af657600080fd5b6000818152600260209081526040808320548151808401899052918201859052606082018690526080820181905260a0808352895190830152885133947fb25bdef16105f099e5c185f9c7fd969571e8e0caa3f7bd75409512fe0a41a60b948b948b9489948b949193839260c0840192918a0191908190849084905b83811015611b8a578181015183820152602001611b72565b50505050905090810190601f168015611bb75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a2949350505050565b6000611bda612285565b600083815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015611c975780601f10611c6c57610100808354040283529160200191611c97565b820191906000526020600020905b815481529060010190602001808311611c7a57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040820152600690910154606090910152805190915042118015611cde57508060a0015142105b8015611cec57506020810151155b9392505050565b60006020819052908152604090205481565b600354600160a060020a031681565b600454600160a060020a031681565b80600080846040518082805190602001908083835b60208310611d575780518252601f199092019160209182019101611d38565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b611da1612285565b6000828152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f81018690048602820186019094528381528695919492936060860193919291830182828015611e5e5780601f10611e3357610100808354040283529160200191611e5e565b820191906000526020600020905b815481529060010190602001808311611e4157829003601f168201915b505050505081526020016004820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160058201548152602001600682015481525050925060016000846020015181526020019081526020016000209150611ed28360200151610aaf565b60048054602080870151604080517f053e71a60000000000000000000000000000000000000000000000000000000081529485019190915251939450600160a060020a039091169263053e71a69260248082019392918290030181600087803b158015611f3e57600080fd5b505af1158015611f52573d6000803e3d6000fd5b505050506040513d6020811015611f6857600080fd5b5051600383015560018201805474ff0000000000000000000000000000000000000000191660a060020a17905560048054602085810151604080517f494031830000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a0390921692634940318392602480830193928290030181600087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b50511561212e57428360a00151111561204c5761204c83606001518460c00151611d23565b6020808401518354600385015460408051928352938201528251919287927fc4497224aa78dd50c9b3e344aab02596201ca1e6dca4057a91a6c02f83f4f6c19281900390910190a360035460808401516040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156120f257600080fd5b505af1158015612106573d6000803e3d6000fd5b505050506040513d602081101561211c57600080fd5b5051151561212957600080fd5b6115b1565b6020808401518354600385015460408051928352938201528251919287927f362a12431f779a2baff4f77f75ba7960ae993a5c41b425df11f7fd0af2b9cbe69281900390910190a360035460208085015160009081526001808352604080832090910154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb9360448084019491938390030190829087803b15801561157a57600080fd5b8181018281101561161e57fe5b6000828211156121fa57fe5b50900390565b60008215156122115750600061161e565b5081810281838281151561222157fe5b041461161e57fe5b6000818381151561223657fe5b049392505050565b50805460018160011615610100020316600290046000825580601f106122645750612282565b601f0160209004906000526020600020908101906122829190612385565b50565b60e060405190810160405280600081526020016000815260200160008152602001606081526020016000600160a060020a0316815260200160008152602001600081525090565b60a060405190810160405280600081526020016000600160a060020a0316815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234857805160ff1916838001178555612375565b82800160010185558215612375579182015b8281111561237557825182559160200191906001019061235a565b50612381929150612385565b5090565b61239f91905b80821115612381576000815560010161238b565b905600a165627a7a723058202af51e140fd09e4cad9285f5633262726bdadf8b67c812e3a0ffa068e08495710029\",\n  \"deployedBytecode\": \"0x6080604052600436106100fa5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166229514f81146100ff57806330490e911461012657806332ed5b1214610140578063353009901461020c57806350411552146102385780635f02116f14610250578063693ec85e146102de57806377609a41146103375780638240ae4b1461034f57806386bb8f37146103675780638f1d377614610382578063a5ba3b1e146103cd578063a7aad3db146103f1578063bade1c5414610418578063c51131fb14610473578063dc6ab5271461048b578063fc0c546a146104a3578063fce1ccca146104d4575b600080fd5b34801561010b57600080fd5b506101146104e9565b60408051918252519081900360200190f35b34801561013257600080fd5b5061013e6004356104ef565b005b34801561014c57600080fd5b506101586004356109ca565b604051808881526020018781526020018681526020018060200185600160a060020a0316600160a060020a03168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b838110156101cb5781810151838201526020016101b3565b50505050905090810190601f1680156101f85780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34801561021857600080fd5b50610224600435610a96565b604080519115158252519081900360200190f35b34801561024457600080fd5b50610114600435610aaf565b34801561025c57600080fd5b506040805160206004803580820135838102808601850190965280855261013e95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b819650505050505050565b3480156102ea57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610114943694929360249392840191908190840183828082843750949750610be49650505050505050565b34801561034357600080fd5b50610224600435610c5a565b34801561035b57600080fd5b50610114600435610e73565b34801561037357600080fd5b5061013e6004356024356113ab565b34801561038e57600080fd5b5061039a6004356115b7565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b3480156103d957600080fd5b50610224600435600160a060020a03602435166115f4565b3480156103fd57600080fd5b50610114600160a060020a0360043516602435604435611624565b34801561042457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261011494369492936024939284019190819084018382808284375094975050933594506116fa9350505050565b34801561047f57600080fd5b50610224600435611bd0565b34801561049757600080fd5b50610114600435611cf3565b3480156104af57600080fd5b506104b8611d05565b60408051600160a060020a039092168252519081900360200190f35b3480156104e057600080fd5b506104b8611d14565b60055481565b60008181526002602081905260409091206004810154918101549091600160a060020a03169061051e84611bd0565b1561077857600383018054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526105c193909290918301828280156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b50505050508460060154611d23565b600683015460408051602081018390528181526003860180546002610100600183161502600019019091160492820183905287937f37f3986c71e1aa2c470cfc4a92af70820610c3065589d35ef1664ea27f3e73a5939192909181906060820190859080156106715780601f1061064657610100808354040283529160200191610671565b820191906000526020600020905b81548152906001019060200180831161065457829003601f168201915b5050935050505060405180910390a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b506004818101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005830181905560069092018290556003546040805160e060020a63a9059cbb028152600160a060020a0387811694820194909452602481018690529051929091169263a9059cbb926044808401936020939083900390910190829087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b505050506040513d602081101561076657600080fd5b5051151561077357600080fd5b6107f4565b61078184610c5a565b1561078f5761077384611d99565b82600501544211156100fa5760405184907f29026cb2acebe6d0a4b6d593ccadf76e3fc6d0a02254e078b0c4a619608089d790600090a26000848152600260208190526040822082815560018101839055908101829055906106ae600383018261223e565b60646108346040805190810160405280600f81526020017f64697370656e736174696f6e5063740000000000000000000000000000000000815250610be4565b111561083c57fe5b606461087c6040805190810160405280601081526020017f7044697370656e736174696f6e50637400000000000000000000000000000000815250610be4565b111561088457fe5b61096660055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b61095a61090c6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b61095a61094d6040805190810160405280600e81526020017f704170706c7953746167654c656e000000000000000000000000000000000000815250610be4565b429063ffffffff6121e116565b9063ffffffff6121e116565b50600084815260026020819052604082208281556001810183905590810182905590610995600383018261223e565b5060048101805473ffffffffffffffffffffffffffffffffffffffff1916905560006005820181905560069091015550505050565b60026020818152600092835260409283902080546001808301548386015460038501805489519481161561010002600019011697909704601f8101879004870284018701909852878352929690959294919291830182828015610a6e5780601f10610a4357610100808354040283529160200191610a6e565b820191906000526020600020905b815481529060010190602001808311610a5157829003601f168201915b50505050600483015460058401546006909401549293600160a060020a039091169290915087565b600081815260026020526040812060050154115b919050565b60048054604080517f053e71a600000000000000000000000000000000000000000000000000000000815292830184905251600092600160a060020a039092169163053e71a691602480830192602092919082900301818787803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b505050506040513d6020811015610b4057600080fd5b50511515610b635750600081815260016020526040902060029081015402610aaa565b50600090815260016020526040902080546002918201549091020390565b8051825160009114610b9257600080fd5b5060005b8251811015610bdf57610bd78382815181101515610bb057fe5b906020019060200201518383815181101515610bc857fe5b906020019060200201516113ab565b600101610b96565b505050565b6000806000836040518082805190602001908083835b60208310610c195780518252601f199092019160209182019101610bfa565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205495945050505050565b6000610c64612285565b610c6c6122cc565b600084815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b50505091835250506004820154600160a060020a039081166020808401919091526005840154604080850191909152600690940154606093840152848101805160009081526001808452868220875160a08101895281548152918101549586169482019490945260a060020a90940460ff1615159584019590955260028201549383019390935260030154608082015290519294509250108015610dcf57506040810151155b8015610e6b575060048054602080850151604080517fee6848300000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a039092169263ee68483092602480830193928290030181600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b50515b949350505050565b6000610e7d612285565b6000838152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f810186900486028201860190945283815286958695869593949360608601939291830182828015610f3c5780601f10610f1157610100808354040283529160200191610f3c565b820191906000526020600020905b815481529060010190602001808311610f1f57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040808301919091526006909201546060909101528101519095509350610f8287610a96565b8015610f9057506020850151155b1515610f9b57600080fd5b60045460408051808201909152600b81527f70566f746551756f72756d0000000000000000000000000000000000000000006020820152600160a060020a03909116906332ed3d6090610fed90610be4565b61102b6040805190810160405280600f81526020017f70436f6d6d697453746167654c656e0000000000000000000000000000000000815250610be4565b6110696040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156110c957600080fd5b505af11580156110dd573d6000803e3d6000fd5b505050506040513d60208110156110f357600080fd5b50516040805160e08101909152601060a082019081527f7044697370656e736174696f6e5063740000000000000000000000000000000060c083015291945090819061116e9060649061116290899061115690849061115190610be4565b6121ee565b9063ffffffff61220016565b9063ffffffff61222916565b81523360208083018290526000604080850182905260608086018b905260809586018390528983526001808552828420885181558886015181830180548b87015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a911515919091021790559289015160028083019190915598909701516003978801558e8452968452818320909601899055935484517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018a9052935193909416936323b872dd936064808501949192918390030190829087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d60208110156112b457600080fd5b505115156112c157600080fd5b60048054604080517f6148fed500000000000000000000000000000000000000000000000000000000815292830186905251600160a060020a0390911691636148fed59160248083019260a09291908290030181600087803b15801561132657600080fd5b505af115801561133a573d6000803e3d6000fd5b505050506040513d60a081101561135057600080fd5b50805160209182015160408051878152938401839052838101829052519194509250339189917fe94e3086c4bfe84acba4437b85a80fca3721dfc419d1f7afe4fa4e470e670b489181900360600190a3509095945050505050565b6000828152600160209081526040808320338452600401909152812054819060ff16156113d757600080fd5b600084815260016020819052604090912081015460a060020a900460ff1615151461140157600080fd5b60048054604080517fb43bd0690000000000000000000000000000000000000000000000000000000081523393810193909352602483018790526044830186905251600160a060020a039091169163b43bd0699160648083019260209291908290030181600087803b15801561147657600080fd5b505af115801561148a573d6000803e3d6000fd5b505050506040513d60208110156114a057600080fd5b505191506114af338585611624565b6000858152600160208181526040808420600381018054899003905580548690038155338086526004909101835293819020805460ff191690931790925581518481529151939450919287927f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f59957928290030190a36003546040805160e060020a63a9059cbb028152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561157a57600080fd5b505af115801561158e573d6000803e3d6000fd5b505050506040513d60208110156115a457600080fd5b505115156115b157600080fd5b50505050565b60016020819052600091825260409091208054918101546002820154600390920154600160a060020a0382169260a060020a90920460ff16919085565b6000828152600160209081526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152600160209081526040808320600381015490546004805484517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038b811693820193909352602481018a9052604481018990529451939592948794929091169263b43bd0699260648084019382900301818787803b1580156116b357600080fd5b505af11580156116c7573d6000803e3d6000fd5b505050506040513d60208110156116dd57600080fd5b50519050828282028115156116ee57fe5b04979650505050505050565b600080600061173d6040805190810160405280600b81526020017f704d696e4465706f736974000000000000000000000000000000000000000000815250610be4565b915084846040518083805190602001908083835b602083106117705780518252601f199092019160209182019101611751565b51815160001960209485036101000a019081169019919091161790529201938452506040805193849003820184207f64697370656e736174696f6e50637400000000000000000000000000000000008552905193849003600f0184208a5191965094508993925082918401908083835b602083106117ff5780518252601f1990920191602091820191016117e0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614806118cc5750604080517f7044697370656e736174696f6e5063740000000000000000000000000000000081529051908190036010018120865190918791819060208401908083835b602083106118995780518252601f19909201916020918201910161187a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b156118df5760648411156118df57600080fd5b6118e881610a96565b156118f257600080fd5b836118fc86610be4565b141561190757600080fd5b604080516101208101909152600e60e082019081527f704170706c7953746167654c656e00000000000000000000000000000000000061010083015281906119529061094d90610be4565b81526020016000815260200183815260200186815260200133600160a060020a031681526020016119c060055461095a6108cb6040805190810160405280600f81526020017f7052657665616c53746167654c656e0000000000000000000000000000000000815250610be4565b8152602090810186905260008381526002808352604091829020845181558484015160018201559184015190820155606083015180519192611a0a92600385019290910190612307565b5060808201516004828101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0393841617905560a0840151600584015560c090930151600690920191909155600354604080517f23b872dd000000000000000000000000000000000000000000000000000000008152339481019490945230602485015260448401869052519116916323b872dd9160648083019260209291908290030181600087803b158015611abf57600080fd5b505af1158015611ad3573d6000803e3d6000fd5b505050506040513d6020811015611ae957600080fd5b50511515611af657600080fd5b6000818152600260209081526040808320548151808401899052918201859052606082018690526080820181905260a0808352895190830152885133947fb25bdef16105f099e5c185f9c7fd969571e8e0caa3f7bd75409512fe0a41a60b948b948b9489948b949193839260c0840192918a0191908190849084905b83811015611b8a578181015183820152602001611b72565b50505050905090810190601f168015611bb75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a2949350505050565b6000611bda612285565b600083815260026020818152604092839020835160e0810185528154815260018083015482850152828501548287015260038301805487516000199382161561010002939093011695909504601f810185900485028201850190965285815290949193606086019391929091830182828015611c975780601f10611c6c57610100808354040283529160200191611c97565b820191906000526020600020905b815481529060010190602001808311611c7a57829003601f168201915b50505091835250506004820154600160a060020a0316602082015260058201546040820152600690910154606090910152805190915042118015611cde57508060a0015142105b8015611cec57506020810151155b9392505050565b60006020819052908152604090205481565b600354600160a060020a031681565b600454600160a060020a031681565b80600080846040518082805190602001908083835b60208310611d575780518252601f199092019160209182019101611d38565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120865285019590955292909201600020939093555050505050565b611da1612285565b6000828152600260208181526040808420815160e0810183528154815260018083015482860152828601548285015260038301805485516000199382161561010002939093011696909604601f81018690048602820186019094528381528695919492936060860193919291830182828015611e5e5780601f10611e3357610100808354040283529160200191611e5e565b820191906000526020600020905b815481529060010190602001808311611e4157829003601f168201915b505050505081526020016004820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160058201548152602001600682015481525050925060016000846020015181526020019081526020016000209150611ed28360200151610aaf565b60048054602080870151604080517f053e71a60000000000000000000000000000000000000000000000000000000081529485019190915251939450600160a060020a039091169263053e71a69260248082019392918290030181600087803b158015611f3e57600080fd5b505af1158015611f52573d6000803e3d6000fd5b505050506040513d6020811015611f6857600080fd5b5051600383015560018201805474ff0000000000000000000000000000000000000000191660a060020a17905560048054602085810151604080517f494031830000000000000000000000000000000000000000000000000000000081529485019190915251600160a060020a0390921692634940318392602480830193928290030181600087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b50511561212e57428360a00151111561204c5761204c83606001518460c00151611d23565b6020808401518354600385015460408051928352938201528251919287927fc4497224aa78dd50c9b3e344aab02596201ca1e6dca4057a91a6c02f83f4f6c19281900390910190a360035460808401516040805160e060020a63a9059cbb028152600160a060020a039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156120f257600080fd5b505af1158015612106573d6000803e3d6000fd5b505050506040513d602081101561211c57600080fd5b5051151561212957600080fd5b6115b1565b6020808401518354600385015460408051928352938201528251919287927f362a12431f779a2baff4f77f75ba7960ae993a5c41b425df11f7fd0af2b9cbe69281900390910190a360035460208085015160009081526001808352604080832090910154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb9360448084019491938390030190829087803b15801561157a57600080fd5b8181018281101561161e57fe5b6000828211156121fa57fe5b50900390565b60008215156122115750600061161e565b5081810281838281151561222157fe5b041461161e57fe5b6000818381151561223657fe5b049392505050565b50805460018160011615610100020316600290046000825580601f106122645750612282565b601f0160209004906000526020600020908101906122829190612385565b50565b60e060405190810160405280600081526020016000815260200160008152602001606081526020016000600160a060020a0316815260200160008152602001600081525090565b60a060405190810160405280600081526020016000600160a060020a0316815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234857805160ff1916838001178555612375565b82800160010185558215612375579182015b8281111561237557825182559160200191906001019061235a565b50612381929150612385565b5090565b61239f91905b80821115612381576000815560010161238b565b905600a165627a7a723058202af51e140fd09e4cad9285f5633262726bdadf8b67c812e3a0ffa068e08495710029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"PROCESSBY\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"proposals\",\n      \"outputs\": [\n        {\n          \"name\": \"appExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"processBy\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challenges\",\n      \"outputs\": [\n        {\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"resolved\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"stake\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"winningTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"params\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_token\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_plcr\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_parameters\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"proposer\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ReparameterizationProposal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_NewChallenge\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ProposalAccepted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"_ProposalExpired\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeSucceeded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"propID\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_RewardClaimed\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        },\n        {\n          \"name\": \"_value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"proposeReparameterization\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"challengeReparameterization\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"processProposal\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"claimRewards\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"voterReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"canBeSet\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"propExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_propID\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"challengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challengeWinnerReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"get\",\n      \"outputs\": [\n        {\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"tokenClaims\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/RBAC.json",
    "content": "{\n  \"contractName\": \"RBAC\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5061029c806100206000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630988ca8c8114610050578063217fe6c6146100c6575b600080fd5b34801561005c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100c495833573ffffffffffffffffffffffffffffffffffffffff1695369560449491939091019190819084018382808284375094975061014e9650505050505050565b005b3480156100d257600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261013a95833573ffffffffffffffffffffffffffffffffffffffff169536956044949193909101919081908401838280828437509497506101bc9650505050505050565b604080519115158252519081900360200190f35b6101b8826000836040518082805190602001908083835b602083106101845780518252601f199092019160209182019101610165565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061022f565b5050565b6000610228836000846040518082805190602001908083835b602083106101f45780518252601f1990920191602091820191016101d5565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610244565b9392505050565b6102398282610244565b15156101b857600080fd5b73ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff16905600a165627a7a723058203723c3c36af110b67321f88290ee3cf1965c34a4d0c00a03d5c9cdf45d70c21a0029\",\n  \"deployedBytecode\": \"0x60806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630988ca8c8114610050578063217fe6c6146100c6575b600080fd5b34801561005c57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526100c495833573ffffffffffffffffffffffffffffffffffffffff1695369560449491939091019190819084018382808284375094975061014e9650505050505050565b005b3480156100d257600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261013a95833573ffffffffffffffffffffffffffffffffffffffff169536956044949193909101919081908401838280828437509497506101bc9650505050505050565b604080519115158252519081900360200190f35b6101b8826000836040518082805190602001908083835b602083106101845780518252601f199092019160209182019101610165565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061022f565b5050565b6000610228836000846040518082805190602001908083835b602083106101f45780518252601f1990920191602091820191016101d5565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610244565b9392505050565b6102398282610244565b15156101b857600080fd5b73ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff16905600a165627a7a723058203723c3c36af110b67321f88290ee3cf1965c34a4d0c00a03d5c9cdf45d70c21a0029\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleAdded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"checkRole\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"hasRole\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/RestrictedAddressRegistry.json",
    "content": "{\n  \"contractName\": \"RestrictedAddressRegistry\",\n  \"bytecode\": \"0x60806040523480156200001157600080fd5b5060405162003066380380620030668339810160409081528151602083015191830151606084015191939091018383838383838383600160a060020a0384161515620000be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5f746f6b656e2061646472657373206973203000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831615156200013657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5f766f74696e6720616464726573732069732030000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515620001ae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f706172616d65746572697a6572206164647265737320697320300000000000604482015290519081900360640190fd5b60028054600160a060020a03808716600160a060020a03199283161790925560038054868416908316179055600480549285169290911691909117905580516200020090600590602084019062000213565b50505050505050505050505050620002b8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b620002b591905b808211156200029457600081556001016200029f565b90565b612d9e80620002c86000396000f3006080604052600436106101195763ffffffff60e060020a60003504166301162b93811461011e57806306fdde03146101415780632ea9b696146101cb5780633af32abf1461020057806347e7ef241461022157806355246b9c146102455780635f02116f146102ae57806361a9a8ca1461033c57806365d96c821461035d5780636eefcab9146103b157806386bb8f37146103d25780638f1d3776146103ed578063a5ba3b1e14610438578063a7aad3db1461045c578063b42652e914610495578063bc4b010f146104b6578063c8187cf11461051d578063dd4e7cfd14610535578063e1e3f91514610556578063f3fef3a314610587578063f96c8720146105ab578063fc0c546a14610600578063fce1ccca14610615575b600080fd5b34801561012a57600080fd5b5061013f600160a060020a036004351661062a565b005b34801561014d57600080fd5b50610156610660565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610190578181015183820152602001610178565b50505050905090810190601f1680156101bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d757600080fd5b506101ec600160a060020a03600435166106ee565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600160a060020a036004351661082a565b34801561022d57600080fd5b5061013f600160a060020a0360043516602435610850565b34801561025157600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261013f948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610a0c9650505050505050565b3480156102ba57600080fd5b506040805160206004803580820135838102808601850190965280855261013f95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610af69650505050505050565b34801561034857600080fd5b506101ec600160a060020a0360043516610bca565b34801561036957600080fd5b5061037e600160a060020a0360043516610be6565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b3480156103bd57600080fd5b506101ec600160a060020a0360043516610c21565b3480156103de57600080fd5b5061013f600435602435610c6c565b3480156103f957600080fd5b50610405600435610f3e565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b34801561044457600080fd5b506101ec600435600160a060020a0360243516610f7a565b34801561046857600080fd5b50610483600160a060020a0360043516602435604435610fa8565b60408051918252519081900360200190f35b3480156104a157600080fd5b5061013f600160a060020a0360043516611077565b3480156104c257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610483958335600160a060020a03169536956044949193909101919081908401838280828437509497506112669650505050505050565b34801561052957600080fd5b50610483600435611b3c565b34801561054157600080fd5b506101ec600160a060020a0360043516611d68565b34801561056257600080fd5b5061056b611e0a565b60408051600160a060020a039092168252519081900360200190f35b34801561059357600080fd5b5061013f600160a060020a0360043516602435611e19565b3480156105b757600080fd5b506040805160206004803580820135838102808601850190965280855261013f953695939460249493850192918291850190849080828437509497506121bf9650505050505050565b34801561060c57600080fd5b5061056b6121f7565b34801561062157600080fd5b5061056b612206565b61063381611d68565b156106465761064181612215565b61065d565b61064f816106ee565b156101195761064181612299565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106e65780601f106106bb576101008083540402835291602001916106e6565b820191906000526020600020905b8154815290600101906020018083116106c957829003601f168201915b505050505081565b600160a060020a03811660009081526001602052604081206003015461071383610c21565b151561078e576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72204c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b505191505b50919050565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146108cf576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b600280820180548401905554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b505115156109bb576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b82600081905033600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b505050506040513d6020811015610a8457600080fd5b5051600160a060020a031614610ae4576040805160e560020a62461bcd02815260206004820152601f60248201527f53656e646572206973206e6f74206f776e6572206f6620636f6e747261637400604482015290519081900360640190fd5b610aef8585856125f8565b5050505050565b8051825160009114610b78576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b8251811015610bc557610bbd8382815181101515610b9657fe5b906020019060200201518383815181101515610bae57fe5b90602001906020020151610c6c565b600101610b7c565b505050565b600160a060020a03166000908152600160205260408120541190565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a0381166000908152600160205260408120600301548181118015610c65575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff1615610ce1576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff16151514610d56576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fb43bd06900000000000000000000000000000000000000000000000000000000815233600482015260248101879052604481018690529051600160a060020a039092169163b43bd069916064808201926020929091908290030181600087803b158015610dca57600080fd5b505af1158015610dde573d6000803e3d6000fd5b505050506040513d6020811015610df457600080fd5b50519150610e03338585610fa8565b6000858152602081815260408083206003810180548890039055805485900381553380855260049182018452828520805460ff19166001179055600254835160e060020a63a9059cbb02815292830191909152602482018690529151949550600160a060020a039091169363a9059cbb93604480840194938390030190829087803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b505050506040513d6020811015610ebb57600080fd5b50511515610f01576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152602081815260408083206003808201549154905483517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a905260448201899052945193959294879492169263b43bd0699260648084019382900301818787803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d602081101561105a57600080fd5b505190508282820281151561106b57fe5b04979650505050505050565b600160a060020a0380821660009081526001602081905260409091209081015490913361010090920416146110f6576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6110ff8261082a565b151561117b576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600381015415806111a95750600381015460009081526020819052604090206001015460a060020a900460ff165b1515611225576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b61122e8261265e565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b1580156112fe57600080fd5b505af1158015611312573d6000803e3d6000fd5b505050506040513d602081101561132857600080fd5b5051945061133589610bca565b806113445750600186015460ff165b15156113e6576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b600386015415806114145750600386015460009081526020819052604090206001015460a060020a900460ff165b1515611490576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b84866002015410156114e2576114a58961265e565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a260009650611b30565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b15801561156957600080fd5b505af115801561157d573d6000803e3d6000fd5b505050506040513d602081101561159357600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561160f57600080fd5b505af1158015611623573d6000803e3d6000fd5b505050506040513d602081101561163957600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b505050506040513d60208110156116df57600080fd5b50516040805160e060020a63ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b505050506040513d602081101561175557600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e48401529251939750606496509092839261184892889261183c928c9261183092600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b1580156117f757600080fd5b505af115801561180b573d6000803e3d6000fd5b505050506040513d602081101561182157600080fd5b50518a9063ffffffff61284016565b9063ffffffff61285216565b9063ffffffff61287b16565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c90039055945485517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b15801561196157600080fd5b505af1158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b505115156119d1576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050506040513d60a0811015611a6257600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b83811015611af0578181015183820152602001611ad8565b50505050905090810190601f168015611b1d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b60008181526020819052604081206001015460a060020a900460ff1615611bad576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b505050506040513d6020811015611c3e57600080fd5b50511515611c96576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b158015611cfd57600080fd5b505af1158015611d11573d6000803e3d6000fd5b505050506040513d6020811015611d2757600080fd5b50511515611d4a575060008181526020819052604090206002908101540261084b565b50600090815260208190526040902080546002918201549091020390565b600160a060020a038116600090815260016020526040812060030154611d8d83610bca565b8015611db05750600160a060020a03831660009081526001602052604090205442115b8015611dc25750611dc08361082a565b155b8015611df35750801580611df35750600081815260208190526040902060019081015460a060020a900460ff161515145b15611e015760019150610824565b50600092915050565b600454600160a060020a031681565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314611e98576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115611f1a576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b60038101541580611f485750600381015460009081526020819052604090206001015460a060020a900460ff165b1561209d57600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050506040513d6020811015611ff157600080fd5b50516002820154839003101561209d576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b505050506040513d602081101561212857600080fd5b5051151561216e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b60005b81518110156121f3576121eb82828151811015156121dc57fe5b9060200190602002015161062a565b6001016121c2565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a0381166000908152600160208190526040909120015460ff16151561227057604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a038116600090815260016020526040812060030154906122bf82611b3c565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561235457600080fd5b505af1158015612368573d6000803e3d6000fd5b505050506040513d602081101561237e57600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156123f857600080fd5b505af115801561240c573d6000803e3d6000fd5b505050506040513d602081101561242257600080fd5b5051156124a65761243283612215565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3610bc5565b6124af8361265e565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b15801561251357600080fd5b505af1158015612527573d6000803e3d6000fd5b505050506040513d602081101561253d57600080fd5b50511515612595576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b82803b60008111612653576040805160e560020a62461bcd02815260206004820152601960248201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b610aef858585612890565b600160a060020a0381166000908152600160208190526040822090810154909190819060ff16156126c257604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a26126f7565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff1916905592850183905560039094018290556101009092049092169181111561283a576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d60208110156127e257600080fd5b5051151561283a576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b60008282111561284c57fe5b50900390565b600082151561286357506000610fa2565b5081810281838281151561287357fe5b0414610fa257fe5b6000818381151561288857fe5b049392505050565b600061289b8461082a565b156128f0576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b6128f984610bca565b15612974576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051831015612a97576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e00000000000000000000000000000000000000604483015291519395612b879592169363693ec85e9360648084019491938390030190829087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b505050506040513d6020811015612b7857600080fd5b5051429063ffffffff612d4516565b81556002808201849055546001820154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b158015612c0e57600080fd5b505af1158015612c22573d6000803e3d6000fd5b505050506040513d6020811015612c3857600080fd5b50511515612c7e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d03578181015183820152602001612ceb565b50505050905090810190601f168015612d305780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050565b81810182811015610fa257fe00546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a723058201e4d09fb99989dd4e9691ec6d3e28ca0c62e600e576ec0c3033d2c5c26a08dbe0029\",\n  \"deployedBytecode\": \"0x6080604052600436106101195763ffffffff60e060020a60003504166301162b93811461011e57806306fdde03146101415780632ea9b696146101cb5780633af32abf1461020057806347e7ef241461022157806355246b9c146102455780635f02116f146102ae57806361a9a8ca1461033c57806365d96c821461035d5780636eefcab9146103b157806386bb8f37146103d25780638f1d3776146103ed578063a5ba3b1e14610438578063a7aad3db1461045c578063b42652e914610495578063bc4b010f146104b6578063c8187cf11461051d578063dd4e7cfd14610535578063e1e3f91514610556578063f3fef3a314610587578063f96c8720146105ab578063fc0c546a14610600578063fce1ccca14610615575b600080fd5b34801561012a57600080fd5b5061013f600160a060020a036004351661062a565b005b34801561014d57600080fd5b50610156610660565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610190578181015183820152602001610178565b50505050905090810190601f1680156101bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d757600080fd5b506101ec600160a060020a03600435166106ee565b604080519115158252519081900360200190f35b34801561020c57600080fd5b506101ec600160a060020a036004351661082a565b34801561022d57600080fd5b5061013f600160a060020a0360043516602435610850565b34801561025157600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261013f948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610a0c9650505050505050565b3480156102ba57600080fd5b506040805160206004803580820135838102808601850190965280855261013f95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610af69650505050505050565b34801561034857600080fd5b506101ec600160a060020a0360043516610bca565b34801561036957600080fd5b5061037e600160a060020a0360043516610be6565b604080519586529315156020860152600160a060020a039092168484015260608401526080830152519081900360a00190f35b3480156103bd57600080fd5b506101ec600160a060020a0360043516610c21565b3480156103de57600080fd5b5061013f600435602435610c6c565b3480156103f957600080fd5b50610405600435610f3e565b60408051958652600160a060020a0390941660208601529115158484015260608401526080830152519081900360a00190f35b34801561044457600080fd5b506101ec600435600160a060020a0360243516610f7a565b34801561046857600080fd5b50610483600160a060020a0360043516602435604435610fa8565b60408051918252519081900360200190f35b3480156104a157600080fd5b5061013f600160a060020a0360043516611077565b3480156104c257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610483958335600160a060020a03169536956044949193909101919081908401838280828437509497506112669650505050505050565b34801561052957600080fd5b50610483600435611b3c565b34801561054157600080fd5b506101ec600160a060020a0360043516611d68565b34801561056257600080fd5b5061056b611e0a565b60408051600160a060020a039092168252519081900360200190f35b34801561059357600080fd5b5061013f600160a060020a0360043516602435611e19565b3480156105b757600080fd5b506040805160206004803580820135838102808601850190965280855261013f953695939460249493850192918291850190849080828437509497506121bf9650505050505050565b34801561060c57600080fd5b5061056b6121f7565b34801561062157600080fd5b5061056b612206565b61063381611d68565b156106465761064181612215565b61065d565b61064f816106ee565b156101195761064181612299565b50565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106e65780601f106106bb576101008083540402835291602001916106e6565b820191906000526020600020905b8154815290600101906020018083116106c957829003601f168201915b505050505081565b600160a060020a03811660009081526001602052604081206003015461071383610c21565b151561078e576040805160e560020a62461bcd028152602060048201526024808201527f4368616c6c656e676520646f6573206e6f7420657869737420666f72204c697360448201527f74696e6700000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b505191505b50919050565b600160a060020a0381166000908152600160208190526040909120015460ff165b919050565b600160a060020a0380831660009081526001602081905260409091209081015490916101009091041633146108cf576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66204c697374696e670000604482015290519081900360640190fd5b600280820180548401905554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b505115156109bb576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927ffc2e298800eb7bcacdea96213f53962a6bdf27d2a560f831d4e42301492e8f6a92918290030190a3505050565b82600081905033600160a060020a031681600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b505050506040513d6020811015610a8457600080fd5b5051600160a060020a031614610ae4576040805160e560020a62461bcd02815260206004820152601f60248201527f53656e646572206973206e6f74206f776e6572206f6620636f6e747261637400604482015290519081900360640190fd5b610aef8585856125f8565b5050505050565b8051825160009114610b78576040805160e560020a62461bcd02815260206004820152603960248201527f4d69736d6174636820696e206c656e677468206f66205f6368616c6c656e676560448201527f49447320616e64205f73616c747320706172616d657465727300000000000000606482015290519081900360840190fd5b5060005b8251811015610bc557610bbd8382815181101515610b9657fe5b906020019060200201518383815181101515610bae57fe5b90602001906020020151610c6c565b600101610b7c565b505050565b600160a060020a03166000908152600160205260408120541190565b6001602081905260009182526040909120805491810154600282015460039092015460ff821692610100909204600160a060020a0316919085565b600160a060020a0381166000908152600160205260408120600301548181118015610c65575060008181526020819052604090206001015460a060020a900460ff16155b9392505050565b600082815260208181526040808320338452600401909152812054819060ff1615610ce1576040805160e560020a62461bcd02815260206004820152601660248201527f52657761726420616c726561647920636c61696d656400000000000000000000604482015290519081900360640190fd5b600084815260208190526040902060019081015460a060020a900460ff16151514610d56576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e6765206e6f7420796574207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fb43bd06900000000000000000000000000000000000000000000000000000000815233600482015260248101879052604481018690529051600160a060020a039092169163b43bd069916064808201926020929091908290030181600087803b158015610dca57600080fd5b505af1158015610dde573d6000803e3d6000fd5b505050506040513d6020811015610df457600080fd5b50519150610e03338585610fa8565b6000858152602081815260408083206003810180548890039055805485900381553380855260049182018452828520805460ff19166001179055600254835160e060020a63a9059cbb02815292830191909152602482018690529151949550600160a060020a039091169363a9059cbb93604480840194938390030190829087803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b505050506040513d6020811015610ebb57600080fd5b50511515610f01576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b604080518281529051339186917f6f4c982acc31b0af2cf1dc1556f21c0325d893782d65e83c68a5534a33f599579181900360200190a350505050565b60006020819052908152604090208054600182015460028301546003909301549192600160a060020a0382169260a060020a90920460ff169185565b600082815260208181526040808320600160a060020a038516845260040190915290205460ff165b92915050565b6000828152602081815260408083206003808201549154905483517fb43bd069000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a905260448201899052945193959294879492169263b43bd0699260648084019382900301818787803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d602081101561105a57600080fd5b505190508282820281151561106b57fe5b04979650505050505050565b600160a060020a0380821660009081526001602081905260409091209081015490913361010090920416146110f6576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6110ff8261082a565b151561117b576040805160e560020a62461bcd02815260206004820152602860248201527f4c697374696e67206d7573742062652077686974656c697374656420746f206260448201527f6520657869746564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600381015415806111a95750600381015460009081526020819052604090206001015460a060020a900460ff165b1515611225576040805160e560020a62461bcd02815260206004820152603660248201527f4c697374696e67206d757374206e6f74206861766520616e206163746976652060448201527f6368616c6c656e676520746f2062652065786974656400000000000000000000606482015290519081900360840190fd5b61122e8261265e565b604051600160a060020a038316907f09a024f7311a15ac363521bddca1d9937c4244ab9a25e6c968e610b35ecc750390600090a25050565b600160a060020a03808316600090815260016020908152604080832060048054835160e160020a63349f642f028152918201859052600a60248301527f6d696e4465706f73697400000000000000000000000000000000000000000000604483015292519495919486948594859485948594929091169263693ec85e9260648084019382900301818787803b1580156112fe57600080fd5b505af1158015611312573d6000803e3d6000fd5b505050506040513d602081101561132857600080fd5b5051945061133589610bca565b806113445750600186015460ff165b15156113e6576040805160e560020a62461bcd02815260206004820152604c60248201527f4c697374696e67206d75737420626520696e206170706c69636174696f6e207060448201527f68617365206f7220616c72656164792077686974656c697374656420746f206260648201527f65206368616c6c656e6765640000000000000000000000000000000000000000608482015290519081900360a40190fd5b600386015415806114145750600386015460009081526020819052604090206001015460a060020a900460ff165b1515611490576040805160e560020a62461bcd02815260206004820152603760248201527f4c697374696e67206d757374206e6f742068617665206163746976652063686160448201527f6c6c656e676520746f206265206368616c6c656e676564000000000000000000606482015290519081900360840190fd5b84866002015410156114e2576114a58961265e565b604051600160a060020a038a16907fc88462fa6972b64560d1dd34c4d66f2ff9841b2f974bdb0fab0827133d692f6490600090a260009650611b30565b600354600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f766f746551756f72756d0000000000000000000000000000000000000000000060448201529051600160a060020a03948516946332ed3d609493169263693ec85e92606480820193918290030181600087803b15801561156957600080fd5b505af115801561157d573d6000803e3d6000fd5b505050506040513d602081101561159357600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f636f6d6d697453746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b15801561160f57600080fd5b505af1158015611623573d6000803e3d6000fd5b505050506040513d602081101561163957600080fd5b5051600480546040805160e160020a63349f642f0281526020938101849052600e60248201527f72657665616c53746167654c656e00000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b505050506040513d60208110156116df57600080fd5b50516040805160e060020a63ffffffff87160281526004810194909452602484019290925260448301525160648083019260209291908290030181600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b505050506040513d602081101561175557600080fd5b50516040805160a0810180835260045460e160020a63349f642f02909152602060a48301819052600f60c48401527f64697370656e736174696f6e506374000000000000000000000000000000000060e48401529251939750606496509092839261184892889261183c928c9261183092600160a060020a039091169163693ec85e91610104808b01929190818c030181600087803b1580156117f757600080fd5b505af115801561180b573d6000803e3d6000fd5b505050506040513d602081101561182157600080fd5b50518a9063ffffffff61284016565b9063ffffffff61285216565b9063ffffffff61287b16565b81523360208083018290526000604080850182905260608086018c905260809586018390528a835282845281832087518155878501516001820180548a86015173ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a039384161774ff0000000000000000000000000000000000000000191660a060020a91151591909102179055918801516002808301919091559790960151600396870155948c018a90558b860180548c90039055945485517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810194909452306024850152604484018b9052945194909316936323b872dd936064808501948390030190829087803b15801561196157600080fd5b505af1158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b505115156119d1576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b600354604080517f6148fed5000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691636148fed59160248082019260a0929091908290030181600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050506040513d60a0811015611a6257600080fd5b5080516020918201516040805180850184905290810182905260608082528c51908201528b5192955090935033928792600160a060020a038e16927f9a8e3864cbacafc5547b8567796b4d12d51217a879192b61932f5151ce581310928e92899289929091829160808301919087019080838360005b83811015611af0578181015183820152602001611ad8565b50505050905090810190601f168015611b1d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a48396505b50505050505092915050565b60008181526020819052604081206001015460a060020a900460ff1615611bad576040805160e560020a62461bcd02815260206004820152601a60248201527f4368616c6c656e676520616c7265616479207265736f6c766564000000000000604482015290519081900360640190fd5b600354604080517fee684830000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163ee684830916024808201926020929091908290030181600087803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b505050506040513d6020811015611c3e57600080fd5b50511515611c96576040805160e560020a62461bcd02815260206004820181905260248201527f506f6c6c20666f72206368616c6c656e676520686173206e6f7420656e646564604482015290519081900360640190fd5b600354604080517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163053e71a6916024808201926020929091908290030181600087803b158015611cfd57600080fd5b505af1158015611d11573d6000803e3d6000fd5b505050506040513d6020811015611d2757600080fd5b50511515611d4a575060008181526020819052604090206002908101540261084b565b50600090815260208190526040902080546002918201549091020390565b600160a060020a038116600090815260016020526040812060030154611d8d83610bca565b8015611db05750600160a060020a03831660009081526001602052604090205442115b8015611dc25750611dc08361082a565b155b8015611df35750801580611df35750600081815260208190526040902060019081015460a060020a900460ff161515145b15611e015760019150610824565b50600092915050565b600454600160a060020a031681565b600160a060020a038083166000908152600160208190526040909120908101549091610100909104163314611e98576040805160e560020a62461bcd02815260206004820152601e60248201527f53656e646572206973206e6f74206f776e6572206f66206c697374696e670000604482015290519081900360640190fd5b6002810154821115611f1a576040805160e560020a62461bcd02815260206004820152603260248201527f43616e6e6f74207769746864726177206d6f7265207468616e2063757272656e60448201527f7420756e7374616b6564206465706f7369740000000000000000000000000000606482015290519081900360840190fd5b60038101541580611f485750600381015460009081526020819052604090206001015460a060020a900460ff165b1561209d57600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050506040513d6020811015611ff157600080fd5b50516002820154839003101561209d576040805160e560020a62461bcd02815260206004820152605060248201527f5769746864726177616c2070726f686962697469656420617320697420776f7560448201527f6c6420707574204c697374696e6720756e7374616b6564206465706f7369742060648201527f62656c6f77206d696e4465706f73697400000000000000000000000000000000608482015290519081900360a40190fd5b600280820180548490039055546040805160e060020a63a9059cbb028152336004820152602481018590529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b505050506040513d602081101561212857600080fd5b5051151561216e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b600281015460408051848152602081019290925280513392600160a060020a038716927f7b7771adeec078e4a338f627a52f307a7fd66d915cb133b5ace441bed26abc0b92918290030190a3505050565b60005b81518110156121f3576121eb82828151811015156121dc57fe5b9060200190602002015161062a565b6001016121c2565b5050565b600254600160a060020a031681565b600354600160a060020a031681565b600160a060020a0381166000908152600160208190526040909120015460ff16151561227057604051600160a060020a038216907fb268dc7f76f496fd307b40e0a3b57631a7e46123d9f708b1573bd4efbba3bdba90600090a25b600160a060020a031660009081526001602081905260409091208101805460ff19169091179055565b600160a060020a038116600090815260016020526040812060030154906122bf82611b3c565b600083815260208181526040808320600101805474ff0000000000000000000000000000000000000000191660a060020a17905560035481517f053e71a6000000000000000000000000000000000000000000000000000000008152600481018890529151949550600160a060020a03169363053e71a693602480840194938390030190829087803b15801561235457600080fd5b505af1158015612368573d6000803e3d6000fd5b505050506040513d602081101561237e57600080fd5b5051600083815260208181526040808320600390810194909455925483517f49403183000000000000000000000000000000000000000000000000000000008152600481018790529351600160a060020a039091169363494031839360248083019493928390030190829087803b1580156123f857600080fd5b505af115801561240c573d6000803e3d6000fd5b505050506040513d602081101561242257600080fd5b5051156124a65761243283612215565b600160a060020a038316600081815260016020908152604080832060020180548601905585835282825291829020805460039091015483519182529181019190915281518593927f3639145ca0a6a8008912a972730b5c8634e1fd1555ea44a257a8de53c30d72fb928290030190a3610bc5565b6124af8361265e565b60025460008381526020818152604080832060010154815160e060020a63a9059cbb028152600160a060020a03918216600482015260248101879052915194169363a9059cbb93604480840194938390030190829087803b15801561251357600080fd5b505af1158015612527573d6000803e3d6000fd5b505050506040513d602081101561253d57600080fd5b50511515612595576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b60008281526020818152604091829020805460039091015483519182529181019190915281518492600160a060020a038716927fe86031b52c5a57c0768c3f196b63abf60b5ed012de77ce1bb88fc63588f7603a929081900390910190a3505050565b82803b60008111612653576040805160e560020a62461bcd02815260206004820152601960248201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b610aef858585612890565b600160a060020a0381166000908152600160208190526040822090810154909190819060ff16156126c257604051600160a060020a038516907f5aebb54d5afe29103adbc464fd4e0313af619f4d19f10a0209128b76cd9d0b0790600090a26126f7565b604051600160a060020a038516907f8ad9ca8735c55207756208e8f59c7693e83d234fc6c8af2713f266468edff87190600090a25b5050600181810154600280840154600160a060020a038681166000908152602086905260408120818155958601805474ffffffffffffffffffffffffffffffffffffffffff1916905592850183905560039094018290556101009092049092169181111561283a576002546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d60208110156127e257600080fd5b5051151561283a576040805160e560020a62461bcd02815260206004820152601660248201527f546f6b656e207472616e73666572206661696c75726500000000000000000000604482015290519081900360640190fd5b50505050565b60008282111561284c57fe5b50900390565b600082151561286357506000610fa2565b5081810281838281151561287357fe5b0414610fa257fe5b6000818381151561288857fe5b049392505050565b600061289b8461082a565b156128f0576040805160e560020a62461bcd02815260206004820152601b60248201527f4c697374696e6720616c72656164792077686974656c69737465640000000000604482015290519081900360640190fd5b6128f984610bca565b15612974576040805160e560020a62461bcd02815260206004820152602960248201527f4170706c69636174696f6e20616c7265616479206d61646520666f722074686960448201527f7320616464726573730000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600480546040805160e160020a63349f642f0281526020938101849052600a60248201527f6d696e4465706f7369740000000000000000000000000000000000000000000060448201529051600160a060020a039092169263693ec85e926064808401938290030181600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051831015612a97576040805160e560020a62461bcd02815260206004820152602360248201527f4465706f73697420616d6f756e74206e6f742061626f7665206d696e4465706f60448201527f7369740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50600160a060020a038381166000908152600160208181526040808420928301805474ffffffffffffffffffffffffffffffffffffffff001916336101000217905560048054825160e160020a63349f642f028152918201849052600d60248301527f6170706c7953746167654c656e00000000000000000000000000000000000000604483015291519395612b879592169363693ec85e9360648084019491938390030190829087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b505050506040513d6020811015612b7857600080fd5b5051429063ffffffff612d4516565b81556002808201849055546001820154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a0390811660048401523060248401526044830187905290519216916323b872dd916064808201926020929091908290030181600087803b158015612c0e57600080fd5b505af1158015612c22573d6000803e3d6000fd5b505050506040513d6020811015612c3857600080fd5b50511515612c7e576040805160e560020a62461bcd0281526020600482015260156024820152600080516020612d53833981519152604482015290519081900360640190fd5b33600160a060020a031684600160a060020a03167f09cd8dcaf170a50a26316b5fe0727dd9fb9581a688d65e758b16a1650da65c0b858460000154866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612d03578181015183820152602001612ceb565b50505050905090810190601f168015612d305780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050565b81810182811015610fa257fe00546f6b656e207472616e73666572206661696c65640000000000000000000000a165627a7a723058201e4d09fb99989dd4e9691ec6d3e28ca0c62e600e576ec0c3033d2c5c26a08dbe0029\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"updateStatus\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeCanBeResolved\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"isWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"deposit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeIDs\",\n          \"type\": \"uint256[]\"\n        },\n        {\n          \"name\": \"_salts\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"name\": \"claimRewards\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"appWasMade\",\n      \"outputs\": [\n        {\n          \"name\": \"exists\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"listings\",\n      \"outputs\": [\n        {\n          \"name\": \"applicationExpiry\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"whitelisted\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"unstakedDeposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"challengeExists\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"challenges\",\n      \"outputs\": [\n        {\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"resolved\",\n          \"type\": \"bool\"\n        },\n        {\n          \"name\": \"stake\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"tokenClaims\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_voter\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"_salt\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"voterReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"exit\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"challenge\",\n      \"outputs\": [\n        {\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_challengeID\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"determineReward\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"canBeWhitelisted\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"parameterizer\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdraw\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddresses\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"name\": \"updateStatuses\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"token\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"voting\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"name\": \"_token\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_voting\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_parameterizer\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"deposit\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"appEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"applicant\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Application\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"data\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"commitEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"revealEndDate\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challenger\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Challenge\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"added\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Deposit\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"withdrew\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"newTotal\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_Withdrawal\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationWhitelisted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ApplicationRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_ListingWithdrawn\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_TouchAndRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeFailed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"rewardPool\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"totalTokens\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"_ChallengeSucceeded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"challengeID\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"voter\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"_RewardClaimed\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"listingAddress\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"name\": \"data\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"apply\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Roles.json",
    "content": "{\n  \"contractName\": \"Roles\",\n  \"bytecode\": \"0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820411e0d4721f96631733368a475cbbbdfc3efbe0550f8a948c717c3bbe7388bb60029\",\n  \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820411e0d4721f96631733368a475cbbbdfc3efbe0550f8a948c717c3bbe7388bb60029\",\n  \"abi\": [],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/RootCommits.json",
    "content": "{\n  \"contractName\": \"RootCommits\",\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50610869806100206000396000f3006080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663079cf76e811461006657806318c9990b14610099578063ab481d23146100c7578063dab5f340146100f5575b600080fd5b34801561007257600080fd5b50610087600160a060020a036004351661010f565b60408051918252519081900360200190f35b3480156100a557600080fd5b50610087600160a060020a036004351667ffffffffffffffff60243516610150565b3480156100d357600080fd5b50610087600160a060020a036004351667ffffffffffffffff602435166103b5565b34801561010157600080fd5b5061010d600435610673565b005b600160a060020a03811660009081526020819052604081208054600019810190811061013757fe5b9060005260206000209060020201600101549050919050565b60008080804367ffffffffffffffff8616106101cd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6572724e6f467574757265416c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000908152602081905260408120549093506000190191505b8183116103ac5750600160a060020a038516600090815260208190526040902080546002848401049167ffffffffffffffff8716918390811061022f57fe5b600091825260209091206002909102015467ffffffffffffffff16141561028d57600160a060020a038616600090815260208190526040902080548290811061027457fe5b90600052602060002090600202016001015493506103ac565b600160a060020a03861660009081526020819052604090208054829081106102b157fe5b600091825260209091206002909102015467ffffffffffffffff9081169086161180156103225750600160a060020a038616600090815260208190526040902080546001830190811061030057fe5b600091825260209091206002909102015467ffffffffffffffff908116908616105b1561034b57600160a060020a038616600090815260208190526040902080548290811061027457fe5b600160a060020a038616600090815260208190526040902080548290811061036f57fe5b600091825260209091206002909102015467ffffffffffffffff90811690861611156103a0578060010192506103a7565b6001810391505b6101f0565b50505092915050565b6000808080804267ffffffffffffffff87161061043357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6572724e6f467574757265416c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038716600090815260208190526040902054151561045a57839450610669565b600160a060020a0387166000908152602081905260408120549093506000190191505b8183116106695750600160a060020a038616600090815260208190526040902080546002848401049167ffffffffffffffff881691839081106104bc57fe5b600091825260209091206002909102015468010000000000000000900467ffffffffffffffff16141561052657600160a060020a038716600090815260208190526040902080548290811061050d57fe5b9060005260206000209060020201600101549450610669565b600160a060020a038716600090815260208190526040902080548290811061054a57fe5b600091825260209091206002909102015467ffffffffffffffff6801000000000000000090910481169087161180156105d35750600160a060020a03871660009081526020819052604090208054600183019081106105a557fe5b600091825260209091206002909102015467ffffffffffffffff680100000000000000009091048116908716105b156105fc57600160a060020a038716600090815260208190526040902080548290811061050d57fe5b600160a060020a038716600090815260208190526040902080548290811061062057fe5b600091825260209091206002909102015467ffffffffffffffff680100000000000000009091048116908716111561065d57806001019250610664565b6001810391505b61047d565b5050505092915050565b33600090815260208190526040812054111561075957336000908152602081905260409020805443919060001981019081106106ab57fe5b600091825260209091206002909102015467ffffffffffffffff16141561075957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f6e6f206d756c7469706c652073657420696e207468652073616d6520626c6f6360448201527f6b00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3360008181526020818152604080832081516060818101845267ffffffffffffffff4381168084524282168488018181528588018c8152875460018181018a55988c529a8a902096516002909b0290960180549151851668010000000000000000026fffffffffffffffff0000000000000000199b90951667ffffffffffffffff1990921691909117999099169290921788559251969093019590955582519586529285019290925283810191909152908201839052517f1d3d3c252bc04ff83e8069c09279b4d8acb5264996a680b6d7dcf20db2b7417b9181900360800190a1505600a165627a7a7230582069ca536e56f7e2bb28612ad9fa8059b41a92c343de9077ed02583c6b14a172060029\",\n  \"deployedBytecode\": \"0x6080604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663079cf76e811461006657806318c9990b14610099578063ab481d23146100c7578063dab5f340146100f5575b600080fd5b34801561007257600080fd5b50610087600160a060020a036004351661010f565b60408051918252519081900360200190f35b3480156100a557600080fd5b50610087600160a060020a036004351667ffffffffffffffff60243516610150565b3480156100d357600080fd5b50610087600160a060020a036004351667ffffffffffffffff602435166103b5565b34801561010157600080fd5b5061010d600435610673565b005b600160a060020a03811660009081526020819052604081208054600019810190811061013757fe5b9060005260206000209060020201600101549050919050565b60008080804367ffffffffffffffff8616106101cd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6572724e6f467574757265416c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000908152602081905260408120549093506000190191505b8183116103ac5750600160a060020a038516600090815260208190526040902080546002848401049167ffffffffffffffff8716918390811061022f57fe5b600091825260209091206002909102015467ffffffffffffffff16141561028d57600160a060020a038616600090815260208190526040902080548290811061027457fe5b90600052602060002090600202016001015493506103ac565b600160a060020a03861660009081526020819052604090208054829081106102b157fe5b600091825260209091206002909102015467ffffffffffffffff9081169086161180156103225750600160a060020a038616600090815260208190526040902080546001830190811061030057fe5b600091825260209091206002909102015467ffffffffffffffff908116908616105b1561034b57600160a060020a038616600090815260208190526040902080548290811061027457fe5b600160a060020a038616600090815260208190526040902080548290811061036f57fe5b600091825260209091206002909102015467ffffffffffffffff90811690861611156103a0578060010192506103a7565b6001810391505b6101f0565b50505092915050565b6000808080804267ffffffffffffffff87161061043357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6572724e6f467574757265416c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038716600090815260208190526040902054151561045a57839450610669565b600160a060020a0387166000908152602081905260408120549093506000190191505b8183116106695750600160a060020a038616600090815260208190526040902080546002848401049167ffffffffffffffff881691839081106104bc57fe5b600091825260209091206002909102015468010000000000000000900467ffffffffffffffff16141561052657600160a060020a038716600090815260208190526040902080548290811061050d57fe5b9060005260206000209060020201600101549450610669565b600160a060020a038716600090815260208190526040902080548290811061054a57fe5b600091825260209091206002909102015467ffffffffffffffff6801000000000000000090910481169087161180156105d35750600160a060020a03871660009081526020819052604090208054600183019081106105a557fe5b600091825260209091206002909102015467ffffffffffffffff680100000000000000009091048116908716105b156105fc57600160a060020a038716600090815260208190526040902080548290811061050d57fe5b600160a060020a038716600090815260208190526040902080548290811061062057fe5b600091825260209091206002909102015467ffffffffffffffff680100000000000000009091048116908716111561065d57806001019250610664565b6001810391505b61047d565b5050505092915050565b33600090815260208190526040812054111561075957336000908152602081905260409020805443919060001981019081106106ab57fe5b600091825260209091206002909102015467ffffffffffffffff16141561075957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f6e6f206d756c7469706c652073657420696e207468652073616d6520626c6f6360448201527f6b00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b3360008181526020818152604080832081516060818101845267ffffffffffffffff4381168084524282168488018181528588018c8152875460018181018a55988c529a8a902096516002909b0290960180549151851668010000000000000000026fffffffffffffffff0000000000000000199b90951667ffffffffffffffff1990921691909117999099169290921788559251969093019590955582519586529285019290925283810191909152908201839052517f1d3d3c252bc04ff83e8069c09279b4d8acb5264996a680b6d7dcf20db2b7417b9181900360800190a1505600a165627a7a7230582069ca536e56f7e2bb28612ad9fa8059b41a92c343de9077ed02583c6b14a172060029\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"name\": \"addr\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"blockN\",\n          \"type\": \"uint64\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"timestamp\",\n          \"type\": \"uint64\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"root\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"RootUpdated\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_root\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"setRoot\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_address\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getRoot\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_address\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_blockN\",\n          \"type\": \"uint64\"\n        }\n      ],\n      \"name\": \"getRootByBlock\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_address\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_timestamp\",\n          \"type\": \"uint64\"\n        }\n      ],\n      \"name\": \"getRootByTime\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x632668f86cC051E8648f0015F8e6347026d45825\",\n      \"transactionHash\": \"0xc6ec76e9572d31674034e056273b142a9c5b2ba133f81c377c73f734975dba34\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x84B7e0A06bc4474d9B44da1F29E58F6623562ee1\",\n      \"transactionHash\": \"0xf55693f4e7d239d1cb3cc32ab0ea3d7522e2d1931d3b01b688f8e586dfbdeb7a\"\n    },\n    \"50\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x6BBDd7B1a289C5bE8fAa29Cb1c0be66cb2582060\",\n      \"transactionHash\": \"0xad84e507ac0e96d255cb28d23685cd78841998b5bb2812a5072d23225390546f\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/SafeMath.json",
    "content": "{\n  \"contractName\": \"SafeMath\",\n  \"bytecode\": \"0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a7230582004b5f2ab0275bb300a24ca9c601c901760a0cb39deac580fc403fc7fccaeb4d90029\",\n  \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a7230582004b5f2ab0275bb300a24ca9c601c901760a0cb39deac580fc403fc7fccaeb4d90029\",\n  \"abi\": [],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/TokenTelemetryI.json",
    "content": "{\n  \"contractName\": \"TokenTelemetryI\",\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"abi\": [\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"tokenAmount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"onRequestVotingRights\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/artifacts/v1/UniswapExchange.json",
    "content": "{\n  \"contractName\": \"UniswapExchange\",\n  \"abi\": [\n    {\n      \"name\": \"TokenPurchase\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"buyer\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"eth_sold\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"tokens_bought\", \"indexed\": true }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"EthPurchase\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"buyer\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"eth_bought\", \"indexed\": true }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"AddLiquidity\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"provider\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"eth_amount\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"token_amount\", \"indexed\": true }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"RemoveLiquidity\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"provider\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"eth_amount\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"token_amount\", \"indexed\": true }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"Transfer\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"_from\", \"indexed\": true },\n        { \"type\": \"address\", \"name\": \"_to\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"_value\", \"indexed\": false }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"Approval\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"_owner\", \"indexed\": true },\n        { \"type\": \"address\", \"name\": \"_spender\", \"indexed\": true },\n        { \"type\": \"uint256\", \"name\": \"_value\", \"indexed\": false }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"setup\",\n      \"outputs\": [],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"token_addr\" }],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 175875\n    },\n    {\n      \"name\": \"addLiquidity\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"min_liquidity\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" }\n      ],\n      \"constant\": false,\n      \"payable\": true,\n      \"type\": \"function\",\n      \"gas\": 82605\n    },\n    {\n      \"name\": \"removeLiquidity\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }, { \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"amount\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth\" },\n        { \"type\": \"uint256\", \"name\": \"min_tokens\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 116814\n    },\n    { \"name\": \"__default__\", \"outputs\": [], \"inputs\": [], \"constant\": false, \"payable\": true, \"type\": \"function\" },\n    {\n      \"name\": \"ethToTokenSwapInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"min_tokens\" }, { \"type\": \"uint256\", \"name\": \"deadline\" }],\n      \"constant\": false,\n      \"payable\": true,\n      \"type\": \"function\",\n      \"gas\": 12757\n    },\n    {\n      \"name\": \"ethToTokenTransferInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"min_tokens\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" }\n      ],\n      \"constant\": false,\n      \"payable\": true,\n      \"type\": \"function\",\n      \"gas\": 12965\n    },\n    {\n      \"name\": \"ethToTokenSwapOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"tokens_bought\" }, { \"type\": \"uint256\", \"name\": \"deadline\" }],\n      \"constant\": false,\n      \"payable\": true,\n      \"type\": \"function\",\n      \"gas\": 50455\n    },\n    {\n      \"name\": \"ethToTokenTransferOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" }\n      ],\n      \"constant\": false,\n      \"payable\": true,\n      \"type\": \"function\",\n      \"gas\": 50663\n    },\n    {\n      \"name\": \"tokenToEthSwapInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 47503\n    },\n    {\n      \"name\": \"tokenToEthTransferInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 47712\n    },\n    {\n      \"name\": \"tokenToEthSwapOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"eth_bought\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 50175\n    },\n    {\n      \"name\": \"tokenToEthTransferOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"eth_bought\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 50384\n    },\n    {\n      \"name\": \"tokenToTokenSwapInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"min_tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth_bought\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"token_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 51007\n    },\n    {\n      \"name\": \"tokenToTokenTransferInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"min_tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth_bought\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" },\n        { \"type\": \"address\", \"name\": \"token_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 51098\n    },\n    {\n      \"name\": \"tokenToTokenSwapOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"max_eth_sold\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"token_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 54928\n    },\n    {\n      \"name\": \"tokenToTokenTransferOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"max_eth_sold\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" },\n        { \"type\": \"address\", \"name\": \"token_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 55019\n    },\n    {\n      \"name\": \"tokenToExchangeSwapInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"min_tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth_bought\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"exchange_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 49342\n    },\n    {\n      \"name\": \"tokenToExchangeTransferInput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"min_tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"min_eth_bought\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" },\n        { \"type\": \"address\", \"name\": \"exchange_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 49532\n    },\n    {\n      \"name\": \"tokenToExchangeSwapOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"max_eth_sold\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"exchange_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 53233\n    },\n    {\n      \"name\": \"tokenToExchangeTransferOutput\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"uint256\", \"name\": \"tokens_bought\" },\n        { \"type\": \"uint256\", \"name\": \"max_tokens_sold\" },\n        { \"type\": \"uint256\", \"name\": \"max_eth_sold\" },\n        { \"type\": \"uint256\", \"name\": \"deadline\" },\n        { \"type\": \"address\", \"name\": \"recipient\" },\n        { \"type\": \"address\", \"name\": \"exchange_addr\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 53423\n    },\n    {\n      \"name\": \"getEthToTokenInputPrice\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"eth_sold\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 5542\n    },\n    {\n      \"name\": \"getEthToTokenOutputPrice\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"tokens_bought\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 6872\n    },\n    {\n      \"name\": \"getTokenToEthInputPrice\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"tokens_sold\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 5637\n    },\n    {\n      \"name\": \"getTokenToEthOutputPrice\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"eth_bought\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 6897\n    },\n    {\n      \"name\": \"tokenAddress\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1413\n    },\n    {\n      \"name\": \"factoryAddress\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1443\n    },\n    {\n      \"name\": \"balanceOf\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"_owner\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1645\n    },\n    {\n      \"name\": \"transfer\",\n      \"outputs\": [{ \"type\": \"bool\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"_to\" }, { \"type\": \"uint256\", \"name\": \"_value\" }],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 75034\n    },\n    {\n      \"name\": \"transferFrom\",\n      \"outputs\": [{ \"type\": \"bool\", \"name\": \"out\" }],\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"_from\" },\n        { \"type\": \"address\", \"name\": \"_to\" },\n        { \"type\": \"uint256\", \"name\": \"_value\" }\n      ],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 110907\n    },\n    {\n      \"name\": \"approve\",\n      \"outputs\": [{ \"type\": \"bool\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"_spender\" }, { \"type\": \"uint256\", \"name\": \"_value\" }],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 38769\n    },\n    {\n      \"name\": \"allowance\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"_owner\" }, { \"type\": \"address\", \"name\": \"_spender\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1925\n    },\n    {\n      \"name\": \"name\",\n      \"outputs\": [{ \"type\": \"bytes32\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1623\n    },\n    {\n      \"name\": \"symbol\",\n      \"outputs\": [{ \"type\": \"bytes32\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1653\n    },\n    {\n      \"name\": \"decimals\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1683\n    },\n    {\n      \"name\": \"totalSupply\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 1713\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0xd7d070728c947645af47f8cd0731a4100695a503\",\n      \"transactionHash\": \"0x7d18df21ec6a35ab3df8d35af02b08cf641037f6c1ee4ecbdbabf263b4746915\"\n    },\n    \"4\": {\n      \"events\": {},\n      \"links\": {},\n      \"address\": \"0x0Df32619bBe4CEb6c56e1F27C520521669283e62\",\n      \"transactionHash\": \"0x714744f4c4b6d4ce7a6eb829be7e82f99f6ebe6c3e2a09abb196c9c73afd886d\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/UniswapFactory.json",
    "content": "{\n  \"contractName\": \"UniswapFactory\",\n  \"abi\": [\n    {\n      \"name\": \"NewExchange\",\n      \"inputs\": [\n        { \"type\": \"address\", \"name\": \"token\", \"indexed\": true },\n        { \"type\": \"address\", \"name\": \"exchange\", \"indexed\": true }\n      ],\n      \"anonymous\": false,\n      \"type\": \"event\"\n    },\n    {\n      \"name\": \"initializeFactory\",\n      \"outputs\": [],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"template\" }],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 35725\n    },\n    {\n      \"name\": \"createExchange\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"token\" }],\n      \"constant\": false,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 187911\n    },\n    {\n      \"name\": \"getExchange\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"token\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 715\n    },\n    {\n      \"name\": \"getToken\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"address\", \"name\": \"exchange\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 745\n    },\n    {\n      \"name\": \"getTokenWithId\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [{ \"type\": \"uint256\", \"name\": \"token_id\" }],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 736\n    },\n    {\n      \"name\": \"exchangeTemplate\",\n      \"outputs\": [{ \"type\": \"address\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 633\n    },\n    {\n      \"name\": \"tokenCount\",\n      \"outputs\": [{ \"type\": \"uint256\", \"name\": \"out\" }],\n      \"inputs\": [],\n      \"constant\": true,\n      \"payable\": false,\n      \"type\": \"function\",\n      \"gas\": 663\n    }\n  ],\n  \"networks\": {\n    \"1\": {\n      \"address\": \"0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95\"\n    },\n    \"4\": {\n      \"address\": \"0xf5D915570BC477f9B8D6C0E980aA81757A3AaC36\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/artifacts/v1/Whitelist.json",
    "content": "{\n  \"contractName\": \"Whitelist\",\n  \"bytecode\": \"0x608060405260008054600160a060020a031916331790556109b7806100256000396000f3006080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630988ca8c81146100b357806318b919e91461011c578063217fe6c6146101a657806324953eaa14610221578063286dd3f514610276578063715018a6146102975780637b9417c8146102ac5780638da5cb5b146102cd5780639b19251a146102fe578063e2ec6ec31461031f578063f2fde38b14610374575b600080fd5b3480156100bf57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261011a958335600160a060020a03169536956044949193909101919081908401838280828437509497506103959650505050505050565b005b34801561012857600080fd5b50610131610403565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016b578181015183820152602001610153565b50505050905090810190601f1680156101985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b257600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261020d958335600160a060020a03169536956044949193909101919081908401838280828437509497506104289650505050505050565b604080519115158252519081900360200190f35b34801561022d57600080fd5b506040805160206004803580820135838102808601850190965280855261011a9536959394602494938501929182918501908490808284375094975061049b9650505050505050565b34801561028257600080fd5b5061011a600160a060020a03600435166104e8565b3480156102a357600080fd5b5061011a61052f565b3480156102b857600080fd5b5061011a600160a060020a036004351661059b565b3480156102d957600080fd5b506102e26105df565b60408051600160a060020a039092168252519081900360200190f35b34801561030a57600080fd5b5061020d600160a060020a03600435166105ee565b34801561032b57600080fd5b506040805160206004803580820135838102808601850190965280855261011a953695939460249493850192918291850190849080828437509497506106239650505050505050565b34801561038057600080fd5b5061011a600160a060020a0360043516610670565b6103ff826001836040518082805190602001908083835b602083106103cb5780518252601f1990920191602091820191016103ac565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610690565b5050565b604080518082019091526009815260008051602061096c833981519152602082015281565b6000610494836001846040518082805190602001908083835b602083106104605780518252601f199092019160209182019101610441565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506106a5565b9392505050565b60008054600160a060020a031633146104b357600080fd5b5060005b81518110156103ff576104e082828151811015156104d157fe5b906020019060200201516104e8565b6001016104b7565b600054600160a060020a031633146104ff57600080fd5b61052c8160408051908101604052806009815260200160008051602061096c8339815191528152506106c4565b50565b600054600160a060020a0316331461054657600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146105b257600080fd5b61052c8160408051908101604052806009815260200160008051602061096c8339815191528152506107d5565b600054600160a060020a031681565b600061061d8260408051908101604052806009815260200160008051602061096c833981519152815250610428565b92915050565b60008054600160a060020a0316331461063b57600080fd5b5060005b81518110156103ff57610668828281518110151561065957fe5b9060200190602002015161059b565b60010161063f565b600054600160a060020a0316331461068757600080fd5b61052c816108a7565b61069a82826106a5565b15156103ff57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b61072e826001836040518082805190602001908083835b602083106106fa5780518252601f1990920191602091820191016106db565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610924565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079757818101518382015260200161077f565b50505050905090810190601f1680156107c45780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b61083f826001836040518082805190602001908083835b6020831061080b5780518252601f1990920191602091820191016107ec565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610946565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561079757818101518382015260200161077f565b600160a060020a03811615156108bc57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055560077686974656c6973740000000000000000000000000000000000000000000000a165627a7a723058206ef1746ac83ff9f12c5ba42cffd57fd462a9f15a78f7698f763183b093635fee0029\",\n  \"deployedBytecode\": \"0x6080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630988ca8c81146100b357806318b919e91461011c578063217fe6c6146101a657806324953eaa14610221578063286dd3f514610276578063715018a6146102975780637b9417c8146102ac5780638da5cb5b146102cd5780639b19251a146102fe578063e2ec6ec31461031f578063f2fde38b14610374575b600080fd5b3480156100bf57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261011a958335600160a060020a03169536956044949193909101919081908401838280828437509497506103959650505050505050565b005b34801561012857600080fd5b50610131610403565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016b578181015183820152602001610153565b50505050905090810190601f1680156101985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b257600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261020d958335600160a060020a03169536956044949193909101919081908401838280828437509497506104289650505050505050565b604080519115158252519081900360200190f35b34801561022d57600080fd5b506040805160206004803580820135838102808601850190965280855261011a9536959394602494938501929182918501908490808284375094975061049b9650505050505050565b34801561028257600080fd5b5061011a600160a060020a03600435166104e8565b3480156102a357600080fd5b5061011a61052f565b3480156102b857600080fd5b5061011a600160a060020a036004351661059b565b3480156102d957600080fd5b506102e26105df565b60408051600160a060020a039092168252519081900360200190f35b34801561030a57600080fd5b5061020d600160a060020a03600435166105ee565b34801561032b57600080fd5b506040805160206004803580820135838102808601850190965280855261011a953695939460249493850192918291850190849080828437509497506106239650505050505050565b34801561038057600080fd5b5061011a600160a060020a0360043516610670565b6103ff826001836040518082805190602001908083835b602083106103cb5780518252601f1990920191602091820191016103ac565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610690565b5050565b604080518082019091526009815260008051602061096c833981519152602082015281565b6000610494836001846040518082805190602001908083835b602083106104605780518252601f199092019160209182019101610441565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506106a5565b9392505050565b60008054600160a060020a031633146104b357600080fd5b5060005b81518110156103ff576104e082828151811015156104d157fe5b906020019060200201516104e8565b6001016104b7565b600054600160a060020a031633146104ff57600080fd5b61052c8160408051908101604052806009815260200160008051602061096c8339815191528152506106c4565b50565b600054600160a060020a0316331461054657600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146105b257600080fd5b61052c8160408051908101604052806009815260200160008051602061096c8339815191528152506107d5565b600054600160a060020a031681565b600061061d8260408051908101604052806009815260200160008051602061096c833981519152815250610428565b92915050565b60008054600160a060020a0316331461063b57600080fd5b5060005b81518110156103ff57610668828281518110151561065957fe5b9060200190602002015161059b565b60010161063f565b600054600160a060020a0316331461068757600080fd5b61052c816108a7565b61069a82826106a5565b15156103ff57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b61072e826001836040518082805190602001908083835b602083106106fa5780518252601f1990920191602091820191016106db565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610924565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561079757818101518382015260200161077f565b50505050905090810190601f1680156107c45780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b61083f826001836040518082805190602001908083835b6020831061080b5780518252601f1990920191602091820191016107ec565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610946565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360008381101561079757818101518382015260200161077f565b600160a060020a03811615156108bc57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055560077686974656c6973740000000000000000000000000000000000000000000000a165627a7a723058206ef1746ac83ff9f12c5ba42cffd57fd462a9f15a78f7698f763183b093635fee0029\",\n  \"abi\": [\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"checkRole\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"ROLE_WHITELISTED\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"name\": \"_role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"hasRole\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleAdded\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"operator\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"name\": \"role\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"RoleRemoved\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipRenounced\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"addAddressToWhitelist\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": true,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"whitelist\",\n      \"outputs\": [\n        {\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"payable\": false,\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_operators\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"name\": \"addAddressesToWhitelist\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_operator\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"removeAddressFromWhitelist\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"constant\": false,\n      \"inputs\": [\n        {\n          \"name\": \"_operators\",\n          \"type\": \"address[]\"\n        }\n      ],\n      \"name\": \"removeAddressesFromWhitelist\",\n      \"outputs\": [],\n      \"payable\": false,\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"networks\": {}\n}\n"
  },
  {
    "path": "packages/components/.babelrc",
    "content": "{\n  \"presets\": [\n    [\"@babel/preset-env\", { \"targets\": { \"node\": \"current\" } }],\n    \"@babel/preset-typescript\",\n    \"@babel/preset-react\"\n  ],\n  \"plugins\": [\"@babel/plugin-proposal-class-properties\"],\n  \"env\": {\n    \"test\": {\n      \"plugins\": [\"require-context-hook\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/.gitignore",
    "content": "/out\n"
  },
  {
    "path": "packages/components/.releaserc",
    "content": "{\n  \"plugins\": [\n    [\n      \"@semantic-release/commit-analyzer\",\n      {\n        \"preset\": \"angular\",\n        \"releaseRules\": [\n          { \"type\": \"docs\", \"scope\": \"README\", \"release\": \"patch\" },\n          { \"type\": \"refactor\", \"release\": \"patch\" },\n          { \"type\": \"style\", \"release\": \"patch\" }\n        ],\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\"]\n        }\n      }\n    ],\n    [\n      \"@semantic-release/release-notes-generator\",\n      {\n        \"preset\": \"angular\",\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\", \"BREAKING\"]\n        },\n        \"writerOpts\": {\n          \"commitsSort\": [\"subject\", \"scope\"]\n        }\n      }\n    ],\n    \"@semantic-release/npm\"\n  ]\n}\n"
  },
  {
    "path": "packages/components/.storybook/config.ts",
    "content": "import { configure, addDecorator } from \"@storybook/react\";\nimport { withInfo } from \"@storybook/addon-info\";\n\n// automatically import all files ending in *.stories.tsx\nconst req = require.context(\"../src\", true, /.stories.tsx$/);\n\nfunction loadStories() {\n  addDecorator(withInfo);\n  req.keys().forEach(req);\n}\n\nconfigure(loadStories, module);\n"
  },
  {
    "path": "packages/components/.storybook/preview-head.html",
    "content": "<link href=\"https://fonts.googleapis.com/css?family=Spectral:200,400,400i,700,800\" rel=\"stylesheet\">\n<link href=\"https://fonts.googleapis.com/css?family=Libre+Franklin:200,400,600,800\" rel=\"stylesheet\">\n"
  },
  {
    "path": "packages/components/.storybook/register-context.ts",
    "content": "// @ts-ignore\nimport registerRequireContextHook from \"babel-plugin-require-context-hook/register\";\nregisterRequireContextHook();\n"
  },
  {
    "path": "packages/components/.storybook/webpack.config.js",
    "content": "module.exports = ({ config, mode }) => {\n  config.module.rules.push({\n    test: /\\.tsx?$/,\n    use: [\n      {\n        loader: require.resolve(\"babel-loader\"),\n        options: {\n          presets: [require.resolve(\"babel-preset-react-app\")],\n        },\n      },\n      require.resolve(\"react-docgen-typescript-loader\"),\n    ],\n  });\n\n  config.resolve.extensions.push(\".ts\", \".tsx\");\n  config.node = { global: true, fs: \"empty\" };\n\n  return config;\n};\n"
  },
  {
    "path": "packages/components/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/components/jest.config.js",
    "content": "module.exports = {\n  transform: {\n    \"^.+\\\\.(ts|tsx)?$\": \"babel-jest\",\n  },\n  testPathIgnorePatterns: [\"/node_modules/\", \"src/__test__/setupTests.ts\", \"build\"],\n  moduleNameMapper: {\n    \"\\\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|css)$\":\n      \"<rootDir>src/__mocks__/fileMock.js\",\n  },\n  testRegex: \"(src/__test__/.*|\\\\.(test|spec))\\\\.(ts|tsx)$\",\n  setupFiles: [\"<rootDir>.storybook/register-context.ts\"],\n  setupFilesAfterEnv: [\"<rootDir>src/__test__/setupTests.ts\"],\n  moduleFileExtensions: [\"ts\", \"tsx\", \"js\", \"json\"],\n};\n"
  },
  {
    "path": "packages/components/package.json",
    "content": "{\n  \"name\": \"@joincivil/components\",\n  \"version\": \"1.9.10\",\n  \"description\": \"React components for Civil\",\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"license\": \"Apache-2.0\",\n  \"sideEffects\": false,\n  \"scripts\": {\n    \"copy:images\": \"mkdir -p build/images && cp -a src/images/. build/images\",\n    \"build\": \"yarn clean && tsc && yarn copy:images\",\n    \"build:watch\": \"yarn clean && yarn copy:images && tsc -w\",\n    \"lint\": \"tslint --exclude \\\"**/storyFixtures/**\\\" --project ./\",\n    \"clean\": \"rimraf build/\",\n    \"prepublish\": \"run-s build\",\n    \"storybook\": \"start-storybook -p 9001\",\n    \"storybook:build\": \"build-storybook -c .storybook -o out\",\n    \"test\": \"NODE_ENV=test jest\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.5.5\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.4.0\",\n    \"@babel/preset-react\": \"^7.0.0\",\n    \"@babel/preset-typescript\": \"^7.3.3\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@storybook/addon-actions\": \"^5.1.0\",\n    \"@storybook/addon-info\": \"^5.1.0\",\n    \"@storybook/addon-storyshots\": \"^5.1.0\",\n    \"@storybook/react\": \"^5.1.0\",\n    \"@types/classnames\": \"^2.2.3\",\n    \"@types/enzyme\": \"^3.1.9\",\n    \"@types/jest\": \"^23.3.5\",\n    \"@types/prop-types\": \"15.7.0\",\n    \"@types/react\": \"^16.9.0\",\n    \"@types/react-avatar-editor\": \"^10.3.4\",\n    \"@types/react-dom\": \"^16.9.0\",\n    \"@types/react-dropzone\": \"^4.2.2\",\n    \"@types/react-test-renderer\": \"^16.9.1\",\n    \"@types/storybook__addon-info\": \"^4.1.1\",\n    \"@types/storybook__react\": \"^3.0.7\",\n    \"@types/stripe-v3\": \"^3.1.15\",\n    \"babel-jest\": \"^24.7.1\",\n    \"babel-loader\": \"^8.0.5\",\n    \"babel-plugin-require-context-hook\": \"^1.0.0\",\n    \"core-js\": \"^3.2.1\",\n    \"enzyme\": \"^3.3.0\",\n    \"enzyme-adapter-react-16\": \"^1.1.1\",\n    \"jest\": \"^24.6\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"react-docgen-typescript-webpack-plugin\": \"^1.1.0\",\n    \"react-test-renderer\": \"^16.11.0\",\n    \"rimraf\": \"^2.6.2\",\n    \"storybook-react-router\": \"^1.0.1\",\n    \"strip-ansi\": \"^5.0.0\",\n    \"ts-jest\": \"^23.10.4\",\n    \"ts-loader\": \"^4\",\n    \"typescript\": \"^3.6.2\",\n    \"web3-providers-http\": \"^1.2.4\",\n    \"webpack\": \"^4\",\n    \"webpack-hot-middleware\": \"^2.21.1\"\n  },\n  \"peerDependencies\": {\n    \"immutable\": \"^3.8.2\",\n    \"prop-types\": \"^15.7.2\",\n    \"react\": \"^16.11.0\",\n    \"react-dom\": \"^16.11.0\"\n  },\n  \"resolutions\": {\n    \"ethers\": \"4.0.27\",\n    \"**/ethers\": \"4.0.27\"\n  },\n  \"dependencies\": {\n    \"@joincivil/core\": \"^4.8.11\",\n    \"@joincivil/elements\": \"^0.0.1\",\n    \"@joincivil/ethapi\": \"^0.4.9\",\n    \"@joincivil/utils\": \"^1.9.9\",\n    \"@kirby-web3/ethereum-react\": \"^1.2.17\",\n    \"@kirby-web3/parent-core\": \"^1.3.2\",\n    \"@kirby-web3/plugin-ethereum\": \"^1.11.0\",\n    \"@types/styled-components\": \"^4.1.18\",\n    \"apollo-client\": \"^2.6.8\",\n    \"apollo-storybook-react\": \"^0.1.8\",\n    \"classnames\": \"^2.2.5\",\n    \"graphql-tag\": \"^2.10.0\",\n    \"graphql-tools\": \"^4.0.3\",\n    \"lodash\": \"^4.17.10\",\n    \"react-add-to-calendar\": \"^0.1.5\",\n    \"react-apollo\": \"^2.3.3\",\n    \"react-async-script\": \"^1.0.0\",\n    \"react-avatar-editor\": \"^11.0.7\",\n    \"react-docgen-typescript-loader\": \"^3.1.0\",\n    \"react-dropzone\": \"^10.1.4\",\n    \"react-helmet\": \"^5.2.0\",\n    \"react-input-slider\": \"^5.1.2\",\n    \"react-router-dom\": \"^5.1.2\",\n    \"react-rte\": \"^0.16.1\",\n    \"react-stripe-elements\": \"^6.0.0\",\n    \"rxjs\": \"^5.5.6\",\n    \"stripe\": \"^8.19.0\",\n    \"styled-components\": \"^5.0.0-beta.8\",\n    \"web3\": \"^1.2.4\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/AuthStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"../../styleConstants\";\nimport checkEmailImage from \"../../images/auth/img-check-email@2x.png\";\nimport confirmedEmailImage from \"../../images/auth/img-confirm-email@2x.png\";\nimport iconError from \"../../images/icons/ico-error-red@2x.png\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport {\n  AuthTextFooter,\n  AuthTextVerifyTokenConfirmed,\n  AuthTextVerifyTokenVerifying,\n  AuthTextVerifyTokenError,\n  AuthTextEthAuthNext,\n} from \"./AuthTextComponents\";\nimport { Button, buttonSizes } from \"../..\";\n\nexport const CheckboxContainer = styled.ul`\n  list-style: none;\n  padding-left: 0;\n  margin-top: 0;\n  max-width: 300px;\n`;\n\nexport const CheckboxSection = styled.li`\n  margin-bottom: 10px;\n`;\n\nexport const CheckboxLabel = styled.span`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font: 400 15px/20px ${fonts.SANS_SERIF};\n  padding-left: 7px;\n  vertical-align: middle;\n`;\n\nexport const ConfirmButtonContainer = styled.div`\n  display: flex;\n  justify-content: center;\n  padding-top: 20px;\n`;\n\nexport const SkipForNowButtonContainer = styled.div`\n  display: flex;\n  justify-content: center;\n  padding-top: 20px;\n  ${mediaQueries.MOBILE} {\n    padding-top: 5px;\n  }\n`;\n\nexport const CheckEmailLetterIcon = styled.div`\n  width: 108px;\n  height: 108px;\n  background-position: center center;\n  background-image: url(${checkEmailImage});\n  background-size: cover;\n  margin: 30px 0;\n`;\n\nexport const ConfirmedEmailLetterIcon = styled(CheckEmailLetterIcon)`\n  background-image: url(${confirmedEmailImage});\n`;\n\nexport const CenterWrapper: React.FunctionComponent = ({ children }) => (\n  <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n    <div>{children}</div>\n  </div>\n);\n\nexport const CheckEmailSection = () => (\n  <CenterWrapper>\n    <CheckEmailLetterIcon />\n  </CenterWrapper>\n);\n\nexport const CenteredText = styled.div`\n  text-align: center;\n`;\n\nexport const FooterTextCentered = styled.div`\n  text-align: center;\n`;\n\nexport const AuthOuterWrapperContainer = styled.div`\n  display: flex;\n  justify-content: center;\n  width: 700px;\n\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const AuthOuterWrapper: React.FunctionComponent = ({ children }) => (\n  <CenterWrapper>\n    <AuthOuterWrapperContainer>\n      <CenterWrapper>{children}</CenterWrapper>\n    </AuthOuterWrapperContainer>\n  </CenterWrapper>\n);\n\nexport const AuthWrapper: React.FunctionComponent = ({ children }) => (\n  <AuthOuterWrapper>\n    <AuthInnerWrapper>{children}</AuthInnerWrapper>\n    <AuthFooterTerms textEl={<AuthTextFooter />} />\n  </AuthOuterWrapper>\n);\n\nexport const AuthInnerWrapper = styled.div`\n  margin: 71px 115px 0;\n\n  ${mediaQueries.MOBILE} {\n    margin: 71px 15px 0;\n  }\n`;\n\nexport const AuthPageFooterLink = styled.div`\n  text-align: center;\n  font-size: 12px;\n  text-decoration: underline;\n  padding-top: 60px;\n`;\n\nexport const AuthFooterContainer = styled.div`\n  border-top: 1px solid #d8d8d8;\n  margin-top: 40px;\n  padding-top: 20px;\n`;\n\nexport const BenefitsLink = styled(AuthPageFooterLink)`\n  padding: 0;\n`;\n\nexport interface AuthFooterTermsProps {\n  textEl: JSX.Element;\n}\nexport const AuthFooterTerms: React.FunctionComponent<AuthFooterTermsProps> = ({ textEl }) => (\n  <AuthFooterContainer>\n    {textEl}\n    <BenefitsLink>\n      <a href={links.BECOME_A_MEMBER} target=\"_blank\">\n        Read more about those benefits.\n      </a>\n    </BenefitsLink>\n  </AuthFooterContainer>\n);\n\nexport interface AuthEmailVerifyProps {\n  hasVerified: boolean;\n  errorMessage: string | undefined;\n  ethAuthNextExt?: boolean;\n  onAuthenticationContinue(): void;\n}\n\nexport const AuthEmailVerify = ({\n  hasVerified,\n  errorMessage,\n  onAuthenticationContinue,\n  ethAuthNextExt,\n}: AuthEmailVerifyProps) => {\n  if (errorMessage) {\n    return <AuthTextVerifyTokenError errorMessage={errorMessage} />;\n  }\n\n  return (\n    <>\n      {hasVerified ? <AuthTextVerifyTokenConfirmed /> : <AuthTextVerifyTokenVerifying />}\n      <CenterWrapper>\n        <ConfirmedEmailLetterIcon />\n      </CenterWrapper>\n      {ethAuthNextExt && (\n        <div style={{ marginBottom: 24 }}>\n          <AuthTextEthAuthNext />\n        </div>\n      )}\n      <CenterWrapper>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={onAuthenticationContinue}>\n          Continue\n        </Button>\n      </CenterWrapper>\n    </>\n  );\n};\n\nexport interface ConfirmEmailVerifyProps {\n  hasVerified: boolean;\n  errorMessage: string | undefined;\n  ethAuthNextExt?: boolean;\n  onEmailConfirmContinue(): void;\n}\n\nexport const EmailConfirmVerify = ({\n  hasVerified,\n  errorMessage,\n  onEmailConfirmContinue,\n  ethAuthNextExt,\n}: ConfirmEmailVerifyProps) => {\n  if (errorMessage) {\n    return <AuthTextVerifyTokenError errorMessage={errorMessage} />;\n  }\n\n  return (\n    <>\n      {hasVerified ? <AuthTextVerifyTokenConfirmed /> : <AuthTextVerifyTokenVerifying />}\n      <CenterWrapper>\n        <ConfirmedEmailLetterIcon />\n      </CenterWrapper>\n      {ethAuthNextExt && (\n        <div style={{ marginBottom: 24 }}>\n          <AuthTextEthAuthNext />\n        </div>\n      )}\n      <CenterWrapper>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={onEmailConfirmContinue}>\n          Continue\n        </Button>\n      </CenterWrapper>\n    </>\n  );\n};\n\nexport const AuthErrorMessage = styled.div`\n  border: 1px solid rgba(242, 82, 74, 0.56);\n  border-radius: 4px;\n  background-color: #fff7f8;\n\n  background-position: 10px center;\n  background-image: url(${iconError});\n  background-size: 30px;\n  background-repeat: no-repeat;\n\n  color: #555555;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n\n  /*  TODO(jorgelo): This is terrible, but the error message breaks out of the parent box. There has to be a better way. */\n  margin: 0 -116px 17px -116px;\n\n  padding: 18px 0;\n\n  text-align: center;\n`;\n"
  },
  {
    "path": "packages/components/src/Account/Auth/AuthTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport {\n  PageHeadingTextCenteredSmall,\n  PageHeadingTextCentered,\n  PageSubHeadingCentered,\n  PageHeadingCentered,\n  PageHeadingTextCenteredLarge,\n  PageHeadingLeftAligned,\n  PageHeadingTextLeftAligned,\n} from \"../../Heading\";\nimport { Link } from \"react-router-dom\";\n\nexport const AuthTextFooter: React.FunctionComponent = () => (\n  // TODO(jorgelo): For the store front, the text should be:\n\n  <PageHeadingTextCenteredSmall>\n    By joining Civil, you will get a direct say in running the Civil platform, connect with journalists and fund great\n    journalism projects.\n  </PageHeadingTextCenteredSmall>\n);\n\nexport const AuthTextEmailSent: React.FunctionComponent<{\n  emailAddress: string;\n}> = ({ emailAddress }) => (\n  <>\n    <PageSubHeadingCentered>Check your email!</PageSubHeadingCentered>\n    <PageHeadingTextCenteredLarge>\n      We sent you an email to <strong>{emailAddress}</strong> that includes a link to confirm your email address. It\n      expires soon, so please check your email and click on the link. Once confimed, you can continue.\n    </PageHeadingTextCenteredLarge>\n  </>\n);\n\nexport const AuthTextVerifyTokenConfirmed: React.FunctionComponent = () => (\n  <>\n    <PageSubHeadingCentered>Email Address Confirmed!</PageSubHeadingCentered>\n    <PageHeadingTextCenteredLarge>Thanks for confirming your email address.</PageHeadingTextCenteredLarge>\n  </>\n);\n\nexport const AuthTextVerifyTokenVerifying: React.FunctionComponent = () => (\n  <>\n    <PageSubHeadingCentered>Confirming your email address...</PageSubHeadingCentered>\n  </>\n);\n\nexport const AuthTextEthAuthNext: React.FunctionComponent = () => (\n  <>\n    <PageHeadingTextCenteredLarge>Next, we'll set up your secure crypto wallet.</PageHeadingTextCenteredLarge>\n  </>\n);\n\n// TODO(jorgelo): Jorge made this up, it should probably be nicer.\nexport const AuthTextVerifyTokenError: React.FunctionComponent<{ errorMessage: string }> = ({ errorMessage }) => (\n  <>\n    <PageSubHeadingCentered>Uh oh.</PageSubHeadingCentered>\n    <PageHeadingTextCenteredLarge>\n      <strong>{errorMessage}</strong>\n    </PageHeadingTextCenteredLarge>\n  </>\n);\n\nexport const AuthTextCreateAccount: React.FunctionComponent = () => (\n  <>\n    <PageHeadingCentered>Create your Civil account</PageHeadingCentered>\n    <PageHeadingTextCentered>\n      First, please enter your email address. Your email is used to send account related updates from Civil.\n    </PageHeadingTextCentered>\n    <PageSubHeadingCentered>Let's get started</PageSubHeadingCentered>\n  </>\n);\n\nexport const AuthTextCheckSpam: React.FunctionComponent = () => (\n  <PageHeadingTextCenteredLarge>Please check your spam folder if you don’t see the email.</PageHeadingTextCenteredLarge>\n);\n\nexport const AuthTextSigninWithEmail: React.FunctionComponent = () => (\n  <>\n    <PageHeadingCentered>Sign in with email</PageHeadingCentered>\n    <PageHeadingTextCentered>\n      Enter the address associated with your account, and we'll send a magic link to your inbox.\n    </PageHeadingTextCentered>\n  </>\n);\n\nexport const AuthTextSetHandle: React.FunctionComponent = () => (\n  <>\n    <PageHeadingCentered>Welcome to the Civil community</PageHeadingCentered>\n    <PageHeadingTextCentered>\n      To help the Civil community identify you, please enter a username.\n    </PageHeadingTextCentered>\n  </>\n);\n\nexport const AuthTextSetAvatar: React.FunctionComponent = () => (\n  <>\n    <PageHeadingLeftAligned>Add profile photo</PageHeadingLeftAligned>\n    <PageHeadingTextLeftAligned>\n      To help the Civil community identify you, add a profile image.\n    </PageHeadingTextLeftAligned>\n  </>\n);\n\nexport const AuthTextEmailNotFoundError: React.FunctionComponent<{ signupPath: string }> = ({ signupPath }) => (\n  <>\n    The email address you entered does not exist. Try again? or{\" \"}\n    <Link to={signupPath}>create a Civil account to continue.</Link>\n  </>\n);\n\nexport const AuthTextEmailExistsError: React.FunctionComponent<{ loginPath: string }> = ({ loginPath }) => (\n  <>\n    Your account already exists. <Link to={loginPath}>Login to continue.</Link>\n  </>\n);\n\n// TODO(jorgelo): Make this text nicer.\nexport const AuthTextUnknownError: React.FunctionComponent = () => (\n  <>An internal error has occured, please try again.</>\n);\n"
  },
  {
    "path": "packages/components/src/Account/Auth/ConfirmEmailToken.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { EmailConfirmVerify } from \"./AuthStyledComponents\";\nimport { ApolloConsumer } from \"react-apollo\";\nimport ApolloClient from \"apollo-client\";\n\nconst verifyMutation = gql`\n  mutation($token: String!) {\n    channelsSetEmailConfirm(jwt: $token) {\n      ChannelID\n    }\n  }\n`;\n\nexport interface ConfirmEmailTokenProps {\n  token: string;\n  ethAuthNextExt?: boolean;\n  apolloClient: ApolloClient<any>;\n  onEmailConfirmContinue?(): void;\n  onMutationSuccess?(): Promise<void>;\n}\n\nexport interface ConfirmEmailTokenState {\n  hasVerified: boolean;\n  errorMessage: string | undefined;\n}\n\nclass ConfirmEmailTokenWithApolloClient extends React.Component<ConfirmEmailTokenProps, ConfirmEmailTokenState> {\n  public state = {\n    hasVerified: false,\n    errorMessage: undefined,\n  };\n\n  constructor(props: ConfirmEmailTokenProps) {\n    super(props);\n  }\n\n  public async componentDidMount(): Promise<void> {\n    return this.handleTokenVerification();\n  }\n\n  public handleTokenVerification = async (): Promise<void> => {\n    const token = this.props.token;\n\n    const client = this.props.apolloClient;\n\n    try {\n      const { error } = await client.mutate({\n        mutation: verifyMutation,\n        variables: { token },\n      });\n      if (error) {\n        console.log(\"Error authenticating:\", error);\n        const errorMessage = error.graphQLErrors.map((e: any) => e.message).join(\" ,\");\n        this.setState({ errorMessage, hasVerified: true });\n      } else {\n        if (this.props.onMutationSuccess) {\n          await this.props.onMutationSuccess();\n        }\n        this.setState({ errorMessage: undefined, hasVerified: true });\n      }\n    } catch (err) {\n      console.error(\"Error validating token:\", err);\n      this.setState({ errorMessage: \"There was a problem validating your token.\", hasVerified: true });\n    }\n  };\n\n  public render(): JSX.Element {\n    const { hasVerified, errorMessage } = this.state;\n    const { onEmailConfirmContinue, ethAuthNextExt } = this.props;\n    return (\n      <EmailConfirmVerify\n        hasVerified={hasVerified}\n        errorMessage={errorMessage}\n        ethAuthNextExt={ethAuthNextExt}\n        onEmailConfirmContinue={onEmailConfirmContinue!}\n      />\n    );\n  }\n}\n\nexport class ConfirmEmailToken extends React.Component<ConfirmEmailTokenProps> {\n  public render(): JSX.Element {\n    return (\n      <ApolloConsumer>\n        {client => <ConfirmEmailTokenWithApolloClient apolloClient={client} {...this.props} />}\n      </ApolloConsumer>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/EmailAuth.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { AccountEmailAuth, AuthApplicationEnum } from \"../\";\nimport StoryRouter from \"storybook-react-router\";\n\nconst typeDefs = `\n  type User {\n    uid: String\n    email: String\n    ethAddress: String\n  }\n\n  type AuthLoginResponse {\n    token: String\n    refreshToken: String\n    uid: String\n  }\n\n  type Query {\n    currentUser: User\n  }\n\n  type Mutation {\n\n    authSignupEmailSendForApplication(\n      email: String\n      application: String\n    ): String\n\n    authSignupEmailConfirm(\n      signupJWT: String!\n    ): AuthLoginResponse\n\n    authSignupEmailSend(\n      emailAddress: String!\n    ): String\n\n  }\n\n  schema {\n    query: Query\n    mutation: Mutation\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      currentUser: () => {\n        return \"cool\";\n      },\n    };\n  },\n  Mutation: () => {\n    return {\n      authSignupEmailSend: (email: string) => {\n        return \"ok\";\n      },\n      authSignupEmailSendForApplication: (email: string, application: string) => {\n        return \"ok\";\n      },\n    };\n  },\n};\n\nstoriesOf(\"Common / Auth / Email Signup Flow\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .addDecorator(StoryRouter())\n  .add(\"AccountEmailAuth\", () => {\n    return (\n      <AccountEmailAuth\n        applicationType={AuthApplicationEnum.DEFAULT}\n        isNewUser={true}\n        onEmailSend={() => {\n          console.log(\"Sent\");\n        }}\n        signupPath=\"\"\n        loginPath=\"\"\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Account/Auth/EmailAuth.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { AuthApplicationEnum } from \"../index\";\nimport { Mutation, MutationFn } from \"react-apollo\";\nimport { Checkbox, CheckboxSizes } from \"../../input/Checkbox\";\nimport { Button, buttonSizes } from \"../../Button\";\nimport { TextInput } from \"../../input\";\nimport {\n  CheckboxSection,\n  CheckboxContainer,\n  CheckboxLabel,\n  ConfirmButtonContainer,\n  AuthErrorMessage,\n} from \"./AuthStyledComponents\";\nimport { isValidEmail } from \"@joincivil/utils\";\nimport { AuthTextEmailNotFoundError, AuthTextEmailExistsError, AuthTextUnknownError } from \"./AuthTextComponents\";\n\nexport interface AuthMutationVariables {\n  emailAddress: string;\n  application: AuthApplicationEnum;\n  addToMailing?: boolean;\n}\n\nconst signupMutation = gql`\n  mutation($emailAddress: String!, $application: AuthApplicationEnum!, $addToMailing: Boolean!) {\n    authSignupEmailSendForApplication(\n      emailAddress: $emailAddress\n      application: $application\n      addToMailing: $addToMailing\n    )\n  }\n`;\n\nconst loginMutation = gql`\n  mutation($emailAddress: String!, $application: AuthApplicationEnum!) {\n    authLoginEmailSendForApplication(emailAddress: $emailAddress, application: $application)\n  }\n`;\n\nexport interface AuthSignupEmailSendResult {\n  data: {\n    authSignupEmailSend: string;\n  };\n}\n\nexport interface AccountEmailAuthProps {\n  applicationType: AuthApplicationEnum;\n  isNewUser: boolean;\n  headerComponent?: JSX.Element;\n  signupPath: string;\n  loginPath: string;\n  onEmailSend(isNewUser: boolean, emailAddress: string): void;\n}\n\nexport type AuthEmailError = \"unknown\" | \"emailexists\" | \"emailnotfound\" | undefined;\n\nexport interface AccountEmailAuthState {\n  emailAddress: string;\n  errorMessage: AuthEmailError;\n  hasAgreedToTOS: boolean;\n  hasSelectedToAddToNewsletter: boolean;\n  hasBlurred: boolean;\n}\n\nexport class AccountEmailAuth extends React.Component<AccountEmailAuthProps, AccountEmailAuthState> {\n  constructor(props: AccountEmailAuthProps) {\n    super(props);\n    this.state = {\n      emailAddress: \"\",\n      errorMessage: undefined,\n      hasAgreedToTOS: false,\n      hasSelectedToAddToNewsletter: false,\n      hasBlurred: false,\n    };\n  }\n\n  public renderEmailInput(): JSX.Element {\n    const { emailAddress, hasBlurred } = this.state;\n\n    const isValid = !hasBlurred || isValidEmail(emailAddress);\n\n    return (\n      <TextInput\n        placeholder=\"Email address\"\n        noLabel\n        type=\"email\"\n        name=\"email\"\n        value={emailAddress}\n        invalidMessage={isValid ? undefined : \"Please enter a valid email.\"}\n        invalid={!isValid}\n        onChange={(_, value) => this.setState({ emailAddress: value, hasBlurred: false })}\n        onBlur={() => this.setState({ hasBlurred: true })}\n      />\n    );\n  }\n\n  public renderCheckboxes(): JSX.Element {\n    const { hasAgreedToTOS, hasSelectedToAddToNewsletter } = this.state;\n\n    return (\n      <CheckboxContainer>\n        <CheckboxSection>\n          <label>\n            <Checkbox size={CheckboxSizes.SMALL} checked={hasAgreedToTOS} onClick={this.toggleHasAgreedToTOS} />\n            <CheckboxLabel>\n              I agree to Civil's {}\n              <a href=\"https://civil.co/terms/\" target=\"_blank\">\n                Privacy Policy and Terms of Use\n              </a>\n            </CheckboxLabel>\n          </label>\n        </CheckboxSection>\n\n        <CheckboxSection>\n          <label>\n            <Checkbox\n              size={CheckboxSizes.SMALL}\n              checked={hasSelectedToAddToNewsletter}\n              onClick={this.toggleHasSelectedToAddToNewsletter}\n            />\n            <CheckboxLabel>Get notified of news and announcements from Civil.</CheckboxLabel>\n          </label>\n        </CheckboxSection>\n      </CheckboxContainer>\n    );\n  }\n\n  public renderAuthError(): JSX.Element {\n    const { errorMessage } = this.state;\n    const { loginPath, signupPath } = this.props;\n\n    if (!errorMessage) {\n      return <></>;\n    }\n\n    if (errorMessage === \"emailnotfound\") {\n      return (\n        <AuthErrorMessage>\n          <AuthTextEmailNotFoundError signupPath={signupPath} />\n        </AuthErrorMessage>\n      );\n    }\n\n    if (errorMessage === \"emailexists\") {\n      return (\n        <AuthErrorMessage>\n          <AuthTextEmailExistsError loginPath={loginPath} />\n        </AuthErrorMessage>\n      );\n    }\n\n    return (\n      <AuthErrorMessage>\n        <AuthTextUnknownError />\n      </AuthErrorMessage>\n    );\n  }\n\n  public render(): JSX.Element {\n    const { isNewUser, headerComponent } = this.props;\n    const { hasAgreedToTOS } = this.state;\n\n    const emailMutation = isNewUser ? signupMutation : loginMutation;\n    const isButtonDisabled = isNewUser && !hasAgreedToTOS;\n\n    return (\n      <>\n        {this.renderAuthError()}\n        {headerComponent}\n        <Mutation<any> mutation={emailMutation}>\n          {sendEmail => {\n            return (\n              <form onSubmit={async event => this.handleSubmit(event, sendEmail)}>\n                {this.renderEmailInput()}\n                {isNewUser && this.renderCheckboxes()}\n                <ConfirmButtonContainer>\n                  <Button\n                    size={buttonSizes.SMALL_WIDE}\n                    textTransform={\"none\"}\n                    disabled={isButtonDisabled}\n                    type={\"submit\"}\n                  >\n                    Confirm\n                  </Button>\n                </ConfirmButtonContainer>\n              </form>\n            );\n          }}\n        </Mutation>\n      </>\n    );\n  }\n\n  public toggleHasAgreedToTOS = (): void => {\n    const { hasAgreedToTOS } = this.state;\n\n    this.setState({ hasAgreedToTOS: !hasAgreedToTOS });\n  };\n\n  public toggleHasSelectedToAddToNewsletter = (): void => {\n    const { hasSelectedToAddToNewsletter } = this.state;\n    this.setState({ hasSelectedToAddToNewsletter: !hasSelectedToAddToNewsletter });\n  };\n\n  private async handleSubmit(event: React.FormEvent, mutation: MutationFn): Promise<void> {\n    event.preventDefault();\n\n    this.setState({ errorMessage: undefined, hasBlurred: true });\n\n    const { emailAddress, hasSelectedToAddToNewsletter } = this.state;\n    const { applicationType, onEmailSend, isNewUser } = this.props;\n\n    if (!isValidEmail(emailAddress)) {\n      return;\n    }\n\n    const resultKey = isNewUser ? \"authSignupEmailSendForApplication\" : \"authLoginEmailSendForApplication\";\n\n    try {\n      const variables: AuthMutationVariables = { emailAddress, application: applicationType };\n\n      if (isNewUser) {\n        variables.addToMailing = hasSelectedToAddToNewsletter;\n      }\n      const res: any = await mutation({\n        variables,\n      });\n\n      const authResponse: string = res.data[resultKey];\n\n      if (authResponse === \"ok\") {\n        onEmailSend(isNewUser, emailAddress);\n      }\n\n      this.setState({ errorMessage: authResponse as AuthEmailError });\n\n      return;\n    } catch (err) {\n      this.setState({ errorMessage: \"unknown\" });\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/EmailSent.tsx",
    "content": "import * as React from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport { CheckEmailSection, AuthPageFooterLink } from \"./AuthStyledComponents\";\nimport { AuthTextEmailSent, AuthTextCheckSpam } from \"./AuthTextComponents\";\n\nexport interface AccountEmailSentProps extends Partial<RouteComponentProps> {\n  isNewUser: boolean;\n  emailAddress: string;\n  onSendAgain?(): void;\n}\n\nexport class AccountEmailSent extends React.Component<AccountEmailSentProps> {\n  public render(): JSX.Element {\n    const { emailAddress, onSendAgain } = this.props;\n\n    return (\n      <>\n        <AuthTextEmailSent emailAddress={emailAddress} />\n\n        <CheckEmailSection />\n\n        <AuthTextCheckSpam />\n\n        <AuthPageFooterLink>\n          {/* // TODO(jorgelo): The link below should have a hover hand. */}\n          <a onClick={onSendAgain}>Hey, I didn’t get an email. Can you send one again?</a>\n        </AuthPageFooterLink>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/EthAuth.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { Mutation, MutationFunc } from \"react-apollo\";\nimport { Civil } from \"@joincivil/core\";\nimport { EthSignedMessage, EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  Transaction,\n  TransactionButtonNoModal,\n  MetaMaskLogoButton,\n  ManagerSectionHeading,\n  MetaMaskModal,\n  ModalHeading,\n  metaMaskSignImgUrl,\n} from \"../../\";\nimport { CivilContext, ICivilContext } from \"../../context\";\n\nexport interface AccountEthAuthProps {\n  civil?: Civil;\n  buttonText?: string;\n  buttonOnly?: boolean;\n  onAuthenticated?(address: EthAddress): void;\n}\n\nexport interface AccountEthAuthState {\n  errorMessage?: string;\n  isWaitingSignatureOpen?: boolean;\n  isSignRejectionOpen?: boolean;\n}\n\nconst setEthAddressMutation = gql`\n  mutation($input: UserSignatureInput!) {\n    userSetEthAddress(input: $input)\n  }\n`;\nconst userEthAddressQuery = gql`\n  query {\n    currentUser {\n      ethAddress\n    }\n  }\n`;\n\nexport class AccountEthAuth extends React.Component<AccountEthAuthProps, AccountEthAuthState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  private _isMounted?: boolean;\n\n  constructor(props: AccountEthAuthProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public render(): JSX.Element {\n    if (this.props.buttonOnly) {\n      return this.renderTransactionUI();\n    }\n\n    return (\n      <>\n        <ManagerSectionHeading>Log into Civil with your crypto wallet</ManagerSectionHeading>\n        <p>\n          Almost there! To set up your Civil account, you need to authenticate your account with a signature. This is\n          similar to signing in with a password. It verifies your account with your crypto wallet.\n        </p>\n\n        <div>\n          <p>MetaMask will open a new window, and will require you to sign a message.</p>\n          {this.renderTransactionUI()}\n          <img src={metaMaskSignImgUrl} />\n        </div>\n      </>\n    );\n  }\n\n  public componentDidMount(): void {\n    this._isMounted = true;\n  }\n  public componentWillUnmount(): void {\n    this._isMounted = false;\n  }\n\n  private renderTransactionUI(): JSX.Element {\n    return (\n      <Mutation<any>\n        mutation={setEthAddressMutation}\n        update={(cache, { data: { userSetEthAddress } }) => {\n          cache.writeQuery({\n            query: userEthAddressQuery,\n            data: {\n              currentUser: {\n                ethAddress: userSetEthAddress,\n                __typename: \"User\",\n              },\n            },\n          });\n        }}\n      >\n        {userSetEthAddress => (\n          <>\n            <TransactionButtonNoModal\n              transactions={this.signTransactions(userSetEthAddress)}\n              Button={props => {\n                return (\n                  <MetaMaskLogoButton onClick={props.onClick}>\n                    {this.props.buttonText || \"Open MetaMask\"}\n                  </MetaMaskLogoButton>\n                );\n              }}\n            />\n\n            {this.renderWaitingSignModal()}\n            {this.renderSignRejectionModal(userSetEthAddress)}\n            {this.renderSaveErrorModal()}\n          </>\n        )}\n      </Mutation>\n    );\n  }\n\n  private renderWaitingSignModal(): JSX.Element | null {\n    if (!this.state.isWaitingSignatureOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal waiting={true} signing={true} cancelTransaction={this.cancelTransaction}>\n        <ModalHeading>Please sign the text in MetaMask to authenticate</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  private renderSignRejectionModal(userSetEthAddress: MutationFunc): JSX.Element | null {\n    if (!this.state.isSignRejectionOpen) {\n      return null;\n    }\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText=\"To authenticate that you own your wallet address, you need to sign the message in your MetaMask wallet.\"\n        cancelTransaction={this.cancelTransaction}\n        restartTransactions={this.signTransactions(userSetEthAddress)}\n      >\n        <ModalHeading>Failed to authenticate your wallet address</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  private renderSaveErrorModal(): JSX.Element | null {\n    if (!this.state.errorMessage) {\n      return null;\n    }\n\n    return (\n      <MetaMaskModal\n        alert={true}\n        bodyText={`Something went wrong when authenticating and saving your wallet address (${this.state.errorMessage}). Please try again later.`}\n        cancelTransaction={this.cancelTransaction}\n      >\n        <ModalHeading>Failed to save your wallet address</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  private signTransactions = (userSetEthAddress: MutationFunc): Transaction[] => {\n    let { civil } = this.context;\n    if (this.props.civil) {\n      civil = this.props.civil;\n    }\n\n    return [\n      {\n        transaction: async (): Promise<EthSignedMessage> => {\n          this.setState({ isWaitingSignatureOpen: true, isSignRejectionOpen: false, errorMessage: undefined });\n          const message = \"I control this address @ \" + new Date().toISOString();\n          return civil!.signMessage(message);\n        },\n        postTransaction: async (sig: EthSignedMessage): Promise<void> => {\n          try {\n            delete sig.rawMessage; // gql endpoint doesn't want this and errors out\n            const res = await userSetEthAddress({\n              variables: {\n                input: sig,\n              },\n            });\n\n            if (res && res.data && res.data.userSetEthAddress) {\n              if (this.props.onAuthenticated) {\n                this.props.onAuthenticated(sig.signer);\n              }\n              if (this._isMounted) {\n                // A bit of an antipattern, but cancelling async/await is hard\n                this.setState({ isWaitingSignatureOpen: false });\n              }\n            } else {\n              console.error(\"Failed to validate and save ETH address. Response:\", res);\n              throw Error(\"Failed to validate and save ETH address\");\n            }\n          } catch (err) {\n            this.setState({\n              isWaitingSignatureOpen: false,\n              errorMessage: err,\n            });\n          }\n        },\n        handleTransactionError: (err: Error) => {\n          this.setState({ isWaitingSignatureOpen: false });\n          if (err.message.indexOf(\"Error: MetaMask Message Signature: User denied message signature.\") !== -1) {\n            this.setState({ isSignRejectionOpen: true });\n          } else {\n            console.error(\"Transaction failed:\", err);\n            this.setState({\n              errorMessage: \"Transaction failed: \" + err.message,\n            });\n          }\n        },\n      },\n    ];\n  };\n\n  private cancelTransaction = () => {\n    this.setState({\n      isWaitingSignatureOpen: false,\n      isSignRejectionOpen: false,\n      errorMessage: undefined,\n    });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/UserSetAvatar.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { UserSetAvatar } from \"../\";\nimport StoryRouter from \"storybook-react-router\";\n\nconst typeDefs = `\n  type User {\n    uid: String\n    email: String\n    ethAddress: String\n  }\n\n  type Query {\n    currentUser: User\n  }\n\n  type Mutation {\n\n    setAvatarMutation(\n      channelID: String\n      avatarDataURL: String\n    ): String\n\n    skipSetAvatarMutation(\n      hasSeen: Boolean!\n    ): String\n\n  }\n\n  schema {\n    query: Query\n    mutation: Mutation\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      currentUser: () => {\n        return \"cool\";\n      },\n    };\n  },\n  Mutation: () => {\n    return {\n      setAvatarMutation: (channelID: string, avatarDataURL: string) => {\n        return \"ok\";\n      },\n      skipSetAvatarMutation: (hasSeen: boolean) => {\n        return \"ok\";\n      },\n    };\n  },\n};\n\nstoriesOf(\"Common / Web3Auth\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .addDecorator(StoryRouter())\n  .add(\"UserSetAvatar\", () => {\n    return (\n      <UserSetAvatar\n        channelID={\"\"}\n        onSetAvatarComplete={() => {\n          console.log(\"Sent\");\n        }}\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Account/Auth/UserSetAvatar.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { Mutation, MutationFn, ApolloConsumer } from \"react-apollo\";\nimport { Button, InvertedButton, buttonSizes } from \"../../Button\";\nimport { SkipForNowButtonContainer } from \"./AuthStyledComponents\";\nimport AvatarEditor from \"react-avatar-editor\";\nimport styled from \"styled-components\";\nimport ApolloClient from \"apollo-client\";\nimport { fonts, mediaQueries } from \"../../styleConstants\";\nimport Slider from \"react-input-slider\";\nimport { colors, ZoomInIcon, ZoomOutIcon } from \"@joincivil/elements\";\nimport { ClipLoader } from \"../../ClipLoader\";\nimport { SimpleImageFileToDataUri } from \"../../input\";\n\nconst setAvatarMutation = gql`\n  mutation($input: ChannelsSetAvatarInput!) {\n    channelsSetAvatar(input: $input) {\n      id\n    }\n  }\n`;\n\nconst skipSetAvatarMutation = gql`\n  mutation {\n    skipUserChannelAvatarPrompt {\n      uid\n    }\n  }\n`;\n\nconst UserSetAvatarContainer = styled.div`\n  width: 400px;\n  ${mediaQueries.MOBILE} {\n    width: 280px;\n  }\n`;\n\nconst AvatarEditorDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: space-between;\n`;\n\nconst CropSpan = styled.span`\n  margin-top: 15px;\n  color: #676767;\n  font-size: 14px;\n  font-weight: 400;\n  letter-spacing: 0.16px;\n  line-height: 17px;\n`;\n\nconst AvatarEditorContainerDiv = styled.div`\n  margin-bottom: 25px;\n`;\n\nconst AvatarEditorInnerDiv = styled.div`\n  margin-top: 15px;\n`;\n\nconst ZoomContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: space-around;\n  width: 336px;\n  ${mediaQueries.MOBILE} {\n    width: 200px;\n  }\n  margin-top: 10px;\n`;\n\nconst ZoomSliderContainer = styled.div``;\nconst ZoomIconContainer = styled.div``;\n\nconst SaveButtonContainer = styled.div`\n  margin-left: 10px;\n`;\n\nconst SkipAndSaveButtonsContainer = styled.div`\n  width: 400px;\n  ${mediaQueries.MOBILE} {\n    width: 280px;\n  }\n  display: flex;\n  justify-content: flex-end;\n`;\n\nconst SkipButton = styled.span`\n  cursor: pointer;\n  color: #2b56ff;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  font-weight: 700;\n  line-height: 16px;\n  width: 158px;\n  text-align: center;\n`;\n\nexport interface UserSetAvatarProps {\n  headerComponent?: JSX.Element;\n  channelID: string;\n  isProfileEdit?: boolean; // true if component is displayed via profile edit flow (as opposed to sign up flow)\n  onSetAvatarComplete?(): void;\n  onSetAvatarCancelled?(): void;\n}\n\nexport interface UserSetAvatarState {\n  avatarDataURL: string;\n  errorMessage: string | undefined;\n  scale: number;\n  image?: any;\n  preview?: PreviewImageState;\n  saveInProgress: boolean;\n  useSmallAvatarEditor: boolean;\n}\n\nexport interface PreviewImageState {\n  image: string;\n  rect: any;\n  scale: number;\n  width: number;\n  height: number;\n  borderRadius: number;\n}\n\nexport class UserSetAvatar extends React.Component<UserSetAvatarProps, UserSetAvatarState> {\n  public editor: AvatarEditor | null;\n\n  constructor(props: UserSetAvatarProps) {\n    super(props);\n    const useSmallAvatarEditor = window.innerWidth < 500;\n    this.state = {\n      avatarDataURL: \"\",\n      errorMessage: undefined,\n      scale: 1.4,\n      saveInProgress: false,\n      useSmallAvatarEditor,\n    };\n    this.editor = null;\n  }\n\n  public render(): JSX.Element {\n    const skipText = this.props.isProfileEdit ? \"Cancel\" : \"Skip for now\";\n    const { headerComponent, channelID } = this.props;\n    return (\n      <UserSetAvatarContainer>\n        {headerComponent}\n        <Mutation<any> mutation={setAvatarMutation}>\n          {setAvatar => {\n            return (\n              <form onSubmit={async event => this.handleSubmit(event, setAvatar, channelID)}>\n                {this.renderAvatarSelector()}\n                {this.state.image && (\n                  <SkipAndSaveButtonsContainer>\n                    <InvertedButton\n                      size={buttonSizes.SMALL}\n                      textTransform={\"none\"}\n                      onClick={() => this.setState({ image: undefined })}\n                      disabled={this.state.saveInProgress}\n                    >\n                      Go back\n                    </InvertedButton>\n                    <SaveButtonContainer>\n                      <Button\n                        size={buttonSizes.SMALL}\n                        textTransform={\"none\"}\n                        type={\"submit\"}\n                        disabled={this.state.saveInProgress}\n                      >\n                        {this.state.saveInProgress && (\n                          <>\n                            Saving <ClipLoader size={16} />\n                          </>\n                        )}\n                        {!this.state.saveInProgress && \"Save\"}\n                      </Button>\n                    </SaveButtonContainer>\n                  </SkipAndSaveButtonsContainer>\n                )}\n              </form>\n            );\n          }}\n        </Mutation>\n        {!this.state.image && (\n          <SkipForNowButtonContainer>\n            <ApolloConsumer>\n              {client => (\n                <SkipButton\n                  onClick={async () => {\n                    if (this.props.isProfileEdit) {\n                      this.onCancelClicked();\n                    } else {\n                      await this.onSkipForNowClicked(client);\n                    }\n                  }}\n                >\n                  {skipText}\n                </SkipButton>\n              )}\n            </ApolloConsumer>\n          </SkipForNowButtonContainer>\n        )}\n      </UserSetAvatarContainer>\n    );\n  }\n\n  public handleNewImage = (e: any) => {\n    this.setState({ image: e });\n  };\n\n  private async onSkipForNowClicked(client: ApolloClient<any>): Promise<void> {\n    const { error } = await client.mutate({\n      mutation: skipSetAvatarMutation,\n    });\n\n    if (error) {\n      this.setState({ errorMessage: error });\n    } else {\n      if (this.props.onSetAvatarComplete) {\n        this.props.onSetAvatarComplete();\n      }\n    }\n  }\n\n  private onCancelClicked(): void {\n    if (this.props.onSetAvatarCancelled) {\n      this.props.onSetAvatarCancelled();\n    }\n  }\n\n  private renderAvatarSelector(): JSX.Element {\n    return (\n      <AvatarEditorContainerDiv>\n        {this.state.image && (\n          <AvatarEditorDiv>\n            <AvatarEditorInnerDiv>\n              <AvatarEditor\n                ref={(el: any) => {\n                  this.editor = el;\n                }}\n                image={this.state.image ? this.state.image : \"\"}\n                width={this.state.useSmallAvatarEditor ? 200 : 336}\n                height={this.state.useSmallAvatarEditor ? 200 : 336}\n                border={0}\n                borderRadius={this.state.useSmallAvatarEditor ? 100 : 168}\n                color={[255, 255, 255, 0.6]} // RGBA\n                scale={this.state.scale}\n                rotate={0}\n              />\n            </AvatarEditorInnerDiv>\n            <CropSpan>Crop your photo</CropSpan>\n            <ZoomContainer>\n              <ZoomIconContainer>\n                <ZoomOutIcon />\n              </ZoomIconContainer>\n              <ZoomSliderContainer>\n                <Slider\n                  styles={{\n                    track: { backgroundColor: colors.accent.CIVIL_GRAY_4, width: 250 },\n                    active: { backgroundColor: colors.accent.CIVIL_GRAY_4 },\n                  }}\n                  axis=\"x\"\n                  xmin={100}\n                  xmax={400}\n                  x={this.state.scale * 100}\n                  onChange={(xy: any) => {\n                    this.setState({ scale: xy.x / 100 });\n                  }}\n                />\n              </ZoomSliderContainer>\n              <ZoomIconContainer>\n                <ZoomInIcon />\n              </ZoomIconContainer>\n            </ZoomContainer>\n          </AvatarEditorDiv>\n        )}\n        {!this.state.image && (\n          <AvatarEditorDiv>\n            <SimpleImageFileToDataUri onChange={this.handleNewImage} />\n          </AvatarEditorDiv>\n        )}\n      </AvatarEditorContainerDiv>\n    );\n  }\n\n  private async handleSubmit(event: React.FormEvent, mutation: MutationFn, channelID: string): Promise<void> {\n    event.preventDefault();\n\n    this.setState({ errorMessage: undefined, saveInProgress: true });\n\n    const croppingRect = this.editor!.getCroppingRect();\n\n    const img = document.createElement(\"img\");\n    img.onload = async (): Promise<void> => {\n      try {\n        const startingX = img.width * croppingRect.x;\n        const startingY = img.height * croppingRect.y;\n        const startingWidth = img.width * croppingRect.width;\n        const startingHeight = img.height * croppingRect.height;\n\n        const canvas = document.createElement(\"canvas\");\n        const ctx = canvas.getContext(\"2d\");\n        canvas.width = 336;\n        canvas.height = 336;\n        ctx!.drawImage(img, startingX, startingY, startingWidth, startingHeight, 0, 0, 336, 336);\n        const avatarDataURL = canvas.toDataURL();\n\n        const res: any = await mutation({\n          variables: {\n            input: { channelID, avatarDataURL },\n          },\n        });\n\n        if (res.data && res.data.channelsSetAvatar && res.data.channelsSetAvatar.id === channelID) {\n          if (this.props.onSetAvatarComplete) {\n            this.props.onSetAvatarComplete();\n          }\n        }\n        if (res.error) {\n          console.log(\"res.error: \", res.error);\n        }\n        return;\n      } catch (err) {\n        const errorMessage = \"Unknown Error when setting avatar. Please contact support@civil.co if problem persists.\";\n        this.setState({ errorMessage, saveInProgress: false });\n      }\n    };\n    img.src = this.state.image!;\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/UserSetEmail.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { UserSetEmail } from \"../\";\nimport StoryRouter from \"storybook-react-router\";\n\nconst typeDefs = `\n  type User {\n    uid: String\n    email: String\n    ethAddress: String\n  }\n\n  type AuthLoginResponse {\n    token: String\n    refreshToken: String\n    uid: String\n  }\n\n  type Query {\n    currentUser: User\n  }\n\n  type Mutation {\n\n    authSignupEmailSendForApplication(\n      email: String\n      application: String\n    ): String\n\n    authSignupEmailConfirm(\n      signupJWT: String!\n    ): AuthLoginResponse\n\n    authSignupEmailSend(\n      emailAddress: String!\n    ): String\n\n  }\n\n  schema {\n    query: Query\n    mutation: Mutation\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      currentUser: () => {\n        return \"cool\";\n      },\n    };\n  },\n  Mutation: () => {\n    return {\n      authSignupEmailSend: (email: string) => {\n        return \"ok\";\n      },\n      authSignupEmailSendForApplication: (email: string, application: string) => {\n        return \"ok\";\n      },\n    };\n  },\n};\n\nstoriesOf(\"Common / Web3Auth\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .addDecorator(StoryRouter())\n  .add(\"UserSetEmail\", () => {\n    return (\n      <UserSetEmail\n        channelID={\"\"}\n        onSetEmailComplete={() => {\n          console.log(\"Sent\");\n        }}\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Account/Auth/UserSetEmail.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { Mutation, MutationFn, ApolloConsumer } from \"react-apollo\";\nimport { Checkbox, CheckboxSizes } from \"../../input/Checkbox\";\nimport { Button, buttonSizes } from \"../../Button\";\nimport { TextInput } from \"../../input\";\nimport {\n  CheckboxSection,\n  CheckboxContainer,\n  CheckboxLabel,\n  ConfirmButtonContainer,\n  AuthErrorMessage,\n  SkipForNowButtonContainer,\n} from \"./AuthStyledComponents\";\nimport { isValidEmail } from \"@joincivil/utils\";\nimport { AuthTextUnknownError } from \"./AuthTextComponents\";\nimport styled from \"styled-components\";\nimport { fonts } from \"../../styleConstants\";\nimport ApolloClient from \"apollo-client\";\n\nconst HeaderDiv = styled.div`\n  color: #000000;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 24px;\n  font-weight: 700;\n  line-height: 32px;\n  width: 298px;\n  text-align: left;\n`;\n\nconst SubHeaderDiv = styled.div`\n  color: #3f3c39;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  font-weight: 400;\n  line-height: 26px;\n  width: 298px;\n  text-align: left;\n`;\n\nconst SkipButton = styled.span`\n  cursor: pointer;\n  color: #2b56ff;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 26px;\n  width: 82px;\n  text-align: center;\n  background-color: #ffffff;\n`;\n\nconst setEmailMutation = gql`\n  mutation($input: ChannelsSetEmailInput!) {\n    userChannelSetEmail(input: $input) {\n      id\n    }\n  }\n`;\n\nconst skipSetEmailMutation = gql`\n  mutation {\n    skipUserChannelEmailPrompt {\n      uid\n    }\n  }\n`;\n\nexport interface UserSetEmailProps {\n  channelID: string;\n  isProfileEdit?: boolean; // true if component is displayed via profile edit flow (as opposed to sign up flow)\n  onSetEmailComplete?(): void;\n  onSetEmailCancelled?(): void;\n}\n\nexport type UserSetEmailError = \"unknown\" | \"emailexists\" | \"emailnotfound\" | undefined;\n\nexport interface UserSetEmailState {\n  emailAddress: string;\n  errorMessage: UserSetEmailError;\n  hasSelectedToAddToNewsletter: boolean;\n  hasBlurred: boolean;\n  disabled: boolean;\n}\n\nexport class UserSetEmail extends React.Component<UserSetEmailProps, UserSetEmailState> {\n  constructor(props: UserSetEmailProps) {\n    super(props);\n    this.state = {\n      emailAddress: \"\",\n      errorMessage: undefined,\n      hasSelectedToAddToNewsletter: true,\n      hasBlurred: false,\n      disabled: false,\n    };\n  }\n\n  public renderEmailInput(): JSX.Element {\n    const { emailAddress, hasBlurred } = this.state;\n\n    const isValid = !hasBlurred || isValidEmail(emailAddress);\n\n    return (\n      <TextInput\n        placeholder=\"Email address\"\n        noLabel\n        type=\"email\"\n        name=\"email\"\n        value={emailAddress}\n        invalidMessage={isValid ? undefined : \"Please enter a valid email.\"}\n        invalid={!isValid}\n        onChange={(_, value) => this.setState({ emailAddress: value, hasBlurred: false })}\n        onBlur={() => this.setState({ hasBlurred: true })}\n      />\n    );\n  }\n\n  public renderAuthError(): JSX.Element {\n    const { errorMessage } = this.state;\n\n    if (!errorMessage) {\n      return <></>;\n    }\n\n    return (\n      <AuthErrorMessage>\n        <AuthTextUnknownError />\n      </AuthErrorMessage>\n    );\n  }\n\n  public render(): JSX.Element {\n    const headerText = this.props.isProfileEdit ? \"Set Email\" : \"Almost done!\";\n    const skipText = this.props.isProfileEdit ? \"Cancel\" : \"Skip for now\";\n    return (\n      <>\n        {this.renderAuthError()}\n        <HeaderDiv>{headerText}</HeaderDiv>\n        <SubHeaderDiv>\n          To receive payment confirmations and account-related alerts, please enter your email address.\n        </SubHeaderDiv>\n        <Mutation<any> mutation={setEmailMutation}>\n          {sendEmail => {\n            return (\n              <form onSubmit={async event => this.handleSubmit(event, sendEmail)}>\n                {this.renderEmailInput()}\n                {this.renderCheckboxes()}\n                <ConfirmButtonContainer>\n                  <Button\n                    size={buttonSizes.SMALL_WIDE}\n                    textTransform={\"none\"}\n                    type={\"submit\"}\n                    disabled={this.state.disabled}\n                  >\n                    Save Email\n                  </Button>\n                </ConfirmButtonContainer>\n              </form>\n            );\n          }}\n        </Mutation>\n\n        <SkipForNowButtonContainer>\n          <ApolloConsumer>\n            {client => (\n              <SkipButton\n                onClick={async () => {\n                  if (!this.state.disabled) {\n                    if (this.props.isProfileEdit) {\n                      this.onCancelClicked();\n                    } else {\n                      await this.onSkipForNowClicked(client);\n                    }\n                  }\n                }}\n              >\n                {skipText}\n              </SkipButton>\n            )}\n          </ApolloConsumer>\n        </SkipForNowButtonContainer>\n      </>\n    );\n  }\n\n  public renderCheckboxes(): JSX.Element {\n    const { hasSelectedToAddToNewsletter } = this.state;\n\n    return (\n      <CheckboxContainer>\n        <CheckboxSection>\n          <label>\n            <Checkbox\n              size={CheckboxSizes.SMALL}\n              checked={hasSelectedToAddToNewsletter}\n              onClick={this.toggleHasSelectedToAddToNewsletter}\n            />\n            <CheckboxLabel>\n              Also get email alerts when new events occur on the Civil Registry to help participate in Civil's\n              governance.\n            </CheckboxLabel>\n          </label>\n        </CheckboxSection>\n      </CheckboxContainer>\n    );\n  }\n\n  public toggleHasSelectedToAddToNewsletter = (): void => {\n    const { hasSelectedToAddToNewsletter } = this.state;\n    this.setState({ hasSelectedToAddToNewsletter: !hasSelectedToAddToNewsletter });\n  };\n\n  private async onSkipForNowClicked(client: ApolloClient<any>): Promise<void> {\n    this.setState({ disabled: true });\n    const { error } = await client.mutate({\n      mutation: skipSetEmailMutation,\n    });\n\n    if (error) {\n      this.setState({ errorMessage: error, disabled: false });\n    } else {\n      if (this.props.onSetEmailComplete) {\n        this.setState({ disabled: false });\n        this.props.onSetEmailComplete();\n      }\n    }\n  }\n\n  private onCancelClicked(): void {\n    this.setState({ disabled: true });\n\n    if (this.props.onSetEmailCancelled) {\n      this.setState({ disabled: false });\n      this.props.onSetEmailCancelled();\n    }\n  }\n\n  private async handleSubmit(event: React.FormEvent, mutation: MutationFn): Promise<void> {\n    event.preventDefault();\n\n    this.setState({ errorMessage: undefined, hasBlurred: true, disabled: true });\n\n    const { emailAddress, hasSelectedToAddToNewsletter } = this.state;\n    const { channelID } = this.props;\n\n    if (!isValidEmail(emailAddress)) {\n      return;\n    }\n\n    try {\n      const variables = {\n        input: {\n          emailAddress,\n          channelID,\n          addToMailing: hasSelectedToAddToNewsletter,\n        },\n      };\n\n      await mutation({\n        variables,\n      });\n\n      if (this.props.onSetEmailComplete) {\n        this.props.onSetEmailComplete();\n        this.setState({ disabled: false });\n      }\n\n      return;\n    } catch (err) {\n      this.setState({ errorMessage: \"unknown\", disabled: false });\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/UserSetHandle.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { Mutation, MutationFn, ApolloConsumer } from \"react-apollo\";\nimport { Button, buttonSizes } from \"../../Button\";\nimport { TextInput } from \"../../input\";\nimport { ConfirmButtonContainer } from \"./AuthStyledComponents\";\nimport { isValidHandle, getCurrentUserQuery } from \"@joincivil/utils\";\nimport ApolloClient from \"apollo-client\";\nimport { debounce } from \"lodash\";\n\nconst setHandleMutation = gql`\n  mutation($input: ChannelsSetHandleInput!) {\n    channelsSetHandle(input: $input) {\n      id\n    }\n  }\n`;\n\nconst checkHandleUniqueQuery = gql`\n  query($handle: String!) {\n    channelsIsHandleAvailable(handle: $handle)\n  }\n`;\n\nexport interface UserSetHandleAuthProps {\n  headerComponent?: JSX.Element;\n  channelID: string;\n  onSetHandleComplete?(): void;\n}\n\nconst ERROR_MESSAGE_INVALID_HANDLE =\n  \"Please enter a valid username. Usernames must be 4-15 characters, with no spaces or special characters other than underscores.\";\nconst ERROR_MESSAGE_NOT_UNIQUE = \"That username is already in use. Please try another.\";\n\nexport interface UserSetHandleAuthState {\n  handle: string;\n  errorMessage: string | undefined;\n  hasBlurred: boolean;\n  isHandleUnique: boolean;\n}\n\nexport class UserSetHandle extends React.Component<UserSetHandleAuthProps, UserSetHandleAuthState> {\n  constructor(props: UserSetHandleAuthProps) {\n    super(props);\n    this.state = {\n      handle: \"\",\n      errorMessage: undefined,\n      hasBlurred: false,\n      isHandleUnique: true,\n    };\n    this.checkHandleUniqueness = debounce(this.checkHandleUniqueness.bind(this), 1000);\n  }\n\n  public renderHandleInput(): JSX.Element {\n    const { handle, isHandleUnique, errorMessage } = this.state;\n    let isError = false;\n    if (errorMessage) {\n      isError = true;\n    }\n    const isValid = isValidHandle(handle);\n\n    let invalidMessage: string | undefined = errorMessage;\n    if (!isValid) {\n      invalidMessage = ERROR_MESSAGE_INVALID_HANDLE;\n    } else if (!isHandleUnique) {\n      invalidMessage = ERROR_MESSAGE_NOT_UNIQUE;\n    }\n\n    return (\n      <ApolloConsumer>\n        {client => (\n          <TextInput\n            placeholder=\"username\"\n            noLabel\n            type=\"text\"\n            name=\"username\"\n            value={handle}\n            invalidMessage={invalidMessage}\n            invalid={!isValid || !isHandleUnique || isError}\n            onChange={(_, value) => {\n              this.setState({ handle: value, hasBlurred: false, errorMessage: undefined, isHandleUnique: true });\n              // tslint:disable-next-line\n              this.checkHandleUniqueness(value, client);\n            }}\n            onBlur={() => this.setState({ hasBlurred: true })}\n          />\n        )}\n      </ApolloConsumer>\n    );\n  }\n\n  public render(): JSX.Element {\n    const { headerComponent, channelID } = this.props;\n    const isButtonDisabled = !isValidHandle(this.state.handle) || !this.state.isHandleUnique;\n\n    return (\n      <>\n        {headerComponent}\n        <Mutation<any> mutation={setHandleMutation}>\n          {setHandle => {\n            return (\n              <form onSubmit={async event => this.handleSubmit(event, setHandle, channelID)}>\n                {this.renderHandleInput()}\n                <ConfirmButtonContainer>\n                  <Button\n                    size={buttonSizes.SMALL_WIDE}\n                    textTransform={\"none\"}\n                    disabled={isButtonDisabled}\n                    type={\"submit\"}\n                  >\n                    Confirm\n                  </Button>\n                </ConfirmButtonContainer>\n              </form>\n            );\n          }}\n        </Mutation>\n      </>\n    );\n  }\n\n  private checkHandleUniqueness = async (val: any, client: ApolloClient<any>): Promise<void> => {\n    const result = await client.query({ query: checkHandleUniqueQuery, variables: { handle: val } });\n    const isHandleUnique = result.data && result.data.channelsIsHandleAvailable;\n    this.setState({ isHandleUnique });\n  };\n\n  private async handleSubmit(event: React.FormEvent, mutation: MutationFn, channelID: string): Promise<void> {\n    event.preventDefault();\n\n    this.setState({ errorMessage: undefined, hasBlurred: true });\n\n    const { handle } = this.state;\n\n    if (!isValidHandle(handle)) {\n      return;\n    }\n\n    try {\n      const res: any = await mutation({\n        variables: {\n          input: { channelID, handle },\n        },\n        refetchQueries: [\n          {\n            query: getCurrentUserQuery,\n          },\n        ],\n      });\n\n      if (res.data && res.data.channelsSetHandle && res.data.channelsSetHandle.id === channelID) {\n        if (this.props.onSetHandleComplete) {\n          this.props.onSetHandleComplete();\n        }\n      }\n      if (res.error) {\n        console.log(\"res.error: \", res.error);\n      }\n\n      return;\n    } catch (err) {\n      let errorMessage = \"Unknown Error when setting username. Please contact support@civil.co if problem persists.\";\n      if (err.toString().includes(\"invalid handle\")) {\n        errorMessage = ERROR_MESSAGE_INVALID_HANDLE;\n      } else if (err.toString().includes(\"not unique\")) {\n        errorMessage = ERROR_MESSAGE_NOT_UNIQUE;\n      }\n      this.setState({ errorMessage });\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/VerifyToken.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { AuthEmailVerify } from \"./AuthStyledComponents\";\n\nconst onAuthenticationContinue = (): void => {\n  console.log(\"Click\");\n  return;\n};\n\nstoriesOf(\"Common / Auth / VerifyToken\", module)\n  .add(\"Loading\", () => {\n    return (\n      <AuthEmailVerify\n        hasVerified={false}\n        errorMessage={undefined}\n        onAuthenticationContinue={onAuthenticationContinue}\n      />\n    );\n  })\n  .add(\"Error\", () => {\n    return (\n      <AuthEmailVerify\n        hasVerified={true}\n        errorMessage={\"Error is bad\"}\n        onAuthenticationContinue={onAuthenticationContinue}\n      />\n    );\n  })\n  .add(\"Complete\", () => {\n    return (\n      <AuthEmailVerify\n        hasVerified={true}\n        errorMessage={undefined}\n        onAuthenticationContinue={onAuthenticationContinue}\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Account/Auth/VerifyToken.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { setApolloSession, getApolloClient } from \"@joincivil/utils\";\nimport { AuthLoginResponse } from \"..\";\nimport { AuthEmailVerify } from \"./AuthStyledComponents\";\n\nconst verifySignUpTokenMutation = gql`\n  mutation($token: String!) {\n    authSignupEmailConfirm(signupJWT: $token) {\n      token\n      refreshToken\n      uid\n    }\n  }\n`;\n\nconst verifyLoginTokenMutation = gql`\n  mutation($token: String!) {\n    authLoginEmailConfirm(loginJWT: $token) {\n      token\n      refreshToken\n      uid\n    }\n  }\n`;\n\nexport interface AccountVerifyTokenProps {\n  isNewUser: boolean;\n  token: string;\n  ethAuthNextExt?: boolean;\n  onAuthenticationContinue(isNewUser: boolean): void;\n}\n\nexport interface VerifyTokenState {\n  hasVerified: boolean;\n  errorMessage: string | undefined;\n}\n\nexport class AccountVerifyToken extends React.Component<AccountVerifyTokenProps, VerifyTokenState> {\n  public state = {\n    hasVerified: false,\n    errorMessage: undefined,\n  };\n\n  constructor(props: AccountVerifyTokenProps) {\n    super(props);\n  }\n\n  public async componentDidMount(): Promise<void> {\n    return this.handleTokenVerification();\n  }\n\n  public handleTokenVerification = async (): Promise<void> => {\n    const { isNewUser } = this.props;\n    const token = this.props.token;\n\n    const client = getApolloClient();\n\n    const verifyMutation = isNewUser ? verifySignUpTokenMutation : verifyLoginTokenMutation;\n    const resultKey = isNewUser ? \"authSignupEmailConfirm\" : \"authLoginEmailConfirm\";\n\n    try {\n      const { data, error } = await client.mutate({\n        mutation: verifyMutation,\n        variables: { token },\n      });\n\n      if (error) {\n        console.log(\"Error authenticating:\", error);\n        const errorMessage = error.graphQLErrors.map((e: any) => e.message).join(\" ,\");\n        this.setState({ errorMessage, hasVerified: true });\n      } else {\n        const authResponse: AuthLoginResponse = data[resultKey];\n        setApolloSession(authResponse);\n\n        this.setState({ errorMessage: undefined, hasVerified: true });\n      }\n    } catch (err) {\n      console.error(\"Error validating token:\", err);\n      this.setState({ errorMessage: \"There was a problem validating your token.\", hasVerified: true });\n    }\n  };\n\n  public render(): JSX.Element {\n    const { hasVerified, errorMessage } = this.state;\n    const { onAuthenticationContinue, isNewUser, ethAuthNextExt } = this.props;\n    return (\n      <AuthEmailVerify\n        hasVerified={hasVerified}\n        errorMessage={errorMessage}\n        ethAuthNextExt={ethAuthNextExt}\n        onAuthenticationContinue={() => onAuthenticationContinue(isNewUser)}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Account/Auth/__snapshots__/EmailAuth.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Auth / Email Signup Flow AccountEmailAuth 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <form\n      onSubmit={[Function]}\n    >\n      <div\n        className=\" sc-fzXfNe laEExU\"\n      >\n        <input\n          className=\"sc-fzXfNe laEExU\"\n          name=\"email\"\n          onBlur={[Function]}\n          onChange={[Function]}\n          placeholder=\"Email address\"\n          type=\"email\"\n          value=\"\"\n        />\n      </div>\n      <ul\n        className=\"sc-LzNxg kPxOaw\"\n      >\n        <li\n          className=\"sc-LzNxh jqIvYg\"\n        >\n          <label>\n            <label\n              className=\"sc-fzXfPL kIKmHS\"\n              size=\"SMALL\"\n            >\n              <input\n                checked={false}\n                onChange={[Function]}\n                type=\"checkbox\"\n              />\n              <span\n                className=\"sc-fzXfPK buXQoO\"\n                size=\"SMALL\"\n              />\n            </label>\n            <span\n              className=\"sc-LzNMk datAnQ\"\n            >\n              I agree to Civil's \n              <a\n                href=\"https://civil.co/terms/\"\n                target=\"_blank\"\n              >\n                Privacy Policy and Terms of Use\n              </a>\n            </span>\n          </label>\n        </li>\n        <li\n          className=\"sc-LzNxh jqIvYg\"\n        >\n          <label>\n            <label\n              className=\"sc-fzXfPL kIKmHS\"\n              size=\"SMALL\"\n            >\n              <input\n                checked={false}\n                onChange={[Function]}\n                type=\"checkbox\"\n              />\n              <span\n                className=\"sc-fzXfPK buXQoO\"\n                size=\"SMALL\"\n              />\n            </label>\n            <span\n              className=\"sc-LzNMk datAnQ\"\n            >\n              Get notified of news and announcements from Civil.\n            </span>\n          </label>\n        </li>\n      </ul>\n      <div\n        className=\"sc-LzNMl dNkIHv\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP jQPtEb disabled\"\n          disabled={true}\n          size=\"SMALL_WIDE\"\n          textTransform=\"none\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"submit\"\n        >\n          Confirm\n        </button>\n      </div>\n    </form>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Auth / Email Signup Flow\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            AccountEmailAuth\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Account/Auth/__snapshots__/EthAuth.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Auth / ETH AccountEthAuth Component 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOi jYxZdE\"\n    >\n      <h4\n        className=\"sc-fzXfOu krRwNC\"\n      >\n        Log into Civil with your crypto wallet\n      </h4>\n      <p>\n        Almost there! To set up your Civil account, you need to authenticate your account with a signature. This is similar to signing in with a password. It verifies your account with your crypto wallet.\n      </p>\n      <div>\n        <p>\n          MetaMask will open a new window, and will require you to sign a message.\n        </p>\n        \n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzMWx lXVf\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          <div\n            className=\"sc-LzMWy jWlPTV\"\n          >\n            <img\n              className=\"sc-AykKH jXAxor\"\n              src=\"test-file-stub\"\n            />\n          </div>\n          Open MetaMask\n        </button>\n        <img\n          src=\"test-file-stub\"\n        />\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Auth / ETH\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            AccountEthAuth Component\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Unknown\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          value\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  civil\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    ethApi\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span>\n                                      <br />\n                                            \n                                        \n                                    </span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      rpcId\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#a11\",\n                                      }\n                                    }\n                                  >\n                                    10000\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span>\n                                      <br />\n                                            \n                                        \n                                    </span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      web3\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    {\n                                    <span>\n                                      <span>\n                                        <br />\n                                                \n                                          \n                                      </span>\n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        currentProvider\n                                      </span>\n                                    </span>\n                                    : \n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      {\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          host\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#22a\",\n                                            \"wordBreak\": \"break-word\",\n                                          }\n                                        }\n                                      >\n                                        'http://localhost:8033'\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          httpAgent\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            domain\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#444\",\n                                            }\n                                          }\n                                        >\n                                          null\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            _events\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          {\n                                          <span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              free\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#170\",\n                                              }\n                                            }\n                                          >\n                                            anonymous\n                                          </span>\n                                          }\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            _eventsCount\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#a11\",\n                                            }\n                                          }\n                                        >\n                                          1\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          …\n                                        </span>\n                                        <span>\n                                          <br />\n                                                      \n                                        </span>\n                                        }\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          timeout\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#a11\",\n                                          }\n                                        }\n                                      >\n                                        0\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        …\n                                      </span>\n                                      <span>\n                                        <br />\n                                                  \n                                      </span>\n                                      }\n                                    </span>\n                                    ,\n                                    <span>\n                                      <span>\n                                        <br />\n                                                \n                                          \n                                      </span>\n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        _requestManager\n                                      </span>\n                                    </span>\n                                    : \n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      {\n                                      <span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          provider\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            host\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#22a\",\n                                              \"wordBreak\": \"break-word\",\n                                            }\n                                          }\n                                        >\n                                          'http://localhost:8033'\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            httpAgent\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          {\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              domain\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#444\",\n                                              }\n                                            }\n                                          >\n                                            null\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              _events\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            {\n                                            <span>\n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#666\",\n                                                  }\n                                                }\n                                              >\n                                                free\n                                              </span>\n                                            </span>\n                                            : \n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#170\",\n                                                }\n                                              }\n                                            >\n                                              anonymous\n                                            </span>\n                                            }\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              _eventsCount\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#a11\",\n                                              }\n                                            }\n                                          >\n                                            1\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            …\n                                          </span>\n                                          <span>\n                                            <br />\n                                                          \n                                          </span>\n                                          }\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            timeout\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#a11\",\n                                            }\n                                          }\n                                        >\n                                          0\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          …\n                                        </span>\n                                        <span>\n                                          <br />\n                                                      \n                                        </span>\n                                        }\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          providers\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        <span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            WebsocketProvider\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#170\",\n                                            }\n                                          }\n                                        >\n                                          WebsocketProvider\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            HttpProvider\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#170\",\n                                            }\n                                          }\n                                        >\n                                          HttpProvider\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            IpcProvider\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#170\",\n                                            }\n                                          }\n                                        >\n                                          IpcProvider\n                                        </span>\n                                        }\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          subscriptions\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        }\n                                      </span>\n                                      }\n                                    </span>\n                                    ,\n                                    <span>\n                                      <span>\n                                        <br />\n                                                \n                                          \n                                      </span>\n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        givenProvider\n                                      </span>\n                                    </span>\n                                    : \n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#444\",\n                                        }\n                                      }\n                                    >\n                                      null\n                                    </span>\n                                    ,\n                                    <span>\n                                      <span>\n                                        <br />\n                                                \n                                          \n                                      </span>\n                                      …\n                                    </span>\n                                    <span>\n                                      <br />\n                                              \n                                    </span>\n                                    }\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span>\n                                      <br />\n                                            \n                                        \n                                    </span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      abiDecoder\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    {\n                                    <span>\n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        savedABIs\n                                      </span>\n                                    </span>\n                                    : \n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      [\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          {\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              constant\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#a11\",\n                                              }\n                                            }\n                                          >\n                                            true\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              inputs\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            [\n                                            ]\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              name\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#22a\",\n                                                \"wordBreak\": \"break-word\",\n                                              }\n                                            }\n                                          >\n                                            'PROCESSBY'\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            …\n                                          </span>\n                                          <span>\n                                            <br />\n                                                        \n                                          </span>\n                                          }\n                                        </span>\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          {\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              constant\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#a11\",\n                                              }\n                                            }\n                                          >\n                                            false\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              inputs\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            [\n                                            <span>\n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#666\",\n                                                  }\n                                                }\n                                              >\n                                                {\n                                                <span>\n                                                  <span\n                                                    style={\n                                                      Object {\n                                                        \"color\": \"#666\",\n                                                      }\n                                                    }\n                                                  >\n                                                    name\n                                                  </span>\n                                                </span>\n                                                : \n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#22a\",\n                                                      \"wordBreak\": \"break-word\",\n                                                    }\n                                                  }\n                                                >\n                                                  '_propID'\n                                                </span>\n                                                ,\n                                                <span>\n                                                  <span\n                                                    style={\n                                                      Object {\n                                                        \"color\": \"#666\",\n                                                      }\n                                                    }\n                                                  >\n                                                    type\n                                                  </span>\n                                                </span>\n                                                : \n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#22a\",\n                                                      \"wordBreak\": \"break-word\",\n                                                    }\n                                                  }\n                                                >\n                                                  'bytes32'\n                                                </span>\n                                                }\n                                              </span>\n                                            </span>\n                                            ]\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              name\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#22a\",\n                                                \"wordBreak\": \"break-word\",\n                                              }\n                                            }\n                                          >\n                                            'processProposal'\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            …\n                                          </span>\n                                          <span>\n                                            <br />\n                                                        \n                                          </span>\n                                          }\n                                        </span>\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          {\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              constant\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#a11\",\n                                              }\n                                            }\n                                          >\n                                            true\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              inputs\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            [\n                                            <span>\n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#666\",\n                                                  }\n                                                }\n                                              >\n                                                {\n                                                <span>\n                                                  <span\n                                                    style={\n                                                      Object {\n                                                        \"color\": \"#666\",\n                                                      }\n                                                    }\n                                                  >\n                                                    name\n                                                  </span>\n                                                </span>\n                                                : \n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#22a\",\n                                                      \"wordBreak\": \"break-word\",\n                                                    }\n                                                  }\n                                                >\n                                                  ''\n                                                </span>\n                                                ,\n                                                <span>\n                                                  <span\n                                                    style={\n                                                      Object {\n                                                        \"color\": \"#666\",\n                                                      }\n                                                    }\n                                                  >\n                                                    type\n                                                  </span>\n                                                </span>\n                                                : \n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#22a\",\n                                                      \"wordBreak\": \"break-word\",\n                                                    }\n                                                  }\n                                                >\n                                                  'bytes32'\n                                                </span>\n                                                }\n                                              </span>\n                                            </span>\n                                            ]\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              name\n                                            </span>\n                                          </span>\n                                          : \n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#22a\",\n                                                \"wordBreak\": \"break-word\",\n                                              }\n                                            }\n                                          >\n                                            'proposals'\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                          \n                                                \n                                            </span>\n                                            …\n                                          </span>\n                                          <span>\n                                            <br />\n                                                        \n                                          </span>\n                                          }\n                                        </span>\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        …\n                                      </span>\n                                      <span>\n                                        <br />\n                                                  \n                                      </span>\n                                      ]\n                                    </span>\n                                    ,\n                                    <span>\n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        methodIds\n                                      </span>\n                                    </span>\n                                    : \n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      {\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          0xb25bdef16105f099e5c185f9c7fd969571e8e0caa3f7bd75409512fe0a41a60b\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            anonymous\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#a11\",\n                                            }\n                                          }\n                                        >\n                                          false\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            inputs\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          [\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'name'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'string'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'value'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'uint256'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'propID'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'bytes32'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            …\n                                          </span>\n                                          <span>\n                                            <br />\n                                                          \n                                          </span>\n                                          ]\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            name\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#22a\",\n                                              \"wordBreak\": \"break-word\",\n                                            }\n                                          }\n                                        >\n                                          '_ReparameterizationProposal'\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          …\n                                        </span>\n                                        <span>\n                                          <br />\n                                                      \n                                        </span>\n                                        }\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          0xe94e3086c4bfe84acba4437b85a80fca3721dfc419d1f7afe4fa4e470e670b48\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            anonymous\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#a11\",\n                                            }\n                                          }\n                                        >\n                                          false\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            inputs\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          [\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                true\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'propID'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'bytes32'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'challengeID'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'uint256'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'commitEndDate'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'uint256'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span>\n                                              <br />\n                                                            \n                                                \n                                            </span>\n                                            …\n                                          </span>\n                                          <span>\n                                            <br />\n                                                          \n                                          </span>\n                                          ]\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            name\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#22a\",\n                                              \"wordBreak\": \"break-word\",\n                                            }\n                                          }\n                                        >\n                                          '_NewChallenge'\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          …\n                                        </span>\n                                        <span>\n                                          <br />\n                                                      \n                                        </span>\n                                        }\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          0x37f3986c71e1aa2c470cfc4a92af70820610c3065589d35ef1664ea27f3e73a5\n                                        </span>\n                                      </span>\n                                      : \n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            anonymous\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#a11\",\n                                            }\n                                          }\n                                        >\n                                          false\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            inputs\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#666\",\n                                            }\n                                          }\n                                        >\n                                          [\n                                          <span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                true\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'propID'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'bytes32'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'name'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'string'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ,\n                                          <span>\n                                            <span\n                                              style={\n                                                Object {\n                                                  \"color\": \"#666\",\n                                                }\n                                              }\n                                            >\n                                              {\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  indexed\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#a11\",\n                                                  }\n                                                }\n                                              >\n                                                false\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  name\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'value'\n                                              </span>\n                                              ,\n                                              <span>\n                                                <span\n                                                  style={\n                                                    Object {\n                                                      \"color\": \"#666\",\n                                                    }\n                                                  }\n                                                >\n                                                  type\n                                                </span>\n                                              </span>\n                                              : \n                                              <span\n                                                style={\n                                                  Object {\n                                                    \"color\": \"#22a\",\n                                                    \"wordBreak\": \"break-word\",\n                                                  }\n                                                }\n                                              >\n                                                'uint256'\n                                              </span>\n                                              }\n                                            </span>\n                                          </span>\n                                          ]\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          <span\n                                            style={\n                                              Object {\n                                                \"color\": \"#666\",\n                                              }\n                                            }\n                                          >\n                                            name\n                                          </span>\n                                        </span>\n                                        : \n                                        <span\n                                          style={\n                                            Object {\n                                              \"color\": \"#22a\",\n                                              \"wordBreak\": \"break-word\",\n                                            }\n                                          }\n                                        >\n                                          '_ProposalAccepted'\n                                        </span>\n                                        ,\n                                        <span>\n                                          <span>\n                                            <br />\n                                                        \n                                              \n                                          </span>\n                                          …\n                                        </span>\n                                        <span>\n                                          <br />\n                                                      \n                                        </span>\n                                        }\n                                      </span>\n                                      ,\n                                      <span>\n                                        <span>\n                                          <br />\n                                                    \n                                            \n                                        </span>\n                                        …\n                                      </span>\n                                      <span>\n                                        <br />\n                                                  \n                                      </span>\n                                      }\n                                    </span>\n                                    }\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span>\n                                      <br />\n                                            \n                                        \n                                    </span>\n                                    …\n                                  </span>\n                                  <span>\n                                    <br />\n                                          \n                                  </span>\n                                  }\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    contentProvider\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      providers\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    [\n                                    <span>\n                                      <span\n                                        style={\n                                          Object {\n                                            \"color\": \"#666\",\n                                          }\n                                        }\n                                      >\n                                        {\n                                        }\n                                      </span>\n                                    </span>\n                                    ]\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  auth\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span>\n                                    <br />\n                                        \n                                      \n                                  </span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    currentUser\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#444\",\n                                    }\n                                  }\n                                >\n                                  null\n                                </span>\n                                ,\n                                <span>\n                                  <span>\n                                    <br />\n                                        \n                                      \n                                  </span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    loading\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  false\n                                </span>\n                                ,\n                                <span>\n                                  <span>\n                                    <br />\n                                        \n                                      \n                                  </span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    apolloClient\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#444\",\n                                    }\n                                  }\n                                >\n                                  null\n                                </span>\n                                ,\n                                <span>\n                                  <span>\n                                    <br />\n                                        \n                                      \n                                  </span>\n                                  …\n                                </span>\n                                <span>\n                                  <br />\n                                      \n                                </span>\n                                }\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  features\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    featureFlags\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  [\n                                  ]\n                                </span>\n                                }\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        styled.div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        AccountEthAuth\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            onAuthenticated\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              {\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#170\",\n                                  }\n                                }\n                              >\n                                onAuthenticated\n                              </span>\n                              }\n                            </span>\n                          </span>\n                           \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        /&gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        styled.div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Unknown\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AccountEthAuth\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Unknown\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Account/Auth/__snapshots__/UserSetAvatar.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Web3Auth UserSetAvatar 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNMU gVxck\"\n    >\n      <form\n        onSubmit={[Function]}\n      >\n        <div\n          className=\"sc-LzNMX kOJNQX\"\n        >\n          <div\n            className=\"sc-LzNMV KexCz\"\n          >\n            <div\n              className=\"sc-fzXfQr dDoQzg\"\n            >\n              <section>\n                <div\n                  className=\"sc-fzXfQq kzdwoe\"\n                  onBlur={[Function]}\n                  onClick={[Function]}\n                  onDragEnter={[Function]}\n                  onDragLeave={[Function]}\n                  onDragOver={[Function]}\n                  onDrop={[Function]}\n                  onFocus={[Function]}\n                  onKeyDown={[Function]}\n                  tabIndex={0}\n                >\n                  <input\n                    autoComplete=\"off\"\n                    multiple={true}\n                    onChange={[Function]}\n                    onClick={[Function]}\n                    style={\n                      Object {\n                        \"display\": \"none\",\n                      }\n                    }\n                    tabIndex={-1}\n                    type=\"file\"\n                  />\n                  <svg\n                    height=\"44\"\n                    version=\"1.1\"\n                    viewBox=\"0 0 60 44\"\n                    width=\"60\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                  >\n                    <g\n                      fill=\"none\"\n                      fillRule=\"evenodd\"\n                      stroke=\"none\"\n                      strokeWidth=\"1\"\n                    >\n                      <g\n                        fill=\"#2B56FF\"\n                        fillRule=\"nonzero\"\n                      >\n                        <path\n                          d=\"M49.5375494,9.4229249 L42.472332,9.4229249 L40.5454545,5.243083 C39.9130435,3.87944664 38.5395257,3 37.0375494,3 L22.3932806,3 C20.8913043,3 19.527668,3.87944664 18.8952569,5.243083 L16.958498,9.4229249 L9.89328063,9.4229249 C7.7687747,9.4229249 6,11.1521739 6,13.2766798 L6,38.0790514 C6,40.2035573 7.7687747,41.9328063 9.89328063,41.9328063 L49.5375494,41.9328063 C51.6620553,41.9328063 53.43083,40.2035573 53.43083,38.0790514 L53.43083,13.2766798 C53.43083,11.1521739 51.6620553,9.4229249 49.5375494,9.4229249 Z M51.6521739,38.0790514 C51.6521739,39.2252964 50.6837945,40.1541502 49.5375494,40.1541502 L9.89328063,40.1541502 C8.74703557,40.1541502 7.77865613,39.2252964 7.77865613,38.0790514 L7.77865613,13.2766798 C7.77865613,12.1304348 8.74703557,11.201581 9.89328063,11.201581 L17.5316206,11.201581 C17.8774704,11.201581 18.1936759,10.9940711 18.3418972,10.687747 L20.5158103,5.99407115 C20.8517787,5.26284585 21.5928854,4.78853755 22.4031621,4.78853755 L37.0573123,4.78853755 C37.8675889,4.78853755 38.5988142,5.26284585 38.944664,5.99407115 L41.1185771,10.687747 C41.2667984,11.0039526 41.583004,11.2114625 41.9288538,11.2114625 L49.5671937,11.2114625 C50.7134387,11.2114625 51.6818182,12.1403162 51.6818182,13.2865613 L51.6818182,38.0790514 L51.6521739,38.0790514 Z\"\n                        />\n                        <path\n                          d=\"M29.715415,12.5355731 C22.9268775,12.5355731 17.4031621,18.0592885 17.4031621,24.8478261 C17.4031621,31.6363636 22.9268775,37.1600791 29.715415,37.1600791 C36.5039526,37.1600791 42.027668,31.6264822 42.027668,24.8379447 C42.027668,18.0494071 36.5039526,12.5355731 29.715415,12.5355731 Z M29.715415,35.3715415 C23.9051383,35.3715415 19.1818182,30.6482213 19.1818182,24.8379447 C19.1818182,19.027668 23.9051383,14.3043478 29.715415,14.3043478 C35.5256917,14.3043478 40.2490119,19.0375494 40.2490119,24.8379447 C40.2490119,30.6482213 35.5256917,35.3715415 29.715415,35.3715415 Z\"\n                        />\n                        <path\n                          d=\"M15.2885375,15.2529644 L11.5335968,15.2529644 C11.0395257,15.2529644 10.6442688,15.6482213 10.6442688,16.1422925 C10.6442688,16.6363636 11.0395257,17.0316206 11.5335968,17.0316206 L15.2885375,17.0316206 C15.7826087,17.0316206 16.1778656,16.6363636 16.1778656,16.1422925 C16.1778656,15.6482213 15.7826087,15.2529644 15.2885375,15.2529644 Z\"\n                        />\n                      </g>\n                    </g>\n                  </svg>\n                  <br />\n                  <span\n                    className=\"sc-fzXfQs jOqoqM\"\n                  >\n                    Drag and drop an image here\n                  </span>\n                </div>\n              </section>\n              or\n              <input\n                onChange={[Function]}\n                style={\n                  Object {\n                    \"display\": \"none\",\n                  }\n                }\n                type=\"file\"\n              />\n              <button\n                className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                onClick={[Function]}\n                size=\"SMALL\"\n                theme={\n                  Object {\n                    \"invertedButtonBackground\": \"#FFFFFF\",\n                    \"invertedButtonColor\": \"#2B56FF\",\n                  }\n                }\n                type=\"button\"\n              >\n                 \n                Upload Image\n                 \n              </button>\n            </div>\n          </div>\n        </div>\n      </form>\n      <div\n        className=\"sc-LzNMm hjzFgJ\"\n      >\n        <span\n          className=\"sc-LzNNB ldodDC\"\n          onClick={[Function]}\n        >\n          Skip for now\n        </span>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Web3Auth\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            UserSetAvatar\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Account/Auth/__snapshots__/UserSetEmail.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Web3Auth UserSetEmail 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNC eRjKqx\"\n    >\n      Almost done!\n    </div>\n    <div\n      className=\"sc-LzNND eIlVcC\"\n    >\n      To receive payment confirmations and account-related alerts, please enter your email address.\n    </div>\n    <form\n      onSubmit={[Function]}\n    >\n      <div\n        className=\" sc-fzXfNe laEExU\"\n      >\n        <input\n          className=\"sc-fzXfNe laEExU\"\n          name=\"email\"\n          onBlur={[Function]}\n          onChange={[Function]}\n          placeholder=\"Email address\"\n          type=\"email\"\n          value=\"\"\n        />\n      </div>\n      <ul\n        className=\"sc-LzNxg kPxOaw\"\n      >\n        <li\n          className=\"sc-LzNxh jqIvYg\"\n        >\n          <label>\n            <label\n              className=\"sc-fzXfPL kIKmHS\"\n              size=\"SMALL\"\n            >\n              <input\n                checked={true}\n                onChange={[Function]}\n                type=\"checkbox\"\n              />\n              <span\n                className=\"sc-fzXfPK buXQoO\"\n                size=\"SMALL\"\n              />\n            </label>\n            <span\n              className=\"sc-LzNMk datAnQ\"\n            >\n              Also get email alerts when new events occur on the Civil Registry to help participate in Civil's governance.\n            </span>\n          </label>\n        </li>\n      </ul>\n      <div\n        className=\"sc-LzNMl dNkIHv\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP jQPtEb\"\n          disabled={false}\n          size=\"SMALL_WIDE\"\n          textTransform=\"none\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"submit\"\n        >\n          Save Email\n        </button>\n      </div>\n    </form>\n    <div\n      className=\"sc-LzNMm hjzFgJ\"\n    >\n      <span\n        className=\"sc-LzNNE hXtSrg\"\n        onClick={[Function]}\n      >\n        Skip for now\n      </span>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Web3Auth\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            UserSetEmail\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Account/Auth/__snapshots__/VerifyToken.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Auth / VerifyToken Complete 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <h2\n      className=\"sc-fzXfOy bcGodo\"\n    >\n      Email Address Confirmed!\n    </h2>\n    <div\n      className=\"sc-fzXfOz sc-fzXfOY eUvCJt\"\n    >\n      Thanks for confirming your email address.\n    </div>\n    <div\n      style={\n        Object {\n          \"display\": \"flex\",\n          \"justifyContent\": \"center\",\n        }\n      }\n    >\n      <div>\n        <div\n          className=\"sc-LzNMn sc-LzNMo bTsNgd\"\n        />\n      </div>\n    </div>\n    <div\n      style={\n        Object {\n          \"display\": \"flex\",\n          \"justifyContent\": \"center\",\n        }\n      }\n    >\n      <div>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP gPnInO\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Continue\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Auth / VerifyToken\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Complete\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  AuthEmailVerify\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      hasVerified\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      errorMessage\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      onAuthenticationContinue\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onAuthenticationContinue\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AuthEmailVerify\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Auth / VerifyToken Error 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <h2\n      className=\"sc-fzXfOy bcGodo\"\n    >\n      Uh oh.\n    </h2>\n    <div\n      className=\"sc-fzXfOz sc-fzXfOY eUvCJt\"\n    >\n      <strong>\n        Error is bad\n      </strong>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Auth / VerifyToken\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Error\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  AuthEmailVerify\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      hasVerified\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      errorMessage\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Error is bad\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      onAuthenticationContinue\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onAuthenticationContinue\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AuthEmailVerify\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Auth / VerifyToken Loading 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <h2\n      className=\"sc-fzXfOy bcGodo\"\n    >\n      Confirming your email address...\n    </h2>\n    <div\n      style={\n        Object {\n          \"display\": \"flex\",\n          \"justifyContent\": \"center\",\n        }\n      }\n    >\n      <div>\n        <div\n          className=\"sc-LzNMn sc-LzNMo bTsNgd\"\n        />\n      </div>\n    </div>\n    <div\n      style={\n        Object {\n          \"display\": \"flex\",\n          \"justifyContent\": \"center\",\n        }\n      }\n    >\n      <div>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP gPnInO\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Continue\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Auth / VerifyToken\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Loading\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  AuthEmailVerify\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      hasVerified\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          false\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      errorMessage\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      onAuthenticationContinue\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onAuthenticationContinue\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AuthEmailVerify\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Account/LoadUser.tsx",
    "content": "import * as React from \"react\";\nimport { getApolloSessionKey, getCurrentUserQuery } from \"@joincivil/utils\";\nimport { Query } from \"react-apollo\";\nimport useStateWithLocalStorage from \"../hooks/useStateWithLocalStorage\";\n\nexport interface LoadUserChildrenProps {\n  user: any;\n  loading: boolean;\n  refetch?: any;\n}\n\nexport interface LoadUserProps {\n  children(props: LoadUserChildrenProps): any;\n}\n\nexport const LoadUser: React.FunctionComponent<LoadUserProps> = props => {\n  const apolloSessionKey = getApolloSessionKey();\n  const [auth] = useStateWithLocalStorage(apolloSessionKey);\n  useStateWithLocalStorage(\"network\"); // basically just pay attention to when network is set\n\n  const renderFunction = props.children;\n  const hasAuthToken = auth && auth.token;\n\n  if (!hasAuthToken) {\n    return <>{renderFunction({ user: null, loading: false })}</>;\n  }\n\n  return (\n    <Query<any> query={getCurrentUserQuery}>\n      {({ loading, error, data, refetch }) => {\n        if (loading || error) {\n          return renderFunction({ user: null, loading, refetch });\n        }\n\n        return renderFunction({ user: data.currentUser, loading, refetch });\n      }}\n    </Query>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Account/index.ts",
    "content": "export * from \"./Auth/VerifyToken\";\nexport * from \"./Auth/ConfirmEmailToken\";\nexport * from \"./Auth/EmailAuth\";\nexport * from \"./Auth/EmailSent\";\nexport * from \"./Auth/EthAuth\";\nexport * from \"./Auth/UserSetHandle\";\nexport * from \"./Auth/UserSetAvatar\";\nexport * from \"./Auth/UserSetEmail\";\nexport * from \"./LoadUser\";\n\nexport {\n  AuthOuterWrapper,\n  AuthInnerWrapper,\n  AuthPageFooterLink,\n  AuthFooterTerms,\n  AuthFooterContainer,\n  AuthWrapper,\n} from \"./Auth/AuthStyledComponents\";\n\nexport * from \"./Auth/AuthTextComponents\";\n\nexport enum AuthApplicationEnum {\n  DEFAULT = \"DEFAULT\",\n  NEWSROOM = \"NEWSROOM\",\n  STOREFRONT = \"STOREFRONT\",\n}\n\nexport interface AuthLoginResponse {\n  token: string;\n  refreshToken: string;\n  uid: string;\n}\n"
  },
  {
    "path": "packages/components/src/AddressWithCopyButton.tsx",
    "content": "import * as React from \"react\";\nimport { copyToClipboard } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport { colors } from \"./styleConstants\";\nimport { SecondaryButton, buttonSizes } from \"./Button\";\n\nexport interface AddressWithCopyButtonProps {\n  address?: string;\n}\n\nconst Box = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  border-right: none;\n  background-color: ${colors.basic.WHITE};\n  padding: 9px;\n  font-size: 14px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  width: calc(100% - 21px);\n`;\n\nconst Wrapper = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: start;\n  align-items: center;\n  margin-bottom: 10px;\n`;\n\nconst Button = styled(SecondaryButton)`\n  padding: 10px;\n  font-size: 14px;\n`;\n\nexport class AddressWithCopyButton extends React.Component<AddressWithCopyButtonProps> {\n  public addressBox?: HTMLDivElement;\n  public render(): JSX.Element {\n    return (\n      <Wrapper>\n        <Box ref={(el: HTMLDivElement) => (this.addressBox = el)}>{this.props.address}</Box>\n        <Button size={buttonSizes.SMALL} onClick={() => copyToClipboard(this.addressBox!.textContent!)}>\n          Copy\n        </Button>\n      </Wrapper>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/AddressWithMetaMaskIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { MetaMaskFrontIcon } from \"./\";\nimport { fonts } from \"./styleConstants\";\n\nexport interface AddressWithMetaMaskIconProps {\n  address?: string;\n}\n\nconst Wrapper = styled.div`\n  display: inline-block;\n  margin-bottom: 16px;\n`;\n\nconst Box = styled.div`\n  display: flex;\n  position: relative;\n  top: 4px;\n  margin-top: -4px;\n  align-items: center;\n  font-family: ${fonts.MONOSPACE};\n  padding: 8px 12px 4px 8px;\n  border: 1px solid #dddddd;\n  word-break: break-word;\n\n  img {\n    position: relative;\n    top: -2px;\n    margin-right: 12px;\n  }\n`;\n\nexport class AddressWithMetaMaskIcon extends React.Component<AddressWithMetaMaskIconProps> {\n  public render(): JSX.Element {\n    return (\n      <Wrapper>\n        <Box>\n          <MetaMaskFrontIcon />\n          {this.props.address}\n        </Box>\n      </Wrapper>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ApplicationPhaseStatusLabels.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  AwaitingApprovalStatusLabel,\n  AwaitingAppealRequestLabel,\n  AwaitingDecisionStatusLabel,\n  AwaitingAppealChallengeStatusLabel,\n  CommitVoteStatusLabel,\n  RevealVoteStatusLabel,\n  ReadyToCompleteStatusLabel,\n} from \"./ApplicationPhaseStatusLabels\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 400px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Registry / Application Status Labels\", module).add(\"Labels\", () => {\n  return (\n    <Container>\n      <AwaitingApprovalStatusLabel />\n      <br />\n      <AwaitingAppealRequestLabel />\n      <br />\n      <AwaitingDecisionStatusLabel />\n      <br />\n      <AwaitingAppealChallengeStatusLabel />\n      <br />\n      <CommitVoteStatusLabel />\n      <br />\n      <RevealVoteStatusLabel />\n      <br />\n      <ReadyToCompleteStatusLabel />\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/ApplicationPhaseStatusLabels.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"./styleConstants\";\n\nexport const StyledBaseStatus = styled.div`\n  background-color: ${colors.primary.BLACK};\n  color: ${colors.basic.WHITE};\n  display: inline-block;\n  font: bold 12px/15px ${fonts.SANS_SERIF};\n  letter-spacing: 1px;\n  margin: 0 0 9px;\n  padding: 5px 8px;\n  text-transform: uppercase;\n`;\n\nconst StyledAwaitingStatuslabel = styled(StyledBaseStatus)`\n  background-color: ${colors.accent.CIVIL_BLUE_FADED_2};\n  color: ${colors.primary.BLACK};\n`;\n\nconst StyledAwaitingAppealStatuslabel = styled(StyledBaseStatus)`\n  background-color: ${colors.accent.CIVIL_RED_VERY_FADED};\n  color: ${colors.primary.BLACK};\n`;\n\nconst StyledCommitVoteStatus = styled(StyledBaseStatus)`\n  background-color: ${colors.accent.CIVIL_YELLOW};\n  color: ${colors.primary.BLACK};\n`;\n\nconst StyledRevealVoteStatus = styled(StyledBaseStatus)`\n  background-color: ${colors.accent.CIVIL_TEAL_FADED};\n  color: ${colors.primary.BLACK};\n`;\n\nconst StyledReadyToCompleteStatus = styled(StyledBaseStatus)`\n  background-color: ${colors.accent.CIVIL_BLUE};\n  color: ${colors.basic.WHITE};\n`;\n\nexport const AwaitingApprovalStatusLabel: React.FunctionComponent = props => {\n  return <StyledAwaitingStatuslabel>Awaiting Approval</StyledAwaitingStatuslabel>;\n};\n\nexport const AwaitingAppealRequestLabel: React.FunctionComponent = props => {\n  return <StyledAwaitingStatuslabel>Awaiting Request to Appeal</StyledAwaitingStatuslabel>;\n};\n\nexport const AwaitingDecisionStatusLabel: React.FunctionComponent = props => {\n  return <StyledAwaitingStatuslabel>Awaiting Council Decision</StyledAwaitingStatuslabel>;\n};\n\nexport const AwaitingAppealChallengeStatusLabel: React.FunctionComponent = props => {\n  return <StyledAwaitingAppealStatuslabel>Challenge Council Decision</StyledAwaitingAppealStatuslabel>;\n};\n\nexport const CommitVoteStatusLabel: React.FunctionComponent = props => {\n  return <StyledCommitVoteStatus>Submit Vote</StyledCommitVoteStatus>;\n};\n\nexport const RevealVoteStatusLabel: React.FunctionComponent = props => {\n  return <StyledRevealVoteStatus>Confirm Vote</StyledRevealVoteStatus>;\n};\n\nexport const ReadyToCompleteStatusLabel: React.FunctionComponent = props => {\n  return <StyledReadyToCompleteStatus>Ready To Update</StyledReadyToCompleteStatus>;\n};\n"
  },
  {
    "path": "packages/components/src/AuthenticatedRoute.tsx",
    "content": "import * as React from \"react\";\nimport { Route, RouteProps, Redirect } from \"react-router-dom\";\nimport { getCurrentUserQuery, getApolloSession } from \"@joincivil/utils\";\nimport { Query } from \"react-apollo\";\n\nexport interface AuthenticatedRouteProps extends RouteProps {\n  redirectTo: string;\n  onlyAllowUnauthenticated?: boolean;\n  authUrl: string;\n}\n\nexport const AuthenticatedRoute = ({\n  render,\n  redirectTo,\n  authUrl,\n  onlyAllowUnauthenticated = false,\n  ...otherProps\n}: AuthenticatedRouteProps) => {\n  const auth = getApolloSession();\n\n  const hasAuthToken = !!auth && !!auth.token;\n\n  // TODO(jorgelo): Refactor this boolean logic.\n  if (onlyAllowUnauthenticated) {\n    if (hasAuthToken) {\n      return <Redirect to={redirectTo} />;\n    }\n  } else {\n    if (!hasAuthToken) {\n      return <Redirect to={authUrl} />;\n    }\n  }\n\n  if (!render) {\n    throw new Error(\"Please set a render function\");\n  }\n\n  // TODO(jorgelo): Get the line below working without the ts-ignore\n  // @ts-ignore\n  const renderChildren = () => render(otherProps);\n\n  if (onlyAllowUnauthenticated && !hasAuthToken) {\n    if (render) {\n      return renderChildren();\n    }\n\n    return null;\n  }\n\n  return (\n    <Route {...otherProps}>\n      <Query<any> query={getCurrentUserQuery}>\n        {({ loading, error, data }) => {\n          if (loading) {\n            return null;\n          }\n\n          if (error && !onlyAllowUnauthenticated) {\n            return <Redirect to={redirectTo} />;\n          }\n\n          if (render) {\n            return renderChildren();\n          }\n\n          return null;\n        }}\n      </Query>\n    </Route>\n  );\n};\n\nexport const UnauthenticatedRoute = (props: AuthenticatedRouteProps) => (\n  <AuthenticatedRoute onlyAllowUnauthenticated={true} {...props} />\n);\n"
  },
  {
    "path": "packages/components/src/BrowserCompatible/BrowserCompatible.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport StoryRouter from \"storybook-react-router\";\nimport { BrowserCompatible } from \"./BrowserCompatible\";\n\nstoriesOf(\"Common / Browser Compatible Message\", module)\n  .addDecorator(StoryRouter())\n  .add(\"Browser Compatible\", () => {\n    return <BrowserCompatible />;\n  });\n"
  },
  {
    "path": "packages/components/src/BrowserCompatible/BrowserCompatible.tsx",
    "content": "import * as React from \"react\";\nimport { buttonSizes, OBSmallestParagraph } from \"../\";\nimport {\n  BrowserCompatWrapper,\n  BrowserLogo,\n  BrowserButtons,\n  BrowserButton,\n  BrowserCompatLinks,\n} from \"./BrowserCompatibleStyledComponents\";\nimport { BrowserCompatHeadingText, BrowserCompatIntroText } from \"./BrowserCompatibleTextComponents\";\nimport chromeLogoImgUrl from \"../images/img-chrome-logo@2x.png\";\nimport firefoxLogoImgUrl from \"../images/img-firefox-logo@2x.png\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nexport const BrowserCompatible: React.FunctionComponent = props => {\n  return (\n    <BrowserCompatWrapper>\n      <BrowserCompatHeadingText />\n      <BrowserCompatIntroText />\n\n      <BrowserButtons>\n        <BrowserButton size={buttonSizes.MEDIUM_WIDE} href=\"https://www.google.com/chrome/\" target=\"_blank\">\n          <BrowserLogo src={chromeLogoImgUrl} />\n          Get Google Chrome\n        </BrowserButton>\n        <BrowserButton size={buttonSizes.MEDIUM_WIDE} href=\"https://www.mozilla.org/en-US/firefox/\" target=\"_blank\">\n          <BrowserLogo src={firefoxLogoImgUrl} />\n          Get Firefox\n        </BrowserButton>\n      </BrowserButtons>\n\n      <OBSmallestParagraph>\n        <BrowserCompatLinks href={links.EMAIL_MAILTO}>Contact Us</BrowserCompatLinks>\n        <BrowserCompatLinks href={links.FAQ_BROWSER_SUPPORT} target=\"_blank\">\n          Visit Support\n        </BrowserCompatLinks>\n      </OBSmallestParagraph>\n    </BrowserCompatWrapper>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/BrowserCompatible/BrowserCompatibleStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { InvertedButton, OBSectionDescription, mediaQueries } from \"../\";\n\nexport const BrowserCompatWrapper = styled.div`\n  padding: 80px 0;\n  text-align: center;\n\n  ${mediaQueries.MOBILE} {\n    padding: 30px 0;\n  }\n`;\n\nexport const BrowserLogo = styled.img`\n  height: 24px;\n  margin-right: 15px;\n  vertical-align: bottom;\n  width: 24px;\n`;\n\nexport const BrowserButtons = styled.div`\n  margin: 32px 0 70px;\n`;\n\nexport const BrowserButton = styled(InvertedButton)`\n  border-width: 1px;\n  font-size: 13px;\n  font-weight: bold;\n  margin-bottom: 16px;\n  min-width: 210px;\n  padding: 5px 16px 7px;\n  text-transform: none;\n\n  &:first-child {\n    margin-right: 16px;\n  }\n\n  ${mediaQueries.MOBILE} {\n    &:first-child {\n      margin-right: 0;\n    }\n  }\n`;\n\nexport const BrowserCompatLinks = styled.a`\n  &:first-child {\n    margin-right: 48px;\n  }\n`;\n\nexport const BrowserCompatIntroStyled = styled(OBSectionDescription)`\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 600px;\n`;\n"
  },
  {
    "path": "packages/components/src/BrowserCompatible/BrowserCompatibleTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { OBSectionTitle } from \"../\";\nimport { BrowserCompatIntroStyled } from \"./BrowserCompatibleStyledComponents\";\n\nexport const BrowserCompatHeadingText: React.FunctionComponent = props => (\n  <OBSectionTitle>Can we switch to a different browser?</OBSectionTitle>\n);\n\nexport const BrowserCompatIntroText: React.FunctionComponent = props => (\n  <>\n    <BrowserCompatIntroStyled>\n      Civil Registry applications and token purchases currently only work in browsers with Ethereum wallet support, like\n      desktop Chrome and Firefox. We’re working to support other browsers.\n    </BrowserCompatIntroStyled>\n    <BrowserCompatIntroStyled>In the meantime, please…</BrowserCompatIntroStyled>\n  </>\n);\n"
  },
  {
    "path": "packages/components/src/BrowserCompatible/__snapshots__/BrowserCompatible.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Browser Compatible Message Browser Compatible 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDx fYEYhb\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Can we switch to a different browser?\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMDZ gmrNfj\"\n      >\n        Civil Registry applications and token purchases currently only work in browsers with Ethereum wallet support, like desktop Chrome and Firefox. We’re working to support other browsers.\n      </p>\n      <p\n        className=\"sc-LzMCj sc-LzMDZ gmrNfj\"\n      >\n        In the meantime, please…\n      </p>\n      <div\n        className=\"sc-LzMDW ehcEqz\"\n      >\n        <a\n          className=\"sc-fzXfLO sc-fzXfLQ sc-LzMDX fZhwZW\"\n          href=\"https://www.google.com/chrome/\"\n          size=\"MEDIUM_WIDE\"\n          target=\"_blank\"\n          theme={\n            Object {\n              \"invertedButtonBackground\": \"#FFFFFF\",\n              \"invertedButtonColor\": \"#2B56FF\",\n            }\n          }\n        >\n          <img\n            className=\"sc-LzMDV kUyhNc\"\n            src=\"test-file-stub\"\n          />\n          Get Google Chrome\n        </a>\n        <a\n          className=\"sc-fzXfLO sc-fzXfLQ sc-LzMDX fZhwZW\"\n          href=\"https://www.mozilla.org/en-US/firefox/\"\n          size=\"MEDIUM_WIDE\"\n          target=\"_blank\"\n          theme={\n            Object {\n              \"invertedButtonBackground\": \"#FFFFFF\",\n              \"invertedButtonColor\": \"#2B56FF\",\n            }\n          }\n        >\n          <img\n            className=\"sc-LzMDV kUyhNc\"\n            src=\"test-file-stub\"\n          />\n          Get Firefox\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        <a\n          className=\"sc-LzMDY faIcLV\"\n          href=\"mailto:support@civil.co\"\n        >\n          Contact Us\n        </a>\n        <a\n          className=\"sc-LzMDY faIcLV\"\n          href=\"https://help.civil.co/hc/en-us/articles/360022147571-Browser-Support\"\n          target=\"_blank\"\n        >\n          Visit Support\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Browser Compatible Message\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Browser Compatible\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/BrowserCompatible/index.ts",
    "content": "export * from \"./BrowserCompatible\";\n"
  },
  {
    "path": "packages/components/src/Button.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport StoryRouter from \"storybook-react-router\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Button, SecondaryButton, DarkButton, InvertedButton, buttonSizes } from \"./Button\";\nimport { MetaMaskLogoButton } from \"./MetaMaskLogoButton\";\nimport { CardTransactionButton } from \"./CardTransactionButton\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 400px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Pattern Library / Buttons\", module)\n  .addDecorator(StoryRouter())\n  .add(\"Button\", () => {\n    return (\n      <Container>\n        <Button>Standard Button</Button>\n        <br />\n        <Button disabled>Disabled</Button>\n        <br />\n        <Button to=\"/home\">Link Button</Button>\n        <br />\n      </Container>\n    );\n  })\n  .add(\"sizes\", () => {\n    return (\n      <Container>\n        <Button size={buttonSizes.LARGE}>large</Button>\n        <br />\n        <Button size={buttonSizes.MEDIUM}>medium</Button>\n        <br />\n        <Button size={buttonSizes.MEDIUM_WIDE}>medium wide</Button>\n        <br />\n        <Button size={buttonSizes.SMALL}>small</Button>\n        <br />\n        <Button size={buttonSizes.SMALL_WIDE}>small wide</Button>\n        <br />\n      </Container>\n    );\n  })\n  .add(\"SecondaryButton\", () => {\n    return (\n      <Container>\n        <SecondaryButton>Secondary Button</SecondaryButton>\n      </Container>\n    );\n  })\n  .add(\"InvertedButton\", () => {\n    return (\n      <Container>\n        <InvertedButton>Inverted Button</InvertedButton>\n      </Container>\n    );\n  })\n  .add(\"DarkButton\", () => {\n    return (\n      <Container>\n        <DarkButton>Dark Button</DarkButton>\n      </Container>\n    );\n  })\n  .add(\"MetaMaskLogoButton\", () => {\n    return (\n      <Container>\n        <MetaMaskLogoButton onClick={(ev: any) => console.log(\"You clicked me!\")}>\n          MetaMaskLogo Transaction Button\n        </MetaMaskLogoButton>\n      </Container>\n    );\n  })\n  .add(\"CardTransactionButton\", () => {\n    return (\n      <Container>\n        <p>This is a Transaction Button styled as a Card, and can contain any markup</p>\n        <CardTransactionButton onClick={(ev: any) => console.log(\"You clicked me!\")}>Transaction</CardTransactionButton>\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Button.tsx",
    "content": "export {\n  buttonSizes,\n  ButtonProps,\n  ButtonTheme,\n  DEFAULT_BUTTON_THEME,\n  ButtonComponent,\n  Button,\n  InvertedButton,\n  SecondaryButton,\n  DarkButton,\n  CancelButton,\n  BorderlessButton,\n} from \"@joincivil/elements\";\n"
  },
  {
    "path": "packages/components/src/Card/Card.stories.tsx",
    "content": "import * as React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport styled from \"styled-components\";\n\nimport { CardClickable } from \"./Card\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 400px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nconst handleClick = () => console.log(\"You clicked it.\");\n\nstoriesOf(\"Pattern Library / Cards\", module).add(\"Clickable Card\", () => {\n  return (\n    <Container>\n      <CardClickable onClick={handleClick}>I am a basic clickable card.</CardClickable>\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/Card/Card.tsx",
    "content": "import * as React from \"react\";\n\nimport { StyledCardClickable } from \"./CardStyledComponents\";\n\nexport interface CardClickableProps {\n  disabled?: boolean;\n  onClick?(...args: any[]): void;\n}\n\nexport const CardClickable: React.FunctionComponent<CardClickableProps> = props => {\n  const onClick = (...args: any[]) => {\n    if (!props.disabled && props.onClick) {\n      props.onClick(...args);\n    }\n  };\n  return <StyledCardClickable onClick={onClick}>{props.children}</StyledCardClickable>;\n};\n"
  },
  {
    "path": "packages/components/src/Card/CardStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\n\nexport const StyledCardBase = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 4px;\n  box-shadow: 0 2px 4px 0 ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  letter-spacing: 0;\n  line-height: 26px;\n  padding: 18px;\n  transition: border-color 0.2s ease;\n`;\n\nexport const StyledCardClickable = styled(StyledCardBase)`\n  cursor: pointer;\n\n  &:hover {\n    background-color: ${colors.basic.WHITE};\n    border-color: ${colors.accent.CIVIL_BLUE};\n    color: ${colors.accent.CIVIL_GRAY_0};\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Card/__snapshots__/Card.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Cards Clickable Card 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNH IrWLl\"\n    >\n      <div\n        className=\"sc-fzXfQS sc-fzXfQT yHlOo\"\n        onClick={[Function]}\n      >\n        I am a basic clickable card.\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Cards\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Clickable Card\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      CardClickable\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          onClick\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              handleClick\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      I am a basic clickable card.\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      CardClickable\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CardClickable\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Card/index.ts",
    "content": "export * from \"./Card\";\n"
  },
  {
    "path": "packages/components/src/CardTransactionButton.tsx",
    "content": "import * as React from \"react\";\nimport { CardClickable } from \"./Card\";\nimport { TransactionButtonInnerProps } from \"./TransactionButton\";\nimport styled from \"styled-components\";\n\nexport const CardTransactionButton = (props: TransactionButtonInnerProps): JSX.Element => {\n  return (\n    <CardClickable onClick={props.onClick} disabled={props.disabled}>\n      {props.children}\n    </CardClickable>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/ChallengeResults.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { fonts } from \"../styleConstants\";\nimport { ChallengeResults } from \"./ChallengeResults\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  width: 335px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nconst totalVotes = \"100000\";\nconst votesFor = \"73000\";\nconst votesAgainst = \"27000\";\nconst percentFor = \"73\";\nconst percentAgainst = \"27\";\nconst didChallengeSucceed = false;\n\nstoriesOf(\"Registry\", module).add(\"Challenge Results Chart\", () => {\n  return (\n    <Container>\n      <ChallengeResults\n        totalVotes={totalVotes}\n        votesFor={votesFor}\n        votesAgainst={votesAgainst}\n        percentFor={percentFor}\n        percentAgainst={percentAgainst}\n        didChallengeSucceed={didChallengeSucceed}\n      />\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/ChallengeResults.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StyledListingDetailPhaseCardSectionHeader } from \"../ListingDetailPhaseCard/styledComponents\";\nimport { ChallengeResultsProps } from \"./types\";\nimport {\n  VoteTypeSummary,\n  VoteTypeSummaryContainer,\n  VotesPerTokenTotal,\n  TotalVotesLabelContainer,\n  TotalVotesCount,\n  StyledExplainerText,\n} from \"./styledComponents\";\nimport { CHALLENGE_RESULTS_VOTE_TYPES } from \"./constants\";\nimport { VoteTypeSummaryRow } from \"./VoteTypeSummaryRow\";\nimport { Collapsable } from \"../Collapsable\";\n\nconst DefaultHeader = styled(StyledListingDetailPhaseCardSectionHeader)`\n  & + ${VoteTypeSummaryContainer} {\n    margin-top: 14px;\n  }\n`;\n\nconst StyledInner = styled.div`\n  padding-top: 14px;\n`;\n\nconst ExplainerText: React.FunctionComponent<ChallengeResultsProps> = props => {\n  let explainerText;\n\n  if (props.didChallengeSucceed) {\n    if (props.isAppealChallenge) {\n      explainerText = (\n        <>\n          The Civil Community <b>voted to overturn</b> the Civil Council's decision.\n        </>\n      );\n    } else {\n      explainerText = (\n        <>\n          The Civil Community <b>voted to reject this newsroom</b> on the grounds that it is in violation of the Civil\n          Constitution.\n        </>\n      );\n    }\n  } else {\n    if (props.isAppealChallenge) {\n      explainerText = (\n        <>\n          The Civil Community <b>voted to uphold</b> The Civil Council's decision.\n        </>\n      );\n    } else {\n      explainerText = (\n        <>\n          The Civil Community <b>voted to accept this newsroom</b> on the grounds that it adheres to the Civil\n          Constitution.\n        </>\n      );\n    }\n  }\n  return <StyledExplainerText>{explainerText}</StyledExplainerText>;\n};\n\nconst ChallengeResultsInner: React.FunctionComponent<ChallengeResultsProps> = props => {\n  const Header = props.styledHeaderComponent || DefaultHeader;\n  const defaultHeaderText = props.challengeID ? `Challenge ${props.challengeID} Results` : \"Challenge Results\";\n  const explainerText = !props.noExplainerText && <ExplainerText {...props} />;\n  return (\n    <>\n      {!props.noHeader && <Header>{props.headerText || defaultHeaderText}</Header>}\n      {props.noHeader && <StyledInner />}\n\n      {explainerText}\n\n      <VoteTypeSummaryContainer>\n        <VoteTypeSummaryRow\n          voteType={\n            props.isAppealChallenge ? CHALLENGE_RESULTS_VOTE_TYPES.OVERTURN : CHALLENGE_RESULTS_VOTE_TYPES.REMAIN\n          }\n          votesCount={props.votesFor}\n          votesPercent={props.percentFor}\n        />\n      </VoteTypeSummaryContainer>\n\n      <VoteTypeSummaryContainer>\n        <VoteTypeSummaryRow\n          voteType={props.isAppealChallenge ? CHALLENGE_RESULTS_VOTE_TYPES.UPHOLD : CHALLENGE_RESULTS_VOTE_TYPES.REMOVE}\n          votesCount={props.votesAgainst}\n          votesPercent={props.percentAgainst}\n        />\n      </VoteTypeSummaryContainer>\n\n      <VoteTypeSummaryContainer>\n        <VoteTypeSummary>\n          <TotalVotesLabelContainer>\n            <VotesPerTokenTotal>Total Votes</VotesPerTokenTotal>\n          </TotalVotesLabelContainer>\n          <TotalVotesCount>{props.totalVotes}</TotalVotesCount>\n        </VoteTypeSummary>\n      </VoteTypeSummaryContainer>\n    </>\n  );\n};\n\nexport const ChallengeResults: React.FunctionComponent<ChallengeResultsProps> = props => {\n  if (props.collapsable) {\n    const Header = props.styledHeaderComponent || DefaultHeader;\n    const headerElement = <Header>{props.headerText || \"Challenge Results\"}</Header>;\n    const open = props.open !== undefined ? props.open : true;\n\n    return (\n      <Collapsable header={headerElement} open={open}>\n        <ChallengeResultsInner noHeader={true} headerText=\"\" {...props} />\n      </Collapsable>\n    );\n  }\n\n  return <ChallengeResultsInner {...props} />;\n};\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/ChallengeResultsChartTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { HollowGreenCheck, HollowRedNoGood } from \"../icons\";\nimport { VoteTypeLabelProps } from \"./types\";\nimport { CHALLENGE_RESULTS_VOTE_TYPES } from \"./constants\";\n\nexport const voteTypeLabel: VoteTypeLabelProps = {\n  [CHALLENGE_RESULTS_VOTE_TYPES.REMAIN]: (\n    <>\n      <HollowGreenCheck width={14} height={14} /> Accept\n    </>\n  ),\n  [CHALLENGE_RESULTS_VOTE_TYPES.REMOVE]: (\n    <>\n      <HollowRedNoGood width={14} height={14} /> Reject\n    </>\n  ),\n  [CHALLENGE_RESULTS_VOTE_TYPES.OVERTURN]: <>Overturn</>,\n  [CHALLENGE_RESULTS_VOTE_TYPES.UPHOLD]: <>Uphold</>,\n};\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/UserVotingSummary.tsx",
    "content": "import * as React from \"react\";\n\nimport { UserVotingSummaryProps } from \"./types\";\nimport { voteTypeLabel } from \"./ChallengeResultsChartTextComponents\";\nimport { UserVotingSummaryContainer, UserVotingSummaryColumn, UserVotingSummaryColHeader } from \"./styledComponents\";\n\nexport const UserVotingSummary: React.FunctionComponent<UserVotingSummaryProps> = props => {\n  return (\n    <UserVotingSummaryContainer>\n      <UserVotingSummaryColumn>\n        <UserVotingSummaryColHeader>Voted For</UserVotingSummaryColHeader>\n        {voteTypeLabel[props.choice]}\n      </UserVotingSummaryColumn>\n\n      <UserVotingSummaryColumn>\n        <UserVotingSummaryColHeader>Voting Tokens Committed</UserVotingSummaryColHeader>\n        {props.numTokens}\n      </UserVotingSummaryColumn>\n    </UserVotingSummaryContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/VoteTypeSummaryRow.tsx",
    "content": "import * as React from \"react\";\nimport {\n  VoteTypeSummary,\n  VotesPerTokenContainer,\n  VotesPerTokenVote,\n  VotesPerTokenCount,\n  BreakdownBarContainer,\n  BreakdownBarPercentageLabel,\n  BreakdownBarTotalContainer,\n  BreakdownBarTotal,\n  BreakdownBarPercentage,\n} from \"./styledComponents\";\nimport { VoteTypeSummaryRowProps } from \"./types\";\nimport { voteColor } from \"./constants\";\nimport { voteTypeLabel } from \"./ChallengeResultsChartTextComponents\";\n\nexport const VoteTypeSummaryRow: React.FunctionComponent<VoteTypeSummaryRowProps> = props => {\n  const color = voteColor[props.voteType];\n  return (\n    <VoteTypeSummary>\n      <VotesPerTokenContainer>\n        <VotesPerTokenVote vote={props.voteType}>{voteTypeLabel[props.voteType]}</VotesPerTokenVote>\n      </VotesPerTokenContainer>\n\n      <BreakdownBarContainer>\n        <BreakdownBarPercentageLabel>\n          {props.votesPercent && (props.votesPercent.indexOf(\"NaN\") < 0 ? props.votesPercent : \"0\")}%\n        </BreakdownBarPercentageLabel>\n\n        <BreakdownBarTotalContainer>\n          <BreakdownBarTotal>\n            <BreakdownBarPercentage vote={props.voteType} percentage={props.votesPercent} color={color} />\n          </BreakdownBarTotal>\n          <VotesPerTokenCount>{props.votesCount}</VotesPerTokenCount>\n        </BreakdownBarTotalContainer>\n      </BreakdownBarContainer>\n    </VoteTypeSummary>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/__snapshots__/ChallengeResults.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry Challenge Results Chart 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOf hfdjbd\"\n    >\n      <div>\n        <h4\n          className=\"sc-LzLLC sc-LzLPq hltRgv\"\n        >\n          Challenge Results\n        </h4>\n        <p\n          className=\"sc-LzLOP jWBXPE\"\n        >\n          The Civil Community \n          <b>\n            voted to accept this newsroom\n          </b>\n           on the grounds that it adheres to the Civil Constitution.\n        </p>\n        <div\n          className=\"sc-LzLOf bNOeum\"\n        >\n          <div\n            className=\"sc-LzLOg cVkMFH\"\n          >\n            <div\n              className=\"sc-LzLOJ cVZvDy\"\n            >\n              <div\n                className=\"sc-LzLOL bSbxdE\"\n              >\n                <svg\n                  height=\"14\"\n                  viewBox=\"0 0 20 20\"\n                  width=\"14\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <g\n                    fill=\"none\"\n                    fillRule=\"evenodd\"\n                    transform=\"translate(1 1)\"\n                  >\n                    <circle\n                      className=\"svg-stroke\"\n                      cx=\"9\"\n                      cy=\"9\"\n                      r=\"8.25\"\n                      stroke=\"#29cb42\"\n                      strokeWidth=\"1.5\"\n                    />\n                    <path\n                      className=\"svg-fill\"\n                      d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n                      fill=\"#29cb42\"\n                      fillRule=\"nonzero\"\n                    />\n                  </g>\n                </svg>\n                 Accept\n              </div>\n            </div>\n            <div\n              className=\"sc-LzLOh kwfbUx\"\n            >\n              <div\n                className=\"sc-LzLOi irFAXX\"\n              >\n                73\n                %\n              </div>\n              <div\n                className=\"sc-LzLOj jdlOKR\"\n              >\n                <div\n                  className=\"sc-LzLOk gJflSB\"\n                >\n                  <div\n                    className=\"sc-LzLOI dfQASy\"\n                    color=\"#30E8BD\"\n                  />\n                </div>\n                <div\n                  className=\"sc-LzLON heQLjW\"\n                >\n                  73000\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzLOf bNOeum\"\n        >\n          <div\n            className=\"sc-LzLOg cVkMFH\"\n          >\n            <div\n              className=\"sc-LzLOJ cVZvDy\"\n            >\n              <div\n                className=\"sc-LzLOL hfganr\"\n              >\n                <svg\n                  height=\"14\"\n                  viewBox=\"0 0 20 20\"\n                  width=\"14\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <g\n                    fill=\"none\"\n                    fillRule=\"evenodd\"\n                    transform=\"translate(1 1)\"\n                  >\n                    <path\n                      d=\"m0 0h18v18h-18z\"\n                    />\n                    <path\n                      className=\"svg-fill\"\n                      d=\"m9 0c-4.968 0-9 4.032-9 9s4.032 9 9 9 9-4.032 9-9-4.032-9-9-9zm0 16.2c-3.978 0-7.2-3.222-7.2-7.2 0-1.665.567-3.195 1.521-4.41l10.089 10.089c-1.215.954-2.745 1.521-4.41 1.521zm5.679-2.79-10.089-10.089c1.215-.954 2.745-1.521 4.41-1.521 3.978 0 7.2 3.222 7.2 7.2 0 1.665-.567 3.195-1.521 4.41z\"\n                      fill=\"#f2524a\"\n                      fillRule=\"nonzero\"\n                    />\n                  </g>\n                </svg>\n                 Reject\n              </div>\n            </div>\n            <div\n              className=\"sc-LzLOh kwfbUx\"\n            >\n              <div\n                className=\"sc-LzLOi irFAXX\"\n              >\n                27\n                %\n              </div>\n              <div\n                className=\"sc-LzLOj jdlOKR\"\n              >\n                <div\n                  className=\"sc-LzLOk gJflSB\"\n                >\n                  <div\n                    className=\"sc-LzLOI cmZSFg\"\n                    color=\"#FF0C1A\"\n                  />\n                </div>\n                <div\n                  className=\"sc-LzLON heQLjW\"\n                >\n                  27000\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzLOf bNOeum\"\n        >\n          <div\n            className=\"sc-LzLOg cVkMFH\"\n          >\n            <div\n              className=\"sc-LzLOK fmuKoA\"\n            >\n              <div\n                className=\"sc-LzLOL sc-LzLOM kGigsE\"\n              >\n                Total Votes\n              </div>\n            </div>\n            <div\n              className=\"sc-LzLOO btzzWg\"\n            >\n              100000\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Challenge Results Chart\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ChallengeResults\n                  </span>\n                  <span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        totalVotes\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            100000\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        votesFor\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            73000\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        votesAgainst\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            27000\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        percentFor\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            73\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        percentAgainst\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            27\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        didChallengeSucceed\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      <br />\n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ChallengeResults\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/constants.ts",
    "content": "import { colors } from \"../styleConstants\";\n\nimport { VoteTypeColorProps } from \"./types\";\n\nexport enum CHALLENGE_RESULTS_VOTE_TYPES {\n  REMAIN = \"REMAIN\",\n  REMOVE = \"REMOVE\",\n  OVERTURN = \"OVERTURN\",\n  UPHOLD = \"UPHOLD\",\n}\n\nexport const voteColor: VoteTypeColorProps = {\n  [CHALLENGE_RESULTS_VOTE_TYPES.REMAIN]: colors.accent.CIVIL_TEAL,\n  [CHALLENGE_RESULTS_VOTE_TYPES.REMOVE]: colors.accent.CIVIL_RED,\n  [CHALLENGE_RESULTS_VOTE_TYPES.OVERTURN]: colors.accent.CIVIL_ORANGE,\n  [CHALLENGE_RESULTS_VOTE_TYPES.UPHOLD]: colors.accent.CIVIL_GREEN,\n};\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/index.ts",
    "content": "export * from \"./ChallengeResults\";\nexport * from \"./VoteTypeSummaryRow\";\nexport * from \"./UserVotingSummary\";\nexport * from \"./types\";\nexport * from \"./constants\";\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../styleConstants\";\nimport { CHALLENGE_RESULTS_VOTE_TYPES } from \"./constants\";\nimport { BreakdownBarPercentageProps, VotesPerTokenVoteProps } from \"./types\";\n\nexport const VoteTypeSummaryContainer = styled.div`\n  box-shadow: inset 0 1px 0 0 ${colors.accent.CIVIL_GRAY_4};\n  font-size: 14px;\n  line-height: 17px;\n  padding: 14px 0 10px;\n`;\n\nexport const VoteTypeSummary = styled.div`\n  display: flex;\n  color: ${colors.accent.CIVIL_GRAY_0};\n`;\n\nexport const BreakdownBarContainer = styled.div`\n  display: flex;\n  width: 75%;\n`;\n\nexport const BreakdownBarPercentageLabel = styled.div`\n  font-weight: bold;\n  width: 60px;\n`;\n\nexport const BreakdownBarTotalContainer = styled.div`\n  margin-top: 4px;\n  width: 100%;\n`;\n\nexport const BreakdownBarTotal = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  box-sizing: border-box;\n  height: 8px;\n  position: relative;\n  width: 100%;\n`;\n\nexport const BreakdownBarPercentage = styled.div<BreakdownBarPercentageProps>`\n  display: inline-block;\n  background-color: ${props => props.color};\n  height: 8px;\n  left: 0;\n  top: 0;\n  position: absolute;\n  transition: width 500ms ease;\n  width: ${props => props.percentage}%;\n`;\n\nexport const VotesPerTokenContainer = styled.div`\n  display: flex;\n  white-space: nowrap;\n  width: 25%;\n  position: relative;\n  margin-left: 20px;\n`;\n\nexport const TotalVotesLabelContainer = styled.div`\n  display: flex;\n  white-space: nowrap;\n  width: 39%;\n`;\n\nexport const VotesPerTokenVote = styled.div<VotesPerTokenVoteProps>`\n  font-weight: bold;\n  width: 95px;\n\n  & > span {\n    color: ${props =>\n      props.vote === CHALLENGE_RESULTS_VOTE_TYPES.REMAIN || props.vote === CHALLENGE_RESULTS_VOTE_TYPES.UPHOLD\n        ? colors.accent.CIVIL_TEAL\n        : colors.accent.CIVIL_RED};\n    margin-right: 4px;\n  }\n`;\n\nexport const VotesPerTokenTotal = styled(VotesPerTokenVote)`\n  color: ${colors.accent.CIVIL_GRAY_3};\n  text-transform: uppercase;\n  width: 95px;\n`;\n\nexport const VotesPerTokenCount = styled.div`\n  color: ${colors.primary.BLACK};\n  font-size: 12px;\n  line-height: 15px;\n  margin: 6px 0 0;\n`;\n\nexport const TotalVotesCount = styled.div`\n  color: ${colors.primary.BLACK};\n`;\n\nexport const StyledExplainerText = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 14px;\n  line-height: 20px;\n`;\n\n// User Voting Summary\nexport const UserVotingSummaryContainer = styled.div`\n  display: flex;\n`;\n\nexport const UserVotingSummaryColumn = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  width: 50%;\n`;\n\nexport const UserVotingSummaryColHeader = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 12px;\n  font-weight: 800;\n  letter-spacing: 0.93px;\n  line-height: 15px;\n  margin: 0 0 10px;\n  text-transform: uppercase;\n`;\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/types.d.ts",
    "content": "o;\n"
  },
  {
    "path": "packages/components/src/ChallengeResultsChart/types.ts",
    "content": "import * as React from \"react\";\n\nexport interface ChallengeResultsProps {\n  challengeID?: string;\n  totalVotes: string;\n  votesFor: string;\n  votesAgainst: string;\n  percentFor: string;\n  percentAgainst: string;\n  didChallengeOriginallySucceed?: boolean;\n  didChallengeSucceed?: boolean;\n  isAppealChallenge?: boolean;\n  headerText?: string;\n  noHeader?: boolean;\n  noExplainerText?: boolean;\n  styledHeaderComponent?: React.FunctionComponent;\n  collapsable?: boolean;\n  open?: boolean;\n}\n\nexport interface BreakdownBarPercentageProps {\n  vote: string;\n  percentage: string;\n  color: string;\n}\n\nexport interface VotesPerTokenVoteProps {\n  vote?: string;\n}\n\nexport interface VoteTypeSummaryRowProps {\n  voteType: string;\n  votesCount: string;\n  votesPercent: string;\n}\n\nexport interface VoteTypeLabelProps {\n  [index: string]: JSX.Element;\n}\n\nexport interface VoteTypeColorProps {\n  [index: string]: string;\n}\n\nexport interface UserVotingSummaryProps {\n  choice: string;\n  numTokens: string;\n}\n"
  },
  {
    "path": "packages/components/src/ChevronAnchor.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { ChevronAnchor } from \"./ChevronAnchor\";\nimport { ChevronAnchorLeft } from \"./ChevronAnchorLeft\";\nimport { colors } from \"@joincivil/elements\";\nimport styled from \"styled-components\";\n\nconst ThemedContainer = styled.div`\n  a {\n    color: ${colors.primary.CIVIL_BLUE_1};\n    text-decoration: none;\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n`;\n\nstoriesOf(\"Pattern Library / Typography / Chevron Anchor\", module)\n  .add(\"Default\", () => {\n    return <ChevronAnchor href=\"#\">Check this out</ChevronAnchor>;\n  })\n  .add(\"Civil Themed\", () => {\n    return (\n      <ThemedContainer>\n        <ChevronAnchor href=\"#\">Check this out</ChevronAnchor>\n      </ThemedContainer>\n    );\n  })\n  .add(\"Civil Themed, Left\", () => {\n    return (\n      <ThemedContainer>\n        <ChevronAnchorLeft href=\"#\">Go back to that thing</ChevronAnchorLeft>\n      </ThemedContainer>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/ChevronAnchor.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Chevron } from \"@joincivil/elements\";\n\n// @NOTE: See also `DisclosureArrowIcon` - slightly thicker version, we could maybe make an anchor tag helper for that too.\n\nexport interface ChevronAnchorProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n  /** Defaults to <a> tag. */\n  component?: React.ComponentType<any>;\n  to?: string;\n}\n\nexport const ChevronAnchor: React.FunctionComponent<ChevronAnchorProps> = props =>\n  React.createElement(\n    props.component || \"a\",\n    {\n      ...props,\n      // passing prop with name `component` breaks some components\n      component: undefined,\n    },\n    <>\n      {props.children}\n      <Chevron />\n    </>,\n  );\n"
  },
  {
    "path": "packages/components/src/ChevronAnchorLeft.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Chevron } from \"@joincivil/elements\";\n\nconst ChevronLeft = styled(Chevron)`\n  transform: scaleX(-1);\n`;\n\nexport interface ChevronAnchorLeftProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n  /** Defaults to <a> tag. */\n  component?: React.ComponentType<any>;\n  to?: string;\n}\n\nexport const ChevronAnchorLeft: React.FunctionComponent<ChevronAnchorLeftProps> = props =>\n  React.createElement(\n    props.component || \"a\",\n    props,\n    <>\n      <ChevronLeft />\n      {props.children}\n    </>,\n  );\n"
  },
  {
    "path": "packages/components/src/ClaimRewards.tsx",
    "content": "import * as React from \"react\";\nimport { TextInput } from \"./input/\";\nimport { TransactionButton } from \"./TransactionButton\";\nimport { FormCopy, FormHeader } from \"./ListingDetailPhaseCard/styledComponents\";\n\nexport interface ClaimRewardsProps {\n  challengeID: string;\n  transactions: any[];\n  modalContentComponents?: any;\n}\n\nexport class ClaimRewards extends React.Component<ClaimRewardsProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <FormHeader>Claim Your Rewards</FormHeader>\n        <FormCopy>Congratulations, you have a reward available!</FormCopy>\n        <TextInput name=\"challengeID\" readOnly={true} value={this.props.challengeID} label=\"Challenge ID\" />\n\n        <TransactionButton\n          transactions={this.props.transactions}\n          modalContentComponents={this.props.modalContentComponents}\n        >\n          Claim Rewards\n        </TransactionButton>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ClipLoader.tsx",
    "content": "export { ClipLoader } from \"@joincivil/elements\";\n"
  },
  {
    "path": "packages/components/src/Collapsable.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Collapsable } from \"./Collapsable\";\n\nconst Wrapper = styled.div`\n  margin: 50px;\n  max-width: 500px;\n`;\n\nstoriesOf(\"Pattern Library / Collapsable\", module)\n  .add(\"open\", () => {\n    return (\n      <Wrapper>\n        <Collapsable header={<h3>Hello</h3>} open={true}>\n          <p> Some Content </p>\n        </Collapsable>\n      </Wrapper>\n    );\n  })\n  .add(\"closed\", () => {\n    return (\n      <Wrapper>\n        <Collapsable header={<h3>Hello</h3>} open={false}>\n          <p> Some Content </p>\n        </Collapsable>\n      </Wrapper>\n    );\n  })\n  .add(\"disabled\", () => {\n    return (\n      <Wrapper>\n        <Collapsable disabled={true} header={<h3>Hello</h3>} open={false}>\n          <p> Some Content </p>\n        </Collapsable>\n      </Wrapper>\n    );\n  })\n  .add(\"with custom arrow\", () => {\n    const Arrow = styled.div<{ open: boolean }>`\n      width: 8px;\n      height: 8px;\n      border-left: 3px solid blue;\n      border-bottom: 3px solid blue;\n      transform: ${props => (props.open ? \"rotate(135deg)\" : \"rotate(-45deg)\")};\n      transition: transform 1s;\n      display: inline-block;\n      vertical-align: middle;\n    `;\n    return (\n      <Wrapper>\n        <Collapsable header={\"Hello\"} ArrowComponent={Arrow} open={false}>\n          <p> Some Content </p>\n        </Collapsable>\n      </Wrapper>\n    );\n  })\n  .add(\"with open text\", () => {\n    return (\n      <Wrapper>\n        <Collapsable header={\"Hello\"} headerOpen={\"goodbye\"} open={false}>\n          <p> Some Content </p>\n        </Collapsable>\n      </Wrapper>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Collapsable.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"./styleConstants\";\n\nexport interface OpenBool {\n  open: boolean;\n}\n\nexport interface ArrowProps extends OpenBool {\n  disabled?: boolean;\n}\n\nexport interface CollapsableProps extends OpenBool {\n  header: React.ReactNode;\n  headerOpen?: React.ReactNode;\n  ArrowComponent?: any;\n  disabled?: boolean;\n  className?: string; // for use as styled component\n}\n\nexport interface CollapseAreaProps extends OpenBool {\n  height: number | null;\n}\n\nexport const CollapseArea = styled.div<CollapseAreaProps>`\n  height: ${props => (props.open ? `${props.height ? `${props.height}px` : \"auto\"}` : \"0px\")};\n  transition: height 1s;\n  overflow: ${props => (props.open ? \"visible\" : \"hidden\")};\n`;\n\nexport const Arrow = styled.div<ArrowProps>`\n  width: 8px;\n  height: 8px;\n  border-left: 3px solid ${props => (props.disabled ? colors.accent.CIVIL_GRAY_3 : colors.primary.CIVIL_GRAY_1)};\n  border-bottom: 3px solid ${props => (props.disabled ? colors.accent.CIVIL_GRAY_3 : colors.primary.CIVIL_GRAY_1)};\n  transform: ${props => (props.open ? \"rotate(135deg)\" : \"rotate(-45deg)\")};\n  transition: transform 1s;\n  position: absolute;\n  right: 0;\n  top: 10px;\n`;\n\nexport const HeaderWrapper = styled.div`\n  position: relative;\n  cursor: pointer;\n`;\n\nexport class Collapsable extends React.Component<CollapsableProps, CollapseAreaProps> {\n  public collapseArea: HTMLDivElement | null;\n\n  constructor(props: CollapsableProps) {\n    super(props);\n    this.state = {\n      open: props.open,\n      height: null,\n    };\n    this.collapseArea = null;\n  }\n\n  public componentDidMount(): void {\n    if (this.collapseArea) {\n      this.collapseArea!.addEventListener(\"transitionend\", () => {\n        if (this.state.open) {\n          this.setState({ height: null });\n        }\n      });\n    }\n  }\n\n  public componentWillReceiveProps(nextProps: CollapsableProps): void {\n    if (nextProps.open !== this.props.open) {\n      this.setState({ open: nextProps.open });\n    }\n  }\n  public render(): JSX.Element {\n    let header = this.props.header;\n    if (this.state.open && this.props.headerOpen) {\n      header = this.props.headerOpen;\n    }\n    return (\n      <div className={this.props.className}>\n        <HeaderWrapper onClick={this.open}>\n          {header}{\" \"}\n          {this.props.ArrowComponent ? (\n            <this.props.ArrowComponent disabled={this.props.disabled} open={this.state.open} />\n          ) : (\n            <Arrow disabled={this.props.disabled} open={this.state.open} />\n          )}\n        </HeaderWrapper>\n        <CollapseArea ref={(el: any) => (this.collapseArea = el)} height={this.state.height} open={this.state.open}>\n          {this.props.children}\n        </CollapseArea>\n      </div>\n    );\n  }\n  private open = (): void => {\n    if (!this.props.disabled) {\n      if (this.state.open) {\n        this.setState({ height: this.collapseArea!.clientHeight });\n      }\n      setImmediate(() => {\n        this.setState({ open: !this.state.open });\n      });\n    }\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Comments/CommentsCount.tsx",
    "content": "import * as React from \"react\";\nimport { CommentsCountStyled, CommentsLabel } from \"./CommentsStyledComponents\";\n\nexport interface CommentsCountProps {\n  numComments: number;\n}\n\nexport class CommentsCount extends React.Component<CommentsCountProps> {\n  public render(): JSX.Element {\n    return (\n      <CommentsCountStyled>\n        {this.props.numComments !== 0 ? (\n          this.renderContributers()\n        ) : (\n          <CommentsLabel>Be the first to Comment</CommentsLabel>\n        )}\n      </CommentsCountStyled>\n    );\n  }\n  private renderContributers = (): JSX.Element => {\n    return (\n      <>\n        <CommentsLabel>\n          {this.props.numComments}\n          {this.props.numComments === 1 ? \" Comment\" : \" Comments\"}\n        </CommentsLabel>\n      </>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Comments/CommentsStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"@joincivil/elements\";\n\nexport const CommentsCountStyled = styled.div`\n  align-items: center;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  font-weight: 600;\n  line-height: 13px;\n`;\n\nexport const CommentsLabel = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: 400;\n  line-height: 14px;\n\n  svg {\n    opacity: 0.3;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Comments/index.ts",
    "content": "export * from \"./CommentsCount\";\nexport * from \"./CommentsStyledComponents\";\n"
  },
  {
    "path": "packages/components/src/Contributors/ContributorCount.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ContributorCountStyled,\n  ContributorsLabel,\n  ContributorCountAvatars,\n  ContributorCountAvatar,\n} from \"./ContributorsStyledComponents\";\nimport { ContributorData } from \"./types\";\nimport { ContributorsDefaultAvatar } from \"./ContributorsDefaultAvatar\";\n\nexport interface ContributorsCountProps {\n  displayedContributors: ContributorData[];\n  totalContributors: number;\n}\n\nexport class ContributorCount extends React.Component<ContributorsCountProps> {\n  public render(): JSX.Element {\n    return (\n      <ContributorCountStyled>\n        {this.props.totalContributors !== 0 ? (\n          this.renderContributers()\n        ) : (\n          <ContributorsLabel>Be the first to Boost</ContributorsLabel>\n        )}\n      </ContributorCountStyled>\n    );\n  }\n  private renderContributers = (): JSX.Element => {\n    return (\n      <>\n        <ContributorCountAvatars>\n          {this.props.displayedContributors.slice(0, 3).map((contributor: any, i: number) => {\n            return (\n              <ContributorCountAvatar key={i}>\n                {contributor.payerChannel && contributor.payerChannel.tiny72AvatarDataUrl ? (\n                  <img src={contributor.payerChannel.tiny72AvatarDataUrl} />\n                ) : (\n                  <ContributorsDefaultAvatar contributor={contributor[i]} index={i} size={15} />\n                )}\n              </ContributorCountAvatar>\n            );\n          })}\n        </ContributorCountAvatars>\n        <ContributorsLabel>\n          {this.props.totalContributors}\n          {this.props.totalContributors === 1 ? \" Booster\" : \" Boosters\"}\n        </ContributorsLabel>\n      </>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Contributors/Contributors.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Contributors } from \"./Contributors\";\nimport { ContributorCount } from \"./ContributorCount\";\nimport { ContributorsDefaultAvatar } from \"./ContributorsDefaultAvatar\";\n\nconst Container = styled.div`\n  width: 400px;\n`;\n\nconst contributors = [\n  {\n    usdEquivalent: 2.5,\n    payerChannel: {\n      handle: \"violetnight13\",\n      tiny72AvatarDataUrl: \"https://picsum.photos/50\",\n    },\n  },\n  {\n    usdEquivalent: 3,\n    payerChannel: {\n      handle: \"CaryRay\",\n      tiny72AvatarDataUrl: \"https://picsum.photos/50\",\n    },\n  },\n  {\n    usdEquivalent: 5,\n    payerChannel: {\n      handle: \"ronburgundy\",\n      tiny72AvatarDataUrl: \"https://picsum.photos/50\",\n    },\n  },\n];\n\nstoriesOf(\"Common / Contributors\", module)\n  .add(\"Contributors\", () => {\n    return (\n      <Container>\n        <Contributors sortedContributors={contributors} />\n      </Container>\n    );\n  })\n  .add(\"Contributor Count\", () => {\n    return (\n      <Container>\n        <ContributorCount displayedContributors={contributors} totalContributors={30} />\n      </Container>\n    );\n  })\n  .add(\"Contributor Default Avatar\", () => {\n    return (\n      <Container>\n        <ContributorsDefaultAvatar contributor={contributors[0]} index={1} size={17} />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Contributors/Contributors.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ContributorsStyled,\n  ContributorsTitle,\n  ContributorsLabel,\n  ContributorsPrompt,\n  ContributorItem,\n  ContributorAvatar,\n  ContributorUserName,\n  ContributorAmount,\n  ContributorsIconBorder,\n} from \"./ContributorsStyledComponents\";\nimport { ContributorData } from \"./types\";\nimport { TipIcon } from \"@joincivil/elements\";\nimport { ContributorsDefaultAvatar } from \"./ContributorsDefaultAvatar\";\n\nexport interface ContributorsProps {\n  sortedContributors: ContributorData[];\n}\n\nexport const Contributors: React.FunctionComponent<ContributorsProps> = props => {\n  return (\n    <ContributorsStyled>\n      <ContributorsTitle>Recent Boosters</ContributorsTitle>\n      {props.sortedContributors ? (\n        props.sortedContributors.slice(0, 3).map((contributor: any, i: number) => {\n          return (\n            <ContributorItem key={i}>\n              {contributor.payerChannel && contributor.payerChannel.tiny72AvatarDataUrl ? (\n                <ContributorAvatar src={contributor.payerChannel.tiny72AvatarDataUrl} />\n              ) : (\n                <ContributorsDefaultAvatar contributor={contributor[i]} index={i} size={25} />\n              )}\n              <div>\n                <ContributorUserName>{contributor.payerChannel && contributor.payerChannel.handle}</ContributorUserName>\n                <ContributorAmount>{\"$\" + contributor.usdEquivalent.toFixed(2)}</ContributorAmount>\n              </div>\n            </ContributorItem>\n          );\n        })\n      ) : (\n        <ContributorsPrompt>\n          <ContributorsIconBorder>\n            <TipIcon width={18} height={18} />\n          </ContributorsIconBorder>\n          <ContributorsLabel>Be the first to Boost</ContributorsLabel>\n        </ContributorsPrompt>\n      )}\n    </ContributorsStyled>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Contributors/ContributorsDefaultAvatar.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, AvatarGenericIcon } from \"@joincivil/elements\";\n\nexport interface ContributorsDefaultAvatarProps {\n  contributor: any;\n  index: number;\n  size: number;\n}\n\nexport interface ContributorsDefaultAvatarStyledProps {\n  backgroundColor: string;\n  size: number;\n}\n\nexport const ContributorsDefaultAvatarStyled = styled.div`\n  align-items: center;\n  background-color: ${(props: ContributorsDefaultAvatarStyledProps) => props.backgroundColor};\n  border: 1px solid ${colors.basic.WHITE};\n  border-radius: 50%;\n  color: ${colors.basic.WHITE};\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 10px;\n  height: ${(props: ContributorsDefaultAvatarStyledProps) => props.size + \"px\"};\n  justify-content: center;\n  margin-right: 10px;\n  text-transform: uppercase;\n  width: ${(props: ContributorsDefaultAvatarStyledProps) => props.size + \"px\"};\n`;\n\nconst AvatarGenericIconStyled = styled.div`\n  border: 1px solid ${colors.basic.WHITE};\n  border-radius: 50%;\n  margin-right: 10px;\n`;\n\nexport const ContributorsDefaultAvatar: React.FunctionComponent<ContributorsDefaultAvatarProps> = props => {\n  const avatarColors = [\"#EF6B4A\", \"#9452B5\", \"#A5CE52\"];\n\n  // user has an account but no avatar\n  if (props.contributor && props.contributor.payerChannel && props.contributor.payerChannel.handle) {\n    const initial = props.contributor.payerChannel.handle.charAt(0);\n    return (\n      <ContributorsDefaultAvatarStyled backgroundColor={avatarColors[props.index]} size={props.size}>\n        {initial}\n      </ContributorsDefaultAvatarStyled>\n    );\n  }\n\n  // guest user, no handle\n  return (\n    <AvatarGenericIconStyled>\n      <AvatarGenericIcon size={props.size} />\n    </AvatarGenericIconStyled>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Contributors/ContributorsStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"@joincivil/elements\";\n\nexport const ContributorsStyled = styled.div`\n  margin-bottom: 15px;\n`;\n\nexport const ContributorsTitle = styled.label`\n  display: block;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 10px;\n  font-weight: 700;\n  letter-spacing: 0.82px;\n  line-height: 12px;\n  margin-bottom: 10px;\n  text-transform: uppercase;\n`;\n\nexport const ContributorItem = styled.div`\n  align-items: center;\n  display: flex;\n  margin-bottom: 10px;\n`;\n\nexport const ContributorAvatar = styled.img`\n  border-radius: 50%;\n  height: 25px;\n  margin-right: 10px;\n  width: 25px;\n`;\n\nexport const ContributorUserName = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  line-height: 14px;\n  margin-bottom: 2px;\n`;\n\nexport const ContributorAmount = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  font-weight: 600;\n  line-height: 13px;\n`;\n\nexport const ContributorCountStyled = styled.div`\n  align-items: center;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  font-weight: 600;\n  line-height: 13px;\n`;\n\nexport const ContributorCountAvatars = styled.div`\n  display: flex;\n  margin-right: 5px;\n`;\n\nexport const ContributorCountAvatar = styled.span`\n  & > div {\n    margin: 0;\n  }\n\n  &:nth-of-type(2),\n  &:nth-of-type(3) {\n    margin-left: -4px;\n  }\n\n  img {\n    border: 1px solid ${colors.basic.WHITE};\n    border-radius: 50%;\n    height: 17px;\n    width: 17px;\n  }\n`;\n\nexport const ContributorsLabel = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: 400;\n  line-height: 14px;\n\n  svg {\n    opacity: 0.3;\n  }\n`;\n\nexport const ContributorsPrompt = styled.div`\n  align-items: center;\n  display: flex;\n`;\n\nexport const ContributorsIconBorder = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 50%;\n  height: 26px;\n  margin-right: 6px;\n  padding: 3px;\n  width: 26px;\n\n  svg {\n    opacity: 0.3;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Contributors/__snapshots__/Contributors.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Contributors Contributor Count 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOi jDltQr\"\n    >\n      <div\n        className=\"sc-LzNsI gjiPEX\"\n      >\n        <div\n          className=\"sc-LzNsJ TlAbi\"\n        >\n          <span\n            className=\"sc-LzNsK iFkIEe\"\n          >\n            <img\n              src=\"https://picsum.photos/50\"\n            />\n          </span>\n          <span\n            className=\"sc-LzNsK iFkIEe\"\n          >\n            <img\n              src=\"https://picsum.photos/50\"\n            />\n          </span>\n          <span\n            className=\"sc-LzNsK iFkIEe\"\n          >\n            <img\n              src=\"https://picsum.photos/50\"\n            />\n          </span>\n        </div>\n        <span\n          className=\"sc-LzNti lgcgGr\"\n        >\n          30\n           Boosters\n        </span>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Contributors\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Contributor Count\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ContributorCount\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        displayedContributors\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            [\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    usdEquivalent\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  2.5\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    payerChannel\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      handle\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'violetnight13'\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      tiny72AvatarDataUrl\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'https://picsum.photos/50'\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    usdEquivalent\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  3\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    payerChannel\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      handle\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'CaryRay'\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      tiny72AvatarDataUrl\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'https://picsum.photos/50'\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    usdEquivalent\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  5\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    payerChannel\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      handle\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'ronburgundy'\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      tiny72AvatarDataUrl\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'https://picsum.photos/50'\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            ]\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        totalContributors\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            30\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ContributorCount\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Contributors Contributor Default Avatar 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOi jDltQr\"\n    >\n      <div\n        className=\"sc-LzNtl epmrTc\"\n        size={17}\n      >\n        v\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Contributors\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Contributor Default Avatar\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ContributorsDefaultAvatar\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        contributor\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                usdEquivalent\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              2.5\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                payerChannel\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  handle\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                'violetnight13'\n                              </span>\n                              ,\n                              <span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  tiny72AvatarDataUrl\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                'https://picsum.photos/50'\n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        index\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            1\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        size\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            17\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ContributorsDefaultAvatar\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Contributors Contributors 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOi jDltQr\"\n    >\n      <div\n        className=\"sc-LzNsC hIgdvL\"\n      >\n        <label\n          className=\"sc-LzNsD fDpfzU\"\n        >\n          Recent Boosters\n        </label>\n        <div\n          className=\"sc-LzNsE emurie\"\n        >\n          <img\n            className=\"sc-LzNsF PFwkP\"\n            src=\"https://picsum.photos/50\"\n          />\n          <div>\n            <div\n              className=\"sc-LzNsG iTBGAl\"\n            >\n              violetnight13\n            </div>\n            <div\n              className=\"sc-LzNsH ihtiXM\"\n            >\n              $2.50\n            </div>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzNsE emurie\"\n        >\n          <img\n            className=\"sc-LzNsF PFwkP\"\n            src=\"https://picsum.photos/50\"\n          />\n          <div>\n            <div\n              className=\"sc-LzNsG iTBGAl\"\n            >\n              CaryRay\n            </div>\n            <div\n              className=\"sc-LzNsH ihtiXM\"\n            >\n              $3.00\n            </div>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzNsE emurie\"\n        >\n          <img\n            className=\"sc-LzNsF PFwkP\"\n            src=\"https://picsum.photos/50\"\n          />\n          <div>\n            <div\n              className=\"sc-LzNsG iTBGAl\"\n            >\n              ronburgundy\n            </div>\n            <div\n              className=\"sc-LzNsH ihtiXM\"\n            >\n              $5.00\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Contributors\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Contributors\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Contributors\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        sortedContributors\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            [\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    usdEquivalent\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  2.5\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    payerChannel\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      handle\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'violetnight13'\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      tiny72AvatarDataUrl\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'https://picsum.photos/50'\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    usdEquivalent\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  3\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    payerChannel\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      handle\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'CaryRay'\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      tiny72AvatarDataUrl\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'https://picsum.photos/50'\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                {\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    usdEquivalent\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  5\n                                </span>\n                                ,\n                                <span>\n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#666\",\n                                      }\n                                    }\n                                  >\n                                    payerChannel\n                                  </span>\n                                </span>\n                                : \n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      handle\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'ronburgundy'\n                                  </span>\n                                  ,\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      tiny72AvatarDataUrl\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    'https://picsum.photos/50'\n                                  </span>\n                                  }\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            ]\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Contributors\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Contributors/index.ts",
    "content": "export * from \"./Contributors\";\nexport * from \"./ContributorCount\";\nexport * from \"./ContributorsStyledComponents\";\nexport * from \"./types\";\n"
  },
  {
    "path": "packages/components/src/Contributors/types.ts",
    "content": "export interface ContributorData {\n  usdEquivalent: number;\n  payerChannel: {\n    handle: string;\n    tiny72AvatarDataUrl: string;\n  };\n}\n"
  },
  {
    "path": "packages/components/src/CopyToClipboard/CopyStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\nimport { InvertedButton } from \"../Button\";\n\nexport const CopyBtn = styled(InvertedButton)`\n  background-color: transparent;\n  border: none;\n  font-size: 13px;\n  font-weight: 700;\n  letter-spacing: 0.3px;\n  padding: 0;\n  text-transform: none;\n\n  &:hover,\n  &:focus {\n    background-color: transparent;\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: underline;\n  }\n`;\n\nexport const CopyURLSuccess = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  font-weight: bold;\n  line-height: 24px;\n  text-align: center;\n\n  svg {\n    vertical-align: sub;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/CopyToClipboard/CopyURL.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { CopyURL } from \"./CopyURL\";\nimport styled from \"styled-components\";\n\nconst Container = styled.div`\n  width: 300px;\n`;\n\nstoriesOf(\"Common / Copy\", module).add(\"Copy URL\", () => {\n  return (\n    <Container>\n      <CopyURL copyText={\"Copy the URL to open in your own wallet\"} />\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/CopyToClipboard/CopyURL.tsx",
    "content": "import * as React from \"react\";\nimport { copyToClipboard } from \"@joincivil/utils\";\nimport { CopyBtn, CopyURLSuccess } from \"./CopyStyledComponents\";\nimport { HollowGreenCheck } from \"../icons\";\n\nexport interface CopyURLProps {\n  copyText?: string;\n}\n\nexport interface CopyURLStates {\n  copied: boolean;\n}\n\nexport class CopyURL extends React.Component<CopyURLProps, CopyURLStates> {\n  public constructor(props: CopyURLProps) {\n    super(props);\n    this.state = {\n      copied: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    if (this.state.copied) {\n      return (\n        <CopyURLSuccess>\n          <HollowGreenCheck height={15} width={15} /> Copied\n        </CopyURLSuccess>\n      );\n    }\n\n    return <CopyBtn onClick={(ev: any) => this.copy()}>{this.props.copyText || \"Copy the URL\"}</CopyBtn>;\n  }\n\n  private copy = () => {\n    copyToClipboard(window.location.href);\n    this.setState({\n      copied: true,\n    });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/CopyToClipboard/__snapshots__/CopyURL.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Copy Copy URL 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOj gWVscH\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLQ sc-LzNsd iatkiA\"\n        onClick={[Function]}\n        theme={\n          Object {\n            \"invertedButtonBackground\": \"#FFFFFF\",\n            \"invertedButtonColor\": \"#2B56FF\",\n          }\n        }\n        type=\"button\"\n      >\n        Copy the URL to open in your own wallet\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Copy\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Copy URL\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CopyURL\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        copyText\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            Copy the URL to open in your own wallet\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CopyURL\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/CopyToClipboard/index.ts",
    "content": "export * from \"./CopyURL\";\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/CurrencyConverted.tsx",
    "content": "import * as React from \"react\";\nimport { CurrencyConvertedBox, CurrencyCode, CurrencyConvertedPrice } from \"./CurrencyConverterStyledComponents\";\n\nexport interface CurrencyConvertedProps {\n  currencyCode?: string | JSX.Element;\n  currentPrice?: number;\n}\n\nexport interface CurrencyConvertedStates {\n  convertedCurrency?: number;\n}\n\nexport class CurrencyConverted extends React.Component<CurrencyConvertedProps, CurrencyConvertedStates> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      convertedCurrency: this.props.currentPrice || 0,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <CurrencyConvertedBox>\n          <CurrencyConvertedPrice>{this.props.currentPrice}</CurrencyConvertedPrice>\n          <CurrencyCode>{this.props.currencyCode}</CurrencyCode>\n        </CurrencyConvertedBox>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/CurrencyConverter.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { CurrencyConverter } from \"./CurrencyConverter\";\nimport styled from \"styled-components\";\n\nconst Container = styled.div`\n  width: 500px;\n`;\n\nconst typeDefs = `\n  type Query {\n    storefrontEthPrice: Float\n    storefrontCvlPrice: Float\n    storefrontCvlQuoteUsd(usdToSpend: Float!): Float\n  }\n\n  schema {\n    query: Query\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      storefrontEthPrice: () => {\n        return 102.98;\n      },\n      storefrontCvlPrice: () => {\n        return 0.2;\n      },\n      storefrontCvlQuoteUsd: () => {\n        return 500.48635;\n      },\n    };\n  },\n};\n\nstoriesOf(\"Common / Currency / Currency Converter\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .add(\"USD to ETH\", () => {\n    return (\n      <Container>\n        <div>(exchange rate is 0.5x)</div>\n        <CurrencyConverter\n          fromValue=\"3\"\n          currencyCodeFrom=\"USD\"\n          currencyCodeTo=\"ETH\"\n          currencyLabelFrom=\"Enter USD Amount\"\n          currencyLabelTo=\"Converted ETH\"\n          displayErrorMsg={true}\n          onConversion={() => null}\n          doConversion={async (from: number) => from * 2}\n          onNotEnoughEthError={(error: boolean) => console.log(error)}\n        />\n      </Container>\n    );\n  })\n  .add(\"CVL to ETH\", () => {\n    return (\n      <Container>\n        <div>(exchange rate is 2x)</div>\n        <CurrencyConverter\n          currencyCodeFrom=\"CVL\"\n          currencyCodeTo=\"ETH\"\n          currencyLabelFrom=\"Enter CVL Amount\"\n          currencyLabelTo=\"Converted ETH\"\n          onConversion={() => null}\n          doConversion={async (from: number) => from * 2}\n        />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/CurrencyConverter.tsx",
    "content": "import * as React from \"react\";\nimport {\n  CurrencyConverterContain,\n  CurrencyContain,\n  CurrencyLabel,\n  StyledCurrencyInputWithButton,\n  CurrencyErrorMsg,\n  CurrencyIconContain,\n} from \"./CurrencyConverterStyledComponents\";\nimport { ExchangeArrowsIcon, WarningIcon } from \"../icons\";\nimport { CurrencyConverted } from \"./CurrencyConverted\";\nimport { CurrencyInputWithoutButton } from \"../input\";\nimport { debounce } from \"lodash\";\nimport { CivilContext, ICivilContext } from \"../context\";\nimport { colors } from \"../styleConstants\";\n\nexport interface CurrencyConverterProps {\n  currencyCodeFrom: string;\n  currencyLabelFrom?: string | JSX.Element;\n  currencyCodeTo: string;\n  currencyLabelTo?: string | JSX.Element;\n  displayErrorMsg?: boolean;\n  fromValue?: string;\n  className?: string;\n  doConversion(fromValue: number): Promise<number>;\n  onConversion(fromValue: number, toValue: number): void;\n  onNotEnoughEthError?(error: boolean): void;\n}\n\nexport interface CurrencyConverterState {\n  fromValue: number;\n  toValue: number;\n  balance: number;\n  enoughEthError: boolean;\n}\n\nexport class CurrencyConverter extends React.Component<CurrencyConverterProps, CurrencyConverterState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  private handleConversionDebounced: (fromValueString: string) => Promise<void>;\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      fromValue: 0,\n      toValue: 0,\n      balance: 0,\n      enoughEthError: false,\n    };\n\n    this.handleConversionDebounced = debounce(this.handleConversion.bind(this), 500, { maxWait: 2000 });\n  }\n\n  public async componentDidMount(): Promise<void> {\n    const civil = this.context.civil;\n    if (this.props.fromValue) {\n      await this.handleConversionDebounced(this.props.fromValue);\n    }\n    if (civil) {\n      await civil.currentProviderEnable();\n      const account = await civil.accountStream.first().toPromise();\n      if (account) {\n        await this.setState({\n          balance: await civil.accountBalance(account),\n        });\n        // Now that we have balance we should do conversion again where we check if they have enough ETH for it\n        if (this.props.fromValue) {\n          await this.handleConversion(this.props.fromValue);\n        }\n      }\n    }\n  }\n\n  public render(): JSX.Element {\n    return (\n      <CurrencyConverterContain className={this.props.className}>\n        <CurrencyContain>\n          <CurrencyLabel>{this.props.currencyLabelFrom}</CurrencyLabel>\n          <StyledCurrencyInputWithButton>\n            <CurrencyInputWithoutButton\n              name=\"Convert currency\"\n              icon={<>{this.props.currencyCodeFrom}</>}\n              onChange={async (_, amount) => this.handleConversionDebounced(amount)}\n              value={this.props.fromValue}\n            />\n          </StyledCurrencyInputWithButton>\n        </CurrencyContain>\n        <CurrencyIconContain>\n          <ExchangeArrowsIcon />\n        </CurrencyIconContain>\n        <CurrencyContain>\n          <CurrencyLabel>{this.props.currencyLabelTo}</CurrencyLabel>\n          <CurrencyConverted currentPrice={this.state.toValue} currencyCode={this.props.currencyCodeTo} />\n        </CurrencyContain>\n\n        {this.props.displayErrorMsg && this.state.enoughEthError && this.renderErrorMsg()}\n      </CurrencyConverterContain>\n    );\n  }\n\n  private async handleConversion(fromValueString: string): Promise<void> {\n    let fromValue = Number.parseFloat(fromValueString);\n    if (isNaN(fromValue)) {\n      fromValue = 0;\n    }\n    const toValue = await this.props.doConversion(fromValue);\n    const enoughEthError = toValue > this.state.balance ? true : false;\n    this.onNotEnoughEthError(enoughEthError);\n    const nextState = { fromValue, toValue, enoughEthError };\n    this.setState(nextState);\n    this.props.onConversion(nextState.fromValue, nextState.toValue);\n  }\n\n  private onNotEnoughEthError = (error: boolean) => {\n    if (this.props.onNotEnoughEthError) {\n      this.props.onNotEnoughEthError(error);\n    }\n  };\n\n  private renderErrorMsg = () => {\n    return (\n      <CurrencyErrorMsg>\n        <WarningIcon color={colors.accent.CIVIL_RED} height={15} width={15} />\n        <p>You don’t have enough ETH in your wallet.</p>\n      </CurrencyErrorMsg>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/CurrencyConverterStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\n\nexport const CurrencyConverterSection = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  padding: 20px 0 10px;\n  text-align: left;\n`;\n\nexport const CurrencyConverterContain = styled.div`\n  align-items: flex-end;\n  display: flex;\n  justify-content: space-between;\n  position: relative;\n  width: 100%;\n\n  * {\n    box-sizing: border-box;\n  }\n`;\n\nexport const CurrencyContain = styled.div`\n  max-width: 250px;\n  padding-bottom: 35px;\n  width: 45%;\n`;\n\nexport const CurrencyLabel = styled.label`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-size: 14px;\n  line-height: 32px;\n`;\n\nexport const StyledCurrencyInputWithButton = styled.div`\n  & > div {\n    font-size: 15px;\n    line-height: 24px;\n    padding: 12px 15px;\n\n    ${mediaQueries.MOBILE} {\n      padding: 10px;\n    }\n  }\n\n  input {\n    line-height: 24px;\n  }\n\n  & > div > div + div {\n    font-size: 14px;\n    line-height: 17px;\n    right: 30px;\n\n    ${mediaQueries.MOBILE} {\n      right: 25px;\n    }\n  }\n`;\n\nexport const CurrencyConvertedBox = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  border-radius: 3px;\n  font-size: 15px;\n  line-height: 24px;\n  padding: 12px 53px 12px 12px;\n  position: relative;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    padding: 10px 53px 10px 10px;\n  }\n`;\n\nexport const CurrencyConvertedPrice = styled.div`\n  overflow: hidden;\n  width: 100%;\n`;\n\nexport const CurrencyCode = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 17px;\n  position: absolute;\n  right: 20px;\n  text-align: right;\n  top: calc(50% - 8px);\n`;\n\nexport const CurrencyIconContain = styled.div`\n  margin: 16px 16px 53px;\n\n  ${mediaQueries.MOBILE} {\n    margin: 10px 10px 53px;\n  }\n`;\n\nexport const CurrencyCalcCVL = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  text-align: center;\n\n  span {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 22px;\n  }\n\n  h4 {\n    font-size: 28px;\n    font-weight: 500;\n    letter-spacing: -0.58px;\n    line-height: 39px;\n    margin: 0;\n  }\n\n  p {\n    font-size: 14px;\n    line-height: 22px;\n    margin: 0;\n  }\n`;\n\nexport const CurrencyErrorMsg = styled.div`\n  bottom: 10px;\n  padding-left: 22px;\n  position: absolute;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    bottom: 0;\n  }\n\n  svg {\n    left: 0;\n    position: absolute;\n    top: 0;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_RED};\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 12px;\n    line-height: 15px;\n    margin: 0;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/CurrencyConverterTextComponents.tsx",
    "content": "import * as React from \"react\";\n\nexport interface CurrencyCVLTextProps {\n  pricePerCvl: number;\n  totalPrice: number;\n}\n\nexport const CurrencyCVLPriceText: React.FunctionComponent<CurrencyCVLTextProps> = props => (\n  <>\n    <span>You are buying</span>\n    <h4>{props.totalPrice} CVL</h4>\n    <p>approx. @ ${props.pricePerCvl} per CVL</p>\n  </>\n);\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/UsdEthConverter.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { Query } from \"react-apollo\";\nimport { CurrencyConverter } from \"./CurrencyConverter\";\n\nconst ethPriceQuery = gql`\n  query {\n    storefrontEthPrice\n  }\n`;\n\nexport interface UsdEthConverterProps {\n  fromValue?: string;\n  displayErrorMsg?: boolean;\n  className?: string;\n  onNotEnoughEthError?(error: boolean): void;\n  onConversion(usdValue: number, ethValue: number): void;\n}\nexport const UsdEthConverter = (props: UsdEthConverterProps) => {\n  return (\n    <Query<any> query={ethPriceQuery}>\n      {({ loading, error, data }) => {\n        if (loading) {\n          return <div />;\n        }\n        return (\n          <>\n            <CurrencyConverter\n              className={props.className}\n              fromValue={props.fromValue}\n              currencyCodeFrom=\"USD\"\n              currencyLabelFrom=\"Enter USD Amount\"\n              currencyCodeTo=\"ETH\"\n              currencyLabelTo=\"Amount of ETH\"\n              displayErrorMsg={props.displayErrorMsg !== false}\n              doConversion={async (usdAmount: number) => convertToETH(usdAmount, data.storefrontEthPrice)}\n              onConversion={(usdValue, ethValue) => props.onConversion(usdValue, ethValue)}\n              onNotEnoughEthError={props.onNotEnoughEthError}\n            />\n          </>\n        );\n      }}\n    </Query>\n  );\n\n  async function convertToETH(usdAmount: number, storefrontEthPrice: number): Promise<number> {\n    const newConvertedEth = usdAmount / storefrontEthPrice;\n    return newConvertedEth;\n  }\n};\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/UsdEthCvlConverter.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport { Query } from \"react-apollo\";\nimport { CurrencyConverterSection, CurrencyCalcCVL } from \"./CurrencyConverterStyledComponents\";\nimport { CurrencyCVLPriceText } from \"./CurrencyConverterTextComponents\";\nimport { UsdEthConverter } from \"./UsdEthConverter\";\n\nconst cvlPriceQuery = gql`\n  query($usdToSpend: Float!) {\n    storefrontCvlPrice\n    storefrontCvlQuoteUsd(usdToSpend: $usdToSpend)\n  }\n`;\n\nexport interface CurrencyConverterProps {\n  currencyLabelLeft?: string | JSX.Element;\n  currencyLabelRight?: string | JSX.Element;\n  onConversion(usdValue: number, ethValue: number): void;\n  onCVLToBuyUpdate(cvlToBuy: number): void;\n}\n\nexport interface CurrencyConverterStates {\n  usdToSpend: number;\n  convertedEth: number;\n}\n\nexport class UsdEthCvlConverter extends React.Component<CurrencyConverterProps, CurrencyConverterStates> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      usdToSpend: 0,\n      convertedEth: 0,\n    };\n  }\n\n  public render(): JSX.Element {\n    const usdToSpend = this.state.usdToSpend;\n    const updateConversion = this.updateConversion.bind(this);\n\n    return (\n      <CurrencyConverterSection>\n        <UsdEthConverter onConversion={updateConversion} />\n        <CurrencyCalcCVL>\n          <Query<any> query={cvlPriceQuery} variables={{ usdToSpend }}>\n            {({ loading, error, data }) => {\n              return (\n                <CurrencyCVLPriceText pricePerCvl={data.storefrontCvlPrice} totalPrice={data.storefrontCvlQuoteUsd} />\n              );\n            }}\n          </Query>\n        </CurrencyCalcCVL>\n      </CurrencyConverterSection>\n    );\n  }\n\n  private updateConversion(usdValue: number, ethValue: number): void {\n    this.setState({ usdToSpend: usdValue });\n    this.props.onConversion(usdValue, ethValue);\n  }\n}\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/__snapshots__/CurrencyConverter.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Currency / Currency Converter CVL to ETH 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOk bKKluS\"\n    >\n      <div>\n        (exchange rate is 2x)\n      </div>\n      <div\n        className=\"sc-LzNrr dvjVQm\"\n      >\n        <div\n          className=\"sc-LzNrs bONglL\"\n        >\n          <label\n            className=\"sc-LzNrt haOEja\"\n          >\n            Enter CVL Amount\n          </label>\n          <div\n            className=\"sc-LzNru gsNssA\"\n          >\n            <div\n              className=\"sc-fzXfPM hfRMWm\"\n            >\n              <div\n                className=\" sc-fzXfNe laEExU\"\n              >\n                <input\n                  className=\"sc-fzXfNe laEExU\"\n                  name=\"Convert currency\"\n                  onBlur={[Function]}\n                  onChange={[Function]}\n                  onFocus={[Function]}\n                  type=\"number\"\n                />\n              </div>\n              <div\n                className=\"sc-fzXfPN QKiye\"\n              >\n                CVL\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzNrV inoUqa\"\n        >\n          <svg\n            height=\"14\"\n            viewBox=\"0 0 18 14\"\n            width=\"18\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"#8B8581\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n            >\n              <g\n                transform=\"translate(-336 -216)\"\n              >\n                <path\n                  d=\"M349,228 L349,221 L347,221 L347,228 L344,228 L348,232 L352,228 L349,228 L349,228 Z M342,214 L338,218 L341,218 L341,225 L343,225 L343,218 L346,218 L342,214 L342,214 Z\"\n                  transform=\"translate(345 223) rotate(90) translate(-345 -223)\"\n                />\n              </g>\n            </g>\n          </svg>\n        </div>\n        <div\n          className=\"sc-LzNrs bONglL\"\n        >\n          <label\n            className=\"sc-LzNrt haOEja\"\n          >\n            Converted ETH\n          </label>\n          <div\n            className=\"sc-LzNrv cIBnUj\"\n          >\n            <div\n              className=\"sc-LzNrw cGQeGZ\"\n            >\n              0\n            </div>\n            <div\n              className=\"sc-LzNrU gLvCwB\"\n            >\n              ETH\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Currency / Currency Converter\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CVL to ETH\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.div\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        (exchange rate is 2x)\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      CurrencyConverter\n                    </span>\n                    <span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyCodeFrom\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              CVL\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyCodeTo\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              ETH\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyLabelFrom\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Enter CVL Amount\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyLabelTo\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Converted ETH\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          onConversion\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onConversion\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          doConversion\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              doConversion\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        <br />\n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.div\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CurrencyConverter\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Currency / Currency Converter USD to ETH 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOk bKKluS\"\n    >\n      <div>\n        (exchange rate is 0.5x)\n      </div>\n      <div\n        className=\"sc-LzNrr dvjVQm\"\n      >\n        <div\n          className=\"sc-LzNrs bONglL\"\n        >\n          <label\n            className=\"sc-LzNrt haOEja\"\n          >\n            Enter USD Amount\n          </label>\n          <div\n            className=\"sc-LzNru gsNssA\"\n          >\n            <div\n              className=\"sc-fzXfPM hfRMWm\"\n            >\n              <div\n                className=\" sc-fzXfNe laEExU\"\n              >\n                <input\n                  className=\"sc-fzXfNe laEExU\"\n                  name=\"Convert currency\"\n                  onBlur={[Function]}\n                  onChange={[Function]}\n                  onFocus={[Function]}\n                  type=\"number\"\n                  value=\"3\"\n                />\n              </div>\n              <div\n                className=\"sc-fzXfPN QKiye\"\n              >\n                USD\n              </div>\n            </div>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzNrV inoUqa\"\n        >\n          <svg\n            height=\"14\"\n            viewBox=\"0 0 18 14\"\n            width=\"18\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"#8B8581\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n            >\n              <g\n                transform=\"translate(-336 -216)\"\n              >\n                <path\n                  d=\"M349,228 L349,221 L347,221 L347,228 L344,228 L348,232 L352,228 L349,228 L349,228 Z M342,214 L338,218 L341,218 L341,225 L343,225 L343,218 L346,218 L342,214 L342,214 Z\"\n                  transform=\"translate(345 223) rotate(90) translate(-345 -223)\"\n                />\n              </g>\n            </g>\n          </svg>\n        </div>\n        <div\n          className=\"sc-LzNrs bONglL\"\n        >\n          <label\n            className=\"sc-LzNrt haOEja\"\n          >\n            Converted ETH\n          </label>\n          <div\n            className=\"sc-LzNrv cIBnUj\"\n          >\n            <div\n              className=\"sc-LzNrw cGQeGZ\"\n            >\n              0\n            </div>\n            <div\n              className=\"sc-LzNrU gLvCwB\"\n            >\n              ETH\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Currency / Currency Converter\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            USD to ETH\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.div\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        (exchange rate is 0.5x)\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      CurrencyConverter\n                    </span>\n                    <span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          fromValue\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyCodeFrom\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              USD\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyCodeTo\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              ETH\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyLabelFrom\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Enter USD Amount\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          currencyLabelTo\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Converted ETH\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          displayErrorMsg\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          onConversion\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onConversion\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          doConversion\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              doConversion\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          onNotEnoughEthError\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onNotEnoughEthError\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        <br />\n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.div\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CurrencyConverter\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/CurrencyConverter/index.ts",
    "content": "export * from \"./CurrencyConverted\";\nexport * from \"./CurrencyConverterStyledComponents\";\nexport * from \"./UsdEthCvlConverter\";\nexport * from \"./UsdEthConverter\";\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/ErrorLoadingData.tsx",
    "content": "import * as React from \"react\";\n\nimport { OctopusErrorIcon } from \"../icons\";\n\nimport { StyledErrorIconContainer, StyledLargeModalText } from \"./styledComponents\";\n\nexport interface ErrorLoadingDataProps {\n  toggleGraphQL?(): void | Promise<any>;\n}\n\nexport const ErrorLoadingData: React.FunctionComponent<ErrorLoadingDataProps> = props => {\n  return (\n    <>\n      <StyledErrorIconContainer>\n        <OctopusErrorIcon />\n      </StyledErrorIconContainer>\n\n      <StyledLargeModalText>\n        <b>Oops.</b> Looks like we're having trouble loading what you're looking for.\n      </StyledLargeModalText>\n\n      <SuggestedAction {...props} />\n    </>\n  );\n};\n\nconst SuggestedAction: React.FunctionComponent<ErrorLoadingDataProps> = () => {\n  return <></>;\n};\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/ErrorNotFound.tsx",
    "content": "import * as React from \"react\";\n\nimport { OctopusErrorIcon } from \"../icons\";\n\nimport { StyledErrorIconContainer, StyledLargeModalText } from \"./styledComponents\";\n\nexport interface ErrorNotFoundProps {\n  className?: string;\n}\n\nexport const ErrorNotFound: React.FunctionComponent<ErrorNotFoundProps> = props => {\n  const defaultCopy = \"This page could not be found.\";\n  return (\n    <div className={props.className}>\n      <StyledErrorIconContainer>\n        <OctopusErrorIcon />\n      </StyledErrorIconContainer>\n\n      <StyledLargeModalText>\n        <b>Oops.</b> {props.children || defaultCopy}\n      </StyledLargeModalText>\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/InsufficientCVL.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton, buttonSizes } from \"../Button\";\nimport { WarningIcon } from \"../icons\";\nimport {\n  StyledErrorMessage,\n  StyledBuyCVLButtonContainer,\n  StyledMessageIconContainer,\n  StyledMessageWithIconContainer,\n} from \"./styledComponents\";\nimport { InsufficientCVLProps, BuyCVLButtonProps } from \"./types\";\nimport {\n  InsufficientCVLForChallengeText,\n  InsufficientCVLForAppealText,\n  InsufficientCVLForAppealChallengeText,\n} from \"./textComponents\";\n\nexport const InsufficientCVL: React.FunctionComponent<BuyCVLButtonProps> = props => {\n  const { buyCVLURL } = props;\n  let buyBtnProps: any = { href: buyCVLURL };\n  if (buyCVLURL.charAt(0) === \"/\") {\n    buyBtnProps = { to: buyCVLURL };\n  }\n  return (\n    <StyledMessageWithIconContainer>\n      <StyledMessageIconContainer>\n        <WarningIcon />\n      </StyledMessageIconContainer>\n      <StyledErrorMessage>{props.children}</StyledErrorMessage>\n      {props.buyCVLURL && (\n        <StyledBuyCVLButtonContainer>\n          <InvertedButton {...buyBtnProps} size={buttonSizes.MEDIUM}>\n            Buy CVL\n          </InvertedButton>\n        </StyledBuyCVLButtonContainer>\n      )}\n    </StyledMessageWithIconContainer>\n  );\n};\n\nexport const InsufficientCVLForChallenge: React.FunctionComponent<InsufficientCVLProps & BuyCVLButtonProps> = props => {\n  return (\n    <InsufficientCVL buyCVLURL={props.buyCVLURL}>\n      <InsufficientCVLForChallengeText minDeposit={props.minDeposit} />\n    </InsufficientCVL>\n  );\n};\n\nexport const InsufficientCVLForAppeal: React.FunctionComponent<InsufficientCVLProps & BuyCVLButtonProps> = props => {\n  return (\n    <InsufficientCVL buyCVLURL={props.buyCVLURL}>\n      <InsufficientCVLForAppealText appealFee={props.appealFee} />\n    </InsufficientCVL>\n  );\n};\n\nexport const InsufficientCVLForAppealChallenge: React.FunctionComponent<\n  InsufficientCVLProps & BuyCVLButtonProps\n> = props => {\n  return (\n    <InsufficientCVL buyCVLURL={props.buyCVLURL}>\n      <InsufficientCVLForAppealChallengeText appealFee={props.appealFee} />\n    </InsufficientCVL>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/WrongNetwork.tsx",
    "content": "import * as React from \"react\";\nimport { urlConstants } from \"@joincivil/utils\";\nimport metaMaskNetworkSwitchUrl from \"../images/img-metamask-networkswitch@2x.png\";\nimport { Modal } from \"../Modal\";\nimport { MetaMaskMockImage, MetaMaskIcon, StyledLargeModalText, StyledSmallModalText } from \"./styledComponents\";\n\nexport interface WrongNetworkComponentProps {\n  requiredNetworkNiceName: string;\n}\n\nexport const WrongNetworkComponent: React.FunctionComponent<WrongNetworkComponentProps> = props => {\n  return (\n    <>\n      <StyledLargeModalText>\n        <b>Change your network.</b> Looks like you’re using an unsupported Ethereum network. Make sure you're using the{\" \"}\n        <b>{props.requiredNetworkNiceName}</b>.\n      </StyledLargeModalText>\n      <StyledSmallModalText>\n        <a href={urlConstants.FAQ_SWITCH_NETWORKS} target=\"_blank\">\n          Read this tutorial\n        </a>{\" \"}\n        to switch networks in MetaMask <MetaMaskIcon />\n      </StyledSmallModalText>\n      <MetaMaskMockImage src={metaMaskNetworkSwitchUrl} />\n    </>\n  );\n};\n\nexport const WrongNetworkModal: React.FunctionComponent<WrongNetworkComponentProps> = props => {\n  return (\n    <Modal width={558}>\n      <WrongNetworkComponent {...props} />\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/index.ts",
    "content": "export * from \"./ErrorLoadingData\";\nexport * from \"./ErrorNotFound\";\nexport * from \"./InsufficientCVL\";\nexport * from \"./WrongNetwork\";\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton } from \"../Button\";\nimport styled from \"styled-components\";\nimport { colors } from \"../styleConstants\";\nimport { MetaMaskSideIcon } from \"@joincivil/elements\";\n\nexport const StyledMessageIconContainer = styled.span`\n  display: inline-block;\n  margin-right: 25px;\n`;\n\nexport const StyledBuyCVLButtonContainer = styled.div`\n  margin-left: 40px;\n\n  & ${InvertedButton} {\n    white-space: nowrap;\n  }\n`;\n\nexport const StyledErrorMessage = styled.span`\n  color: ${colors.accent.CIVIL_RED};\n  font-size: 16px;\n  letter-spacing: -0.11px;\n  line-height: 24px;\n`;\n\nexport const StyledMessageWithIconContainer = styled.div`\n  display: flex;\n  align-items: center;\n\n  & ${StyledMessageIconContainer}, & ${StyledErrorMessage} {\n    display: block;\n  }\n`;\n\nexport const MetaMaskMockImage = styled.img`\n  display: block;\n  margin: 0 auto;\n  max-width: 255px;\n`;\n\nexport const MetaMaskIcon = styled(MetaMaskSideIcon)`\n  position: relative;\n  top: 3px;\n`;\n\nexport const StyledLargeModalText = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 18px;\n  line-height: 24px;\n`;\n\nexport const StyledSmallModalText = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 14px;\n  line-height: 20px;\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: none;\n  }\n`;\n\nexport const StyledErrorIconContainer = styled.div`\n  align-items: center;\n  display: flex;\n  background: ${colors.accent.CIVIL_RED_VERY_FADED};\n  border-radius: 50%;\n  justify-content: center;\n  height: 100px;\n  margin: 0 auto 40px;\n  text-align: center;\n  width: 100px;\n`;\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/textComponents.tsx",
    "content": "import * as React from \"react\";\nimport { InsufficientCVLProps } from \"./types\";\n\nexport const InsufficientCVLForChallengeText: React.FunctionComponent<InsufficientCVLProps> = props => {\n  return (\n    <>\n      Sorry, you don’t have enough CVL tokens to challenge this newsroom. A deposit of {props.minDeposit} tokens is\n      required to challenge newsrooms.\n    </>\n  );\n};\n\nexport const InsufficientCVLForAppealText: React.FunctionComponent<InsufficientCVLProps> = props => {\n  return (\n    <>\n      Sorry, you don’t have enough CVL tokens to request an appeal. A deposit of {props.minDeposit} tokens is required\n      to submit an appeal request.\n    </>\n  );\n};\n\nexport const InsufficientCVLForAppealChallengeText: React.FunctionComponent<InsufficientCVLProps> = props => {\n  return (\n    <>\n      Sorry, you don’t have enough CVL tokens to challenge this granted appeal. A deposit of {props.minDeposit} tokens\n      is required to challenge a granted appeal.\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/DAppMessageContent/types.ts",
    "content": "export interface InsufficientCVLProps {\n  minDeposit?: string;\n  appealFee?: string;\n}\n\nexport interface BuyCVLButtonProps {\n  buyCVLURL: string;\n}\n"
  },
  {
    "path": "packages/components/src/DetailTransactionButton.stories.tsx",
    "content": "import { Civil, TwoStepEthTransaction } from \"@joincivil/core\";\nimport { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { DetailTransactionButton } from \"./DetailTransactionButton\";\nimport { DarkTransactionButton } from \"./TransactionButton\";\n\nlet civil: Civil | undefined;\n\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nconst createNewsroom = async (): Promise<TwoStepEthTransaction<any>> => {\n  return civil!.newsroomDeployNonMultisigTrusted(\"hello\");\n};\n\nconst Wrapper = styled.div`\n  margin: 50px;\n  max-width: 500px;\n`;\n\nstoriesOf(\"Common / Ethereum / DetailTransactionButton\", module)\n  .add(\"detail transaction button\", () => {\n    return (\n      <Wrapper>\n        {process.env.NODE_ENV !== \"test\" && (\n          <DetailTransactionButton\n            civil={civil}\n            Button={DarkTransactionButton}\n            transactions={[{ transaction: createNewsroom }]}\n            estimateFunctions={[civil!.estimateNewsroomDeployTrusted.bind(civil, \"some name\")]}\n            requiredNetwork=\"rinkeby\"\n          >\n            Create Newsroom\n          </DetailTransactionButton>\n        )}\n      </Wrapper>\n    );\n  })\n  .add(\"detail transaction button with visible progress modal\", () => {\n    return (\n      <Wrapper>\n        {process.env.NODE_ENV !== \"test\" && (\n          <DetailTransactionButton\n            civil={civil}\n            transactions={[{ transaction: createNewsroom }]}\n            estimateFunctions={[civil!.estimateNewsroomDeployTrusted.bind(civil, \"some name\")]}\n            requiredNetwork=\"rinkeby\"\n          >\n            Create Newsroom\n          </DetailTransactionButton>\n        )}\n      </Wrapper>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/DetailTransactionButton.tsx",
    "content": "import { Civil } from \"@joincivil/core\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { debounce } from \"lodash\";\nimport * as React from \"react\";\nimport { Subscription } from \"rxjs/Subscription\";\nimport styled from \"styled-components\";\nimport {\n  TransactionButton,\n  Transaction,\n  TransactionButtonNoModal,\n  TransactionButtonInnerProps,\n} from \"./TransactionButton\";\nimport { fonts, colors } from \"./styleConstants\";\nimport { QuestionToolTip } from \"./QuestionToolTip\";\n\nexport interface DetailTransactionButtonProps {\n  civil?: Civil;\n  transactions: Transaction[];\n  estimateFunctions?: Array<(...args: any[]) => Promise<number>>;\n  requiredNetwork?: string;\n  Button?: React.FunctionComponent<TransactionButtonInnerProps>;\n  noModal?: boolean;\n  disabled?: boolean;\n  preExecuteTransactions?(): any;\n}\n\nexport interface DetailTransactionButtonState {\n  price: number;\n  priceFailed: boolean;\n  isProgressModalVisible: boolean;\n  currentNetwork: string;\n  currentAccount?: EthAddress;\n  ethereumUpdates?: Subscription;\n}\n\nconst Wrapper = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: top;\n  margin-bottom: 15px;\n`;\n\nconst DetailSection = styled.div`\n  width: 50%;\n`;\n\nconst SmallHeader = styled.h4`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 500;\n  font-size: 14px;\n  margin-bottom: 10px;\n  margin-top: 0px;\n`;\n\nconst SmallText = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-size: 13px;\n  line-height: 18px;\n  display: flex;\n  align-items: center;\n  margin: 0;\n`;\n\nconst Link = styled.a`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  text-decoration: none;\n  font-weight: 600;\n  color: ${colors.primary.CIVIL_BLUE_1};\n`;\n\nconst ToolTipLink = styled.a`\n  color: ${colors.basic.WHITE};\n`;\n\nexport const TransactionPopUpWarning = styled.p`\n  && {\n    color: ${colors.accent.CIVIL_GRAY_2};\n    font-size: 12px;\n  }\n`;\n\nconst ButtonWrapper = styled.div`\n  max-width: 200px;\n`;\n\nexport class DetailTransactionButton extends React.Component<\n  DetailTransactionButtonProps,\n  DetailTransactionButtonState\n> {\n  constructor(props: DetailTransactionButtonProps) {\n    super(props);\n    this.state = {\n      price: 0,\n      priceFailed: false,\n      isProgressModalVisible: false,\n      currentNetwork: \"\",\n    };\n    this.divinePrice = debounce(this.divinePrice.bind(this), 1000);\n  }\n\n  public async componentWillReceiveProps(nextProps: DetailTransactionButtonProps): Promise<void> {\n    await this.divinePrice(nextProps.estimateFunctions);\n  }\n\n  public async divinePrice(estimateFunctions?: Array<() => Promise<number>>): Promise<void> {\n    if (!this.isDisabled() && estimateFunctions && estimateFunctions.length) {\n      try {\n        const gas = (await Promise.all(estimateFunctions.map(async item => item()))).reduce(\n          (acc: number, item: number) => acc + item,\n          0,\n        );\n        const gasPrice = await this.props.civil!.getGasPrice();\n        this.setState({\n          price: gasPrice\n            .mul(this.props.civil!.toBigNumber(gas))\n            .div(this.props.civil!.toBigNumber(10).pow(18))\n            .toNumber(),\n          priceFailed: false,\n        });\n      } catch (error) {\n        this.setState({ priceFailed: true });\n      }\n    } else {\n      this.setState({ priceFailed: true });\n    }\n  }\n\n  public async componentDidMount(): Promise<void> {\n    this.createEthereumSubscription(this.props.civil);\n    await this.divinePrice(this.props.estimateFunctions);\n  }\n\n  public async componentWillUnmount(): Promise<void> {\n    this.unbscribeEthereum();\n  }\n\n  public createEthereumSubscription(civil?: Civil): void {\n    this.unbscribeEthereum();\n    let subscription: Subscription | undefined;\n    if (civil) {\n      subscription = civil.accountStream\n        .subscribe(currentAccount => this.setState({ currentAccount }))\n        .add(civil.networkNameStream.subscribe(currentNetwork => this.setState({ currentNetwork })));\n    }\n    this.setState({\n      ethereumUpdates: subscription,\n    });\n  }\n\n  public unbscribeEthereum(): void {\n    if (this.state.ethereumUpdates) {\n      this.state.ethereumUpdates.unsubscribe();\n    }\n  }\n\n  public render(): JSX.Element {\n    const TransactionButtonComponent = this.props.noModal ? TransactionButtonNoModal : TransactionButton;\n    return (\n      <Wrapper>\n        {this.renderDetails()}\n        <ButtonWrapper>\n          <TransactionButtonComponent\n            preExecuteTransactions={this.props.preExecuteTransactions}\n            disabled={this.isDisabled()}\n            transactions={this.props.transactions}\n            Button={this.props.Button}\n          >\n            {this.props.children}\n          </TransactionButtonComponent>\n          <TransactionPopUpWarning>\n            This will open a new window to confirm and process your transaction.\n          </TransactionPopUpWarning>\n        </ButtonWrapper>\n      </Wrapper>\n    );\n  }\n\n  public isDisabled(): boolean {\n    const onRequiredNetwork =\n      !this.props.requiredNetwork || this.props.requiredNetwork.includes(this.state.currentNetwork);\n    return this.props.disabled || !this.props.civil || !this.state.currentAccount || !onRequiredNetwork;\n  }\n\n  public renderNoMetaMask(): JSX.Element {\n    return (\n      <DetailSection>\n        <SmallHeader>Set up your MetaMask wallet</SmallHeader>\n        <SmallText>Download the MetaMask browser plugin and follow the instructions to set up your wallet.</SmallText>\n        <Link href=\"https://metamask.io/\" target=\"_blank\">\n          Get MetaMask\n        </Link>\n      </DetailSection>\n    );\n  }\n\n  public renderMetaMaskLocked(): JSX.Element {\n    return (\n      <DetailSection>\n        <SmallHeader>MetaMask is locked</SmallHeader>\n        <SmallText>Please unlock MetaMask to create a newsroom contract</SmallText>\n      </DetailSection>\n    );\n  }\n\n  public renderWrongNetwork(): JSX.Element {\n    return (\n      <DetailSection>\n        <SmallHeader>MetaMask is on the wrong network</SmallHeader>\n        <SmallText>\n          Please change your network to the {this.props.requiredNetwork!.replace(/^\\w/, c => c.toUpperCase())} Network\n          before proceeding\n        </SmallText>\n      </DetailSection>\n    );\n  }\n\n  public renderCostsEstimates(): JSX.Element {\n    if (this.state.price === 0 && !this.state.priceFailed) {\n      return <SmallText>Estimating cost.</SmallText>;\n    } else if (this.state.priceFailed) {\n      return <SmallText>Could not estimate cost.</SmallText>;\n    } else {\n      return <SmallText>ETH: {this.state.price.toFixed(5)}</SmallText>;\n    }\n  }\n\n  public renderTransactionDetails(): JSX.Element {\n    return (\n      <DetailSection>\n        <SmallText>\n          Estimated Cost{\" \"}\n          <QuestionToolTip\n            explainerText={\n              <>\n                Current Prices based on{\" \"}\n                <ToolTipLink href=\"https://ethgasstation.info/\" target=\"_blank\">\n                  {\"https://ethgasstation.info/\"}\n                </ToolTipLink>\n              </>\n            }\n          />\n        </SmallText>\n        {this.renderCostsEstimates()}\n      </DetailSection>\n    );\n  }\n\n  public renderDetails(): JSX.Element {\n    if (!this.props.civil) {\n      return this.renderNoMetaMask();\n    } else if (!this.state.currentAccount) {\n      return this.renderMetaMaskLocked();\n    } else if (this.props.requiredNetwork && this.props.requiredNetwork !== this.state.currentNetwork) {\n      return this.renderWrongNetwork();\n    } else {\n      return this.renderTransactionDetails();\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/DetailsButtonComponent.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { buttonSizes } from \"./Button\";\n\nconst Wrapper = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n`;\n\nconst DetailsSection = styled.div`\n  width: 50%;\n`;\n\nexport interface DetailsButtonComponentProps {\n  detailsComponent: JSX.Element | undefined;\n  buttonComponent: JSX.Element | undefined;\n}\n\nexport class DetailsButtonComponent extends React.Component<DetailsButtonComponentProps> {\n  public render(): JSX.Element {\n    return (\n      <Wrapper>\n        <DetailsSection>{this.props.detailsComponent}</DetailsSection>\n        {this.renderButtonComponent()}\n      </Wrapper>\n    );\n  }\n\n  private renderButtonComponent = (): JSX.Element => {\n    return React.cloneElement(this.props.buttonComponent as React.ReactElement, {\n      size: buttonSizes.SMALL,\n    });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/EmailSignup/EmailSignup.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { EmailSignup } from \"./EmailSignup\";\nimport { EmailSignupSuccess } from \"./EmailSignupSuccess\";\nimport { addToMailingList } from \"@joincivil/utils\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 400px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nlet email: string;\n\nfunction onChange(name: string, value: string): void {\n  if (name === \"EmailSignupTextInput\") {\n    email = value;\n  }\n}\n\nasync function onSubmit(): Promise<void> {\n  console.log(\"On Submit\", email);\n\n  try {\n    await addToMailingList(email, \"5353193\");\n  } catch (err) {\n    console.error(\"Error adding to mailing list:\", { err });\n  }\n}\n\nstoriesOf(\"Registry / Mailing List Signup Component\", module)\n  .add(\"Mailing List Signup Signup\", () => {\n    return (\n      <Container>\n        <EmailSignup onChange={onChange} onSubmit={onSubmit} />\n      </Container>\n    );\n  })\n  .add(\"Mailing List Signup Success\", () => {\n    return (\n      <Container>\n        <EmailSignupSuccess />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/EmailSignup/EmailSignup.tsx",
    "content": "import * as React from \"react\";\n\nimport { BellIcon } from \"../icons\";\nimport { Button, buttonSizes } from \"../Button\";\nimport { InputGroup } from \"../input\";\n\nimport { StyledEmailSignupContainer, StyledEmailSignupTitle, StyledEmailSignupCopy } from \"./EmailStyledComponents\";\n\nexport interface EmailSignupProps {\n  email?: string;\n  errorMessage?: string;\n  isRequestPending?: boolean;\n  onChange(key: string, value: string): void;\n  onSubmit(): void;\n}\n\nexport const EmailSignup: React.FunctionComponent<EmailSignupProps> = props => {\n  const SignUpButton = (\n    <Button size={buttonSizes.SMALL} onClick={props.onSubmit}>\n      {!!props.isRequestPending ? \"Saving\" : \"Sign Up\"}\n    </Button>\n  );\n\n  const { email, errorMessage } = props;\n\n  return (\n    <StyledEmailSignupContainer>\n      <StyledEmailSignupTitle>\n        <BellIcon /> Get the Civil Registry Alerts\n      </StyledEmailSignupTitle>\n\n      <StyledEmailSignupCopy>\n        Receive real-time email alerts when a new event occurs on the Civil Registry. These events include new\n        applications, challenges, when voting begins / ends and more. By subscribing, you'll ensure you have maximum\n        time to make decisions about how you will participate in Civil's governance.\n      </StyledEmailSignupCopy>\n\n      <InputGroup\n        append={SignUpButton}\n        noAppendPadding={true}\n        noLabel={true}\n        placeholder=\"Email address\"\n        onChange={props.onChange}\n        name=\"EmailSignupTextInput\"\n        type=\"text\"\n        value={email}\n        invalid={!!errorMessage}\n        invalidMessage={errorMessage}\n      />\n\n      <StyledEmailSignupCopy>\n        <b>\n          Follow us on twitter for alerts{\" \"}\n          <a href=\"https://twitter.com/civil_alerts\" target=\"_blank\">\n            @Civil_Alerts\n          </a>\n        </b>\n      </StyledEmailSignupCopy>\n    </StyledEmailSignupContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/EmailSignup/EmailSignupSuccess.tsx",
    "content": "import * as React from \"react\";\n\nimport { GreenCheckMark } from \"../icons\";\n\nimport {\n  StyledEmailSignupSuccessContainer,\n  StyledEmailSignupTitle,\n  StyledEmailSignupCopy,\n} from \"./EmailStyledComponents\";\n\nexport const EmailSignupSuccess: React.FunctionComponent = props => {\n  return (\n    <StyledEmailSignupSuccessContainer>\n      <GreenCheckMark width={36} height={36} />\n      <StyledEmailSignupTitle>Thanks for signing up!</StyledEmailSignupTitle>\n\n      <StyledEmailSignupCopy>Please check your email to confirm your subscription.</StyledEmailSignupCopy>\n\n      <StyledEmailSignupCopy>\n        <b>\n          Follow us on twitter for alerts{\" \"}\n          <a href=\"https://twitter.com/civil_alerts\" target=\"_blank\">\n            @Civil_Alerts\n          </a>\n        </b>\n      </StyledEmailSignupCopy>\n    </StyledEmailSignupSuccessContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/EmailSignup/EmailStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts } from \"../styleConstants\";\n\nexport const StyledEmailSignupTitle = styled.div`\n  color: ${colors.primary.BLACK};\n  font-size: 24px;\n  font-weight: 900;\n  line-height: 29px;\n  margin: 0 0 6px;\n`;\n\nexport const StyledEmailSignupCopy = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 14px;\n  letter-spacing: -0.09px;\n  line-height: 20px;\n`;\n\nexport const StyledEmailSignupContainer = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  box-shadow: inset 0 5px 0 0 ${colors.primary.BLACK};\n  padding: 38px 39px 24px;\n`;\n\nexport const StyledEmailSignupSuccessContainer = styled(StyledEmailSignupContainer)`\n  padding-top: 92px;\n  text-align: center;\n\n  & > ${StyledEmailSignupCopy}:first-of-type {\n    font-size: 18px;\n    letter-spacing: normal;\n    line-height: 33px;\n    margin: 0 0 133px;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/EmailSignup/__snapshots__/EmailSignup.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Mailing List Signup Component Mailing List Signup Signup 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOm hcQamL\"\n    >\n      <div\n        className=\"sc-LzMXK cDdZVt\"\n      >\n        <div\n          className=\"sc-LzMXI ciTnjb\"\n        >\n          <svg\n            height=\"24\"\n            viewBox=\"0 0 21 24\"\n            width=\"21\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"#000000\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n            >\n              <path\n                d=\"M10.065 24C11.342 24 12.387 22.955 12.387 21.677L7.742 21.677C7.742 22.955 8.787 24 10.065 24L10.065 24ZM17.761 16.577L17.761 10.065C17.761 6.394 15.274 3.434 11.841 2.605L11.841 1.776C11.841 0.829 11.012 0 10.065 0 9.117 0 8.288 0.829 8.288 1.776L8.288 2.605C4.855 3.434 2.368 6.394 2.368 10.065L2.368 16.577 0 18.945 0 20.129 20.129 20.129 20.129 18.945 17.761 16.577 17.761 16.577Z\"\n              />\n            </g>\n          </svg>\n           Get the Civil Registry Alerts\n        </div>\n        <p\n          className=\"sc-LzMXJ iKywDX\"\n        >\n          Receive real-time email alerts when a new event occurs on the Civil Registry. These events include new applications, challenges, when voting begins / ends and more. By subscribing, you'll ensure you have maximum time to make decisions about how you will participate in Civil's governance.\n        </p>\n        <div\n          className=\"sc-fzXfPg hrehtr\"\n        >\n          <div\n            className=\"sc-fzXfPE iCQlvb\"\n          >\n            <div\n              className=\" sc-fzXfNe laEExU\"\n            >\n              <input\n                className=\"sc-fzXfNe laEExU\"\n                name=\"EmailSignupTextInput\"\n                onChange={[Function]}\n                type=\"text\"\n              />\n            </div>\n            <div\n              className=\"sc-fzXfPG gnOKbl\"\n            >\n              <span\n                className=\"sc-fzXfPH dDpKML\"\n              >\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLP JmPHO\"\n                  onClick={[Function]}\n                  size=\"SMALL\"\n                  theme={\n                    Object {\n                      \"primaryButtonBackground\": \"#2B56FF\",\n                      \"primaryButtonColor\": \"#FFFFFF\",\n                      \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n                      \"primaryButtonDisabledColor\": \"#FFFFFF\",\n                      \"primaryButtonFontWeight\": \"normal\",\n                      \"primaryButtonHoverBackground\": \"#4066FF\",\n                      \"primaryButtonTextTransform\": \"uppercase\",\n                      \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  Sign Up\n                </button>\n              </span>\n            </div>\n          </div>\n        </div>\n        <p\n          className=\"sc-LzMXJ iKywDX\"\n        >\n          <b>\n            Follow us on twitter for alerts\n             \n            <a\n              href=\"https://twitter.com/civil_alerts\"\n              target=\"_blank\"\n            >\n              @Civil_Alerts\n            </a>\n          </b>\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Mailing List Signup Component\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Mailing List Signup Signup\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    EmailSignup\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        onChange\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            onChange\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        onSubmit\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            onSubmit\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              EmailSignup\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Mailing List Signup Component Mailing List Signup Success 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOm hcQamL\"\n    >\n      <div\n        className=\"sc-LzMXK sc-LzMXL kZAeLN\"\n      >\n        <svg\n          height=\"36\"\n          viewBox=\"0 0 26 26\"\n          width=\"36\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle\n            cx=\"12\"\n            cy=\"12\"\n            fill=\"#30E8BD\"\n            r=\"12\"\n          />\n          <path\n            d=\"m9.464 17.092-3.466-3.415-1.156 1.138 4.622 4.553 9.904-9.756-1.155-1.138z\"\n            fill=\"#FFFFFF\"\n            fillRule=\"evenodd\"\n            transform=\"translate(1 -1)\"\n          />\n        </svg>\n        <div\n          className=\"sc-LzMXI ciTnjb\"\n        >\n          Thanks for signing up!\n        </div>\n        <p\n          className=\"sc-LzMXJ iKywDX\"\n        >\n          Please check your email to confirm your subscription.\n        </p>\n        <p\n          className=\"sc-LzMXJ iKywDX\"\n        >\n          <b>\n            Follow us on twitter for alerts\n             \n            <a\n              href=\"https://twitter.com/civil_alerts\"\n              target=\"_blank\"\n            >\n              @Civil_Alerts\n            </a>\n          </b>\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Mailing List Signup Component\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Mailing List Signup Success\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    EmailSignupSuccess\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              EmailSignupSuccess\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/EmailSignup/index.ts",
    "content": "export * from \"./EmailSignup\";\nexport * from \"./EmailSignupSuccess\";\n"
  },
  {
    "path": "packages/components/src/EthAddressViewer/EthAddressViewer.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { EthAddressViewer } from \"./EthAddressViewer\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 690px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Common / Ethereum / EthAddress Viewer\", module).add(\"EthAddress Viewer\", () => {\n  return (\n    <Container>\n      <EthAddressViewer\n        address=\"0x 3e39 fa98 3abc d349 d95a ed60 8e79 8817 397c f0d1\"\n        displayName=\"CVL Token Contract Address\"\n        etherscanBaseURL=\"https://rinkeby.etherscan.io\"\n      />\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/EthAddressViewer/EthAddressViewer.tsx",
    "content": "import * as React from \"react\";\nimport { copyToClipboard } from \"@joincivil/utils\";\n\nimport { colors } from \"../styleConstants\";\nimport { Button, InvertedButton, buttonSizes } from \"../Button\";\nimport { NorthEastArrow } from \"../icons\";\n\nimport {\n  StyledEthAddressViewer,\n  StyledDisplayName,\n  StyledEthAddressContainer,\n  StyledEthAddress,\n} from \"./StyledEthAddressViewer\";\n\nexport interface EthAddressViewerProps {\n  address: string;\n  displayName: string | JSX.Element;\n  etherscanBaseURL?: string;\n}\n\nexport const EthAddressViewer: React.FunctionComponent<EthAddressViewerProps> = props => {\n  const { address, displayName, etherscanBaseURL } = props;\n\n  const etherscanURL = etherscanBaseURL && `${etherscanBaseURL}/address/${address.replace(/ /g, \"\")}`;\n\n  return (\n    <StyledEthAddressViewer>\n      <StyledDisplayName>{displayName}</StyledDisplayName>\n      <StyledEthAddressContainer>\n        <StyledEthAddress>{props.address}</StyledEthAddress>\n        <Button size={buttonSizes.SMALL} onClick={() => copyToClipboard(address.replace(/ /g, \"\"))}>\n          Copy\n        </Button>\n        {!!etherscanURL && (\n          <InvertedButton size={buttonSizes.SMALL} href={etherscanURL} target=\"_blank\">\n            Etherscan <NorthEastArrow color={colors.accent.CIVIL_BLUE} />\n          </InvertedButton>\n        )}\n      </StyledEthAddressContainer>\n    </StyledEthAddressViewer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/EthAddressViewer/StyledEthAddressViewer.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Button, InvertedButton } from \"../Button\";\n\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\n\nexport const StyledEthAddressViewer = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  margin: 0 0 30px;\n`;\n\nexport const StyledDisplayName = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 13px;\n  font-weight: 500;\n  letter-spacing: -0.14px;\n  line-height: 21px;\n  margin: 0 0 10px;\n`;\n\nexport const StyledEthAddressContainer = styled.div`\n  display: flex;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n\n  & > ${Button} {\n    margin: 0 12px;\n  }\n\n  & > ${InvertedButton} {\n    line-height: 28px;\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n\n    & > ${Button} {\n      margin: 10px 12px 0 0;\n      line-height: 32px;\n      width: 57%;\n    }\n\n    & > ${InvertedButton} {\n      margin: 10px 0 0;\n    }\n  }\n`;\n\nexport const StyledEthAddress = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.MONOSPACE};\n  font-size: 14px;\n  letter-spacing: -0.15px;\n  line-height: 24px;\n  padding: 11px 12px;\n`;\n"
  },
  {
    "path": "packages/components/src/EthAddressViewer/__snapshots__/EthAddressViewer.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Ethereum / EthAddress Viewer EthAddress Viewer 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOn gNNgeX\"\n    >\n      <div\n        className=\"sc-LzLPw gGdQAr\"\n      >\n        <div\n          className=\"sc-LzLPx ekzSBU\"\n        >\n          CVL Token Contract Address\n        </div>\n        <div\n          className=\"sc-LzLPy hsKBgu\"\n        >\n          <div\n            className=\"sc-LzLPW gGhLIS\"\n          >\n            0x 3e39 fa98 3abc d349 d95a ed60 8e79 8817 397c f0d1\n          </div>\n          <button\n            className=\"sc-fzXfLO sc-fzXfLP JmPHO\"\n            onClick={[Function]}\n            size=\"SMALL\"\n            theme={\n              Object {\n                \"primaryButtonBackground\": \"#2B56FF\",\n                \"primaryButtonColor\": \"#FFFFFF\",\n                \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n                \"primaryButtonDisabledColor\": \"#FFFFFF\",\n                \"primaryButtonFontWeight\": \"normal\",\n                \"primaryButtonHoverBackground\": \"#4066FF\",\n                \"primaryButtonTextTransform\": \"uppercase\",\n                \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n              }\n            }\n            type=\"button\"\n          >\n            Copy\n          </button>\n          <a\n            className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n            href=\"https://rinkeby.etherscan.io/address/0x3e39fa983abcd349d95aed608e798817397cf0d1\"\n            size=\"SMALL\"\n            target=\"_blank\"\n            theme={\n              Object {\n                \"invertedButtonBackground\": \"#FFFFFF\",\n                \"invertedButtonColor\": \"#2B56FF\",\n              }\n            }\n          >\n            Etherscan \n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#2B56FF\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / EthAddress Viewer\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            EthAddress Viewer\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    EthAddressViewer\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        address\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x 3e39 fa98 3abc d349 d95a ed60 8e79 8817 397c f0…\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        displayName\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            CVL Token Contract Address\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        etherscanBaseURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            https://rinkeby.etherscan.io\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              EthAddressViewer\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/EthAddressViewer/index.ts",
    "content": "export * from \"./EthAddressViewer\";\n"
  },
  {
    "path": "packages/components/src/ExecuteOnMount.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ExecuteOnMountProps {\n  onDidMount(): any;\n}\n\nexport class ExecuteOnMount extends React.Component<ExecuteOnMountProps> {\n  public async componentDidMount(): Promise<void> {\n    const { onDidMount } = this.props;\n\n    if (!onDidMount) {\n      return;\n    }\n\n    onDidMount();\n  }\n\n  public render(): JSX.Element {\n    return <>{this.props.children}</>;\n  }\n}\n"
  },
  {
    "path": "packages/components/src/FullscreenModal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDom from \"react-dom\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"@joincivil/elements\";\n\nexport interface ModalWrapperProps {\n  solidBackground?: boolean;\n}\n\nexport const ModalWrapper = styled.div`\n  align-items: ${(props: ModalWrapperProps) => (props.solidBackground ? \"flex-start\" : \"center\")};\n  background-color: ${(props: ModalWrapperProps) =>\n    props.solidBackground ? colors.basic.WHITE : \"rgba(0, 0, 0, 0.4)\"};\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  left: 0;\n  padding: ${(props: ModalWrapperProps) => (props.solidBackground ? \"90px 0\" : \"0\")};\n  position: fixed;\n  overflow: auto;\n  right: 0;\n  top: 0;\n  z-index: ${(props: ModalWrapperProps) => (props.solidBackground ? \"9999999\" : \"2\")};\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: block;\n  }\n`;\n\nexport const ModalInner = styled.div`\n  align-items: ${(props: ModalWrapperProps) => (props.solidBackground ? \"flex-start\" : \"center\")};\n  background-color: ${colors.basic.WHITE};\n  border: ${(props: ModalWrapperProps) => (props.solidBackground ? \"none\" : \"1px solid \" + colors.accent.CIVIL_GRAY_4)};\n  display: flex;\n  flex-direction: column;\n  font-family: ${fonts.SANS_SERIF};\n  justify-content: space-around;\n  margin: auto;\n  min-width: 250px;\n  ${(props: ModalWrapperProps) => (props.solidBackground ? \"width: 100%\" : \"\")};\n\n  ${mediaQueries.MOBILE_SMALL} {\n    bottom: 0;\n    left: 0;\n    overflow: auto;\n    position: fixed;\n    top: 54px;\n    width: 100%;\n  }\n`;\n\nexport interface FullScreenModalProps {\n  solidBackground?: boolean;\n  open: boolean;\n  dismissOnOutsideClick?: boolean;\n  className?: string;\n  handleClose?(): void;\n}\n\nexport class FullScreenModal extends React.Component<FullScreenModalProps> {\n  public el: HTMLDivElement | undefined;\n\n  constructor(props: FullScreenModalProps) {\n    super(props);\n    this.state = {};\n    if (typeof document !== \"undefined\") {\n      this.el = document.createElement(\"div\");\n    }\n\n    this.handleClickOutside = this.handleClickOutside.bind(this);\n  }\n  public componentDidMount(): void {\n    if (this.el) {\n      document.body.appendChild(this.el);\n      if (this.props.dismissOnOutsideClick) {\n        document.addEventListener(\"mousedown\", ev => this.handleClickOutside(ev));\n      }\n    }\n  }\n  public componentWillUnmount(): void {\n    if (this.el) {\n      document.body.removeChild(this.el);\n      document.removeEventListener(\"mousedown\", ev => this.handleClickOutside(ev));\n    }\n  }\n\n  public render(): React.ReactPortal | JSX.Element | null {\n    if (!this.props.open || this.el === undefined) {\n      return null;\n    }\n\n    return ReactDom.createPortal(\n      <ModalWrapper className={this.props.className} solidBackground={this.props.solidBackground}>\n        <ModalInner solidBackground={this.props.solidBackground}>{this.props.children}</ModalInner>\n      </ModalWrapper>,\n      this.el,\n    );\n  }\n\n  private handleClickOutside(event: any): void {\n    if (\n      this.el &&\n      this.el.children[0] &&\n      this.el.children[0].children[0] &&\n      !this.el.children[0].children[0].contains(event.target)\n    ) {\n      this.close();\n    }\n  }\n\n  private close(): void {\n    if (this.props.handleClose) {\n      this.props.handleClose();\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/GasEstimate.tsx",
    "content": "import * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { fonts, colors } from \"./styleConstants\";\nimport styled from \"styled-components\";\n\nexport interface GasEstimateProps {\n  civil: Civil;\n  estimateFunctions: Array<() => Promise<number>>;\n}\n\nexport interface GasEstimateState {\n  price: number;\n  priceFailed: boolean;\n}\n\nconst SmallText = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-size: 13px;\n  line-height: 18px;\n  display: flex;\n  align-items: center;\n  margin: 0;\n`;\n\nexport class GasEstimate extends React.Component<GasEstimateProps, GasEstimateState> {\n  constructor(props: GasEstimateProps) {\n    super(props);\n    this.state = {\n      price: 0,\n      priceFailed: false,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    await this.divinePrice(this.props.estimateFunctions);\n  }\n\n  public async divinePrice(estimateFunctions?: Array<() => Promise<number>>): Promise<void> {\n    if (estimateFunctions && estimateFunctions.length) {\n      try {\n        const gas = (await Promise.all(estimateFunctions.map(async item => item()))).reduce(\n          (acc: number, item: number) => acc + item,\n          0,\n        );\n        const gasPrice = await this.props.civil!.getGasPrice();\n        this.setState({\n          price: gasPrice\n            .mul(this.props.civil!.toBigNumber(gas))\n            .div(this.props.civil!.toBigNumber(10).pow(18))\n            .toNumber(),\n          priceFailed: false,\n        });\n      } catch (error) {\n        console.error(error);\n        this.setState({ priceFailed: true });\n      }\n    } else {\n      this.setState({ priceFailed: true });\n    }\n  }\n\n  public render(): JSX.Element {\n    if (this.state.price === 0 && !this.state.priceFailed) {\n      return <SmallText>Estimating cost...</SmallText>;\n    } else if (this.state.priceFailed) {\n      return <SmallText>Could not estimate cost.</SmallText>;\n    } else {\n      return <SmallText>ETH: {this.state.price.toFixed(5)}</SmallText>;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Heading.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Heading, SubHeading, SectionHeading, BlockHeading } from \"./Heading\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 200px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Pattern Library / Typography / Headings\", module).add(\"Headings\", () => {\n  return (\n    <Container>\n      <Heading>Heading</Heading>\n      <SubHeading>Sub Heading</SubHeading>\n      <SectionHeading>Section Heading</SectionHeading>\n      <BlockHeading>Block Heading</BlockHeading>\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/Heading.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { fonts, colors } from \"./styleConstants\";\n\nconst headingDefaultProps = {\n  theme: {\n    sansSerifFont: fonts.SANS_SERIF,\n    serifFont: fonts.SERIF,\n  },\n};\n\nexport const Heading = styled.h1`\n  font-family: ${props => props.theme.serifFont};\n  font-size: 24px;\n  font-weight: 300;\n  margin: 5px 0;\n`;\n\nHeading.defaultProps = headingDefaultProps;\n\nexport const SectionHeading = styled.h1`\n  font-family: ${props => props.theme.serifFont};\n  font-size: 22px;\n  font-weight: 700;\n  margin: 15px 0;\n`;\n\nSectionHeading.defaultProps = headingDefaultProps;\n\nexport const SubHeading = styled.h2`\n  font-family: ${props => props.theme.serifFont};\n  font-weight: 200;\n  font-size: 20px;\n  margin: 0;\n`;\n\nSubHeading.defaultProps = headingDefaultProps;\n\nexport const BlockHeading = styled.h3`\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: 600;\n  font-size: 15px;\n  text-transform: uppercase;\n  margin: 0;\n`;\n\nBlockHeading.defaultProps = headingDefaultProps;\n\nexport const ManagerHeading = styled.h3`\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: 600;\n  font-size: 18px;\n`;\n\nManagerHeading.defaultProps = headingDefaultProps;\n\nexport const ManagerSectionHeading = styled.h4`\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: 500;\n  font-size: 17px;\n`;\n\nManagerSectionHeading.defaultProps = headingDefaultProps;\n\nexport const PageHeadingCentered = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 800;\n  font-size: 28px;\n  line-height: 34px;\n  letter-spacing: -0.58px;\n  margin: 8px 0;\n  text-align: center;\n`;\n\nexport const PageHeadingLeftAligned = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 800;\n  font-size: 28px;\n  line-height: 50px;\n  letter-spacing: -0.58px;\n  margin: 0;\n  text-align: left;\n`;\n\nPageHeadingCentered.defaultProps = headingDefaultProps;\n\nexport const PageSubHeadingCentered = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 500;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 50px;\n  text-align: center;\n`;\n\nPageSubHeadingCentered.defaultProps = headingDefaultProps;\n\nexport const PageHeadingTextCentered = styled.div`\n  text-align: center;\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 16px;\n  line-height: 25px;\n  font-family: ${props => props.theme.sansSerifFont};\n  padding: 10px 0;\n`;\n\nexport const PageHeadingTextLeftAligned = styled.div`\n  text-align: left;\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 16px;\n  line-height: 25px;\n  font-family: ${props => props.theme.sansSerifFont};\n  padding: 10px 0;\n`;\n\nexport const PageHeadingTextCenteredLarge = styled(PageHeadingTextCentered)`\n  font-size: 16px;\n  line-height: 24px;\n`;\n\nexport const PageHeadingTextCenteredSmall = styled(PageHeadingTextCentered)`\n  font-size: 14px;\n  line-height: 20px;\n  color: ${colors.primary.CIVIL_GRAY_0};\n`;\n"
  },
  {
    "path": "packages/components/src/HelmetHelper.tsx",
    "content": "import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\n\nexport interface HelmetHelperProps {\n  title?: string;\n  description?: string;\n  image?: string;\n  meta?: { [key: string]: string };\n}\n\nexport const HelmetHelper: React.FunctionComponent<HelmetHelperProps> = props => {\n  const meta: { [key: string]: string | undefined } = {\n    \"og:title\": props.title,\n    \"twitter:title\": props.title,\n    \"og:description\": props.description,\n    \"twitter:description\": props.description,\n    \"og:image\": props.image,\n    \"twitter:image\": props.image,\n    ...props.meta,\n  };\n\n  return (\n    <Helmet title={props.title}>\n      {Object.keys(meta).map(\n        metaName => meta[metaName] && <meta key={metaName} property={metaName} content={meta[metaName]} />,\n      )}\n    </Helmet>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Hero/Hero.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport StoryRouter from \"storybook-react-router\";\nimport * as React from \"react\";\nimport { Hero } from \"./Hero\";\nimport { HomepageHero } from \"./HomepageHero\";\nimport heroImgUrl from \"./img-hero-listings.png\";\n\nstoriesOf(\"Registry / Hero\", module)\n  .addDecorator(StoryRouter())\n  .add(\"Homepage\", () => {\n    return (\n      <Hero backgroundImage={heroImgUrl}>\n        <HomepageHero buyCvlUrl=\"#buy-tokens\" applyURL=\"#apply\" learnMoreURL=\"#learn-more\" />\n      </Hero>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Hero/Hero.tsx",
    "content": "import * as React from \"react\";\nimport { HeroOuter, HeroInner } from \"./HeroStyledComponents\";\n\nexport interface HeroProps {\n  backgroundImage?: string;\n}\n\nexport class Hero extends React.Component<HeroProps> {\n  public render(): JSX.Element {\n    return (\n      <HeroOuter backgroundImage={this.props.backgroundImage}>\n        <HeroInner>{this.props.children}</HeroInner>\n      </HeroOuter>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Hero/HeroStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport { DarkButton } from \"../Button\";\nimport { HeroProps } from \"./Hero\";\n\nexport const HeroOuter = styled.div`\n  background-color: ${colors.primary.BLACK};\n  background-image: ${(props: HeroProps) => (props.backgroundImage ? \"url(\" + props.backgroundImage + \")\" : \"none\")};\n  background-repeat: no-repeat;\n  background-size: cover;\n  font-family: ${fonts.SANS_SERIF};\n  padding: 78px 15px 32px;\n\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport const HeroInner = styled.div`\n  align-items: center;\n  color: ${colors.basic.WHITE};\n  display: flex;\n  flex-direction: column;\n  margin: 0 auto;\n  max-width: 920px;\n  text-align: center;\n  width: 100%;\n`;\n\nexport const StyledHeroHeading = styled.h2`\n  font-family: ${fonts.SERIF};\n  font-size: 48px;\n  font-weight: 200;\n  letter-spacing: -1px;\n  line-height: 40px;\n  margin: 0 auto 10px;\n`;\n\nexport const StyledHeroCopy = styled.div`\n  font-size: 18px;\n  letter-spacing: -0.12px;\n  line-height: 33px;\n  margin: 0 0 40px;\n  text-align: center;\n\n  p {\n    margin: 0 0 18px;\n  }\n\n  a {\n    color: ${colors.basic.WHITE};\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  }\n`;\n\nexport const StyledButtonContainer = styled.div`\n  display: flex;\n  justify-content: center;\n`;\n\nexport const CTAButton = styled(DarkButton)`\n  border: 2px solid ${colors.basic.WHITE};\n  font-size: 14px;\n  font-weight: bold;\n  letter-spacing: 1px;\n  margin-left: 30px;\n  text-align: center;\n  width: 180px;\n\n  &:hover {\n    background: ${colors.basic.WHITE};\n    color: ${colors.primary.BLACK};\n  }\n`;\n\nexport const StyledExplore = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_3};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 15px;\n  text-transform: uppercase;\n  text-align: center;\n  margin: 88px 0 0;\n\n  div {\n    margin: 12px 0 0;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Hero/HeroTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { HomepageHeroProps } from \"./HomepageHero\";\n\nexport const HeroTitleText: React.FunctionComponent = props => <>The Civil Registry</>;\n\nexport const HeroCopyText: React.FunctionComponent<HomepageHeroProps> = props => (\n  <>\n    <p>A community-driven space for curating quality journalism.</p>\n    <p>\n      Use Civil tokens to apply, challenge and vote on which newsrooms can publish on the Civil platform.{\" \"}\n      <a href={props.learnMoreURL} target=\"_blank\">\n        Learn how\n      </a>\n      .\n    </p>\n  </>\n);\n\nexport const ExploreTCRText: React.FunctionComponent = props => <>Explore The Civil Registry</>;\n"
  },
  {
    "path": "packages/components/src/Hero/HomepageHero.tsx",
    "content": "import * as React from \"react\";\nimport { buttonSizes } from \"../Button\";\nimport { ExpandDownArrow } from \"../icons\";\nimport {\n  StyledHeroHeading,\n  StyledHeroCopy,\n  StyledExplore,\n  StyledButtonContainer,\n  CTAButton,\n} from \"./HeroStyledComponents\";\nimport { HeroTitleText, HeroCopyText, ExploreTCRText } from \"./HeroTextComponents\";\n\nexport interface HomepageHeroProps {\n  buyCvlUrl: string;\n  applyURL: string;\n  learnMoreURL: string;\n}\n\nexport const HomepageHero: React.FunctionComponent<HomepageHeroProps> = props => {\n  const { buyCvlUrl, applyURL } = props;\n\n  let buyBtnProps: any = { href: buyCvlUrl };\n  if (buyCvlUrl.charAt(0) === \"/\") {\n    buyBtnProps = { to: buyCvlUrl };\n  }\n  let applyBtnProps: any = { href: applyURL };\n  if (applyURL.charAt(0) === \"/\") {\n    applyBtnProps = { to: applyURL };\n  }\n  return (\n    <>\n      <StyledHeroHeading>\n        <HeroTitleText />\n      </StyledHeroHeading>\n\n      <StyledHeroCopy>\n        <HeroCopyText {...props} />\n      </StyledHeroCopy>\n\n      <StyledButtonContainer>\n        <CTAButton size={buttonSizes.SMALL} {...buyBtnProps}>\n          Join as a member\n        </CTAButton>\n\n        <CTAButton size={buttonSizes.SMALL} {...applyBtnProps}>\n          Join as a newsroom\n        </CTAButton>\n      </StyledButtonContainer>\n\n      <StyledExplore>\n        <ExploreTCRText />\n        <div>\n          <ExpandDownArrow width={18} height={10} />\n        </div>\n      </StyledExplore>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Hero/__snapshots__/Hero.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Hero Homepage 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMkZ gbvIAI\"\n    >\n      <div\n        className=\"sc-LzMla fXPogh\"\n      >\n        <h2\n          className=\"sc-LzMlb ivvymG\"\n        >\n          The Civil Registry\n        </h2>\n        <div\n          className=\"sc-LzMlc eIzAgI\"\n        >\n          <p>\n            A community-driven space for curating quality journalism.\n          </p>\n          <p>\n            Use Civil tokens to apply, challenge and vote on which newsrooms can publish on the Civil platform.\n             \n            <a\n              href=\"#learn-more\"\n              target=\"_blank\"\n            >\n              Learn how\n            </a>\n            .\n          </p>\n        </div>\n        <div\n          className=\"sc-LzMlA bWkaWC\"\n        >\n          <a\n            className=\"sc-fzXfLO sc-fzXfLS sc-LzMlB hyGQgB\"\n            href=\"#buy-tokens\"\n            size=\"SMALL\"\n            theme={\n              Object {\n                \"darkButtonBackground\": \"#000000\",\n                \"darkButtonColor\": \"#FFFFFF\",\n                \"darkButtonHoverBackground\": \"#5A5653\",\n                \"darkButtonHoverColor\": \"#FFFFFF\",\n                \"darkButtonTextTransform\": \"none\",\n              }\n            }\n          >\n            Join as a member\n          </a>\n          <a\n            className=\"sc-fzXfLO sc-fzXfLS sc-LzMlB hyGQgB\"\n            href=\"#apply\"\n            size=\"SMALL\"\n            theme={\n              Object {\n                \"darkButtonBackground\": \"#000000\",\n                \"darkButtonColor\": \"#FFFFFF\",\n                \"darkButtonHoverBackground\": \"#5A5653\",\n                \"darkButtonHoverColor\": \"#FFFFFF\",\n                \"darkButtonTextTransform\": \"none\",\n              }\n            }\n          >\n            Join as a newsroom\n          </a>\n        </div>\n        <div\n          className=\"sc-LzMlC gYmrUx\"\n        >\n          Explore The Civil Registry\n          <div>\n            <svg\n              height=\"10\"\n              viewBox=\"0 0 12 8\"\n              width=\"18\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n                fill=\"#FFFFFF\"\n                fillRule=\"evenodd\"\n                opacity=\"0.86\"\n              />\n            </svg>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Hero\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Homepage\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Hero/index.ts",
    "content": "export * from \"./HomepageHero\";\nexport * from \"./Hero\";\n"
  },
  {
    "path": "packages/components/src/Layout/index.ts",
    "content": "export * from \"./styledComponents\";\n"
  },
  {
    "path": "packages/components/src/Layout/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { mediaQueries } from \"../styleConstants\";\n\nexport interface ContentRowProps {\n  reverseDirection?: boolean;\n}\n\nexport interface ContentWellProps {\n  offsetTop?: number;\n}\n\nexport const StyledMainContainer = styled.div`\n  margin-top: 74px;\n\n  ${mediaQueries.MOBILE} {\n    margin-top: 52px;\n  }\n`;\n\nexport const StyledContentRow = styled.div`\n  display: flex;\n  flex-direction: ${(props: ContentRowProps) => (props.reverseDirection ? \"row-reverse\" : \"row\")};\n  margin: 0 auto;\n  width: 1110px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    margin: 0;\n    width: auto;\n  }\n`;\n\nexport const StyledLeftContentWell = styled.div`\n  width: 636px;\n  ${(props: ContentWellProps) => (props.offsetTop ? `margin-top: ${props.offsetTop.toString()}px` : \"\")};\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 16px;\n    width: auto;\n  }\n`;\n\nexport const StyledRightContentWell = styled.div`\n  margin-left: 31px;\n  ${(props: ContentWellProps) => (props.offsetTop ? `margin-top: ${props.offsetTop.toString()}px` : \"\")};\n  width: 440px;\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 16px;\n    ${(props: ContentWellProps) => (props.offsetTop ? `margin-top: ${(props.offsetTop / 2).toString()}px` : \"\")};\n    width: auto;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/ListingDetailHeader/EthereumInfoModal.tsx",
    "content": "import * as React from \"react\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\n\nimport { EthAddressViewer } from \"../EthAddressViewer\";\nimport { Modal } from \"../Modal\";\nimport { CloseXIcon } from \"../icons\";\nimport { colors } from \"../styleConstants\";\n\nimport {\n  StyledEthereumInfoModalInner,\n  StyledEthereumAddressDescription,\n  StyledModalHeader,\n  StyledCloseModal,\n} from \"./ListingDetailHeaderStyledComponents\";\n\nexport interface EthereumInfoModalProps {\n  listingAddress: EthAddress;\n  owner: EthAddress;\n  etherscanBaseURL: string;\n  ethInfoModalLearnMoreURL: string;\n  handleCloseClick(): void;\n}\n\nconst EthereumInfoModal: React.FunctionComponent<EthereumInfoModalProps> = props => {\n  return (\n    <Modal width={630}>\n      <StyledModalHeader>\n        <div>Ethereum Info</div>\n        <StyledCloseModal onClick={props.handleCloseClick}>\n          <CloseXIcon color={colors.accent.CIVIL_GRAY_3} />\n        </StyledCloseModal>\n      </StyledModalHeader>\n      <StyledEthereumInfoModalInner>\n        <EthAddressViewer\n          address={props.owner}\n          displayName=\"Public Wallet Address\"\n          etherscanBaseURL={props.etherscanBaseURL}\n        />\n        <StyledEthereumAddressDescription>\n          <p>This public wallet address is the Newsroom's identity on the blockchain.</p>\n          <p>You can send CVL and ETH to this wallet address.</p>\n        </StyledEthereumAddressDescription>\n      </StyledEthereumInfoModalInner>\n\n      <StyledEthereumInfoModalInner>\n        <EthAddressViewer\n          address={props.listingAddress}\n          displayName=\"Smart Contract Address\"\n          etherscanBaseURL={props.etherscanBaseURL}\n        />\n        <StyledEthereumAddressDescription>\n          <p>Smart contract address allow you to see the Newsroom's activities on the blockchain.</p>\n          <p>\n            <b>Do not send CVL or ETH to this contract address.</b> You will lose your cryptocurrency, and the Civil\n            Media Company can not help you to retrieve it.{\" \"}\n            <a href={props.ethInfoModalLearnMoreURL} target=\"_blank\">\n              Learn more\n            </a>\n            .\n          </p>\n        </StyledEthereumAddressDescription>\n      </StyledEthereumInfoModalInner>\n    </Modal>\n  );\n};\n\nexport default EthereumInfoModal;\n"
  },
  {
    "path": "packages/components/src/ListingDetailHeader/ListingDetailHeader.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { CharterData } from \"@joincivil/typescript-types\";\nimport { ListingDetailHeader, ListingDetailHeaderProps } from \"./ListingDetailHeader\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 100vh;\n  height: 100vw;\n  background-color: #fff;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nconst charter = {\n  tagline: \"Civil is the decentralized marketplace for sustainable journalism.\",\n  newsroomUrl: \"https://civil.co\",\n};\n\nstoriesOf(\"Registry / Listing / Listing Details Header\", module)\n  .add(\"No phase label\", () => {\n    const props: ListingDetailHeaderProps = {\n      listingAddress: \"0x0\",\n      newsroomName: \"The Civil Times\",\n      charter: charter as CharterData,\n      owner: \"0x0\",\n      etherscanBaseURL: \"https://rinkeby.etherscan.io\",\n      ethInfoModalLearnMoreURL: \"#faq\",\n      unstakedDeposit: \"100 CVL\",\n      isInApplication: false,\n      inChallengeCommitVotePhase: false,\n      inChallengeRevealPhase: false,\n    };\n    return (\n      <Container>\n        <ListingDetailHeader {...props} />\n      </Container>\n    );\n  })\n  .add(\"In Application\", () => {\n    const props: ListingDetailHeaderProps = {\n      listingAddress: \"0x0\",\n      newsroomName: \"The Civil Times\",\n      charter: charter as CharterData,\n      owner: \"0x0\",\n      unstakedDeposit: \"100 CVL\",\n      etherscanBaseURL: \"https://rinkeby.etherscan.io\",\n      ethInfoModalLearnMoreURL: \"#faq\",\n      isInApplication: true,\n      inChallengeCommitVotePhase: false,\n      inChallengeRevealPhase: false,\n    };\n    return (\n      <Container>\n        <ListingDetailHeader {...props} />\n      </Container>\n    );\n  })\n  .add(\"Accepting Votes\", () => {\n    const props: ListingDetailHeaderProps = {\n      listingAddress: \"0x0\",\n      newsroomName: \"The Civil Times\",\n      charter: charter as CharterData,\n      owner: \"0x0\",\n      unstakedDeposit: \"100 CVL\",\n      etherscanBaseURL: \"https://rinkeby.etherscan.io\",\n      ethInfoModalLearnMoreURL: \"#faq\",\n      isInApplication: false,\n      inChallengeCommitVotePhase: true,\n      inChallengeRevealPhase: false,\n    };\n    return (\n      <Container>\n        <ListingDetailHeader {...props} />\n      </Container>\n    );\n  })\n  .add(\"Revealing Votes\", () => {\n    const props: ListingDetailHeaderProps = {\n      listingAddress: \"0x0\",\n      newsroomName: \"The Civil Times\",\n      charter: charter as CharterData,\n      owner: \"0x0\",\n      etherscanBaseURL: \"https://rinkeby.etherscan.io\",\n      ethInfoModalLearnMoreURL: \"#faq\",\n      unstakedDeposit: \"100 CVL\",\n      isInApplication: false,\n      inChallengeCommitVotePhase: false,\n      inChallengeRevealPhase: true,\n    };\n    return (\n      <Container>\n        <ListingDetailHeader {...props} />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/ListingDetailHeader/ListingDetailHeader.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CharterData } from \"@joincivil/typescript-types\";\n\nimport { NorthEastArrow, TwitterIcon, FacebookIcon } from \"../icons\";\nimport { buttonSizes } from \"../Button\";\nimport { StyledContentRow } from \"../Layout\";\nimport ListingPhaseLabel from \"../ListingSummary/ListingPhaseLabel\";\nimport { colors } from \"../styleConstants\";\nimport defaultNewsroomImgUrl from \"../images/img-default-newsroom@2x.png\";\n\nimport {\n  ListingDetailOuter,\n  StyledListingDetailHeader,\n  StyledNewsroomIcon,\n  StyledNewsroomLogo,\n  StyledEthereumInfoToggle,\n  ListingDetailNewsroomName,\n  ListingDetailNewsroomDek,\n  StyledRegistryLinkContainer,\n  NewsroomLinks,\n  VisitNewsroomButtonWrap,\n  FollowNewsroom,\n  FollowNewsroomHeading,\n  FollowNewsroomLink,\n  StyledListingURLButton,\n} from \"./ListingDetailHeaderStyledComponents\";\nimport EthereumInfoModal from \"./EthereumInfoModal\";\n\nexport interface ListingDetailHeaderProps {\n  listingAddress: string;\n  logoURL?: string;\n  newsroomName: string;\n  charter?: CharterData;\n  registryURL?: string;\n  registryLinkText?: string;\n  owner: string;\n  etherscanBaseURL: string;\n  unstakedDeposit: string;\n  isWhitelisted?: boolean;\n  isRejected?: boolean;\n  isInApplication?: boolean;\n  canBeChallenged?: boolean;\n  canBeWhitelisted?: boolean;\n  inChallengeCommitVotePhase?: boolean;\n  inChallengeRevealPhase?: boolean;\n  canResolveChallenge?: boolean;\n  isAwaitingAppealJudgement?: boolean;\n  isAwaitingAppealChallenge?: boolean;\n  isInAppealChallengeCommitPhase?: boolean;\n  isInAppealChallengeRevealPhase?: boolean;\n  canListingAppealChallengeBeResolved?: boolean;\n  ethInfoModalLearnMoreURL: string;\n}\n\nexport interface ListingDetailHeaderState {\n  isEthereumInfoVisible: boolean;\n}\n\nexport class ListingDetailHeader extends React.Component<ListingDetailHeaderProps, ListingDetailHeaderState> {\n  public state = {\n    isEthereumInfoVisible: false,\n  };\n\n  public render(): JSX.Element {\n    let newsroomDescription = \"\";\n    let newsroomUrl = \"\";\n    let logoURL;\n    const { charter, listingAddress, owner, etherscanBaseURL, ethInfoModalLearnMoreURL } = this.props;\n    if (charter) {\n      newsroomDescription = charter.tagline;\n      newsroomUrl = charter.newsroomUrl;\n      logoURL = charter.logoUrl;\n    }\n\n    return (\n      <ListingDetailOuter>\n        <StyledListingDetailHeader>\n          {this.renderRegistryLink()}\n\n          <StyledContentRow>\n            <StyledNewsroomIcon>\n              {logoURL && (\n                <StyledNewsroomLogo>\n                  <img\n                    src={logoURL}\n                    onError={e => {\n                      (e.target as any).src = defaultNewsroomImgUrl;\n                    }}\n                  />\n                </StyledNewsroomLogo>\n              )}\n            </StyledNewsroomIcon>\n            <div>\n              <ListingPhaseLabel {...this.props} />\n\n              <ListingDetailNewsroomName>{this.props.newsroomName}</ListingDetailNewsroomName>\n\n              <StyledEthereumInfoToggle onClick={this.toggleEthereumInfoDisplay}>\n                Ethereum Info\n              </StyledEthereumInfoToggle>\n\n              {this.state.isEthereumInfoVisible && (\n                <EthereumInfoModal\n                  listingAddress={listingAddress}\n                  owner={owner}\n                  etherscanBaseURL={etherscanBaseURL}\n                  ethInfoModalLearnMoreURL={ethInfoModalLearnMoreURL}\n                  handleCloseClick={this.toggleEthereumInfoDisplay}\n                />\n              )}\n\n              <ListingDetailNewsroomDek>{newsroomDescription}</ListingDetailNewsroomDek>\n\n              <NewsroomLinks>\n                {newsroomUrl && (\n                  <VisitNewsroomButtonWrap>\n                    <StyledListingURLButton size={buttonSizes.MEDIUM_WIDE} href={newsroomUrl} target=\"_blank\">\n                      {newsroomUrl} <NorthEastArrow color={colors.basic.WHITE} />\n                    </StyledListingURLButton>\n                  </VisitNewsroomButtonWrap>\n                )}\n\n                {this.props.charter &&\n                  this.props.charter.socialUrls &&\n                  (this.props.charter.socialUrls.facebook || this.props.charter.socialUrls.twitter) && (\n                    <FollowNewsroom>\n                      <FollowNewsroomHeading>Follow Newsroom</FollowNewsroomHeading>\n                      {this.props.charter.socialUrls.twitter && (\n                        <FollowNewsroomLink href={this.props.charter.socialUrls.twitter} target=\"_blank\">\n                          <TwitterIcon />\n                        </FollowNewsroomLink>\n                      )}\n                      {this.props.charter.socialUrls.facebook && (\n                        <FollowNewsroomLink href={this.props.charter.socialUrls.facebook} target=\"_blank\">\n                          <FacebookIcon />\n                        </FollowNewsroomLink>\n                      )}\n                    </FollowNewsroom>\n                  )}\n              </NewsroomLinks>\n            </div>\n          </StyledContentRow>\n        </StyledListingDetailHeader>\n      </ListingDetailOuter>\n    );\n  }\n\n  private toggleEthereumInfoDisplay = (): void => {\n    this.setState({ isEthereumInfoVisible: !this.state.isEthereumInfoVisible });\n  };\n\n  private renderRegistryLink(): JSX.Element | undefined {\n    if (!this.props.registryURL) {\n      return;\n    }\n    const label = this.props.registryLinkText || \"Registry\";\n    return (\n      <StyledRegistryLinkContainer>\n        <Link to={this.props.registryURL}>&lt; Back to {label}</Link>\n      </StyledRegistryLinkContainer>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailHeader/ListingDetailHeaderStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport { Button, DarkButton } from \"../Button\";\nimport {\n  StyledDisplayName,\n  StyledEthAddressContainer,\n  StyledEthAddress,\n} from \"../EthAddressViewer/StyledEthAddressViewer\";\n\nexport const ListingDetailOuter = styled.div`\n  background: ${colors.primary.BLACK};\n  display: flex;\n  justify-content: center;\n`;\n\nexport const StyledListingDetailHeader = styled.div`\n  color: ${colors.basic.WHITE};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 24px 0 62px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 30px 20px 42px;\n  }\n`;\n\nexport const StyledNewsroomIcon = styled.figure`\n  margin: 0 30px 0 0;\n  min-width: 130px;\n  padding-top: 50px;\n\n  ${mediaQueries.MOBILE} {\n    margin: 45px auto;\n    padding: 0;\n  }\n`;\n\nexport const StyledNewsroomLogo = styled.span`\n  img {\n    height: 130px;\n    min-width: 130px;\n    min-height: 130px;\n    object-fit: contain;\n    width: 130px;\n    background: ${colors.basic.WHITE};\n  }\n`;\n\nexport const StyledEthereumInfoToggle = styled(DarkButton)`\n  background: ${colors.accent.CIVIL_GRAY_0};\n  color: ${colors.accent.CIVIL_GRAY_4};\n  cursor: pointer;\n  font-size: 12px;\n  font-weight: bold;\n  letter-spacing: normal;\n  line-height: 15px;\n  padding: 4px 12px;\n  margin: 0 0 14px;\n  white-space: nowrap;\n`;\n\nexport const StyledListingURLButton = styled(DarkButton)`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_1};\n  font-size: 13px;\n  font-weight: bold;\n  letter-spacing: 0.2px;\n  line-height: 14px;\n  padding: 15px 21px;\n  white-space: nowrap;\n\n  svg {\n    margin: 0 0 -2px 3px;\n  }\n`;\n\nexport const StyledModalHeader = styled.div`\n  color: ${colors.primary.BLACK};\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 18px;\n  line-height: 24px;\n  justify-content: space-between;\n`;\n\nexport const StyledCloseModal = styled.span`\n  cursor: pointer;\n  margin-top: -10px;\n`;\n\nexport const StyledEthereumInfoModalInner = styled.div`\n  display: flex;\n\n  & ~ & {\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    padding-top: 26px;\n  }\n\n  & > div {\n    width: 48%;\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n\n    & > div {\n      width: 100%;\n    }\n  }\n\n  ${StyledDisplayName} {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 16px;\n    font-weight: bold;\n    line-height: 26px;\n  }\n\n  ${StyledEthAddressContainer} {\n    flex-wrap: wrap;\n    width: 100%;\n  }\n\n  ${StyledEthAddress} {\n    margin: 0 0 17px;\n    width: 100%;\n  }\n\n  ${Button} {\n    margin: 0 12px 0 0;\n    padding: 16px 0;\n    width: 133px;\n  }\n`;\n\nexport const StyledEthereumAddressDescription = styled.div`\n  font-size: 14px;\n  font-family: ${fonts.SANS_SERIF};\n  line-height: 22px;\n  margin-left: 28px;\n  padding-top: 28px;\n\n  p {\n    margin: 0 0 14px;\n  }\n\n  ${mediaQueries.MOBILE} {\n    margin-left: 0;\n  }\n`;\n\nexport const ListingDetailNewsroomName = styled.h1`\n  font: 200 48px/40px ${fonts.SERIF};\n  letter-spacing: -0.19px;\n  margin: 0 0 18px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 32px;\n    letter-spacing: -0.12px;\n    line-height: 36px;\n  }\n`;\n\nexport const ListingDetailNewsroomDek = styled.p`\n  font: normal 21px/35px ${fonts.SANS_SERIF};\n  font-weight: 300;\n  letter-spacing: -0.11px;\n  margin: 0 0 35px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 16px;\n    letter-spacing: -0.11px;\n    line-height: 26px;\n    margin: 0 0 32px;\n  }\n`;\n\nexport const StyledRegistryLinkContainer = styled.div`\n  padding: 0 0 43px;\n\n  & a {\n    color: ${colors.basic.WHITE}B3;\n  }\n`;\n\nexport const NewsroomLinks = styled.div`\n  display: flex;\n  margin-top: 40px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    padding-bottom: 20px;\n  }\n`;\n\nexport const VisitNewsroomButtonWrap = styled.div`\n  line-height: 32px;\n  margin-right: 45px;\n\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const FollowNewsroom = styled.div`\n  display: inline-block;\n  width: 50%;\n\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const FollowNewsroomHeading = styled.h5`\n  margin-bottom: 10px;\n  font: 500 14px/14px ${fonts.SANS_SERIF};\n  letter-spacing: 1px;\n  color: ${colors.basic.WHITE};\n  text-transform: uppercase;\n`;\n\nexport const FollowNewsroomLink = styled.a`\n  margin-right: 20px;\n`;\n"
  },
  {
    "path": "packages/components/src/ListingDetailHeader/__snapshots__/ListingDetailHeader.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Listing / Listing Details Header Accepting Votes 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOM ieDITw\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLPX exeVxF\"\n        >\n          <div\n            className=\"sc-LzLPY eXdqda\"\n          >\n            <div\n              className=\"sc-LzLPt Fqtza\"\n            >\n              <figure\n                className=\"sc-LzLPZ hiBwgY\"\n              />\n              <div>\n                <div\n                  className=\"sc-LzLtO sc-LzLtR kkjMom\"\n                >\n                  Submit Vote\n                </div>\n                <h1\n                  className=\"sc-LzLQE cBztth\"\n                >\n                  The Civil Times\n                </h1>\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLS sc-LzLQb hvpkqG\"\n                  onClick={[Function]}\n                  theme={\n                    Object {\n                      \"darkButtonBackground\": \"#000000\",\n                      \"darkButtonColor\": \"#FFFFFF\",\n                      \"darkButtonHoverBackground\": \"#5A5653\",\n                      \"darkButtonHoverColor\": \"#FFFFFF\",\n                      \"darkButtonTextTransform\": \"none\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  Ethereum Info\n                </button>\n                <p\n                  className=\"sc-LzLQF gnXJeS\"\n                >\n                  Civil is the decentralized marketplace for sustainable journalism.\n                </p>\n                <div\n                  className=\"sc-LzLQH foHieK\"\n                >\n                  <div\n                    className=\"sc-LzLQI juFSFc\"\n                  >\n                    <a\n                      className=\"sc-fzXfLO sc-fzXfLS sc-LzLQc bKGOmu\"\n                      href=\"https://civil.co\"\n                      size=\"MEDIUM_WIDE\"\n                      target=\"_blank\"\n                      theme={\n                        Object {\n                          \"darkButtonBackground\": \"#000000\",\n                          \"darkButtonColor\": \"#FFFFFF\",\n                          \"darkButtonHoverBackground\": \"#5A5653\",\n                          \"darkButtonHoverColor\": \"#FFFFFF\",\n                          \"darkButtonTextTransform\": \"none\",\n                        }\n                      }\n                    >\n                      https://civil.co\n                       \n                      <svg\n                        height=\"11\"\n                        viewBox=\"0 0 11 11\"\n                        width=\"11\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                          fill=\"#FFFFFF\"\n                          fillRule=\"evenodd\"\n                        />\n                      </svg>\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Header\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Accepting Votes\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ListingDetailHeader\n                  </span>\n                  <span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        listingAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        newsroomName\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            The Civil Times\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        charter\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                tagline\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'Civil is the decentralized marketplace for sustain…'\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                newsroomUrl\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'https://civil.co'\n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        owner\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        unstakedDeposit\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            100 CVL\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        etherscanBaseURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            https://rinkeby.etherscan.io\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        ethInfoModalLearnMoreURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            #faq\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        isInApplication\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeCommitVotePhase\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeRevealPhase\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      <br />\n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ListingDetailHeader\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Header In Application 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOM ieDITw\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLPX exeVxF\"\n        >\n          <div\n            className=\"sc-LzLPY eXdqda\"\n          >\n            <div\n              className=\"sc-LzLPt Fqtza\"\n            >\n              <figure\n                className=\"sc-LzLPZ hiBwgY\"\n              />\n              <div>\n                <div\n                  className=\"sc-LzLtO sc-LzLtP ibnlJL\"\n                >\n                  Awaiting Approval\n                </div>\n                <h1\n                  className=\"sc-LzLQE cBztth\"\n                >\n                  The Civil Times\n                </h1>\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLS sc-LzLQb hvpkqG\"\n                  onClick={[Function]}\n                  theme={\n                    Object {\n                      \"darkButtonBackground\": \"#000000\",\n                      \"darkButtonColor\": \"#FFFFFF\",\n                      \"darkButtonHoverBackground\": \"#5A5653\",\n                      \"darkButtonHoverColor\": \"#FFFFFF\",\n                      \"darkButtonTextTransform\": \"none\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  Ethereum Info\n                </button>\n                <p\n                  className=\"sc-LzLQF gnXJeS\"\n                >\n                  Civil is the decentralized marketplace for sustainable journalism.\n                </p>\n                <div\n                  className=\"sc-LzLQH foHieK\"\n                >\n                  <div\n                    className=\"sc-LzLQI juFSFc\"\n                  >\n                    <a\n                      className=\"sc-fzXfLO sc-fzXfLS sc-LzLQc bKGOmu\"\n                      href=\"https://civil.co\"\n                      size=\"MEDIUM_WIDE\"\n                      target=\"_blank\"\n                      theme={\n                        Object {\n                          \"darkButtonBackground\": \"#000000\",\n                          \"darkButtonColor\": \"#FFFFFF\",\n                          \"darkButtonHoverBackground\": \"#5A5653\",\n                          \"darkButtonHoverColor\": \"#FFFFFF\",\n                          \"darkButtonTextTransform\": \"none\",\n                        }\n                      }\n                    >\n                      https://civil.co\n                       \n                      <svg\n                        height=\"11\"\n                        viewBox=\"0 0 11 11\"\n                        width=\"11\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                          fill=\"#FFFFFF\"\n                          fillRule=\"evenodd\"\n                        />\n                      </svg>\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Header\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            In Application\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ListingDetailHeader\n                  </span>\n                  <span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        listingAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        newsroomName\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            The Civil Times\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        charter\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                tagline\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'Civil is the decentralized marketplace for sustain…'\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                newsroomUrl\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'https://civil.co'\n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        owner\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        unstakedDeposit\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            100 CVL\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        etherscanBaseURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            https://rinkeby.etherscan.io\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        ethInfoModalLearnMoreURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            #faq\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        isInApplication\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeCommitVotePhase\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeRevealPhase\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      <br />\n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ListingDetailHeader\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Header No phase label 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOM ieDITw\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLPX exeVxF\"\n        >\n          <div\n            className=\"sc-LzLPY eXdqda\"\n          >\n            <div\n              className=\"sc-LzLPt Fqtza\"\n            >\n              <figure\n                className=\"sc-LzLPZ hiBwgY\"\n              />\n              <div>\n                <h1\n                  className=\"sc-LzLQE cBztth\"\n                >\n                  The Civil Times\n                </h1>\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLS sc-LzLQb hvpkqG\"\n                  onClick={[Function]}\n                  theme={\n                    Object {\n                      \"darkButtonBackground\": \"#000000\",\n                      \"darkButtonColor\": \"#FFFFFF\",\n                      \"darkButtonHoverBackground\": \"#5A5653\",\n                      \"darkButtonHoverColor\": \"#FFFFFF\",\n                      \"darkButtonTextTransform\": \"none\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  Ethereum Info\n                </button>\n                <p\n                  className=\"sc-LzLQF gnXJeS\"\n                >\n                  Civil is the decentralized marketplace for sustainable journalism.\n                </p>\n                <div\n                  className=\"sc-LzLQH foHieK\"\n                >\n                  <div\n                    className=\"sc-LzLQI juFSFc\"\n                  >\n                    <a\n                      className=\"sc-fzXfLO sc-fzXfLS sc-LzLQc bKGOmu\"\n                      href=\"https://civil.co\"\n                      size=\"MEDIUM_WIDE\"\n                      target=\"_blank\"\n                      theme={\n                        Object {\n                          \"darkButtonBackground\": \"#000000\",\n                          \"darkButtonColor\": \"#FFFFFF\",\n                          \"darkButtonHoverBackground\": \"#5A5653\",\n                          \"darkButtonHoverColor\": \"#FFFFFF\",\n                          \"darkButtonTextTransform\": \"none\",\n                        }\n                      }\n                    >\n                      https://civil.co\n                       \n                      <svg\n                        height=\"11\"\n                        viewBox=\"0 0 11 11\"\n                        width=\"11\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                          fill=\"#FFFFFF\"\n                          fillRule=\"evenodd\"\n                        />\n                      </svg>\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Header\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            No phase label\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ListingDetailHeader\n                  </span>\n                  <span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        listingAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        newsroomName\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            The Civil Times\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        charter\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                tagline\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'Civil is the decentralized marketplace for sustain…'\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                newsroomUrl\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'https://civil.co'\n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        owner\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        etherscanBaseURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            https://rinkeby.etherscan.io\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        ethInfoModalLearnMoreURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            #faq\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        unstakedDeposit\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            100 CVL\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        isInApplication\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeCommitVotePhase\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeRevealPhase\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      <br />\n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ListingDetailHeader\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Header Revealing Votes 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOM ieDITw\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLPX exeVxF\"\n        >\n          <div\n            className=\"sc-LzLPY eXdqda\"\n          >\n            <div\n              className=\"sc-LzLPt Fqtza\"\n            >\n              <figure\n                className=\"sc-LzLPZ hiBwgY\"\n              />\n              <div>\n                <div\n                  className=\"sc-LzLtO sc-LzLtS eHMaAk\"\n                >\n                  Confirm Vote\n                </div>\n                <h1\n                  className=\"sc-LzLQE cBztth\"\n                >\n                  The Civil Times\n                </h1>\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLS sc-LzLQb hvpkqG\"\n                  onClick={[Function]}\n                  theme={\n                    Object {\n                      \"darkButtonBackground\": \"#000000\",\n                      \"darkButtonColor\": \"#FFFFFF\",\n                      \"darkButtonHoverBackground\": \"#5A5653\",\n                      \"darkButtonHoverColor\": \"#FFFFFF\",\n                      \"darkButtonTextTransform\": \"none\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  Ethereum Info\n                </button>\n                <p\n                  className=\"sc-LzLQF gnXJeS\"\n                >\n                  Civil is the decentralized marketplace for sustainable journalism.\n                </p>\n                <div\n                  className=\"sc-LzLQH foHieK\"\n                >\n                  <div\n                    className=\"sc-LzLQI juFSFc\"\n                  >\n                    <a\n                      className=\"sc-fzXfLO sc-fzXfLS sc-LzLQc bKGOmu\"\n                      href=\"https://civil.co\"\n                      size=\"MEDIUM_WIDE\"\n                      target=\"_blank\"\n                      theme={\n                        Object {\n                          \"darkButtonBackground\": \"#000000\",\n                          \"darkButtonColor\": \"#FFFFFF\",\n                          \"darkButtonHoverBackground\": \"#5A5653\",\n                          \"darkButtonHoverColor\": \"#FFFFFF\",\n                          \"darkButtonTextTransform\": \"none\",\n                        }\n                      }\n                    >\n                      https://civil.co\n                       \n                      <svg\n                        height=\"11\"\n                        viewBox=\"0 0 11 11\"\n                        width=\"11\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                          fill=\"#FFFFFF\"\n                          fillRule=\"evenodd\"\n                        />\n                      </svg>\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Header\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Revealing Votes\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ListingDetailHeader\n                  </span>\n                  <span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        listingAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        newsroomName\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            The Civil Times\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        charter\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                tagline\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'Civil is the decentralized marketplace for sustain…'\n                            </span>\n                            ,\n                            <span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                newsroomUrl\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              'https://civil.co'\n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        owner\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x0\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        etherscanBaseURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            https://rinkeby.etherscan.io\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        ethInfoModalLearnMoreURL\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            #faq\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        unstakedDeposit\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            100 CVL\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        isInApplication\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeCommitVotePhase\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            false\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        inChallengeRevealPhase\n                      </span>\n                      <br />\n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ListingDetailHeader\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ListingDetailHeader/index.ts",
    "content": "export * from \"./ListingDetailHeader\";\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealAwaitingDecisionCard.tsx",
    "content": "import * as React from \"react\";\nimport { getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport { ListingDetailPhaseCardComponentProps, ChallengePhaseProps, PhaseWithExpiryProps } from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseDisplayName,\n  StyledPhaseKicker,\n  CTACopy,\n  MetaRow,\n  MetaItem,\n  MetaItemValue,\n  MetaItemValueLong,\n  MetaItemLabel,\n} from \"./styledComponents\";\nimport { WaitingCouncilDecisionToolTipText } from \"./textComponents\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { ProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport NeedHelp from \"./NeedHelp\";\nimport { TextInput } from \"../input\";\n\nexport interface AppealProps {\n  requester: string;\n  appealFeePaid: string;\n  txIdToConfirm?: number;\n  uriValue?: string;\n  onChange?(name: string, value: string): any;\n}\n\nexport interface AppealAwaitingDecisionCardState {\n  grantURI: string;\n}\n\nexport type AppealAwaitingDecisionCardProps = ListingDetailPhaseCardComponentProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  ChallengeResultsProps &\n  AppealProps;\n\nconst GrantAppealButton: React.FunctionComponent<AppealAwaitingDecisionCardProps> = props => {\n  let text = \"Grant Appeal\";\n  if (props.txIdToConfirm) {\n    text = \"Confirm Appeal\";\n  }\n  return (\n    <div>\n      {!props.txIdToConfirm && <TextInput name=\"uri\" value={props.uriValue} onChange={props.onChange} />}\n\n      <TransactionButtonNoModal transactions={props.transactions!}>{text}</TransactionButtonNoModal>\n    </div>\n  );\n};\n\nexport const AppealAwaitingDecisionCard: React.FunctionComponent<AppealAwaitingDecisionCardProps> = props => {\n  const localDateTime = getLocalDateTimeStrings(props.endTime);\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseKicker>Challenge ID {props.challengeID}</StyledPhaseKicker>\n        <StyledPhaseDisplayName>Appeal to Council</StyledPhaseDisplayName>\n        <ProgressBarCountdownTimer\n          endTime={props.endTime}\n          totalSeconds={props.phaseLength}\n          displayLabel=\"Waiting for Council's decision\"\n          toolTipText={<WaitingCouncilDecisionToolTipText phaseLength={props.phaseLength} />}\n          flavorText=\"under Appeal to Council\"\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengePhaseDetail\n          challengeID={props.challengeID}\n          challenger={props.challenger}\n          isViewingUserChallenger={props.isViewingUserChallenger}\n          rewardPool={props.rewardPool}\n          stake={props.stake}\n          dispensationPct={props.dispensationPct}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          collapsable={true}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <MetaRow>\n          <MetaItem>\n            <MetaItemLabel>Requester</MetaItemLabel>\n            <MetaItemValueLong>{props.requester}</MetaItemValueLong>\n          </MetaItem>\n        </MetaRow>\n        <MetaRow>\n          <MetaItem>\n            <MetaItemLabel>Appeal Fee Paid</MetaItemLabel>\n            <MetaItemValue>{props.appealFeePaid}</MetaItemValue>\n          </MetaItem>\n        </MetaRow>\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          Check back on {localDateTime[0]} for Civil Council’s decision to reject or grant the appeal. Read more for\n          details of this appeal.\n        </CTACopy>\n\n        {props.transactions && <GrantAppealButton {...props} />}\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealChallengeCommitVoteCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n  CommitVoteProps,\n  AppealDecisionProps,\n  AppealChallengePhaseProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  StyledCardStage,\n  StyledCard,\n  StyledCardClose,\n  StyledCardFront,\n  StyledCardBack,\n  FormHeader,\n  FormCopy,\n  FullWidthButton,\n} from \"./styledComponents\";\nimport {\n  CommitVoteCalloutHeaderText,\n  AppealChallengeCommitVoteCalloutCopyText,\n  CommitVoteAlreadyVotedHeaderText,\n  CommitVoteAlreadyVotedCopyText,\n  CommitVoteToolTipText,\n  ConfirmVoteToolTipText,\n} from \"./textComponents\";\nimport { buttonSizes } from \"../Button\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { TwoPhaseProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { CommitVote } from \"./CommitVote\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\nimport NeedHelp from \"./NeedHelp\";\n\nexport type AppealChallengeCommitVoteCardProps = ListingDetailPhaseCardComponentProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  ChallengeResultsProps &\n  CommitVoteProps &\n  AppealDecisionProps &\n  AppealChallengePhaseProps;\n\nexport interface AppealChallengeCommitVoteCardState {\n  flipped: boolean;\n}\n\nexport class AppealChallengeCommitVoteCard extends React.Component<\n  AppealChallengeCommitVoteCardProps,\n  AppealChallengeCommitVoteCardState\n> {\n  constructor(props: AppealChallengeCommitVoteCardProps) {\n    super(props);\n    this.state = { flipped: false };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledCardStage width=\"485\">\n        <StyledCard flipped={this.state.flipped}>\n          <StyledCardFront>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection>\n                <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n                <StyledPhaseKicker>Appeal Challenge ID {this.props.appealChallengeID}</StyledPhaseKicker>\n                <StyledPhaseDisplayName>Challenge Appeal Decision</StyledPhaseDisplayName>\n                <TwoPhaseProgressBarCountdownTimer\n                  endTime={this.props.endTime}\n                  totalSeconds={this.props.phaseLength}\n                  displayLabel=\"Submit Vote Phase\"\n                  toolTipText={<CommitVoteToolTipText phaseLength={this.props.phaseLength} />}\n                  secondaryDisplayLabel=\"Confirm Vote Phase\"\n                  secondaryToolTipText={<ConfirmVoteToolTipText phaseLength={this.props.secondaryPhaseLength} />}\n                  flavorText=\"under challenge\"\n                  activePhaseIndex={0}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <ChallengePhaseDetail\n                  challengeID={this.props.challengeID}\n                  challenger={this.props.challenger}\n                  isViewingUserChallenger={this.props.isViewingUserChallenger}\n                  rewardPool={this.props.rewardPool}\n                  stake={this.props.stake}\n                  dispensationPct={this.props.dispensationPct}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <ChallengeResults\n                  collapsable={true}\n                  totalVotes={this.props.totalVotes}\n                  votesFor={this.props.votesFor}\n                  votesAgainst={this.props.votesAgainst}\n                  percentFor={this.props.percentFor}\n                  percentAgainst={this.props.percentAgainst}\n                  didChallengeSucceed={this.props.didChallengeOriginallySucceed}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <AppealDecisionDetail\n                appealGranted={this.props.appealGranted}\n                appealGrantedStatementURI={this.props.appealGrantedStatementURI}\n              />\n\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"COMMIT_VOTE\">\n                {this.renderCommitVoteCallout()}\n                <FullWidthButton size={buttonSizes.MEDIUM} onClick={this.swapFlipped}>\n                  {this.renderCommitVoteButtonText()}\n                </FullWidthButton>\n              </StyledListingDetailPhaseCardSection>\n\n              <NeedHelp faqURL={this.props.faqURL} />\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardFront>\n\n          <StyledCardBack>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"COMMIT_VOTE\">\n                <StyledCardClose>\n                  <span onClick={this.swapFlipped}>✖</span>\n                </StyledCardClose>\n                {this.renderCommitVoteCallout()}\n              </StyledListingDetailPhaseCardSection>\n              <StyledListingDetailPhaseCardSection>\n                <StyledPhaseKicker>Appeal Challenge ID {this.props.appealChallengeID}</StyledPhaseKicker>\n                <CommitVote\n                  isAppealChallenge={true}\n                  tokenBalance={this.props.tokenBalance}\n                  votingTokenBalance={this.props.votingTokenBalance}\n                  tokenBalanceDisplay={this.props.tokenBalanceDisplay}\n                  votingTokenBalanceDisplay={this.props.votingTokenBalanceDisplay}\n                  voteOption={this.props.voteOption}\n                  salt={this.props.salt}\n                  numTokens={this.props.numTokens}\n                  onInputChange={this.props.onInputChange}\n                  userHasCommittedVote={this.props.userHasCommittedVote}\n                  onCommitMaxTokens={this.props.onCommitMaxTokens}\n                  onReviewVote={this.props.onReviewVote}\n                />\n              </StyledListingDetailPhaseCardSection>\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardBack>\n        </StyledCard>\n      </StyledCardStage>\n    );\n  }\n\n  private swapFlipped = (): void => {\n    this.setState(() => ({ flipped: !this.state.flipped }));\n  };\n\n  private renderCommitVoteCallout = (): JSX.Element => {\n    if (this.props.userHasCommittedVote) {\n      return (\n        <>\n          <FormHeader>\n            <CommitVoteAlreadyVotedHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <CommitVoteAlreadyVotedCopyText />\n          </FormCopy>\n        </>\n      );\n    }\n    return (\n      <>\n        <FormHeader>\n          <CommitVoteCalloutHeaderText />\n        </FormHeader>\n        <FormCopy>\n          <AppealChallengeCommitVoteCalloutCopyText />\n        </FormCopy>\n      </>\n    );\n  };\n\n  private renderCommitVoteButtonText = (): JSX.Element => {\n    if (this.props.userHasCommittedVote) {\n      return <>Change My Vote</>;\n    }\n    return <>Ready To Commit My Vote</>;\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealChallengeResolveCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  AppealDecisionProps,\n  AppealChallengePhaseProps,\n  AppealChallengeResultsProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  CTACopy,\n} from \"./styledComponents\";\nimport { ReadyToCompletePhaseDisplayNameText, ResolveChallengeToolTipText } from \"./textComponents\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport NeedHelp from \"./NeedHelp\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport type AppealChallengeResolveCardProps = ListingDetailPhaseCardComponentProps &\n  ChallengePhaseProps &\n  ChallengeResultsProps &\n  AppealDecisionProps &\n  AppealChallengePhaseProps &\n  AppealChallengeResultsProps;\n\nexport const AppealChallengeResolveCard: React.FunctionComponent<AppealChallengeResolveCardProps> = props => {\n  const showAppealChallenge =\n    props.appealChallengeTotalVotes &&\n    props.appealChallengeVotesFor &&\n    props.appealChallengeVotesAgainst &&\n    props.appealChallengePercentFor &&\n    props.appealChallengePercentAgainst;\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseKicker>Challenge ID {props.challengeID}</StyledPhaseKicker>\n        <StyledPhaseKicker>Appeal Challenge ID {props.appealChallengeID}</StyledPhaseKicker>\n        <StyledPhaseDisplayName>\n          <ReadyToCompletePhaseDisplayNameText />\n          <QuestionToolTip explainerText={<ResolveChallengeToolTipText />} positionBottom={true} />\n        </StyledPhaseDisplayName>\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengePhaseDetail\n          challengeID={props.challengeID}\n          challenger={props.challenger}\n          isViewingUserChallenger={props.isViewingUserChallenger}\n          rewardPool={props.rewardPool}\n          stake={props.stake}\n          dispensationPct={props.dispensationPct}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          collapsable={true}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeSucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <AppealDecisionDetail\n        appealGranted={props.appealGranted}\n        appealGrantedStatementURI={props.appealGrantedStatementURI}\n      />\n\n      {showAppealChallenge && (\n        <StyledListingDetailPhaseCardSection>\n          <ChallengeResults\n            headerText={`Appeal Challenge #${props.appealChallengeID} Results`}\n            totalVotes={props.appealChallengeTotalVotes!}\n            votesFor={props.appealChallengeVotesFor!}\n            votesAgainst={props.appealChallengeVotesAgainst!}\n            percentFor={props.appealChallengePercentFor!}\n            percentAgainst={props.appealChallengePercentAgainst!}\n            didChallengeSucceed={props.didAppealChallengeSucceed!}\n            isAppealChallenge={true}\n          />\n        </StyledListingDetailPhaseCardSection>\n      )}\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          This challenge is complete. To update this Newsroom's status on the Civil Registry, please resolve this appeal\n          challenge.\n        </CTACopy>\n        <TransactionButtonNoModal transactions={props.transactions!}>Resolve Appeal Challenge</TransactionButtonNoModal>\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealChallengeRevealVoteCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n  RevealVoteProps,\n  AppealDecisionProps,\n  AppealChallengePhaseProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledCardStage,\n  StyledCard,\n  StyledCardClose,\n  StyledCardFront,\n  StyledCardBack,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  FormHeader,\n  FormCopy,\n  FullWidthButton,\n} from \"./styledComponents\";\nimport {\n  CommitVoteToolTipText,\n  ConfirmVoteToolTipText,\n  RevealVoteCallToActionHeaderText,\n  RevealVoteCallToActionCopyText,\n  RevealVoteDidNotCommitHeaderText,\n  RevealVoteDidNotCommitCopyText,\n  RevealVoteDoneHeaderText,\n  RevealVoteDoneCopyText,\n  RevealVoteButtonText,\n  RevealVoteCalloutCopyText,\n} from \"./textComponents\";\nimport { buttonSizes } from \"../Button\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { TwoPhaseProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { RevealVote } from \"./RevealVote\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\nimport NeedHelp from \"./NeedHelp\";\n\nexport type AppealChallengeRevealVoteCardProps = ListingDetailPhaseCardComponentProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  RevealVoteProps &\n  ChallengeResultsProps &\n  AppealDecisionProps &\n  AppealChallengePhaseProps;\n\nexport interface AppealChallengeRevealVoteCardState {\n  flipped: boolean;\n}\n\nexport class AppealChallengeRevealVoteCard extends React.Component<\n  AppealChallengeRevealVoteCardProps,\n  AppealChallengeRevealVoteCardState\n> {\n  constructor(props: AppealChallengeRevealVoteCardProps) {\n    super(props);\n    this.state = { flipped: false };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledCardStage>\n        <StyledCard flipped={this.state.flipped}>\n          <StyledCardFront>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection>\n                <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n                <StyledPhaseKicker>Appeal Challenge ID {this.props.appealChallengeID}</StyledPhaseKicker>\n                <StyledPhaseDisplayName>Challenge Appeal Decision</StyledPhaseDisplayName>\n                <TwoPhaseProgressBarCountdownTimer\n                  endTime={this.props.endTime}\n                  totalSeconds={this.props.phaseLength}\n                  displayLabel=\"Confirm Vote Phase\"\n                  toolTipText={<ConfirmVoteToolTipText phaseLength={this.props.phaseLength} />}\n                  secondaryDisplayLabel=\"Submit Vote Phase\"\n                  secondaryToolTipText={<CommitVoteToolTipText phaseLength={this.props.secondaryPhaseLength} />}\n                  flavorText=\"under challenge\"\n                  activePhaseIndex={1}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <ChallengePhaseDetail\n                  challengeID={this.props.challengeID}\n                  challenger={this.props.challenger}\n                  isViewingUserChallenger={this.props.isViewingUserChallenger}\n                  rewardPool={this.props.rewardPool}\n                  stake={this.props.stake}\n                  dispensationPct={this.props.dispensationPct}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <ChallengeResults\n                  collapsable={true}\n                  totalVotes={this.props.totalVotes}\n                  votesFor={this.props.votesFor}\n                  votesAgainst={this.props.votesAgainst}\n                  percentFor={this.props.percentFor}\n                  percentAgainst={this.props.percentAgainst}\n                  didChallengeSucceed={this.props.didChallengeOriginallySucceed}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <AppealDecisionDetail\n                appealGranted={this.props.appealGranted}\n                appealGrantedStatementURI={this.props.appealGrantedStatementURI}\n              />\n\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"REVEAL_VOTE\">\n                {this.renderRevealVote()}\n              </StyledListingDetailPhaseCardSection>\n\n              <NeedHelp faqURL={this.props.faqURL} />\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardFront>\n\n          <StyledCardBack>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"REVEAL_VOTE\">\n                <StyledCardClose>\n                  <span onClick={this.swapFlipped}>✖</span>\n                </StyledCardClose>\n                <FormHeader>Confirm Your Secret Vote for Appeal Challenge #{this.props.appealChallengeID}</FormHeader>\n                <FormCopy>\n                  <RevealVoteCalloutCopyText votingSmartContractFaqURL={this.props.votingSmartContractFaqURL} />\n                </FormCopy>\n              </StyledListingDetailPhaseCardSection>\n              <StyledListingDetailPhaseCardSection>\n                <RevealVote\n                  isAppealChallenge={true}\n                  salt={this.props.salt}\n                  voteOption={this.props.voteOption}\n                  onInputChange={this.props.onInputChange}\n                  transactions={this.props.transactions}\n                  votingSmartContractFaqURL={this.props.votingSmartContractFaqURL}\n                />\n              </StyledListingDetailPhaseCardSection>\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardBack>\n        </StyledCard>\n      </StyledCardStage>\n    );\n  }\n\n  private renderRevealVote = (): JSX.Element => {\n    if (this.props.userHasCommittedVote === false) {\n      return (\n        <>\n          <FormHeader>\n            <RevealVoteDidNotCommitHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <RevealVoteDidNotCommitCopyText />\n          </FormCopy>\n        </>\n      );\n    } else if (this.props.userHasRevealedVote) {\n      return (\n        <>\n          <FormHeader>\n            <RevealVoteDoneHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <RevealVoteDoneCopyText />\n          </FormCopy>\n        </>\n      );\n    } else {\n      return (\n        <>\n          <FormHeader>\n            <RevealVoteCallToActionHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <RevealVoteCallToActionCopyText />\n          </FormCopy>\n          <FullWidthButton size={buttonSizes.MEDIUM} onClick={this.swapFlipped}>\n            <RevealVoteButtonText />\n          </FullWidthButton>\n        </>\n      );\n    }\n  };\n\n  private swapFlipped = (): void => {\n    this.setState(() => ({ flipped: !this.state.flipped }));\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealDecisionCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  AppealDecisionProps,\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  PhaseWithExpiryProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  CTACopy,\n} from \"./styledComponents\";\nimport { ChallangeCouncilToolTipText } from \"./textComponents\";\nimport { ProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { Button, buttonSizes } from \"../Button\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport NeedHelp from \"./NeedHelp\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\n\nexport const AppealDecisionCard: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps &\n    PhaseWithExpiryProps &\n    ChallengePhaseProps &\n    AppealDecisionProps &\n    ChallengeResultsProps\n> = props => {\n  const renderSubmitChallengeButton = (): JSX.Element => {\n    if (props.submitAppealChallengeURI) {\n      return (\n        <>\n          <Button size={buttonSizes.MEDIUM} to={props.submitAppealChallengeURI}>\n            Submit a Challenge\n          </Button>\n        </>\n      );\n    }\n\n    return <TransactionButtonNoModal transactions={props.transactions!}>Submit a Challenge</TransactionButtonNoModal>;\n  };\n\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseKicker>Challenge ID {props.challengeID}</StyledPhaseKicker>\n        <StyledPhaseDisplayName>Appeal to Council</StyledPhaseDisplayName>\n        <ProgressBarCountdownTimer\n          endTime={props.endTime}\n          totalSeconds={props.phaseLength}\n          displayLabel=\"Request to challenge Council's decision\"\n          toolTipText={<ChallangeCouncilToolTipText phaseLength={props.phaseLength} />}\n          flavorText=\"under Appeal to Council\"\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengePhaseDetail\n          challengeID={props.challengeID}\n          challenger={props.challenger}\n          isViewingUserChallenger={props.isViewingUserChallenger}\n          rewardPool={props.rewardPool}\n          stake={props.stake}\n          dispensationPct={props.dispensationPct}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          collapsable={true}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <AppealDecisionDetail\n        appealGranted={props.appealGranted}\n        appealGrantedStatementURI={props.appealGrantedStatementURI}\n      />\n\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          If you believe this newsroom does not align with the Civil Constitution, you may challenge the Council’s\n          decision.\n        </CTACopy>\n\n        {renderSubmitChallengeButton()}\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealDecisionDetail.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  StyledListingDetailPhaseCardSection,\n  StyledListingDetailPhaseCardSectionHeader,\n  FormCopy,\n} from \"./styledComponents\";\nimport { buttonSizes, InvertedButton } from \"../Button\";\nimport { Collapsable } from \"../Collapsable\";\n\nexport interface AppealDecisionDetailProps {\n  appealGranted?: boolean;\n  collapsable?: boolean;\n  open?: boolean;\n  appealGrantedStatementURI?: string;\n}\n\nconst StyledInner = styled.div`\n  padding-top: 14px;\n`;\n\nconst AppealDecisionDetailInner: React.FunctionComponent<AppealDecisionDetailProps> = props => {\n  const decisionText = props.appealGranted ? \"granted\" : \"not granted\";\n  return (\n    <StyledInner>\n      <FormCopy>\n        The Civil Council has {decisionText} the appeal.{\" \"}\n        {props.appealGranted && \"Read more about their methodology and how they’ve come to this decision.\"}\n      </FormCopy>\n\n      {props.appealGranted && (\n        <InvertedButton href={props.appealGrantedStatementURI} size={buttonSizes.MEDIUM_WIDE}>\n          Read about this decision\n        </InvertedButton>\n      )}\n    </StyledInner>\n  );\n};\n\nexport const AppealDecisionDetail: React.FunctionComponent<AppealDecisionDetailProps> = props => {\n  const headerElement = (\n    <StyledListingDetailPhaseCardSectionHeader>Civil Council Decision</StyledListingDetailPhaseCardSectionHeader>\n  );\n  if (props.collapsable) {\n    const open = props.open !== undefined ? props.open : true;\n    return (\n      <StyledListingDetailPhaseCardSection>\n        <Collapsable header={headerElement} open={open}>\n          <AppealDecisionDetailInner {...props} />\n        </Collapsable>\n      </StyledListingDetailPhaseCardSection>\n    );\n  }\n  return (\n    <StyledListingDetailPhaseCardSection>\n      {headerElement}\n      <AppealDecisionDetailInner {...props} />\n    </StyledListingDetailPhaseCardSection>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/AppealResolveCard.tsx",
    "content": "import * as React from \"react\";\nimport { ListingDetailPhaseCardComponentProps, ChallengePhaseProps, AppealDecisionProps } from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  CTACopy,\n} from \"./styledComponents\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport NeedHelp from \"./NeedHelp\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\n\nexport const AppealResolveCard: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps & ChallengePhaseProps & AppealDecisionProps & ChallengeResultsProps\n> = props => {\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseKicker>Challenge ID {props.challengeID}</StyledPhaseKicker>\n        <StyledPhaseDisplayName>Ready to Complete</StyledPhaseDisplayName>\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengePhaseDetail\n          challengeID={props.challengeID}\n          challenger={props.challenger}\n          isViewingUserChallenger={props.isViewingUserChallenger}\n          rewardPool={props.rewardPool}\n          stake={props.stake}\n          dispensationPct={props.dispensationPct}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          collapsable={true}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <AppealDecisionDetail\n        appealGranted={props.appealGranted}\n        appealGrantedStatementURI={props.appealGrantedStatementURI}\n      />\n\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          This challenge is complete. To update this Newsroom's status on the Civil Registry, please resolve this\n          appeal.\n        </CTACopy>\n        <TransactionButtonNoModal transactions={props.transactions!}>Resolve Appeal</TransactionButtonNoModal>\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/ChallengeCommitVoteCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n  CommitVoteProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  StyledCardStage,\n  StyledCard,\n  StyledCardClose,\n  StyledCardFront,\n  StyledCardBack,\n  FormHeader,\n  FormCopy,\n  FullWidthButton,\n} from \"./styledComponents\";\nimport {\n  UnderChallengePhaseDisplayNameText,\n  CommitVoteCalloutHeaderText,\n  CommitVoteCalloutCopyText,\n  CommitVoteAlreadyVotedHeaderText,\n  CommitVoteAlreadyVotedCopyText,\n  UnderChallengeToolTipText,\n  CommitVoteToolTipText,\n  ConfirmVoteToolTipText,\n} from \"./textComponents\";\nimport { TwoPhaseProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { buttonSizes } from \"../Button\";\nimport NeedHelp from \"./NeedHelp\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport { CommitVote } from \"./CommitVote\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport type ChallengeCommitVoteCardProps = ListingDetailPhaseCardComponentProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  CommitVoteProps;\n\nexport interface ChallengeCommitVoteCardState {\n  flipped: boolean;\n}\n\nexport class ChallengeCommitVoteCard extends React.Component<\n  ChallengeCommitVoteCardProps,\n  ChallengeCommitVoteCardState\n> {\n  constructor(props: ChallengeCommitVoteCardProps) {\n    super(props);\n    this.state = { flipped: false };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledCardStage>\n        <StyledCard flipped={this.state.flipped}>\n          <StyledCardFront>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection>\n                <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n                <StyledPhaseDisplayName>\n                  <UnderChallengePhaseDisplayNameText />\n                  <QuestionToolTip explainerText={<UnderChallengeToolTipText />} positionBottom={true} />\n                </StyledPhaseDisplayName>\n                <TwoPhaseProgressBarCountdownTimer\n                  endTime={this.props.endTime}\n                  totalSeconds={this.props.phaseLength}\n                  displayLabel=\"Submit Vote Phase\"\n                  toolTipText={<CommitVoteToolTipText phaseLength={this.props.phaseLength} />}\n                  secondaryDisplayLabel=\"Confirm Vote Phase\"\n                  secondaryToolTipText={<ConfirmVoteToolTipText phaseLength={this.props.secondaryPhaseLength} />}\n                  flavorText=\"under challenge\"\n                  activePhaseIndex={0}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <ChallengePhaseDetail\n                  challengeID={this.props.challengeID}\n                  challenger={this.props.challenger}\n                  isViewingUserChallenger={this.props.isViewingUserChallenger}\n                  rewardPool={this.props.rewardPool}\n                  stake={this.props.stake}\n                  dispensationPct={this.props.dispensationPct}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"COMMIT_VOTE\">\n                {this.renderCommitVoteCallout()}\n\n                <FullWidthButton size={buttonSizes.MEDIUM} onClick={this.swapFlipped}>\n                  {this.renderCommitVoteButtonText()}\n                </FullWidthButton>\n              </StyledListingDetailPhaseCardSection>\n\n              <NeedHelp faqURL={this.props.faqURL} />\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardFront>\n\n          <StyledCardBack>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"COMMIT_VOTE\">\n                <StyledCardClose>\n                  <span onClick={this.swapFlipped}>✖</span>\n                </StyledCardClose>\n                <FormHeader>Submit a Secret Vote for Challenge #{this.props.challengeID}</FormHeader>\n              </StyledListingDetailPhaseCardSection>\n              <StyledListingDetailPhaseCardSection>\n                <CommitVote\n                  tokenBalance={this.props.tokenBalance}\n                  votingTokenBalance={this.props.votingTokenBalance}\n                  tokenBalanceDisplay={this.props.tokenBalanceDisplay}\n                  votingTokenBalanceDisplay={this.props.votingTokenBalanceDisplay}\n                  voteOption={this.props.voteOption}\n                  salt={this.props.salt}\n                  numTokens={this.props.numTokens}\n                  onInputChange={this.props.onInputChange}\n                  userHasCommittedVote={this.props.userHasCommittedVote}\n                  onReviewVote={this.props.onReviewVote}\n                  onCommitMaxTokens={this.props.onCommitMaxTokens}\n                />\n              </StyledListingDetailPhaseCardSection>\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardBack>\n        </StyledCard>\n      </StyledCardStage>\n    );\n  }\n\n  private swapFlipped = (): void => {\n    this.setState(() => ({ flipped: !this.state.flipped }));\n  };\n\n  private renderCommitVoteCallout = (): JSX.Element => {\n    if (this.props.userHasCommittedVote) {\n      return (\n        <>\n          <FormHeader>\n            <CommitVoteAlreadyVotedHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <CommitVoteAlreadyVotedCopyText />\n          </FormCopy>\n        </>\n      );\n    }\n    return (\n      <>\n        <FormHeader>\n          <CommitVoteCalloutHeaderText />\n        </FormHeader>\n        <FormCopy>\n          <CommitVoteCalloutCopyText />\n        </FormCopy>\n      </>\n    );\n  };\n\n  private renderCommitVoteButtonText = (): JSX.Element => {\n    if (this.props.userHasCommittedVote) {\n      return <>Change My Vote</>;\n    }\n    return <>Ready To Commit My Vote</>;\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/ChallengePhaseDetail.tsx",
    "content": "import * as React from \"react\";\nimport { getFormattedEthAddress } from \"@joincivil/utils\";\nimport { ChallengePhaseProps } from \"./types\";\nimport { MetaRow, MetaItem, MetaItemValue, MetaItemValueEthAddress, MetaItemLabel } from \"./styledComponents\";\nimport { RewardPoolToolTipText, DepositsToolTipText } from \"./textComponents\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport const ChallengePhaseDetail: React.FunctionComponent<ChallengePhaseProps> = props => {\n  return (\n    <>\n      <MetaRow>\n        <MetaItem>\n          <MetaItemLabel>\n            Reward Pool\n            <QuestionToolTip\n              explainerText={<RewardPoolToolTipText dispensationPct={props.dispensationPct} />}\n              positionBottom={true}\n            />\n          </MetaItemLabel>\n          <MetaItemValue>{props.rewardPool}</MetaItemValue>\n        </MetaItem>\n      </MetaRow>\n      <MetaRow>\n        <MetaItem>\n          <MetaItemLabel>\n            Challenger Deposit\n            <QuestionToolTip explainerText={<DepositsToolTipText />} positionBottom={true} />\n          </MetaItemLabel>\n          <MetaItemValue>{props.stake}</MetaItemValue>\n        </MetaItem>\n        <MetaItem>\n          <MetaItemLabel>\n            Newsroom Deposit\n            <QuestionToolTip explainerText={<DepositsToolTipText />} positionBottom={true} />\n          </MetaItemLabel>\n          <MetaItemValue>{props.stake}</MetaItemValue>\n        </MetaItem>\n      </MetaRow>\n      <MetaRow>\n        <MetaItem>\n          <MetaItemLabel>{props.isViewingUserChallenger ? \"You are the challenger\" : \"Challenger\"}</MetaItemLabel>\n          <MetaItemValueEthAddress>{getFormattedEthAddress(props.challenger!)}</MetaItemValueEthAddress>\n        </MetaItem>\n      </MetaRow>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/ChallengeRequestAppealCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  PhaseWithExpiryProps,\n  RequestAppealProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  CTACopy,\n} from \"./styledComponents\";\nimport {\n  UnderChallengePhaseDisplayNameText,\n  UnderChallengeToolTipText,\n  RequestAppealToolTipText,\n} from \"./textComponents\";\nimport { buttonSizes, InvertedButton } from \"../Button\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { ProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport NeedHelp from \"./NeedHelp\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nconst RequestAppealButton: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps &\n    PhaseWithExpiryProps &\n    ChallengePhaseProps &\n    ChallengeResultsProps &\n    RequestAppealProps\n> = props => {\n  if (props.requestAppealURI) {\n    return (\n      <>\n        <InvertedButton size={buttonSizes.MEDIUM} to={props.requestAppealURI}>\n          Request an Appeal\n        </InvertedButton>\n      </>\n    );\n  }\n\n  return (\n    <TransactionButtonNoModal transactions={props.transactions!}>\n      Request Appeal from Civil Council\n    </TransactionButtonNoModal>\n  );\n};\n\nexport const ChallengeRequestAppealCard: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps &\n    PhaseWithExpiryProps &\n    ChallengePhaseProps &\n    ChallengeResultsProps &\n    RequestAppealProps\n> = props => {\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseKicker>Challenge ID {props.challengeID}</StyledPhaseKicker>\n        <StyledPhaseDisplayName>\n          <UnderChallengePhaseDisplayNameText />\n          <QuestionToolTip explainerText={<UnderChallengeToolTipText />} positionBottom={true} />\n        </StyledPhaseDisplayName>\n        <ProgressBarCountdownTimer\n          endTime={props.endTime}\n          totalSeconds={props.phaseLength}\n          displayLabel=\"Accepting Appeal Requests\"\n          toolTipText={<RequestAppealToolTipText phaseLength={props.phaseLength} />}\n          flavorText=\"under challenge\"\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengePhaseDetail\n          challengeID={props.challengeID}\n          challenger={props.challenger}\n          isViewingUserChallenger={props.isViewingUserChallenger}\n          rewardPool={props.rewardPool}\n          stake={props.stake}\n          dispensationPct={props.dispensationPct}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          collapsable={true}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>If you disagree with the community, you may request an appeal to the Civil Council.</CTACopy>\n        <RequestAppealButton {...props} />\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/ChallengeResolveCard.tsx",
    "content": "import * as React from \"react\";\nimport { ListingDetailPhaseCardComponentProps, ChallengePhaseProps } from \"./types\";\nimport {\n  CTACopy,\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n} from \"./styledComponents\";\nimport { ReadyToCompletePhaseDisplayNameText, ResolveChallengeToolTipText } from \"./textComponents\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport NeedHelp from \"./NeedHelp\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport const ChallengeResolveCard: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps & ChallengePhaseProps & ChallengeResultsProps\n> = props => {\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseKicker>Challenge ID {props.challengeID}</StyledPhaseKicker>\n        <StyledPhaseDisplayName>\n          <ReadyToCompletePhaseDisplayNameText />\n          <QuestionToolTip explainerText={<ResolveChallengeToolTipText />} positionBottom={true} />\n        </StyledPhaseDisplayName>\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengePhaseDetail\n          challengeID={props.challengeID}\n          challenger={props.challenger}\n          isViewingUserChallenger={props.isViewingUserChallenger}\n          rewardPool={props.rewardPool}\n          stake={props.stake}\n          dispensationPct={props.dispensationPct}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          collapsable={true}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          This challenge is complete. To update this Newsroom's status on the Civil Registry, please resolve this\n          challenge.\n        </CTACopy>\n        <TransactionButtonNoModal transactions={props.transactions!}>Resolve Challenge</TransactionButtonNoModal>\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/ChallengeRevealVoteCard.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n  RevealVoteProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  StyledCardStage,\n  StyledCard,\n  StyledCardClose,\n  StyledCardFront,\n  StyledCardBack,\n  FormHeader,\n  FormCopy,\n  FullWidthButton,\n} from \"./styledComponents\";\nimport {\n  UnderChallengePhaseDisplayNameText,\n  UnderChallengeToolTipText,\n  CommitVoteToolTipText,\n  ConfirmVoteToolTipText,\n  RevealVoteCallToActionHeaderText,\n  RevealVoteCallToActionCopyText,\n  RevealVoteDidNotCommitHeaderText,\n  RevealVoteDidNotCommitCopyText,\n  RevealVoteDoneHeaderText,\n  RevealVoteDoneCopyText,\n  RevealVoteButtonText,\n  RevealVoteCalloutCopyText,\n} from \"./textComponents\";\nimport { TwoPhaseProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport { buttonSizes } from \"../Button\";\nimport { ChallengePhaseDetail } from \"./ChallengePhaseDetail\";\nimport NeedHelp from \"./NeedHelp\";\nimport { RevealVote } from \"./RevealVote\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport type ChallengeRevealVoteCardProps = ListingDetailPhaseCardComponentProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  RevealVoteProps;\n\nexport interface ChallengeRevealVoteCardState {\n  flipped: boolean;\n}\n\nexport class ChallengeRevealVoteCard extends React.Component<\n  ChallengeRevealVoteCardProps,\n  ChallengeRevealVoteCardState\n> {\n  constructor(props: ChallengeRevealVoteCardProps) {\n    super(props);\n    this.state = { flipped: false };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledCardStage>\n        <StyledCard flipped={this.state.flipped}>\n          <StyledCardFront>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection>\n                <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n                <StyledPhaseDisplayName>\n                  <UnderChallengePhaseDisplayNameText />\n                  <QuestionToolTip explainerText={<UnderChallengeToolTipText />} positionBottom={true} />\n                </StyledPhaseDisplayName>\n                <TwoPhaseProgressBarCountdownTimer\n                  endTime={this.props.endTime}\n                  totalSeconds={this.props.phaseLength}\n                  displayLabel=\"Confirm Vote Phase\"\n                  toolTipText={<ConfirmVoteToolTipText phaseLength={this.props.phaseLength} />}\n                  secondaryDisplayLabel=\"Submit Vote Phase\"\n                  secondaryToolTipText={<CommitVoteToolTipText phaseLength={this.props.secondaryPhaseLength} />}\n                  flavorText=\"under challenge\"\n                  activePhaseIndex={1}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <ChallengePhaseDetail\n                  challengeID={this.props.challengeID}\n                  challenger={this.props.challenger}\n                  isViewingUserChallenger={this.props.isViewingUserChallenger}\n                  rewardPool={this.props.rewardPool}\n                  stake={this.props.stake}\n                  dispensationPct={this.props.dispensationPct}\n                />\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"REVEAL_VOTE\">\n                {this.renderRevealVote()}\n              </StyledListingDetailPhaseCardSection>\n\n              <NeedHelp faqURL={this.props.faqURL} />\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardFront>\n\n          <StyledCardBack>\n            <StyledListingDetailPhaseCardContainer>\n              <StyledListingDetailPhaseCardSection bgAccentColor=\"REVEAL_VOTE\">\n                <StyledCardClose>\n                  <span onClick={this.swapFlipped}>✖</span>\n                </StyledCardClose>\n                <FormHeader>Confirm Your Secret Vote for Challenge #{this.props.challengeID}</FormHeader>\n                <FormCopy>\n                  <RevealVoteCalloutCopyText votingSmartContractFaqURL={this.props.votingSmartContractFaqURL} />\n                </FormCopy>\n              </StyledListingDetailPhaseCardSection>\n\n              <StyledListingDetailPhaseCardSection>\n                <RevealVote\n                  salt={this.props.salt}\n                  voteOption={this.props.voteOption}\n                  onInputChange={this.props.onInputChange}\n                  transactions={this.props.transactions}\n                  votingSmartContractFaqURL={this.props.votingSmartContractFaqURL}\n                />\n              </StyledListingDetailPhaseCardSection>\n            </StyledListingDetailPhaseCardContainer>\n          </StyledCardBack>\n        </StyledCard>\n      </StyledCardStage>\n    );\n  }\n\n  private renderRevealVote = (): JSX.Element => {\n    if (!this.props.userHasCommittedVote) {\n      return (\n        <>\n          <FormHeader>\n            <RevealVoteDidNotCommitHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <RevealVoteDidNotCommitCopyText />\n          </FormCopy>\n        </>\n      );\n    } else if (this.props.userHasRevealedVote) {\n      return (\n        <>\n          <FormHeader>\n            <RevealVoteDoneHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <RevealVoteDoneCopyText />\n          </FormCopy>\n        </>\n      );\n    } else {\n      return (\n        <>\n          <FormHeader>\n            <RevealVoteCallToActionHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <RevealVoteCallToActionCopyText />\n          </FormCopy>\n          <FullWidthButton size={buttonSizes.MEDIUM} onClick={this.swapFlipped}>\n            <RevealVoteButtonText />\n          </FullWidthButton>\n        </>\n      );\n    }\n  };\n\n  private swapFlipped = (): void => {\n    this.setState(() => ({ flipped: !this.state.flipped }));\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/CommitVote.tsx",
    "content": "import * as React from \"react\";\nimport { buttonSizes, Button } from \"../Button\";\nimport { CurrencyInputWithButton } from \"../input/\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nimport { CommitVoteProps } from \"./types\";\nimport {\n  FormQuestion,\n  VoteOptionsContainer,\n  StyledOrText,\n  buttonTheme,\n  ProgressBarProgress,\n  ProgressBarTotal,\n  StyledBalanceRow,\n  StyledBalanceRowRight,\n  StyledStep,\n  StyledStepLabel,\n  StyledOneTokenOneVote,\n  StyledButtonsContainer,\n  StyledTextActionButton,\n  StyledAppMessage,\n  StyledVoteCTAButton,\n} from \"./styledComponents\";\nimport {\n  CommitVoteReviewButtonText,\n  VoteCallToActionText,\n  AppealChallengeVoteCallToActionText,\n  AvailableTokenBalanceText,\n  AvailableTokenBalanceTooltipText,\n  VotingTokenBalanceText,\n  VotingTokenBalanceTooltipText,\n  SelectNumTokensText,\n  OneTokenOneVoteText,\n  OneTokenOneVoteTooltipText,\n  CommitVoteInsufficientTokensText,\n  CommitVoteMaxTokensWarningText,\n} from \"./textComponents\";\nimport VoteButton from \"./VoteButton\";\n\nexport interface CommitVoteState {\n  numTokensError?: string;\n}\n\nexport interface CommitVoteStepState {\n  displayStep: number;\n}\n\nexport class CommitVote extends React.Component<CommitVoteProps, CommitVoteState & CommitVoteStepState> {\n  constructor(props: CommitVoteProps) {\n    super(props);\n    this.state = {\n      numTokensError: undefined,\n      displayStep: 0,\n    };\n  }\n\n  public render(): JSX.Element {\n    const canReview =\n      this.props.voteOption !== undefined &&\n      this.props.numTokens &&\n      typeof parseInt(this.props.numTokens, 10) === \"number\";\n    const DefaultCTATextComponent = this.props.isAppealChallenge\n      ? AppealChallengeVoteCallToActionText\n      : VoteCallToActionText;\n    return (\n      <>\n        <StyledStep visible={this.state.displayStep === 0}>\n          <StyledStepLabel>Step 1 of 2</StyledStepLabel>\n\n          <FormQuestion>\n            {this.props.children || <DefaultCTATextComponent newsroomName={this.props.newsroomName} />}\n          </FormQuestion>\n\n          <VoteOptionsContainer>\n            <VoteButton buttonVoteOptionValue=\"1\" {...this.props} />\n            <StyledOrText>or</StyledOrText>\n            <VoteButton buttonVoteOptionValue=\"0\" {...this.props} />\n          </VoteOptionsContainer>\n\n          <StyledVoteCTAButton>\n            <Button\n              disabled={this.props.voteOption === undefined}\n              onClick={() => this.setState({ displayStep: 1 })}\n              size={buttonSizes.MEDIUM}\n              theme={buttonTheme}\n            >\n              Next\n            </Button>\n          </StyledVoteCTAButton>\n        </StyledStep>\n\n        <StyledStep visible={this.state.displayStep === 1}>\n          <StyledStepLabel>Step 2 of 2</StyledStepLabel>\n\n          <FormQuestion>\n            <SelectNumTokensText />\n          </FormQuestion>\n\n          <StyledOneTokenOneVote>\n            <OneTokenOneVoteText />\n            <QuestionToolTip explainerText={<OneTokenOneVoteTooltipText />} positionBottom={true} />\n          </StyledOneTokenOneVote>\n\n          {this.renderTokenBalance()}\n\n          {this.renderNumTokensInput()}\n\n          {this.renderAppMessages()}\n\n          <StyledButtonsContainer>\n            <Button\n              disabled={!canReview}\n              size={buttonSizes.MEDIUM}\n              theme={buttonTheme}\n              onClick={this.props.onReviewVote}\n            >\n              {this.props.buttonText || <CommitVoteReviewButtonText />}\n            </Button>\n\n            <div onClick={() => this.setState({ displayStep: 0 })}>\n              <StyledTextActionButton>Back</StyledTextActionButton>\n            </div>\n          </StyledButtonsContainer>\n        </StyledStep>\n      </>\n    );\n  }\n\n  private renderTokenBalance = (): JSX.Element => {\n    let tokenBalanceLabel: JSX.Element;\n    let toolTipText: JSX.Element;\n    let displayBalance: string;\n    let progress: number;\n\n    if (this.props.votingTokenBalance) {\n      tokenBalanceLabel = <VotingTokenBalanceText />;\n      toolTipText = <VotingTokenBalanceTooltipText />;\n      displayBalance = this.props.votingTokenBalanceDisplay;\n      progress = this.props.numTokens ? parseFloat(this.props.numTokens) / this.props.votingTokenBalance : 0;\n    } else {\n      tokenBalanceLabel = <AvailableTokenBalanceText />;\n      toolTipText = <AvailableTokenBalanceTooltipText />;\n      displayBalance = this.props.tokenBalanceDisplay;\n      progress = this.props.numTokens ? parseFloat(this.props.numTokens) / this.props.tokenBalance : 0;\n    }\n\n    if (progress > 1) {\n      progress = 1;\n    }\n\n    const style = { width: `${(progress * 100).toString()}%` };\n\n    return (\n      <>\n        <StyledBalanceRow>\n          <div>\n            {tokenBalanceLabel}\n            <QuestionToolTip explainerText={toolTipText} positionBottom={true} />\n          </div>\n\n          <StyledBalanceRowRight>{displayBalance}</StyledBalanceRowRight>\n        </StyledBalanceRow>\n\n        <ProgressBarTotal>\n          <ProgressBarProgress style={style} />\n        </ProgressBarTotal>\n      </>\n    );\n  };\n\n  private renderNumTokensInput = (): JSX.Element => {\n    return (\n      <CurrencyInputWithButton\n        placeholder=\"0.00\"\n        name=\"numTokens\"\n        buttonText=\"Commit Max\"\n        icon={<>CVL</>}\n        value={this.props.numTokens}\n        onChange={this.setNumTokens}\n        onButtonClick={() => this.props.onCommitMaxTokens()}\n      />\n    );\n  };\n\n  private renderAppMessages = (): JSX.Element | null => {\n    let message;\n    const { numTokens, tokenBalance, votingTokenBalance } = this.props;\n    if (numTokens && parseFloat(numTokens) > tokenBalance + votingTokenBalance) {\n      message = <CommitVoteInsufficientTokensText />;\n    } else if (numTokens && parseFloat(numTokens) === tokenBalance + votingTokenBalance) {\n      message = <CommitVoteMaxTokensWarningText />;\n    }\n\n    if (message) {\n      return <StyledAppMessage>{message}</StyledAppMessage>;\n    }\n\n    return null;\n  };\n\n  private setNumTokens = (name: string, value: string | null): void => {\n    let cleanValue = value && parseFloat(value);\n    if (cleanValue) {\n      cleanValue = Math.abs(cleanValue as number);\n      this.props.onInputChange({ numTokens: cleanValue });\n      return;\n    }\n    this.props.onInputChange({ numTokens: value });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/CompleteChallengeResults.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  AppealDecisionProps,\n  AppealChallengePhaseProps,\n  AppealChallengeResultsProps,\n} from \"./types\";\nimport { StyledListingDetailPhaseCardContainer, StyledListingDetailPhaseCardSection } from \"./styledComponents\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\n\nexport interface CompleteChallengeResultsProps {\n  listingRemovedTimestamp?: number;\n}\n\nexport type CompleteChallengeResultsAllProps = ListingDetailPhaseCardComponentProps &\n  ChallengePhaseProps &\n  ChallengeResultsProps &\n  AppealDecisionProps &\n  AppealChallengePhaseProps &\n  AppealChallengeResultsProps &\n  CompleteChallengeResultsProps;\n\nexport const CompleteChallengeResults: React.FunctionComponent<CompleteChallengeResultsAllProps> = props => {\n  const showAppealChallenge =\n    props.appealChallengeTotalVotes &&\n    props.appealChallengeVotesFor &&\n    props.appealChallengeVotesAgainst &&\n    props.appealChallengePercentFor &&\n    props.appealChallengePercentAgainst;\n\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          headerText={`Challenge #${props.challengeID} Results`}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      {props.appealRequested && <AppealDecisionDetail appealGranted={props.appealGranted} />}\n\n      {showAppealChallenge && (\n        <StyledListingDetailPhaseCardSection>\n          <ChallengeResults\n            headerText={`Appeal Challenge #${props.appealChallengeID} Results`}\n            totalVotes={props.appealChallengeTotalVotes!}\n            votesFor={props.appealChallengeVotesFor!}\n            votesAgainst={props.appealChallengeVotesAgainst!}\n            percentFor={props.appealChallengePercentFor!}\n            percentAgainst={props.appealChallengePercentAgainst!}\n            didChallengeSucceed={props.didAppealChallengeSucceed!}\n            isAppealChallenge={true}\n          />\n        </StyledListingDetailPhaseCardSection>\n      )}\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/InApplicationCard.tsx",
    "content": "import * as React from \"react\";\nimport { ListingDetailPhaseCardComponentProps, PhaseWithExpiryProps, SubmitChallengeProps } from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseDisplayName,\n  CTACopy,\n} from \"./styledComponents\";\nimport { NewApplicationDisplayNameText, NewApplicationToolTipText } from \"./textComponents\";\nimport { buttonSizes, InvertedButton } from \"../Button\";\nimport { TransactionInvertedButton } from \"../TransactionButton\";\nimport { ProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport NeedHelp from \"./NeedHelp\";\n\nexport class InApplicationCard extends React.Component<\n  ListingDetailPhaseCardComponentProps & PhaseWithExpiryProps & SubmitChallengeProps\n> {\n  public render(): JSX.Element {\n    return (\n      <StyledListingDetailPhaseCardContainer>\n        <StyledListingDetailPhaseCardSection>\n          <StyledPhaseDisplayName>\n            <NewApplicationDisplayNameText />\n          </StyledPhaseDisplayName>\n          <ProgressBarCountdownTimer\n            endTime={this.props.endTime}\n            totalSeconds={this.props.phaseLength}\n            displayLabel=\"Waiting for approval\"\n            toolTipText={<NewApplicationToolTipText phaseLength={this.props.phaseLength} />}\n            flavorText=\"under community review\"\n          />\n        </StyledListingDetailPhaseCardSection>\n        <StyledListingDetailPhaseCardSection>\n          <CTACopy>\n            If you believe this newsroom does not align with the{\" \"}\n            <a href={this.props.constitutionURI}>Civil Constitution</a>, you may challenge this newsroom.{\" \"}\n            <a href={this.props.learnMoreURL}>Learn More</a>.\n          </CTACopy>\n          {this.renderSubmitChallengeButton()}\n        </StyledListingDetailPhaseCardSection>\n\n        <NeedHelp faqURL={this.props.faqURL} />\n      </StyledListingDetailPhaseCardContainer>\n    );\n  }\n\n  private renderSubmitChallengeButton = (): JSX.Element => {\n    if (this.props.submitChallengeURI) {\n      return (\n        <>\n          <InvertedButton size={buttonSizes.MEDIUM} to={this.props.submitChallengeURI}>\n            Submit a Challenge\n          </InvertedButton>\n        </>\n      );\n    }\n\n    return (\n      <TransactionInvertedButton transactions={this.props.transactions!}>Submit a Challenge</TransactionInvertedButton>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/InApplicationResolveCard.tsx",
    "content": "import * as React from \"react\";\nimport { ListingDetailPhaseCardComponentProps } from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseDisplayName,\n  CTACopy,\n} from \"./styledComponents\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport NeedHelp from \"./NeedHelp\";\n\nexport const InApplicationResolveCard: React.FunctionComponent<ListingDetailPhaseCardComponentProps> = props => {\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseDisplayName>Application Accepted</StyledPhaseDisplayName>\n      </StyledListingDetailPhaseCardSection>\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          This application is complete. To update this Newsroom's status on the Civil Registry, please add to registry.\n        </CTACopy>\n        <TransactionButtonNoModal transactions={props.transactions!}>Add To Registry</TransactionButtonNoModal>\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/ListingDetailsPhaseCard.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport StoryRouter from \"storybook-react-router\";\nimport {\n  InApplicationCard,\n  InApplicationResolveCard,\n  ChallengeCommitVoteCard,\n  ChallengeRevealVoteCard,\n  ChallengeRequestAppealCard,\n  ChallengeResolveCard,\n  AppealAwaitingDecisionCard,\n  AppealDecisionCard,\n  AppealResolveCard,\n  AppealChallengeCommitVoteCard,\n  AppealChallengeRevealVoteCard,\n  AppealChallengeResolveCard,\n  WhitelistedCard,\n  RejectedCard,\n} from \"./index\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nconst now = Date.now() / 1000;\nconst oneDay = 86400;\nconst endTime = now + oneDay * 4.25;\nconst phaseLength = oneDay * 7;\nconst secondaryPhaseLength = phaseLength * 2;\n\nconst challengeID = \"420\";\nconst challenger = \"0x0\";\nconst rewardPool = \"1000000\";\nconst stake = \"100000\";\n\nconst requester = \"0x01\";\nconst appealFeePaid = \"10.00 CVL\";\n\nconst appealChallengeID = \"1420\";\n\nconst totalVotes = \"100000\";\nconst votesFor = \"73000\";\nconst votesAgainst = \"27000\";\nconst percentFor = \"73\";\nconst percentAgainst = \"27\";\nconst didChallengeSucceed = false;\n\nconst tokenBalance = 10000;\nlet commitVoteState = {\n  salt: \"9635457449074\",\n  numTokens: (tokenBalance * 0.67).toString(),\n  voteOption: undefined,\n};\n\nfunction commitVoteChange(data: any, callback?: () => any): void {\n  commitVoteState = { ...commitVoteState, ...data };\n  if (callback) {\n    callback();\n  }\n}\n\nconst noop = () => {\n  console.log(\"noop\");\n};\n\nstoriesOf(\"Registry / Listing / Listing Details Phase Card\", module)\n  .addDecorator(StoryRouter())\n  .add(\"In Application\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <InApplicationCard endTime={endTime} phaseLength={phaseLength} transactions={[]} faqURL=\"#faq\" />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Resolve Application\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && <InApplicationResolveCard transactions={[]} faqURL=\"#faq\" />}\n      </Container>\n    );\n  })\n  .add(\"Under Challenge: Commit Vote\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ChallengeCommitVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            tokenBalance={tokenBalance}\n            votingTokenBalance={tokenBalance}\n            tokenBalanceDisplay={`${tokenBalance} CVL`}\n            votingTokenBalanceDisplay={`${tokenBalance} CVL`}\n            salt={commitVoteState.salt}\n            numTokens={commitVoteState.numTokens}\n            onInputChange={commitVoteChange}\n            onCommitMaxTokens={noop}\n            onReviewVote={noop}\n            transactions={[]}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Challenge: Reveal Vote - User Did Not Commit\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ChallengeRevealVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            secondaryPhaseLength={secondaryPhaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            voteOption={commitVoteState.voteOption}\n            salt={commitVoteState.salt}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            userHasCommittedVote={false}\n            votingSmartContractFaqURL=\"#voting-smart-contract-faq\"\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Challenge: Reveal Vote - User Already Revealed\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ChallengeRevealVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            secondaryPhaseLength={secondaryPhaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            voteOption={commitVoteState.voteOption}\n            salt={commitVoteState.salt}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            userHasCommittedVote={true}\n            userHasRevealedVote={true}\n            votingSmartContractFaqURL=\"#voting-smart-contract-faq\"\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Challenge: Reveal Vote - User committed and has not revealed\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ChallengeRevealVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            voteOption={commitVoteState.voteOption}\n            salt={commitVoteState.salt}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            userHasCommittedVote={true}\n            votingSmartContractFaqURL=\"#voting-smart-contract-faq\"\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Challenge: Request Appeal\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ChallengeRequestAppealCard\n            challengeID={challengeID}\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            transactions={[]}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Challenge: Resolve\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ChallengeResolveCard\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            transactions={[]}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Appeal: Awaiting Appeal Decision\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealAwaitingDecisionCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            requester={requester}\n            appealFeePaid={appealFeePaid}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Appeal: Awaiting Appeal Decision, Civil Council Multisig\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealAwaitingDecisionCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            requester={requester}\n            appealFeePaid={appealFeePaid}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            transactions={[]}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Appeal: Decision / Can Challenge\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealDecisionCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            appealGranted={true}\n            didChallengeSucceed={didChallengeSucceed}\n            transactions={[]}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Under Appeal: Resolve\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealResolveCard\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            appealGranted={true}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            transactions={[]}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Appeal Challenge: Commit Vote\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealChallengeCommitVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            secondaryPhaseLength={secondaryPhaseLength}\n            tokenBalance={tokenBalance}\n            votingTokenBalance={tokenBalance}\n            tokenBalanceDisplay={`${tokenBalance} CVL`}\n            votingTokenBalanceDisplay={`${tokenBalance} CVL`}\n            salt={commitVoteState.salt}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            numTokens={commitVoteState.numTokens}\n            onCommitMaxTokens={noop}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            appealChallengeID={appealChallengeID}\n            appealGranted={true}\n            didChallengeSucceed={didChallengeSucceed}\n            onReviewVote={noop}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Appeal Challenge: Reveal Vote - User Did Not Commit\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealChallengeRevealVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            secondaryPhaseLength={secondaryPhaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            voteOption={commitVoteState.voteOption}\n            salt={commitVoteState.salt}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            didChallengeSucceed={didChallengeSucceed}\n            percentAgainst={percentAgainst}\n            appealChallengeID={appealChallengeID}\n            appealGranted={true}\n            votingSmartContractFaqURL=\"#voting-smart-contract-faq\"\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Appeal Challenge: Reveal Vote - User Already Revealed\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealChallengeRevealVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            voteOption={commitVoteState.voteOption}\n            salt={commitVoteState.salt}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            appealChallengeID={appealChallengeID}\n            appealGranted={true}\n            userHasCommittedVote={true}\n            userHasRevealedVote={true}\n            votingSmartContractFaqURL=\"#voting-smart-contract-faq\"\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Appeal Challenge: Reveal Vote - User committed and has not revealed\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealChallengeRevealVoteCard\n            endTime={endTime}\n            phaseLength={phaseLength}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            voteOption={commitVoteState.voteOption}\n            salt={commitVoteState.salt}\n            onInputChange={commitVoteChange}\n            transactions={[]}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            appealChallengeID={appealChallengeID}\n            appealGranted={true}\n            userHasCommittedVote={true}\n            userHasRevealedVote={false}\n            votingSmartContractFaqURL=\"#voting-smart-contract-faq\"\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Appeal Challenge: Resolve\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <AppealChallengeResolveCard\n            appealGranted={true}\n            challengeID={challengeID}\n            challenger={challenger}\n            rewardPool={rewardPool}\n            stake={stake}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            appealChallengeTotalVotes={totalVotes}\n            appealChallengeVotesFor={votesFor}\n            appealChallengeVotesAgainst={votesAgainst}\n            appealChallengePercentFor={percentFor}\n            appealChallengePercentAgainst={percentAgainst}\n            transactions={[]}\n            appealChallengeID={appealChallengeID}\n            didAppealChallengeSucceed={didChallengeSucceed}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Whitelisted\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <WhitelistedCard whitelistedTimestamp={now} transactions={[]} faqURL=\"#faq\" />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Rejected\", () => {\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <RejectedCard\n            listingRemovedTimestamp={now}\n            totalVotes={totalVotes}\n            votesFor={votesFor}\n            votesAgainst={votesAgainst}\n            percentFor={percentFor}\n            percentAgainst={percentAgainst}\n            didChallengeSucceed={didChallengeSucceed}\n            faqURL=\"#faq\"\n          />\n        )}\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/NeedHelp.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StyledListingDetailPhaseCardSection } from \"./styledComponents\";\nimport { colors } from \"../styleConstants\";\n\nexport interface NeedHelpProps {\n  faqURL: string;\n}\n\nconst NeedHelpCopy = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 14px;\n  letter-spacing: 0.68px;\n  line-height: 20px;\n\n  a,\n  a:visited {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nconst NeedHelp: React.FunctionComponent<NeedHelpProps> = props => {\n  return (\n    <StyledListingDetailPhaseCardSection>\n      <NeedHelpCopy>\n        Need help?{\" \"}\n        <a href={props.faqURL} target=\"_blank\">\n          Check out our guide\n        </a>\n      </NeedHelpCopy>\n    </StyledListingDetailPhaseCardSection>\n  );\n};\n\nexport default NeedHelp;\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/RejectedCard.tsx",
    "content": "import * as React from \"react\";\nimport { getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  AppealDecisionProps,\n  AppealChallengePhaseProps,\n  AppealChallengeResultsProps,\n} from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseDisplayName,\n  MetaItemValue,\n  MetaItemLabel,\n} from \"./styledComponents\";\nimport { RejectedNewroomDisplayNameText, RejectedNewsroomsToolTipText } from \"./textComponents\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\nimport { AppealDecisionDetail } from \"./AppealDecisionDetail\";\n\nexport interface RejectedCardProps {\n  listingRemovedTimestamp?: number;\n}\n\nexport type RejectedCardAllProps = ListingDetailPhaseCardComponentProps &\n  ChallengePhaseProps &\n  ChallengeResultsProps &\n  AppealDecisionProps &\n  AppealChallengePhaseProps &\n  AppealChallengeResultsProps &\n  RejectedCardProps;\n\nexport const RejectedCard: React.FunctionComponent<RejectedCardAllProps> = props => {\n  let displayDateTime;\n  const showAppealChallenge =\n    props.appealChallengeTotalVotes &&\n    props.appealChallengeVotesFor &&\n    props.appealChallengeVotesAgainst &&\n    props.appealChallengePercentFor &&\n    props.appealChallengePercentAgainst;\n  if (props.listingRemovedTimestamp) {\n    const listingRemovedDateTime = getLocalDateTimeStrings(props.listingRemovedTimestamp);\n    displayDateTime = `${listingRemovedDateTime[0]} ${listingRemovedDateTime[1]}`;\n  }\n\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseDisplayName>\n          <RejectedNewroomDisplayNameText />\n          <QuestionToolTip explainerText={<RejectedNewsroomsToolTipText />} positionBottom={true} />\n        </StyledPhaseDisplayName>\n        <MetaItemLabel>Rejected date</MetaItemLabel>\n        <MetaItemValue>{displayDateTime}</MetaItemValue>\n      </StyledListingDetailPhaseCardSection>\n      <StyledListingDetailPhaseCardSection>\n        <ChallengeResults\n          headerText={`Challenge #${props.challengeID} Results`}\n          totalVotes={props.totalVotes}\n          votesFor={props.votesFor}\n          votesAgainst={props.votesAgainst}\n          percentFor={props.percentFor}\n          percentAgainst={props.percentAgainst}\n          didChallengeSucceed={props.didChallengeOriginallySucceed}\n        />\n      </StyledListingDetailPhaseCardSection>\n\n      {props.appealRequested && <AppealDecisionDetail appealGranted={props.appealGranted} />}\n\n      {showAppealChallenge && (\n        <StyledListingDetailPhaseCardSection>\n          <ChallengeResults\n            headerText={`Appeal Challenge #${props.appealChallengeID} Results`}\n            totalVotes={props.appealChallengeTotalVotes!}\n            votesFor={props.appealChallengeVotesFor!}\n            votesAgainst={props.appealChallengeVotesAgainst!}\n            percentFor={props.appealChallengePercentFor!}\n            percentAgainst={props.appealChallengePercentAgainst!}\n            didChallengeSucceed={props.didAppealChallengeSucceed!}\n            isAppealChallenge={true}\n          />\n        </StyledListingDetailPhaseCardSection>\n      )}\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/RevealVote.tsx",
    "content": "import * as React from \"react\";\nimport { SaltInput } from \"../input/\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport {\n  StyledOrText,\n  VoteOptionsContainer,\n  StyledButtonsContainer,\n  StyledStepCopy,\n  StyledStepCopyNum,\n} from \"./styledComponents\";\nimport { RevealVoteButtonText } from \"./textComponents\";\nimport { RevealVoteProps } from \"./types\";\nimport VoteButton from \"./VoteButton\";\n\nexport interface RevealVoteState {\n  saltError?: string;\n}\n\ninterface StepCopyProps {\n  step: string;\n}\n\nconst StepCopy: React.FunctionComponent<StepCopyProps> = props => {\n  return (\n    <StyledStepCopy>\n      <StyledStepCopyNum>{props.step}</StyledStepCopyNum>\n      <div>{props.children}</div>\n    </StyledStepCopy>\n  );\n};\n\nexport class RevealVote extends React.Component<RevealVoteProps, RevealVoteState> {\n  constructor(props: RevealVoteProps) {\n    super(props);\n    this.state = { saltError: undefined };\n  }\n\n  public render(): JSX.Element {\n    const canReveal = this.props.voteOption !== undefined && !this.state.saltError;\n    return (\n      <>\n        <StepCopy step=\"1\">\n          {this.props.children || \"Reveal the vote option you chose in the submit vote phase\"}\n        </StepCopy>\n\n        <VoteOptionsContainer>\n          <VoteButton buttonVoteOptionValue=\"1\" {...this.props} />\n          <StyledOrText>or</StyledOrText>\n          <VoteButton buttonVoteOptionValue=\"0\" {...this.props} />\n        </VoteOptionsContainer>\n\n        <StepCopy step=\"2\">Enter your 4-word voting code</StepCopy>\n        <SaltInput\n          salt={this.props.salt}\n          name=\"salt\"\n          onChange={this.onChange}\n          invalid={!!this.state.saltError}\n          invalidMessage={this.state.saltError}\n        />\n\n        <StyledButtonsContainer>\n          <TransactionButtonNoModal\n            transactions={this.props.transactions}\n            disabled={!canReveal}\n            postExecuteTransactions={this.props.postExecuteTransactions}\n          >\n            <RevealVoteButtonText />\n          </TransactionButtonNoModal>\n        </StyledButtonsContainer>\n      </>\n    );\n  }\n\n  private validateSalt = (): boolean => {\n    let isValid = true;\n\n    if (!this.props.salt || this.props.salt.length === 0) {\n      isValid = false;\n      this.setState({\n        saltError: \"Please enter a valid salt phrase\",\n      });\n    } else {\n      this.setState({ saltError: undefined });\n    }\n\n    return isValid;\n  };\n\n  private onChange = (name: string, value: string): void => {\n    let validateFn;\n\n    if (name === \"salt\") {\n      validateFn = this.validateSalt;\n    }\n    this.props.onInputChange({ [name]: value }, validateFn);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/SaltField.tsx",
    "content": "import { saltToWords } from \"@joincivil/utils\";\nimport * as React from \"react\";\nimport { TextInput } from \"../input/\";\n\nexport interface SaltFieldProps {\n  salt?: string;\n}\n\nexport class SaltField extends React.Component<SaltFieldProps> {\n  public render(): JSX.Element {\n    const label = \"Write down your salt please.\";\n\n    const saltWords = this.getSaltyWords();\n    return <TextInput label={label} value={saltWords} name=\"salt\" readOnly />;\n  }\n\n  private getSaltyWords(): string {\n    const { salt } = this.props;\n\n    if (!salt) {\n      return \"\";\n    }\n\n    return saltToWords(salt).join(\" \");\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/VoteButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { VoteBaseProps } from \"./types\";\nimport { colors } from \"../styleConstants\";\nimport { buttonSizes, Button, InvertedButton } from \"../Button\";\nimport { HollowGreenCheck, HollowRedNoGood } from \"../icons\";\n\nconst StyledVoteButton = styled.span`\n  flex-grow: 1;\n\n  svg {\n    margin: 0 8px -3px 0;\n  }\n\n  ${Button}, ${InvertedButton} {\n    font-size: 13px;\n    font-weight: bold;\n    letter-spacing: 0;\n    line-height: 14px;\n    padding: 18px 0;\n    text-transform: uppercase;\n    width: 100%;\n  }\n\n  ${Button} {\n    border: 2px solid ${colors.accent.CIVIL_BLUE};\n    border-radius: 2px;\n  }\n\n  ${InvertedButton}:hover .svg-fill {\n    fill: ${colors.basic.WHITE};\n  }\n\n  ${InvertedButton}:hover .svg-stroke {\n    stroke: ${colors.basic.WHITE};\n  }\n`;\n\nexport interface VoteButtonProps extends VoteBaseProps {\n  buttonVoteOptionValue: string;\n}\n\nimport { buttonTheme } from \"./styledComponents\";\nimport { WhitelistActionText, RemoveActionText, UpholdActionText, OverturnActionText } from \"./textComponents\";\n\nconst VoteButton: React.FunctionComponent<VoteButtonProps> = props => {\n  let buttonText;\n  const { voteOption, buttonVoteOptionValue, isAppealChallenge } = props;\n  const isSelected = voteOption === buttonVoteOptionValue;\n  const ButtonComponent = isSelected ? Button : InvertedButton;\n  const iconColor = isSelected ? colors.basic.WHITE : colors.accent.CIVIL_BLUE;\n  const onClick = () => {\n    props.onInputChange({ voteOption: buttonVoteOptionValue });\n  };\n  if (buttonVoteOptionValue === \"1\") {\n    if (isAppealChallenge) {\n      buttonText = <OverturnActionText />;\n    } else {\n      buttonText = (\n        <>\n          <HollowGreenCheck width={17} height={17} color={iconColor} /> <WhitelistActionText />\n        </>\n      );\n    }\n  } else if (props.buttonVoteOptionValue === \"0\") {\n    if (props.isAppealChallenge) {\n      buttonText = <UpholdActionText />;\n    } else {\n      buttonText = (\n        <>\n          <HollowRedNoGood width={17} height={17} color={iconColor} /> <RemoveActionText />\n        </>\n      );\n    }\n  }\n\n  return (\n    <StyledVoteButton>\n      <ButtonComponent onClick={onClick} size={buttonSizes.MEDIUM} theme={buttonTheme}>\n        {buttonText}\n      </ButtonComponent>\n    </StyledVoteButton>\n  );\n};\n\nexport default VoteButton;\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/WhitelistedCard.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport { ListingDetailPhaseCardComponentProps, SubmitChallengeProps } from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseDisplayName,\n  MetaItemValue,\n  MetaItemLabel,\n  CTACopy,\n} from \"./styledComponents\";\nimport { WhitelistedNewroomsDisplayNameText, WhitelistedNewroomsToolTipText } from \"./textComponents\";\nimport { buttonSizes, InvertedButton } from \"../Button\";\nimport { TransactionInvertedButton } from \"../TransactionButton\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\nimport NeedHelp from \"./NeedHelp\";\n\nexport interface WhitelistedCardProps {\n  whitelistedTimestamp?: number;\n}\n\nexport const WhitelistedCard: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps & SubmitChallengeProps & WhitelistedCardProps\n> = props => {\n  let displayDateTime;\n\n  if (props.whitelistedTimestamp) {\n    const listingRemovedDateTime = getLocalDateTimeStrings(props.whitelistedTimestamp);\n    displayDateTime = `${listingRemovedDateTime[0]} ${listingRemovedDateTime[1]}`;\n  }\n\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseDisplayName>\n          <WhitelistedNewroomsDisplayNameText />\n          <QuestionToolTip explainerText={<WhitelistedNewroomsToolTipText />} positionBottom={true} />\n        </StyledPhaseDisplayName>\n        <MetaItemLabel>Approved date</MetaItemLabel>\n        <MetaItemValue>{displayDateTime}</MetaItemValue>\n      </StyledListingDetailPhaseCardSection>\n      <StyledListingDetailPhaseCardSection>\n        <CTACopy>\n          If you believe this newsroom does not align with the <a href={props.constitutionURI}>Civil Constitution</a>,\n          you may <Link to={props.submitChallengeURI || \"#\"}>submit a challenge</Link>.\n        </CTACopy>\n        {renderSubmitChallengeButton(props)}\n      </StyledListingDetailPhaseCardSection>\n\n      <NeedHelp faqURL={props.faqURL} />\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n\nconst renderSubmitChallengeButton: React.FunctionComponent<\n  ListingDetailPhaseCardComponentProps & SubmitChallengeProps & WhitelistedCardProps\n> = props => {\n  if (props.submitChallengeURI) {\n    return (\n      <>\n        <InvertedButton size={buttonSizes.MEDIUM} to={props.submitChallengeURI}>\n          Submit a Challenge\n        </InvertedButton>\n      </>\n    );\n  }\n\n  return <TransactionInvertedButton transactions={props.transactions!}>Submit a Challenge</TransactionInvertedButton>;\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/WithdrawnCard.tsx",
    "content": "import * as React from \"react\";\nimport { getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport { ListingDetailPhaseCardComponentProps } from \"./types\";\nimport {\n  StyledListingDetailPhaseCardContainer,\n  StyledListingDetailPhaseCardSection,\n  StyledPhaseDisplayName,\n  MetaItemValue,\n  MetaItemLabel,\n} from \"./styledComponents\";\nimport { WithdrawnNewroomDisplayNameText, WithdrawnNewsroomsToolTipText } from \"./textComponents\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport interface WithdrawnCardProps {\n  listingRemovedTimestamp?: number;\n}\n\nexport type WithdrawnCardAllProps = ListingDetailPhaseCardComponentProps & WithdrawnCardProps;\n\nexport const WithdrawnCard: React.FunctionComponent<WithdrawnCardAllProps> = props => {\n  let displayDateTime;\n  if (props.listingRemovedTimestamp) {\n    const listingRemovedDateTime = getLocalDateTimeStrings(props.listingRemovedTimestamp);\n    displayDateTime = `${listingRemovedDateTime[0]} ${listingRemovedDateTime[1]}`;\n  }\n\n  return (\n    <StyledListingDetailPhaseCardContainer>\n      <StyledListingDetailPhaseCardSection>\n        <StyledPhaseDisplayName>\n          <WithdrawnNewroomDisplayNameText />\n          <QuestionToolTip explainerText={<WithdrawnNewsroomsToolTipText />} positionBottom={true} />\n        </StyledPhaseDisplayName>\n        <MetaItemLabel>Withdrawn date</MetaItemLabel>\n        <MetaItemValue>{displayDateTime}</MetaItemValue>\n      </StyledListingDetailPhaseCardSection>\n    </StyledListingDetailPhaseCardContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/__snapshots__/ListingDetailsPhaseCard.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Appeal Challenge: Commit Vote 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Appeal Challenge: Commit Vote\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Appeal Challenge: Resolve 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Appeal Challenge: Resolve\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Appeal Challenge: Reveal Vote - User Already Revealed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Appeal Challenge: Reveal Vote - User Already Revealed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Appeal Challenge: Reveal Vote - User Did Not Commit 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Appeal Challenge: Reveal Vote - User Did Not Commit\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Appeal Challenge: Reveal Vote - User committed and has not revealed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Appeal Challenge: Reveal Vote - User committed and has not revealed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card In Application 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            In Application\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Rejected 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Rejected\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Resolve Application 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Resolve Application\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Appeal: Awaiting Appeal Decision 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Appeal: Awaiting Appeal Decision\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Appeal: Awaiting Appeal Decision, Civil Council Multisig 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Appeal: Awaiting Appeal Decision, Civil Council Multisig\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Appeal: Decision / Can Challenge 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Appeal: Decision / Can Challenge\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Appeal: Resolve 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Appeal: Resolve\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Challenge: Commit Vote 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Challenge: Commit Vote\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Challenge: Request Appeal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Challenge: Request Appeal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Challenge: Resolve 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Challenge: Resolve\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Challenge: Reveal Vote - User Already Revealed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Challenge: Reveal Vote - User Already Revealed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Challenge: Reveal Vote - User Did Not Commit 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Challenge: Reveal Vote - User Did Not Commit\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Under Challenge: Reveal Vote - User committed and has not revealed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Under Challenge: Reveal Vote - User committed and has not revealed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Details Phase Card Whitelisted 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNON euGzli\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Details Phase Card\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Whitelisted\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/index.ts",
    "content": "export * from \"./InApplicationCard\";\nexport * from \"./InApplicationResolveCard\";\nexport * from \"./ChallengeCommitVoteCard\";\nexport * from \"./ChallengeRevealVoteCard\";\nexport * from \"./ChallengeRequestAppealCard\";\nexport * from \"./ChallengeResolveCard\";\nexport * from \"./AppealAwaitingDecisionCard\";\nexport * from \"./AppealDecisionCard\";\nexport * from \"./AppealResolveCard\";\nexport * from \"./AppealChallengeCommitVoteCard\";\nexport * from \"./AppealChallengeRevealVoteCard\";\nexport * from \"./AppealChallengeResolveCard\";\nexport * from \"./WhitelistedCard\";\nexport * from \"./RejectedCard\";\nexport * from \"./WithdrawnCard\";\nexport * from \"./CompleteChallengeResults\";\nexport * from \"./types\";\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport { Button, ButtonTheme, DEFAULT_BUTTON_THEME } from \"../Button\";\n\nconst BACKGROUND_ACCENT_COLORS: any = {\n  COMMIT_VOTE: colors.accent.CIVIL_YELLOW,\n  REVEAL_VOTE: colors.accent.CIVIL_TEAL_FADED,\n};\n\nexport const StyledListingDetailPhaseCardContainer = styled.div`\n  box-sizing: border-box;\n  background: ${colors.basic.WHITE};\n  box-shadow: 0 2px 10px 0 ${colors.accent.CIVIL_GRAY_3};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 30px 0 50px;\n  position: relative;\n  width: 440px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 7px 0;\n    width: auto;\n  }\n`;\n\nexport interface StyledListingDetailPhaseCardSectionProps {\n  bgAccentColor?: string;\n}\n\nexport const StyledListingDetailPhaseCardSection = styled.div<StyledListingDetailPhaseCardSectionProps>`\n  background: ${props => (props.bgAccentColor ? BACKGROUND_ACCENT_COLORS[props.bgAccentColor] : \"transparent\")};\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 23px 40px 26px;\n  text-align: left;\n\n  &:nth-child(1) {\n    border-top: 0;\n  }\n\n  ${mediaQueries.MOBILE} {\n    padding-left: 16px;\n    padding-right: 16px;\n    width: auto;\n  }\n`;\n\nexport const StyledListingDetailPhaseCardSectionHeader = styled.h4`\n  color: ${colors.accent.CIVIL_BLUE};\n  font-size: 18px;\n  font-weight: 500;\n  line-height: 21px;\n  margin: 0;\n`;\n\nexport const StyledPhaseKicker = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 15px;\n  margin-bottom: 8px;\n  text-transform: uppercase;\n`;\n\nexport const StyledPhaseDisplayName = styled.h3`\n  color: ${colors.primary.BLACK};\n  font-size: 24px;\n  font-weight: bold;\n  letter-spacing: -0.51px;\n  line-height: 29px;\n  margin: 0 0 24px;\n`;\n\nexport const StyledListingDetailPhaseCardHed = styled.div`\n  display: flex;\n  padding: 27px 23px 30px;\n`;\n\nexport const MetaRow = styled.div`\n  display: flex;\n  margin: 0 0 16px;\n`;\n\nexport const MetaItem = styled.div`\n  &:first-child:nth-last-child(1) {\n    width: 100%;\n  }\n\n  &:first-child:nth-last-child(2),\n  &:first-child:nth-last-child(2) ~ & {\n    width: 50%;\n  }\n`;\n\nexport const MetaItemValue = styled.div`\n  font-size: 18px;\n  line-height: 21px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n`;\n\nexport const MetaItemValueEthAddress = styled(MetaItemValue)`\n  font-family: ${fonts.MONOSPACE};\n  font-size: 15px;\n  letter-spacing: -0.11px;\n  line-height: 20px;\n`;\n\nexport const MetaItemValueLong = styled(MetaItemValue)`\n  font-size: 16px;\n`;\n\nexport const MetaItemValueAccent = styled(MetaItemValue)`\n  color: ${colors.primary.CIVIL_BLUE_1};\n`;\n\nexport const MetaItemLabel = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 15px;\n  margin-bottom: 8px;\n  text-transform: uppercase;\n`;\n\nexport const CTACopy = styled.p`\n  font-size: 18px;\n  font-weight: bold;\n  line-height: 33px;\n\n  & a {\n    text-decoration: none;\n  }\n`;\nexport const FormCopy = styled.p`\n  font-size: 16px;\n  line-height: 26px;\n  margin: 0 0 10px;\n`;\n\nexport const VoteOptionsContainer = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin: 20px 0 40px;\n`;\n\nexport const StyledOrText = styled.div`\n  font: italic normal 20px/30px ${fonts.SERIF};\n  padding: 10px 13px;\n  text-align: center;\n`;\n\nexport const StyledVoteCTAButton = styled.div`\n  ${Button} {\n    font-size: 13px;\n    line-height: 14px;\n    padding: 18px 0;\n    width: 100%;\n  }\n`;\n\nexport const FormHeader = styled.h4`\n  font-size: 21px;\n  line-height: 25px;\n  margin: 0 0 5px;\n`;\nexport const AccentHRule = styled.div`\n  box-shadow: inset 0 5px 0 0 ${colors.accent.CIVIL_BLUE};\n  height: 12px;\n  margin: 10px 0;\n  width: 45px;\n`;\nexport const FormQuestion = styled.p`\n  font-size: 21px;\n  line-height: 34px;\n  margin: 0 0 24px;\n  text-align: center;\n`;\n\nexport interface StyledCardStageProps {\n  width?: string;\n}\n\nexport interface StyledCardProps {\n  flipped?: boolean;\n}\n\nexport const StyledCardStage = styled.div<StyledCardStageProps>`\n  perspective: 800px;\n  width: ${props => (props.width ? props.width + \"px\" : \"440\")};\n\n  ${mediaQueries.MOBILE} {\n    width: auto;\n  }\n\n  & ${StyledListingDetailPhaseCardContainer} {\n    box-shadow: none;\n  }\n`;\n\nexport const StyledCard = styled.div<StyledCardProps>`\n  position: relative;\n  transition: transform 500ms;\n  transform-style: preserve-3d;\n  ${props => (!!props.flipped ? \"transform:rotateY(180deg)\" : \"\")};\n  height: 100%;\n  width: 100%;\n`;\n\nexport const StyledCardClose = styled.div`\n  cursor: pointer;\n  font-size: 18px;\n  position: absolute;\n  right: 15px;\n  top: 15px;\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nexport const StyledCardFace = styled.div<StyledCardProps>`\n  background-color: ${colors.basic.WHITE};\n  backface-visibility: hidden;\n  box-shadow: 0 2px 10px 0 ${colors.accent.CIVIL_GRAY_3};\n  height: 100%;\n  position: relative;\n  min-height: 100%;\n  width: 100%;\n`;\n\nexport const StyledCardFront = styled(StyledCardFace)`\n  z-index: ${props => (!!props.flipped ? \"1\" : \"-1\")};\n`;\n\nexport const StyledCardBack = styled(StyledCardFace)`\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  position: absolute;\n  transform: rotateY(180deg);\n  z-index: ${props => (!!props.flipped ? \"-1\" : \"1\")};\n\n  ${StyledListingDetailPhaseCardContainer} {\n    padding-top: 0;\n  }\n`;\n\nexport const FullWidthButton = styled(Button)`\n  margin: 14px 0 0;\n  width: 100%;\n`;\n\nexport const buttonTheme: ButtonTheme = {\n  ...DEFAULT_BUTTON_THEME,\n  primaryButtonDisabledBackground: colors.accent.CIVIL_GRAY_4,\n  primaryButtonDisabledColor: colors.accent.CIVIL_GRAY_3,\n  darkButtonTextTransform: \"uppercase\",\n};\n\nexport const ToolTipHdr = styled.p`\n  font-size: 14px;\n  font-weight: 700;\n  line-height: 17px;\n  margin: 0 0 12px;\n`;\n\nexport const ToolTipItalic = styled.p`\n  font-style: italic;\n  margin: 0 0 12px;\n`;\n\nexport interface StyledStepPropsState {\n  visible: boolean;\n}\n\nexport const StyledStep = styled.div<StyledStepPropsState>`\n  display: ${(props: StyledStepPropsState) => (props.visible ? \"block\" : \"none\")};\n`;\n\nexport const StyledStepLabel = styled(StyledPhaseKicker)`\n  margin: 0 0 20px;\n  text-align: center;\n`;\n\nexport const StyledOneTokenOneVote = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 16px;\n  line-height: 26px;\n  margin: 0 -40px 39px;\n  padding: 13px 0 15px;\n  text-align: center;\n`;\n\nexport const StyledBalanceRow = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  display: flex;\n  font-size: 14px;\n  line-height: 17px;\n  justify-content: space-between;\n`;\n\nexport const StyledBalanceRowRight = styled.div`\n  text-align: right;\n`;\n\nexport const ProgressBarBase = styled.div`\n  height: 8px;\n  border-radius: 5px;\n`;\n\nexport const ProgressBarTotal = styled(ProgressBarBase)`\n  background-color: ${colors.accent.CIVIL_TEAL_FADED_2};\n  box-sizing: border-box;\n  margin: 13px 0 16px;\n  position: relative;\n  width: 100%;\n`;\n\nexport const ProgressBarProgress = styled(ProgressBarBase)`\n  display: inline-block;\n  background-color: ${colors.accent.CIVIL_TEAL};\n  left: 0;\n  top: 0;\n  position: absolute;\n  transition: width 500ms ease;\n`;\n\nexport const StyledAppMessage = styled.div`\n  color: ${colors.accent.CIVIL_RED};\n  font-size: 14px;\n  line-height: 17px;\n  margin: 20px 0;\n  padding: 0 20px;\n  text-align: center;\n`;\n\nexport const StyledStepCopy = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  display: flex;\n  font-size: 18px;\n  line-height: 21px;\n  margin: 0 0 16px;\n`;\n\nexport const StyledStepCopyNum = styled.div`\n  color: ${colors.primary.BLACK};\n  font-size: 21px;\n  line-height: 25px;\n  margin-right: 15px;\n`;\n\nexport const StyledButtonsContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  margin-top: 23px;\n\n  ${Button} {\n    font-size: 13px;\n    line-height: 14px;\n    letter-spacing: 0.3px;\n    text-transform: none;\n    padding: 18px;\n    margin: 0 0 35px;\n    width: 100%;\n  }\n`;\n\nexport const StyledTextActionButton = styled.span`\n  color: ${colors.accent.CIVIL_BLUE};\n  cursor: pointer;\n`;\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/textComponents.tsx",
    "content": "import * as React from \"react\";\nimport { getReadableDuration } from \"@joincivil/utils\";\nimport { ToolTipHdr, ToolTipItalic } from \"./styledComponents\";\n\n// Text for reviewing a vote to commit\nexport const CommitVoteReviewButtonText: React.FunctionComponent = props => <>Review My Vote</>;\n\n// Text for whitelisting action. Used in buttons and calls to action\nexport const WhitelistActionText: React.FunctionComponent = props => <>approve</>;\n\n// Text for removing action. Used in buttons and calls to action\nexport const RemoveActionText: React.FunctionComponent = props => <>reject</>;\n\n// Text for upholding granted appeal action. Used in buttons and calls to action\nexport const UpholdActionText: React.FunctionComponent = props => <>upheld</>;\n\n// Text for overturning granted appeal  action. Used in buttons and calls to action\nexport const OverturnActionText: React.FunctionComponent = props => <>overturned</>;\n\n// Call to action text. Used on Commit Vote form\nexport interface VoteCallToActionTextProps {\n  newsroomName?: string;\n}\n\nexport const VoteCallToActionText: React.FunctionComponent<VoteCallToActionTextProps> = props => {\n  return (\n    <>\n      Do you{\" \"}\n      <b>\n        <WhitelistActionText />\n      </b>{\" \"}\n      or{\" \"}\n      <b>\n        <RemoveActionText />\n      </b>{\" \"}\n      <i>{props.newsroomName || \"this newsroom\"}</i> from being listed on the Civil Registry?\n    </>\n  );\n};\n\nexport const AppealChallengeVoteCallToActionText: React.FunctionComponent<VoteCallToActionTextProps> = props => {\n  return (\n    <>\n      Should the Civil Council's decision be{\" \"}\n      <b>\n        <UpholdActionText />\n      </b>{\" \"}\n      or{\" \"}\n      <b>\n        <OverturnActionText />\n      </b>{\" \"}\n      ?\n    </>\n  );\n};\n\nexport const RevealVoteCallToActionHeaderText: React.FunctionComponent = props => (\n  <>Confirm Your Secret Vote and Make It Count!</>\n);\n\nexport const RevealVoteCallToActionCopyText: React.FunctionComponent = props => (\n  <>\n    To finalize the vote, you must complete this step to be eligible for rewards. Similar to the actual elections, votes\n    are not revealed until after polls closed.\n  </>\n);\n\nexport const RevealVoteDidNotCommitHeaderText: React.FunctionComponent = props => (\n  <>You did not participate in this challenge</>\n);\n\nexport const RevealVoteDidNotCommitCopyText: React.FunctionComponent = props => (\n  <>You did not commit a vote, so there is nothing here for you to reveal</>\n);\n\nexport const RevealVoteDoneHeaderText: React.FunctionComponent = props => <>You have revealed your vote</>;\n\nexport const RevealVoteDoneCopyText: React.FunctionComponent = props => (\n  <>Thank you for participating! Please check back after the challenge ends to see if you have earned a reward.</>\n);\n\nexport interface RevealVoteCalloutCopyTextProps {\n  votingSmartContractFaqURL: string;\n}\n\nexport const RevealVoteCalloutCopyText: React.FunctionComponent<RevealVoteCalloutCopyTextProps> = props => (\n  <>\n    Civil does not store your vote information. It is stored in the{\" \"}\n    <a href={props.votingSmartContractFaqURL} target=\"_blank\">\n      voting smart contract\n    </a>\n    . For your convenience, it is also stored in your browser cache. Please confirm your vote below.\n  </>\n);\n\n// Label for Commit Vote num tokens form\nexport const CommitVoteNumTokensLabelText: React.FunctionComponent = props => {\n  return <>Enter amount of tokens to vote. 1 vote equals 1 token </>;\n};\n\n// Commit Vote callouts\nexport const CommitVoteCalloutHeaderText: React.FunctionComponent = props => {\n  return <>You're Invited to Vote!</>;\n};\n\nexport const CommitVoteCalloutCopyText: React.FunctionComponent = props => {\n  return (\n    <>\n      Evaluate the Newsroom based on the Civil Constitution and vote accordingly. You will never lose tokens for\n      participating in a vote.\n    </>\n  );\n};\n\nexport const AppealChallengeCommitVoteCalloutCopyText: React.FunctionComponent = props => {\n  return (\n    <>\n      Evaluate whether the Granted Appeal should be upheld or overturned and cast your vote accordingly. Voters will\n      never lose tokens for participating in a vote.\n    </>\n  );\n};\n\nexport const CommitVoteAlreadyVotedHeaderText: React.FunctionComponent = props => {\n  return <>You have already submitted your vote. Thank you.</>;\n};\n\n// TODO(jon): Pass in and render commit vote expiry\nexport const CommitVoteAlreadyVotedCopyText: React.FunctionComponent = props => {\n  return <>You may revise your vote until the deadline.</>;\n};\n\nexport const CommitVoteCalloutButtonText: React.FunctionComponent = props => <>Submit My Vote</>;\n\n// Reveal Vote\nexport const RevealVoteButtonText: React.FunctionComponent = props => <>Confirm My Vote</>;\n\n// Phase Card Display Names\nexport const UnderChallengePhaseDisplayNameText: React.FunctionComponent = props => <>Under Challenge</>;\n\nexport const ReadyToCompletePhaseDisplayNameText: React.FunctionComponent = props => <>Ready to Complete</>;\n\nexport const NewApplicationDisplayNameText: React.FunctionComponent = props => <>New Application</>;\n\nexport const RejectedNewroomDisplayNameText: React.FunctionComponent = props => <>Rejected Newsroom</>;\n\nexport const WithdrawnNewroomDisplayNameText: React.FunctionComponent = props => <>Withdrawn Newsroom</>;\n\nexport const WhitelistedNewroomsDisplayNameText: React.FunctionComponent = props => <>Approved Newsroom</>;\n\n// Tooltips\nexport interface ToolTipTextProps {\n  phaseLength?: number;\n  dispensationPct?: string;\n}\n\nexport const DurationToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  const duration = getReadableDuration(props.phaseLength || 0);\n  return <>Time duration: {duration}</>;\n};\n\nexport const NewApplicationToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipHdr>Under review by the community</ToolTipHdr>\n      <ToolTipItalic>\n        <DurationToolTipText phaseLength={props.phaseLength} />\n      </ToolTipItalic>\n      <p>\n        CVL token holders may challenge a Newsroom if their mission, charter, or roster is perceived to misalign with\n        the Civil Constitution. Newsroom will be approved if there are no challenges.\n      </p>\n    </>\n  );\n};\n\nexport const UnderChallengeToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipHdr>A CVL token holder is challenging this newsroom</ToolTipHdr>\n      <p>\n        This Newsroom is being challenged by a CVL token holder who believes it violates one of principles outlined in\n        the Civil Constitution. Read the challenger's statement in the Discussion section.\n      </p>\n      <p>The challenge phase consists of 2 subphases: Submit Vote and Confirm Vote.</p>\n    </>\n  );\n};\n\nexport const WhitelistedNewroomsToolTipText: React.FunctionComponent = props => {\n  return (\n    <>\n      <p>\n        This Newsroom has committed to uphold the values of the Civil Constitution and has been approved by the Civil\n        community to be on the Civil Registry.\n      </p>\n      <p>\n        The community of CVL token holders are the stewards of ethical journalism on the Civil Registry. If for any\n        reason you believe that a Newsroom has violated either the Civil Constitution or the Newsroom's own stated\n        mission and charter, you may challenge them at any time.\n      </p>\n    </>\n  );\n};\n\nexport const RejectedNewsroomsToolTipText: React.FunctionComponent = props => {\n  return (\n    <>\n      <p>\n        This Newsroom has been rejected by the CVL token-holding community due to misalignment with the Civil\n        Constitution.\n      </p>\n      <p>Rejected Newsrooms may reapply to the Civil Registry at any time.</p>\n    </>\n  );\n};\n\nexport const WithdrawnNewsroomsToolTipText: React.FunctionComponent = props => {\n  return (\n    <>\n      <p>This Newsroom has been withdrawn from the registry by its owner.</p>\n      <p>Withdrawn Newsrooms may reapply to the Civil Registry at any time.</p>\n    </>\n  );\n};\n\nexport const ResolveChallengeToolTipText: React.FunctionComponent = props => {\n  return (\n    <>\n      <ToolTipHdr>Resolve Challenge</ToolTipHdr>\n      <p>\n        Challenge results are in, and any CVL token holder may resolve this challenge. When this is resolved, Newsroom\n        will be listed or delisted from The Civil Registry. Please note that this requires paying some Ethereum gas to\n        complete.\n      </p>\n    </>\n  );\n};\n\nexport const CommitVoteToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipHdr>Commit tokens to cast a secret vote</ToolTipHdr>\n      <ToolTipItalic>\n        <DurationToolTipText phaseLength={props.phaseLength} />\n      </ToolTipItalic>\n      <p>\n        Decide how many tokens you would like to put towards this vote. Note that the more tokens you include, the more\n        power your vote carries. You can never lose your vote, but you will not be able to withdraw them until the end\n        of the voting process. All votes will be hidden, using a unique 4-word voting code, until the end of the voting\n        period. You have to come back and confirm your vote for it to count.\n      </p>\n    </>\n  );\n};\n\nexport const ConfirmVoteToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipHdr>Finalize vote using a unique 4-word voting code</ToolTipHdr>\n      <ToolTipItalic>\n        <DurationToolTipText phaseLength={props.phaseLength} />\n      </ToolTipItalic>\n      <p>\n        Voters must enter the unique 4-word voting code they received during the commit vote stage of the process in\n        order to confirm their vote. Votes can not be counted and rewards can not be claimed unless voters confirm their\n        earlier vote.\n      </p>\n    </>\n  );\n};\n\nexport const RewardPoolToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      Amount of tokens to be distributed to voters of the winning party at the conclusion of the challenge. The amount\n      comes from{\" \"}\n      {!!props.dispensationPct\n        ? `${props.dispensationPct}%`\n        : \"a percentage (defined by the dispensationPct Parameter)\"}{\" \"}\n      of the challenger or Newsroom's deposit.\n    </>\n  );\n};\n\nexport const DepositsToolTipText: React.FunctionComponent = props => {\n  return (\n    <>\n      Amount of CVL tokens staked by the Newsroom when they apply to The Civil Registry, and by the Challenger upon\n      challenging this Newsroom.\n    </>\n  );\n};\n\nexport const RequestAppealToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipItalic>\n        <DurationToolTipText phaseLength={props.phaseLength} />\n      </ToolTipItalic>\n      <p>\n        CVL token holders, (including newsrooms or challengers) can appeal a vote outcome if they believe it is not in\n        keeping with the Civil Constitution. This system of checks and balances ensures that all voices and perspectives\n        have an opportunity to be heard in the Civil community.\n      </p>\n    </>\n  );\n};\n\nexport const WaitingCouncilDecisionToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipItalic>\n        <DurationToolTipText phaseLength={props.phaseLength} />\n      </ToolTipItalic>\n      <p>\n        After The Civil Council reaches a decision on the appeal, they will publish a document explaining their choice\n        and citing the section of the Civil Constitution they used to reach their decision. This system of checks and\n        balances ensures that all voices and views have an opportunity to be heard in the Civil community.\n      </p>\n    </>\n  );\n};\n\nexport const ChallangeCouncilToolTipText: React.FunctionComponent<ToolTipTextProps> = props => {\n  return (\n    <>\n      <ToolTipItalic>\n        <DurationToolTipText phaseLength={props.phaseLength} />\n      </ToolTipItalic>\n      <p>\n        The challenger must submit a statement with evidence to make their case, and deposit CVL tokens equal to the\n        amount of the Newsroom's deposit. The CVL token deposit for the challenge is set aside for the duration of the\n        challenge process, like an escrow account.\n      </p>\n    </>\n  );\n};\n\n// Num tokens for Commit Vote text\nexport const VotingTokenBalanceText: React.FunctionComponent = props => {\n  return <>Voting Token Balance</>;\n};\n\nexport const AvailableTokenBalanceText: React.FunctionComponent = props => {\n  return <>Available Token Balance</>;\n};\n\nexport const VotingTokenBalanceTooltipText: React.FunctionComponent = props => {\n  return (\n    <>\n      Voting tokens are tokens locked in voting contracts until the challenge is completed. If a token is locked in a\n      vote, it can be used for other votes, but can NOT be used for applications, challenges, appeals, or exchanged for\n      currency. If you’re planning on taking other actions, we recommend reserving some CVL in your available balance.\n    </>\n  );\n};\n\nexport const AvailableTokenBalanceTooltipText: React.FunctionComponent = props => {\n  return (\n    <>\n      CVL tokens you can use to tip journalists, use for deposits to challenge, request appeal, and challenge appeal, or\n      cash out for fiat currency. To vote, you will need to approve and transfer them to your Voting Token Balance.\n      Committing CVL tokens from your Available Balance with any vote will automatically transfer those tokens into your\n      Voting Token Balance. If you’re planning on taking other actions, we recommend reserving some CVL in your\n      Available Balance\n    </>\n  );\n};\n\nexport const SelectNumTokensText: React.FunctionComponent = props => {\n  return <>Select amount of CVL tokens to commit to your vote.</>;\n};\n\nexport const OneTokenOneVoteText: React.FunctionComponent = props => {\n  return <>1 token equals 1 vote.</>;\n};\n\nexport const OneTokenOneVoteTooltipText: React.FunctionComponent = props => {\n  return (\n    <>\n      Your vote is weighted based on the amount of CVL tokens you put towards your vote. If you have 1 CVL, you have 1\n      vote; 10 CVL gives you the power of 10 votes. This ensures that those who have the most tokens are incentivized to\n      vote for the side that abides by the Civil Constitution. Note that you can not lose any CVL as a result of voting.\n    </>\n  );\n};\n\nexport const CommitVoteInsufficientTokensText: React.FunctionComponent = props => {\n  return <>You don't have enough CVL tokens in your available balance</>;\n};\n\nexport const CommitVoteMaxTokensWarningText: React.FunctionComponent = props => {\n  return (\n    <>\n      You are commiting all of your CVL tokens to this vote. If you’re planning on taking other actions - tipping\n      journalists, challenging listings, requesting appeals, challenging granted appeals, or cashing out for fiat\n      currency - we recommend reserving some CVL in your Available Balance.\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingDetailPhaseCard/types.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\n\nexport interface ListingDetailPhaseCardComponentProps {\n  challenge?: any;\n  listing?: any;\n  listingAddress?: EthAddress;\n  transactions?: any[];\n  constitutionURI?: string;\n  learnMoreURL?: string;\n  faqURL: string;\n  onMobileTransactionClick?(): any;\n}\n\nexport interface PhaseWithExpiryProps {\n  endTime: number;\n  phaseLength: number;\n  secondaryPhaseLength?: number;\n}\n\nexport interface SubmitChallengeProps {\n  submitChallengeURI?: string;\n}\n\nexport interface RequestAppealProps {\n  requestAppealURI?: string;\n}\n\nexport interface ChallengePhaseProps {\n  challengeID?: string;\n  isViewingUserChallenger?: boolean;\n  challenger?: EthAddress;\n  rewardPool?: string;\n  stake?: string;\n  dispensationPct?: string;\n  userHasCommittedVote?: boolean;\n  userHasRevealedVote?: boolean;\n}\n\nexport interface VoteBaseProps {\n  newsroomName?: string;\n  isAppealChallenge?: boolean;\n  salt?: string;\n  voteOption?: string;\n  onInputChange(propsData: any, validateFn?: () => boolean): void;\n  postExecuteTransactions?(): any;\n}\n\nexport interface CommitVoteProps extends VoteBaseProps {\n  tokenBalance: number;\n  votingTokenBalance: number;\n  tokenBalanceDisplay: string;\n  votingTokenBalanceDisplay: string;\n  numTokens?: string;\n  userHasCommittedVote?: boolean;\n  userHasRevealedVote?: boolean;\n  buttonText?: string | JSX.Element;\n  onCommitMaxTokens(): void;\n  onReviewVote(): void;\n}\n\nexport interface RevealVoteProps extends VoteBaseProps {\n  votingSmartContractFaqURL: string;\n  transactions: any[];\n}\n\nexport interface AppealDecisionProps {\n  appealRequested?: boolean;\n  appealGranted?: boolean;\n  appealGrantedStatementURI?: string;\n  submitAppealChallengeURI?: string;\n}\n\nexport interface AppealChallengePhaseProps {\n  appealChallengeID?: string;\n}\n\nexport interface AppealChallengeResultsProps {\n  appealChallengeTotalVotes?: string;\n  appealChallengeVotesFor?: string;\n  appealChallengeVotesAgainst?: string;\n  appealChallengePercentFor?: string;\n  appealChallengePercentAgainst?: string;\n  didAppealChallengeSucceed?: boolean;\n}\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/AppealGrantedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport const AppealGrantedEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.APPEAL_GRANTED} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        The Council has Granted the requested appeal, reversing the outcome of the original challenge, although the\n        community may still challenge this decision to overturn it.\n      </StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/AppealRequestedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport const AppealRequestedEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.APPEAL_REQUESTED} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        A user requested an appeal of the challenge results. The council will decide whether or not to grant the appeal\n        after deliberating.\n      </StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ApplicationEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport interface ApplicationEventProps extends ListingHistoryEventTimestampProps {\n  deposit: string;\n}\n\nexport const ApplicationEvent: React.FunctionComponent<ApplicationEventProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.APPLICATION} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        <strong>{props.deposit}</strong> deposited\n      </StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ChallengeEvent.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport interface ChallengeEventProps extends ListingHistoryEventTimestampProps {\n  challengeID: string;\n  challenger: EthAddress;\n  challengeURI: string;\n}\n\nexport const ChallengeEvent: React.FunctionComponent<ChallengeEventProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.CHALLENGE} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        by <strong>{props.challenger}</strong>\n      </StyledEventCopy>\n      <Link to={props.challengeURI}>View Historical Challenge - Challenge ID: {props.challengeID}</Link>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ChallengeFailedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ChallengeResults } from \"../ChallengeResultsChart\";\nimport { ChallengeCompletedEventProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent } from \"./ListingHistoryEvent\";\n\nexport const ChallengeFailedEvent: React.FunctionComponent<ChallengeCompletedEventProps> = props => {\n  const {\n    totalVotes,\n    votesFor,\n    votesAgainst,\n    percentFor,\n    percentAgainst,\n    didChallengeOriginallySucceed,\n    appealRequested,\n    appealGranted,\n    appealChallengeTotalVotes,\n    appealChallengeVotesFor,\n    appealChallengeVotesAgainst,\n    appealChallengePercentFor,\n    appealChallengePercentAgainst,\n    didAppealChallengeSucceed,\n  } = props;\n\n  let councilDecision;\n  let councilContext;\n  if (appealRequested) {\n    if (appealGranted) {\n      councilDecision = didChallengeOriginallySucceed ? \"approve\" : \"reject\";\n      councilContext = \"overturn\";\n    } else {\n      councilDecision = didChallengeOriginallySucceed ? \"reject\" : \"approve\";\n      councilContext = \"uphold\";\n    }\n  }\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.CHALLENGE_FAILED} timestamp={props.timestamp}>\n      <ChallengeResults\n        headerText=\"Newsroom remains in registry\"\n        totalVotes={totalVotes}\n        votesFor={votesFor}\n        votesAgainst={votesAgainst}\n        percentFor={percentFor}\n        percentAgainst={percentAgainst}\n        didChallengeSucceed={didChallengeOriginallySucceed}\n      />\n\n      {councilDecision && (\n        <p>\n          <b>\n            The Civil Council decided to {councilDecision} this Newsroom, {councilContext}ing the Civil Community's vote\n          </b>\n        </p>\n      )}\n\n      {appealChallengeTotalVotes && (\n        <ChallengeResults\n          noHeader={true}\n          isAppealChallenge={true}\n          totalVotes={appealChallengeTotalVotes!}\n          votesFor={appealChallengeVotesFor!}\n          votesAgainst={appealChallengeVotesAgainst!}\n          percentFor={appealChallengePercentFor!}\n          percentAgainst={appealChallengePercentAgainst!}\n          didChallengeSucceed={didAppealChallengeSucceed}\n        />\n      )}\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ChallengeSucceededEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ChallengeResults } from \"../ChallengeResultsChart\";\nimport { ChallengeCompletedEventProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent } from \"./ListingHistoryEvent\";\n\nexport const ChallengeSucceededEvent: React.FunctionComponent<ChallengeCompletedEventProps> = props => {\n  const {\n    totalVotes,\n    votesFor,\n    votesAgainst,\n    percentFor,\n    percentAgainst,\n    didChallengeOriginallySucceed,\n    appealRequested,\n    appealGranted,\n    appealChallengeTotalVotes,\n    appealChallengeVotesFor,\n    appealChallengeVotesAgainst,\n    appealChallengePercentFor,\n    appealChallengePercentAgainst,\n    didAppealChallengeSucceed,\n  } = props;\n\n  let councilDecision;\n  let councilContext;\n  if (appealRequested) {\n    if (appealGranted) {\n      councilDecision = didChallengeOriginallySucceed ? \"approve\" : \"reject\";\n      councilContext = \"overturn\";\n    } else {\n      councilDecision = didChallengeOriginallySucceed ? \"reject\" : \"approve\";\n      councilContext = \"uphold\";\n    }\n  }\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.CHALLENGE_SUCCEEDED} timestamp={props.timestamp}>\n      <ChallengeResults\n        headerText=\"Newsroom removed from registry\"\n        totalVotes={totalVotes}\n        votesFor={votesFor}\n        votesAgainst={votesAgainst}\n        percentFor={percentFor}\n        percentAgainst={percentAgainst}\n        didChallengeSucceed={didChallengeOriginallySucceed}\n      />\n\n      {councilDecision && (\n        <p>\n          <b>\n            The Civil Council decided to {councilDecision} this Newsroom, {councilContext}ing the Civil Community's vote\n          </b>\n        </p>\n      )}\n\n      {appealChallengeTotalVotes && (\n        <ChallengeResults\n          noHeader={true}\n          isAppealChallenge={true}\n          totalVotes={appealChallengeTotalVotes!}\n          votesFor={appealChallengeVotesFor!}\n          votesAgainst={appealChallengeVotesAgainst!}\n          percentFor={appealChallengePercentFor!}\n          percentAgainst={appealChallengePercentAgainst!}\n          didChallengeSucceed={didAppealChallengeSucceed}\n        />\n      )}\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/DepositEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport interface DepositEventProps extends ListingHistoryEventTimestampProps {\n  deposit: string;\n}\n\nexport const DepositEvent: React.FunctionComponent<DepositEventProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.DEPOSIT} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        <strong>{props.deposit}</strong> deposited\n      </StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/EventDate.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport { colors } from \"../styleConstants\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\n\nconst StyledEventDate = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 13px;\n  font-weight: bold;\n  line-height: 16px;\n  padding: 5px 0 0;\n  width: 148px;\n  min-width: 148px;\n  max-width: 148px;\n`;\n\nconst EventDate: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  const eventDateTimeStrings = getLocalDateTimeStrings(props.timestamp);\n  return <StyledEventDate>{eventDateTimeStrings[0]}</StyledEventDate>;\n};\n\nexport default EventDate;\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/GrantedAppealChallengedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport const GrantedAppealChallengedEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.GRANTED_APPEAL_CHALLENGED} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        A member of the community has challenged the Council's decision to grant the appeal. If the challenge succeeds,\n        the appeal will be overturned and the original challenge outcome will stand.\n      </StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ListingHistoryEvent.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport StoryRouter from \"storybook-react-router\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ListingHistoryEvent } from \"./ListingHistoryEvent\";\nimport { ApplicationEvent } from \"./ApplicationEvent\";\nimport { ChallengeEvent } from \"./ChallengeEvent\";\nimport { ChallengeFailedEvent } from \"./ChallengeFailedEvent\";\nimport { ChallengeSucceededEvent } from \"./ChallengeSucceededEvent\";\nimport { RejectedEvent } from \"./RejectedEvent\";\nimport { WhitelistedEvent } from \"./WhitelistedEvent\";\n\nconst StyledDiv = styled.div`\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Registry / Listing / Listing History Event\", module)\n  .addDecorator(StoryRouter())\n  .add(\"Default\", () => {\n    const props = {\n      timestamp: new Date().valueOf() / 1000,\n      title: \"A Default Event\",\n    };\n\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <>\n            <ListingHistoryEvent {...props} />\n          </>\n        )}\n      </Container>\n    );\n  })\n  .add(\"History Events Timelime\", () => {\n    const timestamp = new Date().valueOf() / 1000;\n    const deposit = \"100.00 CVL\";\n    const challengeID = \"1\";\n    const challenger = \"0x8c722b8ac728add7780a66017e8dadba530ee261\";\n\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <>\n            <RejectedEvent timestamp={timestamp} />\n            <ChallengeSucceededEvent\n              timestamp={timestamp}\n              totalVotes=\"100.00 CVL\"\n              votesFor=\"80.00 CVL\"\n              votesAgainst=\"20.00 CVL\"\n              percentFor=\"20\"\n              percentAgainst=\"80\"\n              didChallengeSucceed={true}\n            />\n            <ChallengeFailedEvent\n              timestamp={timestamp}\n              totalVotes=\"100.00 CVL\"\n              votesFor=\"20.00 CVL\"\n              votesAgainst=\"80.00 CVL\"\n              percentFor=\"20\"\n              percentAgainst=\"80\"\n              didChallengeSucceed={false}\n            />\n            <ChallengeEvent\n              timestamp={timestamp}\n              challenger={challenger}\n              challengeID={challengeID}\n              challengeURI=\"/challenge/1\"\n            />\n            <WhitelistedEvent timestamp={timestamp} />\n            <ApplicationEvent timestamp={timestamp} deposit={deposit} />\n          </>\n        )}\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ListingHistoryEvent.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\nimport { ListingHistoryEventDetailsProps, ListingHistoryEventProps } from \"./types\";\nimport EventDate from \"./EventDate\";\n\nexport enum ListingHistoryEventStyles {\n  WHITELISTED = \"WHITELISTED\",\n  REJECTED = \"REJECTED\",\n}\n\nconst StyledListingHistoryEvent = styled.div`\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n`;\n\nexport interface StyledEventDetailProps {\n  eventStyle?: string;\n}\n\nconst eventColors: any = {\n  [ListingHistoryEventStyles.WHITELISTED]: colors.accent.CIVIL_TEAL,\n  [ListingHistoryEventStyles.REJECTED]: colors.accent.CIVIL_RED,\n};\n\nconst StyledEventDetail = styled.div<StyledEventDetailProps>`\n  border-left: 4px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 0 0 40px 33px;\n  position: relative;\n\n  & svg {\n    background: ${colors.basic.WHITE};\n    position: absolute;\n    left: -15px;\n    top: 0;\n    z-index: 2;\n  }\n`;\n\nconst StyledEventCircle = styled.div<StyledEventDetailProps>`\n  & circle {\n    fill: ${props => (props.eventStyle ? eventColors[props.eventStyle] : colors.accent.CIVIL_GRAY_2)};\n    stroke: ${props => (props.eventStyle ? eventColors[props.eventStyle] : colors.accent.CIVIL_GRAY_2)};\n  }\n`;\n\nconst StyledEventTitle = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 21px;\n  font-weight: 600;\n  line-height: 25px;\n  margin: 0 0 8px 12px;\n`;\n\nexport const StyledEventCopy = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 16px;\n  line-height: 19px;\n  letter-spacing: -0.39px;\n\n  & > strong {\n    color: ${colors.primary.CIVIL_GRAY_1};\n    font-weight: normal;\n  }\n`;\n\nexport const ListingHistoryEvent: React.FunctionComponent<ListingHistoryEventProps> = props => {\n  return (\n    <StyledListingHistoryEvent>\n      <EventDate timestamp={props.timestamp} />\n      <EventDetail title={props.title} eventStyle={props.eventStyle}>\n        {props.children}\n      </EventDetail>\n    </StyledListingHistoryEvent>\n  );\n};\n\nconst EventDetail: React.FunctionComponent<ListingHistoryEventDetailsProps> = props => {\n  return (\n    <StyledEventDetail eventStyle={props.eventStyle}>\n      <StyledEventCircle eventStyle={props.eventStyle}>\n        <svg viewBox=\"0 0 26 26\" width=\"26\" height=\"26\" xmlns=\"http://www.w3.org/2000/svg\">\n          <circle cx=\"13\" cy=\"13\" r=\"7\" />\n        </svg>\n      </StyledEventCircle>\n\n      <StyledEventTitle>{props.title}</StyledEventTitle>\n      {props.children}\n    </StyledEventDetail>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/ListingWithdrawnEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport const ListingWithdrawnEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.LISTING_WITHDRAWN} timestamp={props.timestamp}>\n      <StyledEventCopy>Listing withdrawn from registry</StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/RejectedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, ListingHistoryEventStyles } from \"./ListingHistoryEvent\";\n\nexport const RejectedEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent\n      title={ListingEventTitles.REJECTED}\n      timestamp={props.timestamp}\n      eventStyle={ListingHistoryEventStyles.REJECTED}\n    />\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/TouchAndRemovedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport const TouchAndRemovedEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.TOUCH_AND_REMOVED} timestamp={props.timestamp}>\n      <StyledEventCopy>Listing removed from registry because its deposit was too low</StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/WhitelistedEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, ListingHistoryEventStyles } from \"./ListingHistoryEvent\";\n\nexport const WhitelistedEvent: React.FunctionComponent<ListingHistoryEventTimestampProps> = props => {\n  return (\n    <ListingHistoryEvent\n      title={ListingEventTitles.WHITELISTED}\n      timestamp={props.timestamp}\n      eventStyle={ListingHistoryEventStyles.WHITELISTED}\n    />\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/WithdrawalEvent.tsx",
    "content": "import * as React from \"react\";\nimport { ListingHistoryEventTimestampProps } from \"./types\";\nimport { ListingEventTitles } from \"./constants\";\nimport { ListingHistoryEvent, StyledEventCopy } from \"./ListingHistoryEvent\";\n\nexport interface WithdrawalEventProps extends ListingHistoryEventTimestampProps {\n  deposit: string;\n}\n\nexport const WithdrawalEvent: React.FunctionComponent<WithdrawalEventProps> = props => {\n  return (\n    <ListingHistoryEvent title={ListingEventTitles.WITHDRAWAL} timestamp={props.timestamp}>\n      <StyledEventCopy>\n        <strong>{props.deposit}</strong> withdrawn\n      </StyledEventCopy>\n    </ListingHistoryEvent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/__snapshots__/ListingHistoryEvent.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Listing / Listing History Event Default 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOO inhCVL\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing History Event\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing History Event History Events Timelime 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOO inhCVL\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing History Event\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            History Events Timelime\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/constants.ts",
    "content": "export enum ListingEventTitles {\n  APPEAL_GRANTED = \"Appeal Granted\",\n  APPEAL_REQUESTED = \"Appeal Requested\",\n  APPLICATION = \"Application Submitted\",\n  CHALLENGE = \"Newsroom Challenged\",\n  CHALLENGE_FAILED = \"Challenge Failed\",\n  CHALLENGE_SUCCEEDED = \"Challenge Succeeded\",\n  REJECTED = \"Newsroom Removed from Civil Registry\",\n  WHITELISTED = \"Newsroom Whitelisted to Civil Registry\",\n  DEPOSIT = \"Newsroom Deposited CVL to Listing\",\n  WITHDRAWAL = \"Newsroom Withdrew CVL from Listing\",\n  LISTING_WITHDRAWN = \"Listing Withdrawn from Civil Registry by owner\",\n  TOUCH_AND_REMOVED = \"Listing Removed from Civil Registry\",\n  GRANTED_APPEAL_CHALLENGED = \"The Appeal Granted by the Council has been Challenged\",\n}\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/index.tsx",
    "content": "export * from \"./AppealGrantedEvent\";\nexport * from \"./AppealRequestedEvent\";\nexport * from \"./ApplicationEvent\";\nexport * from \"./ChallengeEvent\";\nexport * from \"./ChallengeFailedEvent\";\nexport * from \"./ChallengeSucceededEvent\";\nexport * from \"./DepositEvent\";\nexport * from \"./GrantedAppealChallengedEvent\";\nexport * from \"./ListingHistoryEvent\";\nexport * from \"./ListingWithdrawnEvent\";\nexport * from \"./RejectedEvent\";\nexport * from \"./TouchAndRemovedEvent\";\nexport * from \"./WhitelistedEvent\";\nexport * from \"./WithdrawalEvent\";\nexport * from \"./types\";\n"
  },
  {
    "path": "packages/components/src/ListingHistoryEvent/types.ts",
    "content": "import { ChallengeResultsProps } from \"../ChallengeResultsChart\";\n\nexport interface ListingHistoryEventTimestampProps {\n  timestamp: number;\n}\n\nexport interface ListingHistoryEventDetailsProps {\n  title: string;\n  eventStyle?: string;\n}\n\nexport interface ListingHistoryEventProps extends ListingHistoryEventTimestampProps, ListingHistoryEventDetailsProps {}\n\nexport interface ChallengeCompletedEventProps extends ListingHistoryEventTimestampProps, ChallengeResultsProps {\n  appealRequested?: boolean;\n  appealGranted?: boolean;\n  appealChallengeTotalVotes?: string;\n  appealChallengeVotesFor?: string;\n  appealChallengeVotesAgainst?: string;\n  appealChallengePercentFor?: string;\n  appealChallengePercentAgainst?: string;\n  didAppealChallengeSucceed?: boolean;\n}\n"
  },
  {
    "path": "packages/components/src/ListingSummary/AppealJudgementBanner.tsx",
    "content": "import * as React from \"react\";\nimport { HollowGreenCheck, HollowRedNoGood, HollowGrayNotGranted } from \"../icons\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport {\n  StyledBaseResultsBanner,\n  StyledRejectedResultsBanner,\n  StyledNotGrantedResultsBanner,\n} from \"./styledComponents\";\n\nconst AppealDecisionBanner: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  const {\n    appeal,\n    appealGranted,\n    doesChallengeHaveAppeal,\n    isAwaitingAppealJudgement,\n    didChallengeOriginallySucceed,\n  } = props;\n  if (!doesChallengeHaveAppeal && !isAwaitingAppealJudgement) {\n    return <></>;\n  }\n\n  let decisionText = <></>;\n  if (isAwaitingAppealJudgement) {\n    decisionText = (\n      <StyledNotGrantedResultsBanner>\n        <HollowGrayNotGranted /> Appeal requested\n      </StyledNotGrantedResultsBanner>\n    );\n  } else if (appeal) {\n    if (appeal.appealGranted || appealGranted) {\n      if (didChallengeOriginallySucceed) {\n        // Challenge succeeded (newsroom rejected) and appeal was granted, so newsroom is accepted\n        decisionText = (\n          <StyledBaseResultsBanner>\n            <HollowGreenCheck /> Appeal granted to accept Newsroom\n          </StyledBaseResultsBanner>\n        );\n        // Challenge failed (newsroom accepted) and appeal was granted, so newsroom is rejected\n        //\n      } else {\n        decisionText = (\n          <StyledRejectedResultsBanner>\n            <HollowRedNoGood /> Appeal granted to reject Newsroom\n          </StyledRejectedResultsBanner>\n        );\n      }\n    } else {\n      decisionText = (\n        <StyledNotGrantedResultsBanner>\n          <HollowGrayNotGranted /> Appeal requested but not granted\n        </StyledNotGrantedResultsBanner>\n      );\n    }\n  }\n\n  return decisionText;\n};\n\nexport default AppealDecisionBanner;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ChallengeOrAppealStatementSummary.tsx",
    "content": "import * as React from \"react\";\nimport { ListingSummaryComponentProps, ChallengeOrAppealStatementSummaryProps } from \"./types\";\nimport { StyledListingChallengeOrAppealStatement } from \"./styledComponents\";\n\nconst ChallengeOrAppealStatementSummary: React.FunctionComponent<\n  ListingSummaryComponentProps & ChallengeOrAppealStatementSummaryProps\n> = props => {\n  const {\n    challengeID,\n    challengeStatementSummary,\n    appealStatementSummary,\n    appealChallengeID,\n    appealChallengeStatementSummary,\n    inChallengeCommitVotePhase,\n    inChallengeRevealPhase,\n    isAwaitingAppealJudgement,\n    isInAppealChallengeCommitPhase,\n    isInAppealChallengeRevealPhase,\n  } = props;\n  if (isInAppealChallengeCommitPhase || (isInAppealChallengeRevealPhase && appealChallengeStatementSummary)) {\n    const appealChallengeIDDisplay = appealChallengeID ? `#${appealChallengeID}` : \"\";\n    return (\n      <StyledListingChallengeOrAppealStatement>\n        <b>Challenge {appealChallengeIDDisplay} Summary</b>\n        <br />\n        {appealChallengeStatementSummary}\n      </StyledListingChallengeOrAppealStatement>\n    );\n  } else if (isAwaitingAppealJudgement && appealStatementSummary) {\n    return (\n      <StyledListingChallengeOrAppealStatement>\n        <b>Appeal Summary</b>\n        <br />\n        {appealStatementSummary}\n      </StyledListingChallengeOrAppealStatement>\n    );\n  } else if (inChallengeCommitVotePhase || (inChallengeRevealPhase && challengeStatementSummary)) {\n    const challengeIDDisplay = challengeID ? `#${challengeID}` : \"\";\n    return (\n      <StyledListingChallengeOrAppealStatement>\n        <b>Challenge {challengeIDDisplay} Summary</b>\n        <br />\n        {challengeStatementSummary}\n      </StyledListingChallengeOrAppealStatement>\n    );\n  }\n  return null;\n};\n\nexport default ChallengeOrAppealStatementSummary;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ChallengeResults.tsx",
    "content": "import * as React from \"react\";\nimport {\n  ListingSummaryComponentProps,\n  ListingSummaryAppealChallengeResultsProps as AppealChallengeResultsProps,\n} from \"./types\";\nimport { ChallengeResults as ChallengeResultsComponent, ChallengeResultsProps } from \"../ChallengeResultsChart\";\n\nexport interface ListingSummaryChallengeResultsProps\n  extends ListingSummaryComponentProps,\n    Partial<ChallengeResultsProps> {}\n\nexport interface ListingSummaryAppealChallengeResultsProps\n  extends ListingSummaryComponentProps,\n    Partial<AppealChallengeResultsProps> {}\n\nimport { StyledChallengeResultsHeader, ChallengeResultsContain } from \"./styledComponents\";\n\nconst ChallengeResults: React.FunctionComponent<ListingSummaryChallengeResultsProps> = props => {\n  const {\n    canBeWhitelisted,\n    canResolveChallenge,\n    isAwaitingAppealRequest,\n    isAwaitingAppealJudgement,\n    canListingAppealBeResolved,\n    isAwaitingAppealChallenge,\n    isInAppealChallengeCommitPhase,\n    isInAppealChallengeRevealPhase,\n    isUnderChallenge,\n    isRejected,\n    canListingAppealChallengeBeResolved,\n    challengeID,\n    totalVotes,\n    votesFor,\n    votesAgainst,\n    percentFor,\n    percentAgainst,\n    didChallengeOriginallySucceed,\n  } = props;\n\n  if (\n    !(\n      canBeWhitelisted ||\n      canResolveChallenge ||\n      isAwaitingAppealRequest ||\n      isAwaitingAppealJudgement ||\n      canListingAppealBeResolved ||\n      isAwaitingAppealChallenge ||\n      isInAppealChallengeCommitPhase ||\n      isInAppealChallengeRevealPhase ||\n      canListingAppealChallengeBeResolved ||\n      (isRejected && !isUnderChallenge)\n    ) ||\n    (canBeWhitelisted && !isUnderChallenge)\n  ) {\n    return null;\n  }\n\n  const challengeIDDisplay = !!challengeID ? `#${challengeID}` : \"\";\n  return (\n    <ChallengeResultsContain>\n      <ChallengeResultsComponent\n        headerText={`Challenge ${challengeIDDisplay} Results`}\n        styledHeaderComponent={StyledChallengeResultsHeader}\n        totalVotes={totalVotes!}\n        votesFor={votesFor!}\n        votesAgainst={votesAgainst!}\n        percentFor={percentFor!}\n        percentAgainst={percentAgainst!}\n        didChallengeSucceed={didChallengeOriginallySucceed!}\n      />\n    </ChallengeResultsContain>\n  );\n};\n\nexport const AppealChallengeResults: React.FunctionComponent<ListingSummaryAppealChallengeResultsProps> = props => {\n  const {\n    canListingAppealChallengeBeResolved,\n    appealChallengeID,\n    appealChallengeTotalVotes,\n    appealChallengeVotesFor,\n    appealChallengeVotesAgainst,\n    appealChallengePercentFor,\n    appealChallengePercentAgainst,\n    didAppealChallengeSucceed,\n    isRejected,\n    isUnderChallenge,\n  } = props;\n\n  if (\n    (!canListingAppealChallengeBeResolved && !(isRejected && !isUnderChallenge)) ||\n    !appealChallengeID ||\n    appealChallengeID === \"0\"\n  ) {\n    return null;\n  }\n\n  const challengeIDDisplay = !!appealChallengeID ? `#${appealChallengeID}` : \"\";\n  return (\n    <ChallengeResultsContain>\n      <ChallengeResultsComponent\n        headerText={`Appeal Challenge ${challengeIDDisplay} Results`}\n        styledHeaderComponent={StyledChallengeResultsHeader}\n        totalVotes={appealChallengeTotalVotes!}\n        votesFor={appealChallengeVotesFor!}\n        votesAgainst={appealChallengeVotesAgainst!}\n        percentFor={appealChallengePercentFor!}\n        percentAgainst={appealChallengePercentAgainst!}\n        didChallengeSucceed={didAppealChallengeSucceed!}\n        isAppealChallenge={true}\n      />\n    </ChallengeResultsContain>\n  );\n};\n\nexport default ChallengeResults;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ChallengeResultsBanner.tsx",
    "content": "import * as React from \"react\";\nimport { HollowGreenCheck, HollowRedNoGood } from \"../icons\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { StyledBaseResultsBanner, StyledRejectedResultsBanner } from \"./styledComponents\";\n\nconst ChallengeResultsBanner: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  const { appeal, didChallengeOriginallySucceed, canBeWhitelisted } = props;\n  let decisionText = null;\n\n  if (appeal && appeal.appealGranted) {\n    if (didChallengeOriginallySucceed) {\n      // Challenge succeeded (newsroom rejected) and appeal was granted, so newsroom is accepted\n      decisionText = (\n        <StyledBaseResultsBanner>\n          <HollowGreenCheck /> Appeal granted to accept Newsroom\n        </StyledBaseResultsBanner>\n      );\n    } else {\n      // Challenge failed (newsroom accepted) and appeal was granted, so newsroom is rejected\n      decisionText = (\n        <StyledRejectedResultsBanner>\n          <HollowRedNoGood /> Appeal granted to reject Newsroom\n        </StyledRejectedResultsBanner>\n      );\n    }\n  } else if (didChallengeOriginallySucceed) {\n    // Challenge succeeded (newsroom rejected)\n    decisionText = (\n      <StyledRejectedResultsBanner>\n        <HollowRedNoGood /> Community voted to reject Newsroom\n      </StyledRejectedResultsBanner>\n    );\n  } else if (canBeWhitelisted) {\n    // Challenge failed (newsroom accepted)\n    decisionText = (\n      <StyledBaseResultsBanner>\n        <HollowGreenCheck /> Newsroom application passed without challenge\n      </StyledBaseResultsBanner>\n    );\n  } else if (!didChallengeOriginallySucceed) {\n    // Challenge failed (newsroom accepted)\n    decisionText = (\n      <StyledBaseResultsBanner>\n        <HollowGreenCheck /> Community voted to accept Newsroom\n      </StyledBaseResultsBanner>\n    );\n  }\n\n  return decisionText;\n};\n\nexport default ChallengeResultsBanner;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/DepositOrStakeAmount.tsx",
    "content": "import * as React from \"react\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { MetaRow, MetaItemValue, MetaItemLabel } from \"./styledComponents\";\nimport { AmountDepositedLabelText, AmountStakedChallengeLabelText } from \"./textComponents\";\n\nconst DepositOrStakeAmount: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  if (\n    props.inChallengeCommitVotePhase ||\n    props.isInAppealChallengeCommitPhase ||\n    props.inChallengeRevealPhase ||\n    props.isInAppealChallengeRevealPhase ||\n    props.canResolveChallenge ||\n    props.canListingAppealChallengeBeResolved ||\n    props.isAwaitingAppealJudgement ||\n    props.isAwaitingAppealChallenge\n  ) {\n    return <ChallengeStake {...props} />;\n  } else if (props.isInApplication || props.canBeWhitelisted || props.isWhitelisted) {\n    return <UnstakedDeposit {...props} />;\n  }\n  return null;\n};\n\nconst UnstakedDeposit: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  if (!props.unstakedDeposit && !props.isWhitelisted) {\n    return null;\n  }\n  return (\n    <MetaRow>\n      <MetaItemLabel>\n        <AmountDepositedLabelText />\n      </MetaItemLabel>\n      <MetaItemValue>{props.unstakedDeposit}</MetaItemValue>\n    </MetaRow>\n  );\n};\n\nconst ChallengeStake: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  if (!props.challengeStake) {\n    return null;\n  }\n  return (\n    <MetaRow>\n      <MetaItemLabel>\n        <AmountStakedChallengeLabelText />\n      </MetaItemLabel>\n      <MetaItemValue>{props.challengeStake}</MetaItemValue>\n    </MetaRow>\n  );\n};\n\nexport default DepositOrStakeAmount;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingPhaseLabel.tsx",
    "content": "import * as React from \"react\";\nimport {\n  AwaitingApprovalStatusLabel,\n  CommitVoteStatusLabel,\n  RevealVoteStatusLabel,\n  AwaitingAppealRequestLabel,\n  ReadyToCompleteStatusLabel,\n  AwaitingDecisionStatusLabel,\n  AwaitingAppealChallengeStatusLabel,\n} from \"../ApplicationPhaseStatusLabels\";\nimport { ListingChallengeStatusProps } from \"./types\";\n\nconst ListingPhaseLabel: React.FunctionComponent<ListingChallengeStatusProps> = props => {\n  const {\n    isInApplication,\n    inChallengeCommitVotePhase,\n    isInAppealChallengeCommitPhase,\n    inChallengeRevealPhase,\n    isInAppealChallengeRevealPhase,\n    isAwaitingAppealRequest,\n    canBeWhitelisted,\n    canResolveChallenge,\n    canListingAppealBeResolved,\n    canListingAppealChallengeBeResolved,\n    isAwaitingAppealJudgement,\n    isAwaitingAppealChallenge,\n  } = props;\n\n  if (isInApplication) {\n    return <AwaitingApprovalStatusLabel />;\n  } else if (inChallengeCommitVotePhase || isInAppealChallengeCommitPhase) {\n    return <CommitVoteStatusLabel />;\n  } else if (inChallengeRevealPhase || isInAppealChallengeRevealPhase) {\n    return <RevealVoteStatusLabel />;\n  } else if (isAwaitingAppealRequest) {\n    return <AwaitingAppealRequestLabel />;\n  } else if (\n    canBeWhitelisted ||\n    canResolveChallenge ||\n    canListingAppealChallengeBeResolved ||\n    canListingAppealBeResolved\n  ) {\n    return <ReadyToCompleteStatusLabel />;\n  } else if (isAwaitingAppealJudgement) {\n    return <AwaitingDecisionStatusLabel />;\n  } else if (isAwaitingAppealChallenge) {\n    return <AwaitingAppealChallengeStatusLabel />;\n  }\n\n  return null;\n};\n\nexport default ListingPhaseLabel;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummary.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport StoryRouter from \"storybook-react-router\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { ListingSummaryComponent } from \"./ListingSummary\";\nimport { ListingSummaryRejectedComponent } from \"./ListingSummaryRejected\";\nimport { ListingSummaryList } from \"./ListingSummaryList\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 600px;\n`;\n\nconst totalVotes = \"100000\";\nconst votesFor = \"73000\";\nconst votesAgainst = \"27000\";\nconst percentFor = \"73\";\nconst percentAgainst = \"27\";\nconst didChallengeSucceed = false;\n\nconst newsroomData: ListingSummaryComponentProps[] = [\n  {\n    listingAddress: \"0x0a\",\n    name: \"Block Club Chicago\",\n    charter: {\n      tagline:\n        \"Block Club Chicago is a nonprofit, neighborhood news organization dedicated to delivering reliable, nonpartisan and essential coverage of Chicago's diverse neighborhoods.\",\n    } as any,\n  },\n  {\n    listingAddress: \"0x0b\",\n    name: \"Cannabis Wire\",\n    charter: {\n      tagline:\n        \"Cannabis Wire is an independent publication covering the multi-billion dollar cannabis industry, focusing on investigation into the complexities that come with legaliation.\",\n    } as any,\n  },\n  {\n    listingAddress: \"0x0c\",\n    name: \"Documented\",\n    charter: {\n      tagline:\n        \"Documented covers New York City’s immigrants and the policies that affect their lives. We are an independent and nonpartisan publication.\",\n    } as any,\n  },\n  {\n    listingAddress: \"0x0d\",\n    name: \"Block Club Chicago\",\n    charter: {\n      tagline:\n        \"Block Club Chicago is a nonprofit, neighborhood news organization dedicated to delivering reliable, nonpartisan and essential coverage of Chicago's diverse neighborhoods.\",\n    } as any,\n  },\n  {\n    listingAddress: \"0x0e\",\n    name: \"Cannabis Wire\",\n    charter: {\n      tagline:\n        \"Cannabis Wire is an independent publication covering the multi-billion dollar cannabis industry, focusing on investigation into the complexities that come with legaliation.\",\n    } as any,\n  },\n  {\n    listingAddress: \"0x0f\",\n    name: \"Documented\",\n    charter: {\n      tagline:\n        \"Documented covers New York City’s immigrants and the policies that affect their lives. We are an independent and nonpartisan publication.\",\n    } as any,\n  },\n];\n\nconst newsrooms = newsroomData.map((newsroom: ListingSummaryComponentProps) => {\n  const listingDetailURL = `/listing/${newsroom.listingAddress}`;\n  return { ...newsroom, listingDetailURL };\n});\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Registry / Listing / Listing Summary\", module)\n  .addDecorator(StoryRouter())\n  .add(\"Card\", () => {\n    const newsroom = newsrooms[0];\n\n    return (\n      <Container>\n        <ListingSummaryComponent {...newsroom} />\n      </Container>\n    );\n  })\n  .add(\"Card Rejected\", () => {\n    const newsroom = newsrooms[0];\n\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <ListingSummaryRejectedComponent\n            {...newsroom}\n            totalVotes={totalVotes}\n            votesFor={votesAgainst}\n            votesAgainst={votesFor}\n            percentFor={percentAgainst}\n            percentAgainst={percentFor}\n            didChallengeSucceed={!didChallengeSucceed}\n          />\n        )}\n      </Container>\n    );\n  })\n  .add(\"Card Grid\", () => {\n    return (\n      <Container>\n        <ListingSummaryList listings={newsrooms} />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummary.tsx",
    "content": "import * as React from \"react\";\nimport { HollowGreenCheck, HollowRedNoGood } from \"../icons\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { StyledListingSummary, StyledListingSummarySection, StyledAppealJudgementContainer } from \"./styledComponents\";\nimport ListingSummaryBase from \"./ListingSummaryBase\";\nimport ChallengeOrAppealStatementSummary from \"./ChallengeOrAppealStatementSummary\";\nimport NewsroomInfo from \"./NewsroomInfo\";\nimport SummaryActionButton from \"./SummaryActionButton\";\n\nexport const ListingSummaryComponent: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  const { challengeID, challengeStatementSummary, appealStatementSummary } = props;\n\n  const renderAppealJudgement = (): JSX.Element => {\n    const { appeal, didChallengeOriginallySucceed } = props;\n    if (!appeal || !appeal.appealGranted) {\n      return <></>;\n    }\n\n    let decisionText;\n\n    // Challenge succeeded (newsroom rejected) and appeal was granted, so newsroom is accepted\n    if (didChallengeOriginallySucceed) {\n      decisionText = (\n        <>\n          <HollowGreenCheck /> Appeal granted to accept Newsroom\n        </>\n      );\n      // Challenge failed (newsroom accepted) and appeal was granted, so newsroom is rejected\n    } else {\n      decisionText = (\n        <>\n          <HollowRedNoGood /> Appeal granted to reject Newsroom\n        </>\n      );\n    }\n\n    return <StyledAppealJudgementContainer>{decisionText}</StyledAppealJudgementContainer>;\n  };\n\n  return (\n    <ListingSummaryBase {...props}>\n      <StyledListingSummary hasTopPadding={true}>\n        {renderAppealJudgement()}\n\n        <NewsroomInfo {...props} />\n\n        <StyledListingSummarySection>\n          <ChallengeOrAppealStatementSummary\n            challengeID={challengeID}\n            challengeStatementSummary={challengeStatementSummary}\n            appealStatementSummary={appealStatementSummary}\n          />\n\n          <SummaryActionButton {...props} />\n        </StyledListingSummarySection>\n      </StyledListingSummary>\n    </ListingSummaryBase>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummaryApproved.tsx",
    "content": "import * as React from \"react\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { StyledListingSummary, StyledListingSummarySection, StyledUnderChallengeBanner } from \"./styledComponents\";\nimport ListingSummaryBase from \"./ListingSummaryBase\";\nimport { UnderChallengeBannerText } from \"./textComponents\";\nimport ChallengeOrAppealStatementSummary from \"./ChallengeOrAppealStatementSummary\";\nimport ListingPhaseLabel from \"./ListingPhaseLabel\";\nimport NewsroomInfo from \"./NewsroomInfo\";\nimport SummaryActionButton from \"./SummaryActionButton\";\nimport PhaseCountdownOrTimestamp from \"./PhaseCountdownOrTimestamp\";\nimport AppealJudgementBanner from \"./AppealJudgementBanner\";\nimport ChallengeResults, { AppealChallengeResults } from \"./ChallengeResults\";\n\nexport interface ListingSummaryApprovedComponentProps\n  extends ListingSummaryComponentProps,\n    Partial<ChallengeResultsProps> {}\n\nexport const ListingSummaryApprovedComponent: React.FunctionComponent<ListingSummaryApprovedComponentProps> = props => {\n  const { challengeID, canListingAppealBeResolved, canListingAppealChallengeBeResolved } = props;\n\n  let banner;\n\n  if (canListingAppealBeResolved || canListingAppealChallengeBeResolved) {\n    banner = <AppealJudgementBanner {...props} />;\n  } else if (challengeID) {\n    banner = (\n      <StyledUnderChallengeBanner>\n        <UnderChallengeBannerText />\n      </StyledUnderChallengeBanner>\n    );\n  }\n\n  return (\n    <ListingSummaryBase {...props}>\n      <StyledListingSummary hasTopPadding={!challengeID}>\n        {banner}\n\n        <ListingPhaseLabel {...props} />\n\n        <NewsroomInfo {...props} />\n\n        <ChallengeResults {...props} />\n        <AppealChallengeResults {...props} />\n\n        <StyledListingSummarySection>\n          <ChallengeOrAppealStatementSummary {...props} />\n          <PhaseCountdownOrTimestamp {...props} />\n\n          <SummaryActionButton {...props} />\n        </StyledListingSummarySection>\n      </StyledListingSummary>\n    </ListingSummaryBase>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummaryBase.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { StyledListingSummaryContainer } from \"./styledComponents\";\n\nconst ListingSummaryBase: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  return (\n    <StyledListingSummaryContainer>\n      {props.listingDetailURL && <Link to={props.listingDetailURL}>{props.children}</Link>}\n      {!props.listingDetailURL && <>{props.children}</>}\n    </StyledListingSummaryContainer>\n  );\n};\n\nexport default ListingSummaryBase;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummaryList.tsx",
    "content": "import * as React from \"react\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { ListingSummaryComponent } from \"./ListingSummary\";\nimport { StyledListingSummaryList } from \"./styledComponents\";\n\nexport interface ListingSummaryListProps {\n  listings: ListingSummaryComponentProps[];\n}\n\nexport class ListingSummaryList extends React.Component<ListingSummaryListProps> {\n  public render(): JSX.Element {\n    const listingViews = this.props.listings.map((listing: any) => (\n      <div key={listing.listingAddress}>\n        <ListingSummaryComponent {...listing} />\n      </div>\n    ));\n    return <StyledListingSummaryList>{listingViews}</StyledListingSummaryList>;\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummaryReadyToUpdate.tsx",
    "content": "import * as React from \"react\";\nimport { ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { StyledListingSummary, StyledListingSummarySection } from \"./styledComponents\";\nimport ListingSummaryBase from \"./ListingSummaryBase\";\nimport ChallengeResults, { AppealChallengeResults } from \"./ChallengeResults\";\nimport ChallengeOrAppealStatementSummary from \"./ChallengeOrAppealStatementSummary\";\nimport NewsroomInfo from \"./NewsroomInfo\";\nimport SummaryActionButton from \"./SummaryActionButton\";\nimport ChallengeResultsBanner from \"./ChallengeResultsBanner\";\n\nexport interface ListingSummaryReadyToUpdateComponentProps\n  extends ListingSummaryComponentProps,\n    Partial<ChallengeResultsProps> {}\n\nexport const ListingSummaryReadyToUpdateComponent: React.FunctionComponent<\n  ListingSummaryReadyToUpdateComponentProps\n> = props => {\n  return (\n    <ListingSummaryBase {...props}>\n      <StyledListingSummary>\n        <ChallengeResultsBanner {...props} />\n\n        <NewsroomInfo {...props} />\n\n        <ChallengeResults {...props} />\n        <AppealChallengeResults {...props} />\n\n        <StyledListingSummarySection>\n          <ChallengeOrAppealStatementSummary {...props} />\n          <SummaryActionButton {...props} />\n        </StyledListingSummarySection>\n      </StyledListingSummary>\n    </ListingSummaryBase>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummaryRejected.tsx",
    "content": "import * as React from \"react\";\nimport { ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { StyledListingSummary, StyledListingSummarySection } from \"./styledComponents\";\nimport ListingSummaryBase from \"./ListingSummaryBase\";\nimport NewsroomInfo from \"./NewsroomInfo\";\nimport SummaryActionButton from \"./SummaryActionButton\";\nimport ChallengeResults, { AppealChallengeResults } from \"./ChallengeResults\";\nimport AppealJudgementBanner from \"./AppealJudgementBanner\";\n\nexport const ListingSummaryRejectedComponent: React.FunctionComponent<\n  ListingSummaryComponentProps & ChallengeResultsProps\n> = props => {\n  const { doesChallengeHaveAppeal, isAwaitingAppealJudgement } = props;\n\n  const hasTopPadding = !doesChallengeHaveAppeal && !isAwaitingAppealJudgement;\n  return (\n    <ListingSummaryBase {...props}>\n      <StyledListingSummary hasTopPadding={hasTopPadding}>\n        <AppealJudgementBanner {...props} />\n        <NewsroomInfo {...props} />\n\n        <ChallengeResults {...props} />\n        <AppealChallengeResults {...props} />\n\n        <StyledListingSummarySection>\n          <SummaryActionButton {...props} />\n        </StyledListingSummarySection>\n      </StyledListingSummary>\n    </ListingSummaryBase>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingSummary/ListingSummaryUnderChallenge.tsx",
    "content": "import * as React from \"react\";\n\nimport { ChallengeResultsProps } from \"../ChallengeResultsChart\";\n\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { StyledListingSummary, StyledListingSummarySection } from \"./styledComponents\";\nimport ListingSummaryBase from \"./ListingSummaryBase\";\nimport ChallengeOrAppealStatementSummary from \"./ChallengeOrAppealStatementSummary\";\nimport ListingPhaseLabel from \"./ListingPhaseLabel\";\nimport NewsroomInfo from \"./NewsroomInfo\";\nimport SummaryActionButton from \"./SummaryActionButton\";\nimport ChallengeResults from \"./ChallengeResults\";\nimport PhaseCountdownOrTimestamp from \"./PhaseCountdownOrTimestamp\";\nimport AppealJudgementBanner from \"./AppealJudgementBanner\";\n\nexport interface ListingSummaryUnderChallengeComponentProps\n  extends ListingSummaryComponentProps,\n    Partial<ChallengeResultsProps> {}\n\nexport const ListingSummaryUnderChallengeComponent: React.FunctionComponent<\n  ListingSummaryUnderChallengeComponentProps\n> = props => {\n  const { doesChallengeHaveAppeal, isAwaitingAppealJudgement } = props;\n\n  const hasTopPadding = !doesChallengeHaveAppeal && !isAwaitingAppealJudgement;\n\n  return (\n    <ListingSummaryBase {...props}>\n      <StyledListingSummary hasTopPadding={hasTopPadding}>\n        <AppealJudgementBanner {...props} />\n\n        <ListingPhaseLabel {...props} />\n\n        <NewsroomInfo {...props} />\n\n        <ChallengeResults {...props} />\n\n        <StyledListingSummarySection>\n          <ChallengeOrAppealStatementSummary {...props} />\n\n          <PhaseCountdownOrTimestamp {...props} />\n\n          <SummaryActionButton {...props} />\n        </StyledListingSummarySection>\n      </StyledListingSummary>\n    </ListingSummaryBase>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/ListingSummary/NewsroomInfo.tsx",
    "content": "import * as React from \"react\";\nimport defaultNewsroomImgUrl from \"../images/img-default-newsroom@2x.png\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { NewsroomIcon, StyledListingSummaryTop, StyledListingSummaryNewsroomName } from \"./styledComponents\";\nimport NewsroomTagline from \"./NewsroomTagline\";\n\nconst NewsroomInfo: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  const description = props.charter && props.charter.tagline;\n  const logoURL = props.charter && props.charter.logoUrl;\n\n  return (\n    <StyledListingSummaryTop>\n      <NewsroomIcon>\n        {logoURL && (\n          <img\n            src={logoURL}\n            onError={e => {\n              (e.target as any).src = defaultNewsroomImgUrl;\n            }}\n          />\n        )}\n      </NewsroomIcon>\n      <div>\n        <StyledListingSummaryNewsroomName>{props.name}</StyledListingSummaryNewsroomName>\n        <NewsroomTagline description={description} />\n      </div>\n    </StyledListingSummaryTop>\n  );\n};\n\nexport default NewsroomInfo;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/NewsroomTagline.tsx",
    "content": "import * as React from \"react\";\nimport { NewsroomTaglineProps } from \"./types\";\nimport { StyledListingSummaryDescription } from \"./styledComponents\";\n\nconst NewsroomTagline: React.FunctionComponent<NewsroomTaglineProps> = props => {\n  let { description } = props;\n  if (!description) {\n    return null;\n  }\n\n  const maxDescriptionLength = 120;\n  if (description && description.length > maxDescriptionLength) {\n    description = description.substring(0, maxDescriptionLength) + \"...\";\n  }\n\n  return <StyledListingSummaryDescription>{description}</StyledListingSummaryDescription>;\n};\n\nexport default NewsroomTagline;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/PhaseCountdownOrTimestamp.tsx",
    "content": "import * as React from \"react\";\n\nimport { getLocalDateTimeStrings } from \"@joincivil/utils\";\n\nimport { TextCountdownTimer } from \"../PhaseCountdown\";\n\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { MetaRow, MetaItemValue, MetaItemLabel } from \"./styledComponents\";\nimport { ApplicationPhaseEndedLabelText, ApprovedLabelText, ChallengeEndedLabelText } from \"./textComponents\";\n\nconst PhaseCountdown: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  let expiry: number | undefined;\n  const {\n    isInApplication,\n    inChallengeCommitVotePhase,\n    inChallengeRevealPhase,\n    isAwaitingAppealRequest,\n    isAwaitingAppealJudgement,\n    isAwaitingAppealChallenge,\n    isInAppealChallengeCommitPhase,\n    isInAppealChallengeRevealPhase,\n    appExpiry,\n    commitEndDate,\n    revealEndDate,\n    requestAppealExpiry,\n    appealPhaseExpiry,\n    appealOpenToChallengeExpiry,\n    appealChallengeCommitEndDate,\n    appealChallengeRevealEndDate,\n  } = props;\n  if (isInApplication) {\n    expiry = appExpiry;\n  } else if (inChallengeCommitVotePhase) {\n    expiry = commitEndDate;\n  } else if (inChallengeRevealPhase) {\n    expiry = revealEndDate;\n  } else if (isAwaitingAppealRequest) {\n    expiry = requestAppealExpiry;\n  } else if (isAwaitingAppealJudgement) {\n    expiry = appealPhaseExpiry;\n  } else if (isAwaitingAppealChallenge) {\n    expiry = appealOpenToChallengeExpiry;\n  } else if (isInAppealChallengeCommitPhase) {\n    expiry = appealChallengeCommitEndDate;\n  } else if (isInAppealChallengeRevealPhase) {\n    expiry = appealChallengeRevealEndDate;\n  }\n\n  const warn =\n    inChallengeCommitVotePhase ||\n    inChallengeRevealPhase ||\n    isInAppealChallengeCommitPhase ||\n    isInAppealChallengeRevealPhase;\n\n  if (!expiry) {\n    return null;\n  }\n\n  expiry = parseInt(expiry.toString(), 10);\n  return <TextCountdownTimer endTime={expiry!} warn={warn} />;\n};\n\n/**\n * Renders a human-readable timestamp for phases that have no expiry\n */\nconst Timestamp: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  let timestamp: number = 0;\n  let LabelTextComponent: React.FunctionComponent = () => <></>;\n\n  const {\n    canBeWhitelisted,\n    appExpiry,\n    canResolveChallenge,\n    revealEndDate,\n    canListingAppealChallengeBeResolved,\n    appealChallengeRevealEndDate,\n    isWhitelisted,\n    isUnderChallenge,\n    whitelistedTimestamp,\n  } = props;\n\n  // Unchallenged application\n  if (canBeWhitelisted && appExpiry) {\n    timestamp = appExpiry;\n    LabelTextComponent = ApplicationPhaseEndedLabelText;\n\n    // Resolve Challenge\n  } else if (canResolveChallenge && revealEndDate) {\n    timestamp = revealEndDate;\n    LabelTextComponent = ChallengeEndedLabelText;\n\n    // Resolve Appeal Challenge\n  } else if (canListingAppealChallengeBeResolved && appealChallengeRevealEndDate) {\n    timestamp = appealChallengeRevealEndDate;\n    LabelTextComponent = ChallengeEndedLabelText;\n\n    // Whitelisted and not Under Challenge\n  } else if (isWhitelisted && !isUnderChallenge && whitelistedTimestamp) {\n    timestamp = whitelistedTimestamp;\n    LabelTextComponent = ApprovedLabelText;\n  }\n\n  if (!timestamp) {\n    return null;\n  }\n\n  const timestampStrings: [string, string] = getLocalDateTimeStrings(timestamp);\n  return (\n    <MetaRow>\n      <MetaItemLabel>\n        <LabelTextComponent />\n      </MetaItemLabel>\n      <MetaItemValue>\n        {timestampStrings![0]} {timestampStrings![1]}\n      </MetaItemValue>\n    </MetaRow>\n  );\n};\n\nconst PhaseCountdownOrTimestamp: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  const {\n    isInApplication,\n    inChallengeCommitVotePhase,\n    inChallengeRevealPhase,\n    isAwaitingAppealRequest,\n    isAwaitingAppealJudgement,\n    isAwaitingAppealChallenge,\n    isInAppealChallengeCommitPhase,\n    isInAppealChallengeRevealPhase,\n  } = props;\n  if (\n    isInApplication ||\n    inChallengeCommitVotePhase ||\n    inChallengeRevealPhase ||\n    isAwaitingAppealRequest ||\n    isAwaitingAppealJudgement ||\n    isAwaitingAppealChallenge ||\n    isInAppealChallengeCommitPhase ||\n    isInAppealChallengeRevealPhase\n  ) {\n    return <PhaseCountdown {...props} />;\n  } else {\n    return <Timestamp {...props} />;\n  }\n};\n\nexport default PhaseCountdownOrTimestamp;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/SummaryActionButton.tsx",
    "content": "import * as React from \"react\";\nimport { buttonSizes, InvertedButton } from \"../Button\";\nimport { ListingSummaryComponentProps } from \"./types\";\nimport { ViewDetailsButtonText } from \"./textComponents\";\n\nconst SummaryActionButton: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  return (\n    <InvertedButton size={buttonSizes.SMALL}>\n      <ButtonText {...props} />\n    </InvertedButton>\n  );\n};\n\nconst ButtonText: React.FunctionComponent<ListingSummaryComponentProps> = props => {\n  return <ViewDetailsButtonText />;\n};\n\nexport default SummaryActionButton;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/__snapshots__/ListingSummary.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Listing / Listing Summary Card 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOP eTbWWw\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLus kMfiGx\"\n        >\n          <a\n            href=\"/listing/0x0a\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLut kHgzsQ\"\n            >\n              <div\n                className=\"sc-LzLuu dlYJca\"\n              >\n                <figure\n                  className=\"sc-LzLvc kKURKB\"\n                />\n                <div>\n                  <h1\n                    className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                  >\n                    Block Club Chicago\n                  </h1>\n                  <div\n                    className=\"sc-LzLuZ dApdTb\"\n                  >\n                    Block Club Chicago is a nonprofit, neighborhood news organization dedicated to delivering reliable, nonpartisan and esse...\n                  </div>\n                </div>\n              </div>\n              <div\n                className=\"sc-LzLuA bmgVoy\"\n              >\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                  size=\"SMALL\"\n                  theme={\n                    Object {\n                      \"invertedButtonBackground\": \"#FFFFFF\",\n                      \"invertedButtonColor\": \"#2B56FF\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  View Details\n                </button>\n              </div>\n            </div>\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Summary\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Card\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Summary Card Grid 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOP eTbWWw\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLtU kjQEDm\"\n        >\n          <div>\n            <div\n              className=\"sc-LzLus kMfiGx\"\n            >\n              <a\n                href=\"/listing/0x0a\"\n                onClick={[Function]}\n              >\n                <div\n                  className=\"sc-LzLut kHgzsQ\"\n                >\n                  <div\n                    className=\"sc-LzLuu dlYJca\"\n                  >\n                    <figure\n                      className=\"sc-LzLvc kKURKB\"\n                    />\n                    <div>\n                      <h1\n                        className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                      >\n                        Block Club Chicago\n                      </h1>\n                      <div\n                        className=\"sc-LzLuZ dApdTb\"\n                      >\n                        Block Club Chicago is a nonprofit, neighborhood news organization dedicated to delivering reliable, nonpartisan and esse...\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    className=\"sc-LzLuA bmgVoy\"\n                  >\n                    <button\n                      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                      size=\"SMALL\"\n                      theme={\n                        Object {\n                          \"invertedButtonBackground\": \"#FFFFFF\",\n                          \"invertedButtonColor\": \"#2B56FF\",\n                        }\n                      }\n                      type=\"button\"\n                    >\n                      View Details\n                    </button>\n                  </div>\n                </div>\n              </a>\n            </div>\n          </div>\n          <div>\n            <div\n              className=\"sc-LzLus kMfiGx\"\n            >\n              <a\n                href=\"/listing/0x0b\"\n                onClick={[Function]}\n              >\n                <div\n                  className=\"sc-LzLut kHgzsQ\"\n                >\n                  <div\n                    className=\"sc-LzLuu dlYJca\"\n                  >\n                    <figure\n                      className=\"sc-LzLvc kKURKB\"\n                    />\n                    <div>\n                      <h1\n                        className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                      >\n                        Cannabis Wire\n                      </h1>\n                      <div\n                        className=\"sc-LzLuZ dApdTb\"\n                      >\n                        Cannabis Wire is an independent publication covering the multi-billion dollar cannabis industry, focusing on investigati...\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    className=\"sc-LzLuA bmgVoy\"\n                  >\n                    <button\n                      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                      size=\"SMALL\"\n                      theme={\n                        Object {\n                          \"invertedButtonBackground\": \"#FFFFFF\",\n                          \"invertedButtonColor\": \"#2B56FF\",\n                        }\n                      }\n                      type=\"button\"\n                    >\n                      View Details\n                    </button>\n                  </div>\n                </div>\n              </a>\n            </div>\n          </div>\n          <div>\n            <div\n              className=\"sc-LzLus kMfiGx\"\n            >\n              <a\n                href=\"/listing/0x0c\"\n                onClick={[Function]}\n              >\n                <div\n                  className=\"sc-LzLut kHgzsQ\"\n                >\n                  <div\n                    className=\"sc-LzLuu dlYJca\"\n                  >\n                    <figure\n                      className=\"sc-LzLvc kKURKB\"\n                    />\n                    <div>\n                      <h1\n                        className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                      >\n                        Documented\n                      </h1>\n                      <div\n                        className=\"sc-LzLuZ dApdTb\"\n                      >\n                        Documented covers New York City’s immigrants and the policies that affect their lives. We are an independent and nonpart...\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    className=\"sc-LzLuA bmgVoy\"\n                  >\n                    <button\n                      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                      size=\"SMALL\"\n                      theme={\n                        Object {\n                          \"invertedButtonBackground\": \"#FFFFFF\",\n                          \"invertedButtonColor\": \"#2B56FF\",\n                        }\n                      }\n                      type=\"button\"\n                    >\n                      View Details\n                    </button>\n                  </div>\n                </div>\n              </a>\n            </div>\n          </div>\n          <div>\n            <div\n              className=\"sc-LzLus kMfiGx\"\n            >\n              <a\n                href=\"/listing/0x0d\"\n                onClick={[Function]}\n              >\n                <div\n                  className=\"sc-LzLut kHgzsQ\"\n                >\n                  <div\n                    className=\"sc-LzLuu dlYJca\"\n                  >\n                    <figure\n                      className=\"sc-LzLvc kKURKB\"\n                    />\n                    <div>\n                      <h1\n                        className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                      >\n                        Block Club Chicago\n                      </h1>\n                      <div\n                        className=\"sc-LzLuZ dApdTb\"\n                      >\n                        Block Club Chicago is a nonprofit, neighborhood news organization dedicated to delivering reliable, nonpartisan and esse...\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    className=\"sc-LzLuA bmgVoy\"\n                  >\n                    <button\n                      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                      size=\"SMALL\"\n                      theme={\n                        Object {\n                          \"invertedButtonBackground\": \"#FFFFFF\",\n                          \"invertedButtonColor\": \"#2B56FF\",\n                        }\n                      }\n                      type=\"button\"\n                    >\n                      View Details\n                    </button>\n                  </div>\n                </div>\n              </a>\n            </div>\n          </div>\n          <div>\n            <div\n              className=\"sc-LzLus kMfiGx\"\n            >\n              <a\n                href=\"/listing/0x0e\"\n                onClick={[Function]}\n              >\n                <div\n                  className=\"sc-LzLut kHgzsQ\"\n                >\n                  <div\n                    className=\"sc-LzLuu dlYJca\"\n                  >\n                    <figure\n                      className=\"sc-LzLvc kKURKB\"\n                    />\n                    <div>\n                      <h1\n                        className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                      >\n                        Cannabis Wire\n                      </h1>\n                      <div\n                        className=\"sc-LzLuZ dApdTb\"\n                      >\n                        Cannabis Wire is an independent publication covering the multi-billion dollar cannabis industry, focusing on investigati...\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    className=\"sc-LzLuA bmgVoy\"\n                  >\n                    <button\n                      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                      size=\"SMALL\"\n                      theme={\n                        Object {\n                          \"invertedButtonBackground\": \"#FFFFFF\",\n                          \"invertedButtonColor\": \"#2B56FF\",\n                        }\n                      }\n                      type=\"button\"\n                    >\n                      View Details\n                    </button>\n                  </div>\n                </div>\n              </a>\n            </div>\n          </div>\n          <div>\n            <div\n              className=\"sc-LzLus kMfiGx\"\n            >\n              <a\n                href=\"/listing/0x0f\"\n                onClick={[Function]}\n              >\n                <div\n                  className=\"sc-LzLut kHgzsQ\"\n                >\n                  <div\n                    className=\"sc-LzLuu dlYJca\"\n                  >\n                    <figure\n                      className=\"sc-LzLvc kKURKB\"\n                    />\n                    <div>\n                      <h1\n                        className=\"sc-fzXfOr sc-LzLuB kexaOI\"\n                      >\n                        Documented\n                      </h1>\n                      <div\n                        className=\"sc-LzLuZ dApdTb\"\n                      >\n                        Documented covers New York City’s immigrants and the policies that affect their lives. We are an independent and nonpart...\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    className=\"sc-LzLuA bmgVoy\"\n                  >\n                    <button\n                      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n                      size=\"SMALL\"\n                      theme={\n                        Object {\n                          \"invertedButtonBackground\": \"#FFFFFF\",\n                          \"invertedButtonColor\": \"#2B56FF\",\n                        }\n                      }\n                      type=\"button\"\n                    >\n                      View Details\n                    </button>\n                  </div>\n                </div>\n              </a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Summary\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Card Grid\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Listing / Listing Summary Card Rejected 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOP eTbWWw\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Listing / Listing Summary\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Card Rejected\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/index.ts",
    "content": "export * from \"./ListingSummaryList\";\nexport * from \"./ListingSummary\";\nexport * from \"./ListingSummaryApproved\";\nexport * from \"./ListingSummaryUnderChallenge\";\nexport * from \"./ListingSummaryReadyToUpdate\";\nexport * from \"./ListingSummaryRejected\";\nexport * from \"./types\";\nexport { StyledListingSummaryList } from \"./styledComponents\";\n"
  },
  {
    "path": "packages/components/src/ListingSummary/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { SectionHeading } from \"../Heading\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport { InvertedButton } from \"../Button\";\nimport { StyledBaseStatus } from \"../ApplicationPhaseStatusLabels\";\n\nexport const StyledListingSummaryList = styled.div`\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0 auto;\n  width: 1200px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    width: auto;\n  }\n`;\n\nexport const StyledListingSummaryContainer = styled.div`\n  margin: 0 30px 48px 0;\n  width: 379px;\n\n  & > a {\n    color: inherit;\n  }\n\n  &:nth-child(3n + 3) {\n    margin-right: 0;\n  }\n\n  ${mediaQueries.MOBILE} {\n    width: auto;\n    margin: 0 16px 31px;\n\n    &:nth-child(3n + 3) {\n      margin-right: 16px;\n    }\n  }\n`;\n\nexport interface StyledListingSummaryProps {\n  hasTopPadding?: boolean;\n}\n\nexport const StyledListingSummary = styled.div<StyledListingSummaryProps>`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  box-shadow: inset 0 1px 0 0 ${colors.accent.CIVIL_GRAY_4}, 0 2px 4px 0 ${colors.accent.CIVIL_GRAY_3};\n  box-sizing: border-box;\n  ${(props: StyledListingSummaryProps) => (props.hasTopPadding ? \"padding-top: 25px;\" : \"\")};\n\n  & ${StyledBaseStatus} {\n    margin: 0 22px 10px;\n  }\n`;\n\nexport const StyledListingSummaryTop = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  display: flex;\n  height: 190px;\n  padding: 0 22px 25px;\n`;\n\nexport const StyledBaseResultsBanner = styled.div`\n  align-items: center;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.primary.BLACK};\n  display: flex;\n  font-size: 14px;\n  justify-content: center;\n  line-height: 18px;\n  padding: 22px 0;\n  margin-bottom: 22px;\n\n  & svg {\n    margin-right: 4px;\n  }\n`;\n\nexport const StyledUnderChallengeBanner = styled(StyledBaseResultsBanner)`\n  background-color: ${colors.primary.BLACK};\n  color: ${colors.basic.WHITE};\n  font-size: 12px;\n  font-weight: 800;\n  letter-spacing: 0.93px;\n  line-height: 15px;\n  padding: 11px 0 8px;\n  margin-bottom: 12px;\n  text-transform: uppercase;\n`;\n\nexport const StyledNotGrantedResultsBanner = styled(StyledBaseResultsBanner)`\n  background-color: ${colors.basic.WHITE};\n`;\n\nexport const StyledRejectedResultsBanner = styled(StyledBaseResultsBanner)`\n  background-color: ${colors.accent.CIVIL_RED_VERY_FADED};\n`;\n\nexport const StyledAppealJudgementContainer = styled.div`\n  align-items: center;\n  display: flex;\n  background: ${colors.primary.BLACK};\n  border-radius: 3px;\n  color: ${colors.basic.WHITE};\n  font-size: 14px;\n  justify-content: center;\n  line-height: 18px;\n  margin: 9px 8px 2px;\n  padding: 15px 0;\n\n  & svg {\n    margin-right: 4px;\n  }\n`;\n\nexport const StyledListingSummarySection = styled.div`\n  background-color: ${colors.accent.CIVIL_BLUE_FADED_2};\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 25px 22px 50px;\n\n  & ${InvertedButton} {\n    font-size: 14px;\n    font-weight: bold;\n    letter-spacing: 1px;\n    line-height: 14px;\n    padding: 14px 0;\n    text-transform: none;\n    text-align: center;\n    width: 100%;\n  }\n`;\n\nexport const StyledListingSummaryNewsroomName = styled(SectionHeading)`\n  color: ${colors.primary.BLACK};\n  line-height: 26px;\n  margin: 0 0 8px;\n`;\n\nexport const StyledListingSummaryDescription = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font: 400 14px/20px ${fonts.SANS_SERIF};\n`;\n\nexport const StyledListingChallengeOrAppealStatement = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 16px;\n  line-height: 26px;\n  margin: 0 0 19px;\n`;\n\nexport const ChallengeResultsContain = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  padding: 25px 22px 50px;\n`;\n\nexport const NewsroomIcon = styled.figure`\n  background: ${colors.accent.CIVIL_GRAY_4};\n  height: 80px;\n  margin: 0 17px 0 0;\n  min-width: 80px;\n\n  img {\n    width: 80px;\n    height: 80px;\n    min-width: 80px;\n    min-height: 80px;\n    object-fit: contain;\n    background: ${colors.basic.WHITE};\n  }\n`;\n\nexport const SmallNewsroomIcon = styled.span`\n  img {\n    width: 52px;\n    height: 52px;\n    min-width: 52px;\n    min-height: 52px;\n    object-fit: contain;\n    background: ${colors.basic.WHITE};\n  }\n`;\n\nexport const MetaRow = styled.div`\n  margin: 16px 0;\n`;\n\nexport const TimestampLabel = styled.div`\n  font-size: 16px;\n  line-height: 16px;\n`;\n\nexport const TimestampValue = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 14px;\n  line-height: 17px;\n  margin-bottom: 4px;\n`;\n\nexport const MetaItemValue = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 16px;\n  line-height: 19px;\n`;\n\nexport const MetaItemLabel = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 15px;\n  margin-bottom: 5px;\n  text-transform: uppercase;\n`;\n\nexport const StyledChallengeResultsHeader = styled.h4`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 16px;\n  line-height: 19px;\n  margin: 0 0 6px;\n`;\n"
  },
  {
    "path": "packages/components/src/ListingSummary/textComponents.tsx",
    "content": "import * as React from \"react\";\n\nexport const ViewDetailsButtonText: React.FunctionComponent = props => {\n  return <>View Details</>;\n};\n\nexport const VoteNowButtonText: React.FunctionComponent = props => {\n  return <>Vote Now</>;\n};\n\nexport const ConfirmVoteNowButtonText: React.FunctionComponent = props => {\n  return <>Confirm Vote Now</>;\n};\n\nexport const RequestAppealNowButtonText: React.FunctionComponent = props => {\n  return <>Request Appeal Now</>;\n};\n\nexport const SubmitAppealChallengeNowButtonText: React.FunctionComponent = props => {\n  return <>Challenge Appeal Now</>;\n};\n\nexport const UpdateStatusButtonText: React.FunctionComponent = props => {\n  return <>Update Status</>;\n};\n\nexport const AmountDepositedLabelText: React.FunctionComponent = props => {\n  return <>Amount Deposited</>;\n};\n\nexport const AmountStakedChallengeLabelText: React.FunctionComponent = props => {\n  return <>Amount staked in this challenge</>;\n};\n\nexport const ChallengeEndedLabelText: React.FunctionComponent = props => {\n  return <>Challenge Ended</>;\n};\n\nexport const ApplicationPhaseEndedLabelText: React.FunctionComponent = props => {\n  return <>Application ended</>;\n};\n\nexport const ApprovedLabelText: React.FunctionComponent = props => {\n  return <>Approved</>;\n};\n\nexport const UnderChallengeBannerText: React.FunctionComponent = props => {\n  return <>This Newsroom Has Been Challenged</>;\n};\n"
  },
  {
    "path": "packages/components/src/ListingSummary/types.ts",
    "content": "import { EthAddress, AppealData, CharterData } from \"@joincivil/typescript-types\";\n\nexport interface ListingChallengeStatusProps {\n  isInApplication?: boolean;\n  canBeChallenged?: boolean;\n  canBeWhitelisted?: boolean;\n  inChallengeCommitVotePhase?: boolean;\n  inChallengeRevealPhase?: boolean;\n  isAwaitingAppealRequest?: boolean;\n  didChallengeSucceed?: boolean;\n  didChallengeOriginallySucceed?: boolean;\n  canResolveChallenge?: boolean;\n  doesChallengeHaveAppeal?: boolean;\n  isAwaitingAppealJudgement?: boolean;\n  isAwaitingAppealChallenge?: boolean;\n  canListingAppealBeResolved?: boolean;\n  isInAppealChallengeCommitPhase?: boolean;\n  isInAppealChallengeRevealPhase?: boolean;\n  isRejected?: boolean;\n  isWhitelisted?: boolean;\n  isUnderChallenge?: boolean;\n  canListingAppealChallengeBeResolved?: boolean;\n}\n\nexport interface ListingSummaryComponentProps extends ListingChallengeStatusProps {\n  listingAddress?: EthAddress;\n  name?: string;\n  charter?: CharterData;\n  listingDetailURL?: string;\n  challengeID?: string;\n  challengeStatementSummary?: string;\n  appeal?: AppealData;\n  appealRequested?: boolean;\n  appealGranted?: boolean;\n  appealStatementSummary?: string;\n  whitelistedTimestamp?: number;\n  appExpiry?: number;\n  commitEndDate?: number;\n  revealEndDate?: number;\n  requestAppealExpiry?: number;\n  appealPhaseExpiry?: number;\n  appealOpenToChallengeExpiry?: number;\n  unstakedDeposit?: string;\n  challengeStake?: string;\n  appealChallengeCommitEndDate?: number;\n  appealChallengeRevealEndDate?: number;\n  appealChallengeID?: string;\n  appealChallengeStatementSummary?: string;\n}\n\nexport interface ListingSummaryAppealChallengeResultsProps {\n  appealChallengeTotalVotes: string;\n  appealChallengeVotesFor: string;\n  appealChallengeVotesAgainst: string;\n  appealChallengePercentFor: string;\n  appealChallengePercentAgainst: string;\n  didAppealChallengeSucceed?: boolean;\n}\n\nexport interface ChallengeOrAppealStatementSummaryProps {\n  challengeID?: string;\n  challengeStatementSummary?: string;\n  appealStatementSummary?: string;\n  appealChallengeID?: string;\n  appealChallengeStatementSummary?: string;\n}\n\nexport interface NewsroomTaglineProps {\n  description?: string;\n}\n"
  },
  {
    "path": "packages/components/src/LoadingIndicator.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingIndicator } from \"./LoadingIndicator\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Pattern Library / Loading / Loading Indicator\", module)\n  .add(\"Default Size (32px x 32px)\", () => {\n    return (\n      <Container>\n        <LoadingIndicator />\n      </Container>\n    );\n  })\n  .add(\"Prop-defined size (100px x 100px)\", () => {\n    return (\n      <Container>\n        <LoadingIndicator height={100} />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/LoadingIndicator.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"./styleConstants\";\n\nexport interface LoadingIndicatorProps {\n  className?: string;\n  inline?: boolean;\n  height?: string | number;\n  width?: string | number;\n}\n\nexport const LoadingIndicator: React.FunctionComponent<LoadingIndicatorProps> = props => {\n  let height = props.height || \"32\";\n\n  if (typeof height === \"number\") {\n    height = height.toString();\n  }\n  let width = props.width || height;\n  if (typeof width === \"number\") {\n    width = width.toString();\n  }\n  const getCenterY = (): string => {\n    return Math.floor(parseInt(height as string, 10) / 2).toString();\n  };\n  const getViewbox = (): string => {\n    return `0 0 ${width} ${height}`;\n  };\n  const getCircleRadius = (): string => {\n    return Math.floor(parseInt(height as string, 10) / 8).toString();\n  };\n  const getAnimatedCircleRadius = (): string => {\n    const circleR = getCircleRadius();\n    return `0; ${circleR}; 0; 0`;\n  };\n  const getCircleOffsetX = (circleNum: number): string => {\n    return Math.floor((parseInt(width as string, 10) / 4) * circleNum).toString();\n  };\n  const getCircleTranslate = (circleNum: number): string => {\n    const translateX = getCircleOffsetX(circleNum + 1);\n    return `translate(${translateX} 0)`;\n  };\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox={getViewbox()}\n      width={width}\n      height={height}\n      fill={colors.accent.CIVIL_TEAL}\n      className={props.className}\n      style={{ verticalAlign: props.inline ? \"middle\" : undefined }}\n    >\n      <circle transform={getCircleTranslate(0)} cx=\"0\" cy={getCenterY()} r=\"0\">\n        <animate\n          attributeName=\"r\"\n          values={getAnimatedCircleRadius()}\n          dur=\"1.2s\"\n          repeatCount=\"indefinite\"\n          begin=\"0\"\n          keyTimes=\"0;0.2;0.7;1\"\n          keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n          calcMode=\"spline\"\n        />\n      </circle>\n      <circle transform={getCircleTranslate(1)} cx=\"0\" cy={getCenterY()} r=\"0\">\n        <animate\n          attributeName=\"r\"\n          values={getAnimatedCircleRadius()}\n          dur=\"1.2s\"\n          repeatCount=\"indefinite\"\n          begin=\"0.3\"\n          keyTimes=\"0;0.2;0.7;1\"\n          keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n          calcMode=\"spline\"\n        />\n      </circle>\n      <circle transform={getCircleTranslate(2)} cx=\"0\" cy={getCenterY()} r=\"0\">\n        <animate\n          attributeName=\"r\"\n          values={getAnimatedCircleRadius()}\n          dur=\"1.2s\"\n          repeatCount=\"indefinite\"\n          begin=\"0.6\"\n          keyTimes=\"0;0.2;0.7;1\"\n          keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n          calcMode=\"spline\"\n        />\n      </circle>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/LoadingMessage.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingMessage } from \"./LoadingMessage\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Pattern Library / Loading / Loading Message\", module)\n  .add(\"Default size (32px x 32px), default text\", () => {\n    return (\n      <Container>\n        <LoadingMessage />\n      </Container>\n    );\n  })\n  .add(\"Prop-defined size (100px x 100px), default text\", () => {\n    return (\n      <Container>\n        <LoadingMessage height={100} />\n      </Container>\n    );\n  })\n  .add(\"Default size (32px x 32px), custom text\", () => {\n    return (\n      <Container>\n        <LoadingMessage>Please wait while we load all the stuff.</LoadingMessage>\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/LoadingMessage.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingIndicator, LoadingIndicatorProps } from \"./LoadingIndicator\";\nimport { colors } from \"./styleConstants\";\n\nconst Wrapper = styled.div`\n  padding-top: 100px;\n  text-align: center;\n  width: 100%;\n`;\nconst Message = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 18px;\n  line-height: 24px;\n  margin: 36px 0 0;\n`;\n\nexport const LoadingMessage: React.FunctionComponent<LoadingIndicatorProps> = props => {\n  const defaultCopy = \"Loading\";\n  return (\n    <Wrapper className={props.className}>\n      <LoadingIndicator width={props.width} height={props.height} />\n      <Message>{props.children || defaultCopy}</Message>\n    </Wrapper>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Message.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { InfoMessage } from \"./Message\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Pattern Library / Notices / Messages (deprecate this?)\", module).add(\"Info Message\", () => {\n  return (\n    <Container>\n      <InfoMessage>\n        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore\n        magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n        consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla\n        pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est\n        laborum.\n      </InfoMessage>\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/Message.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts } from \"./styleConstants\";\n\nexport interface MessageProps {\n  className?: string;\n  text?: string;\n  children?: any;\n}\n\nconst MessageBase = (props: MessageProps) => {\n  return <div className={props.className}>{props.children}</div>;\n};\n\nexport const Message = styled(MessageBase)`\n  margin: 10px 0;\n  padding: 15px;\n  font-size: 15px;\n  font-family: ${fonts.SERIF};\n  color: black;\n`;\n\nexport const InfoMessage = styled(Message)`\n  background-color: ${colors.accent.CIVIL_BLUE_VERY_FADED};\n  color: black;\n`;\n"
  },
  {
    "path": "packages/components/src/MetaMaskLogoButton.tsx",
    "content": "import * as React from \"react\";\nimport { MetaMaskSideIcon, Button, buttonSizes, TransactionButtonInnerProps } from \".\";\nimport styled from \"styled-components\";\n\nconst B = styled(Button)`\n  position: relative;\n  display: flex;\n  align-items: center;\n  height: 46px;\n  padding-left: 75px;\n`;\n\nconst ImgWrapper = styled.div`\n  width: 44px;\n  height: 44px;\n  background-color: #ffffff;\n  position: absolute;\n  top: 1px;\n  left: 1px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n`;\n\nexport const MetaMaskLogoButton = (props: TransactionButtonInnerProps): JSX.Element => {\n  return (\n    <B {...props} size={buttonSizes.MEDIUM_WIDE}>\n      <ImgWrapper>\n        <MetaMaskSideIcon />\n      </ImgWrapper>\n      {props.children}\n    </B>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/MetaMaskModal.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { MetaMaskModal } from \"./MetaMaskModal\";\nimport { ModalHeading } from \".\";\nimport styled from \"styled-components\";\n\nconst func = () => {\n  return;\n};\n\nstoriesOf(\"Common / Ethereum / MetaMaskModal\", module)\n  .add(\"preMetaMaskModal\", () => {\n    return process.env.NODE_ENV !== \"test\" ? (\n      <MetaMaskModal cancelTransaction={func} startTransaction={func} waiting={false}>\n        <ModalHeading>test</ModalHeading>\n      </MetaMaskModal>\n    ) : (\n      <div> test </div>\n    );\n  })\n  .add(\"waitingMetaMaskModal\", () => {\n    return process.env.NODE_ENV !== \"test\" ? (\n      <MetaMaskModal cancelTransaction={func} startTransaction={func} waiting={true}>\n        <ModalHeading>test</ModalHeading>\n      </MetaMaskModal>\n    ) : (\n      <div> test </div>\n    );\n  })\n  .add(\"deniedMetaMaskModal\", () => {\n    return process.env.NODE_ENV !== \"test\" ? (\n      <MetaMaskModal\n        denialText={\"something something something\"}\n        cancelTransaction={func}\n        startTransaction={func}\n        waiting={false}\n        denied={true}\n      >\n        <ModalHeading>test</ModalHeading>\n      </MetaMaskModal>\n    ) : (\n      <div> test </div>\n    );\n  })\n  .add(\"SignatureMetaMaskModal\", () => {\n    return process.env.NODE_ENV !== \"test\" ? (\n      <MetaMaskModal cancelTransaction={func} startTransaction={func} waiting={false} signing={true}>\n        <ModalHeading>test</ModalHeading>\n      </MetaMaskModal>\n    ) : (\n      <div> test </div>\n    );\n  })\n  .add(\"SignatureMetaMaskModal waiting\", () => {\n    return process.env.NODE_ENV !== \"test\" ? (\n      <MetaMaskModal cancelTransaction={func} startTransaction={func} waiting={true} signing={true}>\n        <ModalHeading>test</ModalHeading>\n      </MetaMaskModal>\n    ) : (\n      <div> test </div>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/MetaMaskModal.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  Modal,\n  Button,\n  buttonSizes,\n  BorderlessButton,\n  ClipLoader,\n  TransactionButtonNoModal,\n  Transaction,\n  MetaMaskSideIcon,\n  MetaMaskLogoButton,\n} from \".\";\nimport metaMaskModalUrl from \"./images/img-metamask-modalconfirm@2x.png\";\nimport confirmButton from \"./images/img-metamask-confirm@2x.png\";\nimport signImage from \"./images/img-metamaskmodal-new-signature.png\";\n\nconst ModalP = styled.p`\n  font-size: 16px;\n  color: #5f5f5f;\n  line-height: 26px;\n\n  && {\n    margin: 16px 0;\n  }\n`;\n\nconst HalfPWrapper = styled.div`\n  width: 55%;\n`;\n\nconst MainImg = styled.img`\n  width: 40%;\n  height: 240px;\n  object-fit: cover;\n`;\n\nexport interface ContentSectionWrapperProps {\n  row?: boolean;\n}\n\nexport const MetaMaskStepCounter = styled.div`\n  font-weight: 600;\n`;\n\nconst ContentSectionWrapper = styled.div`\n  display: flex;\n  flex-direction: ${(props: ContentSectionWrapperProps) => (props.row ? \"row\" : \"column\")};\n  justify-content: space-between;\n  margin-top: -20px;\n`;\n\nconst IB = styled(BorderlessButton)`\n  font-weight: 400;\n  margin-right: 30px;\n`;\n\nconst ImgWrapperSmall = styled.span`\n  border-radius: 2px;\n  padding: 4px 5px 1px 5px;\n  border: 1px solid #dddddd;\n  display: inline-blocks;\n  vertical-align: middle;\n`;\n\nconst ImgWrapperFull = styled.div`\n  text-align: center;\n  line-height: 0;\n`;\n\nconst ButtonContainer = styled.div`\n  display: flex;\n  justify-content: flex-end;\n  padding: 19px 24px;\n  margin: 0 -25px;\n  border-top: 1px solid #dddddd;\n  margin-top: -1px;\n`;\n\nconst WaitingButton = styled.div`\n  border: 1px solid #dddddd;\n  padding: 12px 23px;\n  color: #5f5f5f;\n  display: flex;\n  align-items: center;\n  justify-content: space-around;\n`;\n\nconst SpanWithMargin = styled.span`\n  margin-right: 10px;\n  font-weight: 600;\n  font-size: 14px;\n`;\n\nexport interface MetaMaskModalProps {\n  waiting?: boolean;\n  alert?: boolean;\n  errored?: boolean;\n  denied?: boolean;\n  signing?: boolean;\n  ipfsPost?: boolean;\n  bodyText?: string;\n  denialText?: string;\n  errorText?: string;\n  restartTransactions?: Transaction[];\n  cancelTransaction?(): void;\n  startTransaction?(): void;\n}\n\nexport const MetaMaskModal: React.FunctionComponent<MetaMaskModalProps> = props => {\n  let buttonSection;\n  if (props.ipfsPost && !props.restartTransactions) {\n  } else if (props.alert) {\n    buttonSection = (\n      <ButtonContainer>\n        <Button onClick={props.cancelTransaction} size={buttonSizes.MEDIUM}>\n          OK\n        </Button>\n      </ButtonContainer>\n    );\n  } else if (!props.waiting) {\n    buttonSection = (\n      <ButtonContainer>\n        <IB onClick={props.cancelTransaction}>Cancel</IB>\n        {props.restartTransactions ? (\n          <TransactionButtonNoModal transactions={props.restartTransactions!} Button={MetaMaskLogoButton}>\n            {\" \"}\n            Try Again{\" \"}\n          </TransactionButtonNoModal>\n        ) : (\n          <MetaMaskLogoButton onClick={props.startTransaction!}>Open MetaMask</MetaMaskLogoButton>\n        )}\n      </ButtonContainer>\n    );\n  } else {\n    buttonSection = (\n      <ButtonContainer>\n        <WaitingButton>\n          <SpanWithMargin>Waiting for {props.signing ? \"signature\" : \"confirmation\"}</SpanWithMargin>\n          <ClipLoader size={19} />\n        </WaitingButton>\n      </ButtonContainer>\n    );\n  }\n  let paragraph;\n  if (props.ipfsPost) {\n    paragraph = <ModalP>Your statement is being uploaded to IPFS</ModalP>;\n  } else if (props.signing) {\n    paragraph = !props.waiting ? (\n      <ModalP>{props.bodyText || \"MetaMask will open a new window and request a signature.\"}</ModalP>\n    ) : (\n      <ModalP>\n        You need to sign this message in your wallet. MetaMask will open a new window to confirm. If you don't see it,\n        please click the icon{\" \"}\n        <ImgWrapperSmall>\n          <MetaMaskSideIcon />\n        </ImgWrapperSmall>{\" \"}\n        in the browser bar.\n      </ModalP>\n    );\n  } else {\n    paragraph = !props.waiting ? (\n      <ModalP>\n        {props.bodyText || \"MetaMask will open a new window for you to confirm this transaction with your wallet.\"}\n      </ModalP>\n    ) : (\n      <ModalP>\n        This transaction needs to be confirmed in your wallet. MetaMask will open a new window for you to confirm. If\n        you don't see it, please click the MetaMask icon{\" \"}\n        <ImgWrapperSmall>\n          <MetaMaskSideIcon />\n        </ImgWrapperSmall>{\" \"}\n        in your browser bar.\n      </ModalP>\n    );\n  }\n\n  if (props.denied) {\n    paragraph = (\n      <HalfPWrapper>\n        <ModalP>You have canceled this transaction in your wallet.</ModalP>\n        {!!props.denialText && <ModalP>{props.denialText}</ModalP>}\n      </HalfPWrapper>\n    );\n  }\n  if (props.errored) {\n    paragraph = (\n      <HalfPWrapper>\n        <ModalP>There was an error executing this transaction.</ModalP>\n        {!!props.errorText && (\n          <ModalP>\n            <code>{props.errorText}</code>\n          </ModalP>\n        )}\n      </HalfPWrapper>\n    );\n  }\n\n  let image;\n  if (props.ipfsPost || props.alert) {\n    image = undefined;\n  } else if (props.denied || props.errored) {\n    image = <MainImg src={confirmButton} />;\n  } else {\n    image = (\n      <ImgWrapperFull>\n        <img width={512} height={248} src={props.signing ? signImage : metaMaskModalUrl} />\n      </ImgWrapperFull>\n    );\n  }\n\n  return (\n    <Modal width={560} padding={\"8px 26px 0 26px\"}>\n      {props.children}\n      <ContentSectionWrapper row={props.denied || props.errored}>\n        {paragraph}\n        {image}\n      </ContentSectionWrapper>\n      {buttonSection}\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Modal.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Modal } from \"./Modal\";\nimport { FullScreenModal } from \"./FullscreenModal\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 100vh;\n  height: 100vw;\n  background-color: #fff;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Pattern Library / Modals\", module)\n  .add(\"Modal\", () => {\n    return (\n      <Container>\n        <p>Some good stuff was already on the page which is pretty exciting</p>\n        {process.env.NODE_ENV !== \"test\" && (\n          <Modal>\n            <h3>Hello</h3>\n            <p>lorem ipsum whatever you know what i mean. It gets pretty long because thats more useful</p>\n          </Modal>\n        )}\n      </Container>\n    );\n  })\n  .add(\"Fullscreen Modal\", () => {\n    const handleClose = () => {\n      console.log(\"Modal closed\");\n    };\n    return (\n      <Container>\n        <p>Some good stuff was already on the page which is pretty exciting</p>\n        {process.env.NODE_ENV !== \"test\" && (\n          <FullScreenModal open={true} handleClose={handleClose}>\n            <h3>Hello</h3>\n            <p>lorem ipsum whatever you know what i mean. It gets pretty long because thats more useful</p>\n          </FullScreenModal>\n        )}\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Modal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport styled from \"styled-components\";\nimport { mediaQueries } from \"./styleConstants\";\nimport { RENDER_CONTEXT } from \"./context\";\n\ninterface ToggleDisplayEl {\n  visible: boolean;\n}\ninterface TextAlignProps {\n  textAlign?: string | undefined;\n}\n\nconst ModalOuter = styled.div<ToggleDisplayEl & TextAlignProps>`\n  position: fixed;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  background-color: rgba(255, 255, 255, 0.7);\n  display: flex;\n  display: ${props => (props.visible ? \"flex\" : \"none\")};\n  justify-content: center;\n  align-items: center;\n  text-align: ${props => props.textAlign || \"left\"};\n  z-index: 100001; // to beat wp tools\n  ${props =>\n    props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n    `\n    display: block;\n    text-align: center;\n  `}\n`;\n\ninterface ModalInnerProps {\n  width?: number;\n  padding?: string;\n  fullScreen?: boolean;\n}\n\nconst ModalInner = styled.div`\n  box-shadow: 0px 0px 20px 5px rgba(100, 100, 100, 0.4);\n  max-width: ${(props: ModalInnerProps) => props.width || 400}px;\n  padding: ${(props: ModalInnerProps) => props.padding || \"35px 35px 50px 35px\"};\n  background: #fff;\n  ${(props: ModalInnerProps): string => {\n    if (props.fullScreen) {\n      return \"max-width: 100%; width: 100%; height: 100%; overflow: auto;\";\n    }\n    return \"\";\n  }} ${mediaQueries.MOBILE} {\n    max-height: 100%;\n    max-width: 100%;\n    overflow: auto;\n    padding-top: 15px;\n    padding-right: 10px;\n    padding-left: 10px;\n\n    ${props =>\n      props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n      `\n      max-height: none;\n      padding: 16px;\n      display: inline-block;\n      margin: 32px auto 16px;\n    `}\n  }\n`;\n\nexport interface ModalPropsAndState {\n  visible?: boolean;\n  textAlign?: string;\n  width?: number;\n  padding?: string;\n  fullScreen?: boolean;\n  onOuterClicked?(): void;\n}\n\nexport class Modal extends React.Component<ModalPropsAndState, ModalPropsAndState> {\n  // tslint:disable-next-line\n  private static getDerivedStateFromProps(props: ModalPropsAndState, state: ModalPropsAndState): any | null {\n    if (typeof props.visible !== \"undefined\") {\n      const visible = props.visible;\n      return { visible };\n    }\n    return null;\n  }\n\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public constructor(props: ModalPropsAndState) {\n    super(props);\n\n    this.state = {\n      visible: this.props.visible || true,\n    };\n  }\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <ModalOuter\n        data-iframe-height\n        visible={this.state.visible!}\n        textAlign={this.props.textAlign}\n        onClick={() => {\n          if (this.props.onOuterClicked) {\n            this.props.onOuterClicked();\n          }\n        }}\n      >\n        <ModalInner\n          data-iframe-height\n          width={this.props.width}\n          fullScreen={this.props.fullScreen}\n          padding={this.props.padding}\n          onClick={(ev: any) => {\n            ev.stopPropagation();\n          }}\n        >\n          {this.props.children}\n        </ModalInner>\n      </ModalOuter>,\n      this.bucket,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ModalContent.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ModalHeading, ModalContent } from \"./ModalContent\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Pattern Library / Modals\", module).add(\"content\", () => {\n  return (\n    <Container>\n      <ModalHeading>I'm a Heading</ModalHeading>\n      <ModalContent>I'm a paragraph of some sorts</ModalContent>\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/ModalContent.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts, mediaQueries } from \"./styleConstants\";\n\nexport const ModalHeading = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 600;\n  font-size: 20px;\n  line-height: 30px;\n\n  && {\n    margin: 16px 0;\n  }\n`;\n\nexport const ModalContent = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-weight: 200;\n  font-size: 12px;\n  line-height: 24px;\n  ${mediaQueries.MOBILE} {\n    margin-right: 10px;\n    margin-left: 10px;\n  }\n`;\n\nexport const ModalContentInsetContainer = styled.div`\n  background: ${colors.accent.CIVIL_GRAY_4};\n  margin: 24px -35px 32px;\n  padding: 20px 40px;\n  text-align: left;\n\n  & ${ModalContent} {\n    font-size: 16px;\n    line-height: 26px;\n  }\n`;\n\nexport const ModalStepLabel = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 14px;\n  line-height: 17px;\n  margin: 0 0 35px;\n  text-transform: uppercase;\n`;\n\nexport const ModalUnorderedList = styled.ol`\n  display: flex;\n  flex-flow: column;\n  font-size: 14px;\n  line-height: 19px;\n`;\n\nexport const ModalOrderedList = styled.ol`\n  align-items: center;\n  display: flex;\n  flex-flow: column;\n  font-size: 14px;\n  line-height: 19px;\n`;\n\nexport interface ModalListItemProps {\n  type?: string;\n}\n\nexport interface ModalListItemColorsProps {\n  [index: string]: [string, string, string];\n}\n\nexport enum ModalListItemTypes {\n  FADED = \"faded\",\n  STRONG = \"strong\",\n}\n\nexport const StyledModalErrorContainer = styled.div`\n  align-items: center;\n  display: flex;\n  background: ${colors.accent.CIVIL_RED_VERY_FADED};\n  border-radius: 50%;\n  justify-content: center;\n  height: 100px;\n  margin: 0 auto;\n  text-align: center;\n  width: 100px;\n`;\n\nconst ModalListItemStyles: ModalListItemColorsProps = {\n  [ModalListItemTypes.FADED]: [colors.accent.CIVIL_GRAY_3, \"italic\", \"normal\"],\n  [ModalListItemTypes.STRONG]: [colors.primary.CIVIL_BLUE_1, \"normal\", \"bold\"],\n};\n\nexport const ModalListItem = styled.li<ModalListItemProps>`\n  color: ${props => (props.type && ModalListItemStyles[props.type][0]) || colors.primary.CIVIL_GRAY_2};\n  font-style: ${props => (props.type && ModalListItemStyles[props.type][1]) || \"normal\"};\n  font-weight: ${props => (props.type && ModalListItemStyles[props.type][2]) || \"normal\"};\n  margin: 0 0 5px;\n  white-space: nowrap;\n`;\n"
  },
  {
    "path": "packages/components/src/NavBar/__snapshots__/NavBar.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Nav / Nav Bar Global Nav 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMlD cAkPKJ\"\n    >\n      <div\n        className=\"sc-LzMlE hmDUDX\"\n      >\n        <div\n          className=\"sc-LzMlG eFJFvs\"\n        >\n          <div\n            className=\"sc-LzMlF gsvjTY\"\n          >\n            <a\n              href=\"https://civil.co\"\n            >\n              <svg\n                className=\"sc-fzXfPf hHlBzH\"\n                height={21}\n                viewBox=\"0 0 72 21\"\n                width={72}\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <g\n                  fill=\"#FFFFFF\"\n                  fillRule=\"evenodd\"\n                  transform=\"translate(0 .457)\"\n                >\n                  <path\n                    d=\"M.5 10c0-5.76 4.357-10 9.856-10 3.58 0 6.069 1.414 7.729 3.77L15.75 5.445c-1.297-1.728-2.905-2.67-5.499-2.67-3.838 0-6.64 3.089-6.64 7.225 0 4.24 2.853 7.225 6.744 7.225 2.49 0 4.357-.942 5.81-2.827L18.5 16.02C16.529 18.691 13.987 20 10.252 20 4.805 20 .5 15.76.5 10M22.5 20h3V1h-3zM29 1h3.382l5.782 13.228L43.782 1H47l-8.782 20h-.163zM50.5 20h3V1h-3zM59.5 1h3.175v16.344H71.5V20h-12z\"\n                  />\n                </g>\n              </svg>\n            </a>\n          </div>\n          <div\n            className=\"sc-LzMCd HTmYL\"\n          >\n            <div\n              className=\"sc-LzMCi gqhwcV\"\n            >\n              <span\n                className=\"sc-LzMCj eyrZOv\"\n              >\n                <a\n                  href=\"/registry\"\n                  onClick={[Function]}\n                >\n                  Registry\n                </a>\n                <div\n                  className=\"sc-LzMCH jUuLga\"\n                />\n              </span>\n              <div\n                className=\"sc-LzMCI fDqpnd\"\n              >\n                <a\n                  href=\"/registry\"\n                  onClick={[Function]}\n                >\n                  Registry Home\n                </a>\n                <a\n                  href=\"/parameterizer\"\n                  onClick={[Function]}\n                >\n                  Registry Parameters\n                </a>\n                <a\n                  href=\"/contract-addresses\"\n                  onClick={[Function]}\n                >\n                  Contract Addresses\n                </a>\n              </div>\n            </div>\n            <a\n              href=\"https://civil.co/constitution/\"\n            >\n              Constitution\n            </a>\n            <a\n              href=\"https://civilfound.org/\"\n            >\n              Foundation\n            </a>\n            <a\n              href=\"https://help.civil.co/\"\n            >\n              Help\n            </a>\n          </div>\n          <div\n            className=\"sc-LzMCe iirGx\"\n          >\n            <div\n              onClick={[Function]}\n            >\n              <svg\n                height=\"42\"\n                viewBox=\"0 0 42 42\"\n                width=\"42\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <path\n                  d=\"M12 26h18v-2H12v2zm0-8h18v-2H12v2z\"\n                  fill=\"#FFFFFF\"\n                  fillRule=\"evenodd\"\n                />\n              </svg>\n            </div>\n          </div>\n          <div\n            className=\"sc-LzMCf fTogel\"\n          />\n        </div>\n        <div\n          className=\"sc-LzMlH iZpHzR\"\n        >\n          <button\n            className=\"sc-fzXfOu sc-fzXfOy sc-LzMBt fEtPzJ\"\n            onClick={[Function]}\n            theme={\n              Object {\n                \"darkButtonBackground\": \"#000000\",\n                \"darkButtonColor\": \"#FFFFFF\",\n                \"darkButtonHoverBackground\": \"#5A5653\",\n                \"darkButtonHoverColor\": \"#FFFFFF\",\n                \"darkButtonTextTransform\": \"none\",\n              }\n            }\n            type=\"button\"\n          >\n            Log In\n          </button>\n          <button\n            className=\"sc-fzXfOu sc-fzXfOy sc-LzMBu ijbQqM\"\n            onClick={[Function]}\n            theme={\n              Object {\n                \"darkButtonBackground\": \"#000000\",\n                \"darkButtonColor\": \"#FFFFFF\",\n                \"darkButtonHoverBackground\": \"#5A5653\",\n                \"darkButtonHoverColor\": \"#FFFFFF\",\n                \"darkButtonTextTransform\": \"none\",\n              }\n            }\n            type=\"button\"\n          >\n            Sign Up\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Nav / Nav Bar\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Global Nav\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Nav / Nav Bar Nav Error Bar 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMCJ hixvpK\"\n    >\n      Please Switch To Rinkeby Testnet\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Nav / Nav Bar\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Nav Error Bar\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Notice/Notice.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport styled from \"styled-components\";\nimport * as React from \"react\";\nimport { Notice, NoticeTypes } from \"./index\";\nimport { GrantSubmitIcon } from \"../icons\";\n\nconst Container = styled.div`\n  > div {\n    margin: 20px;\n  }\n`;\n\nstoriesOf(\"Pattern Library / Notices\", module)\n  .add(\"Notice - All types\", () => (\n    <Container>\n      <Notice type={NoticeTypes.INFO}>This is an info notice</Notice>\n      <Notice type={NoticeTypes.ERROR}>This is an error notice</Notice>\n      <Notice type={NoticeTypes.ALERT}>This is an alert notice</Notice>\n      <Notice type={NoticeTypes.ATTENTION}>This is an attention notice</Notice>\n    </Container>\n  ))\n  .add(\"Info\", () => {\n    return <Notice type={NoticeTypes.INFO}>This is an info notice</Notice>;\n  })\n  .add(\"Error\", () => {\n    return <Notice type={NoticeTypes.ERROR}>This is an error notice</Notice>;\n  })\n  .add(\"Alert\", () => {\n    return <Notice type={NoticeTypes.ALERT}>This is an alert notice</Notice>;\n  })\n  .add(\"Attention\", () => {\n    return <Notice type={NoticeTypes.ATTENTION}>This is an attention notice</Notice>;\n  })\n  .add(\"foundation action\", () => {\n    return (\n      <Notice type={NoticeTypes.FOUNDATION_ACTION} icon={<GrantSubmitIcon width={48} height={48} />}>\n        {\" \"}\n        This is a foundation action notice\n      </Notice>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Notice/__snapshots__/Notice.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Notices Alert 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMml gBvHnq\"\n      type={2}\n    >\n      <div\n        className=\"sc-LzMmm hiBtBT\"\n      />\n      <div\n        className=\"sc-LzMmn ctwvws\"\n      >\n        This is an alert notice\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Alert\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Notice\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        type\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            2\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    This is an alert notice\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Notice\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Notice\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Notices Attention 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMml bZLWDe\"\n      type={3}\n    >\n      <div\n        className=\"sc-LzMmm hiBtBT\"\n      />\n      <div\n        className=\"sc-LzMmn ctwvws\"\n      >\n        This is an attention notice\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Attention\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Notice\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        type\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            3\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    This is an attention notice\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Notice\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Notice\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Notices Error 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMml bDLvoM\"\n      type={1}\n    >\n      <div\n        className=\"sc-LzMmm hiBtBT\"\n      >\n        <svg\n          height=\"28\"\n          viewBox=\"0 0 28 28\"\n          width=\"28\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            fill=\"none\"\n            fillRule=\"evenodd\"\n            stroke=\"none\"\n            strokeWidth=\"1\"\n            transform=\"translate(-2, -2)\"\n          >\n            <polygon\n              points=\"0 0 32 0 32 32 0 32\"\n            />\n            <path\n              d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n              fill=\"#F2524A\"\n              fillRule=\"nonzero\"\n            />\n          </g>\n        </svg>\n      </div>\n      <div\n        className=\"sc-LzMmn ctwvws\"\n      >\n        This is an error notice\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Error\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Notice\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        type\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            1\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    This is an error notice\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Notice\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Notice\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Notices Info 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMml cwOIuq\"\n      type={0}\n    >\n      <div\n        className=\"sc-LzMmm hiBtBT\"\n      />\n      <div\n        className=\"sc-LzMmn ctwvws\"\n      >\n        This is an info notice\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Info\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Notice\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        type\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            0\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    This is an info notice\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Notice\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Notice\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Notices Notice - All types 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOV EEGWV\"\n    >\n      <div\n        className=\"sc-LzMml cwOIuq\"\n        type={0}\n      >\n        <div\n          className=\"sc-LzMmm hiBtBT\"\n        />\n        <div\n          className=\"sc-LzMmn ctwvws\"\n        >\n          This is an info notice\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMml bDLvoM\"\n        type={1}\n      >\n        <div\n          className=\"sc-LzMmm hiBtBT\"\n        >\n          <svg\n            height=\"28\"\n            viewBox=\"0 0 28 28\"\n            width=\"28\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"none\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n              transform=\"translate(-2, -2)\"\n            >\n              <polygon\n                points=\"0 0 32 0 32 32 0 32\"\n              />\n              <path\n                d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n                fill=\"#F2524A\"\n                fillRule=\"nonzero\"\n              />\n            </g>\n          </svg>\n        </div>\n        <div\n          className=\"sc-LzMmn ctwvws\"\n        >\n          This is an error notice\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMml gBvHnq\"\n        type={2}\n      >\n        <div\n          className=\"sc-LzMmm hiBtBT\"\n        />\n        <div\n          className=\"sc-LzMmn ctwvws\"\n        >\n          This is an alert notice\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMml bZLWDe\"\n        type={3}\n      >\n        <div\n          className=\"sc-LzMmm hiBtBT\"\n        />\n        <div\n          className=\"sc-LzMmn ctwvws\"\n        >\n          This is an attention notice\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Notice - All types\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Notice\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          type\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              0\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      This is an info notice\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Notice\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Notice\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          type\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              1\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      This is an error notice\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Notice\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Notice\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          type\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              2\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      This is an alert notice\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Notice\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Notice\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          type\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              3\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      This is an attention notice\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Notice\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Notice\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Notices foundation action 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMml hfeYaH\"\n      type={4}\n    >\n      <div\n        className=\"sc-LzMmm hiBtBT\"\n      >\n        <svg\n          height=\"48\"\n          viewBox=\"0 0 82 82\"\n          width=\"48\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            fill=\"none\"\n            fillRule=\"evenodd\"\n          >\n            <circle\n              cx=\"41\"\n              cy=\"41\"\n              fill=\"#90E8D3\"\n              r=\"41\"\n            />\n            <g\n              fill=\"#000\"\n              transform=\"translate(11 10)\"\n            >\n              <path\n                d=\"M2.86742813,19.5094459 L57.2076375,19.5094459 C57.6222497,19.5093254 57.9875374,19.238741 58.1058429,18.8441062 C58.2241484,18.4494714 58.0673687,18.0245305 57.7203375,17.7992193 L30.5502281,0.151842414 C30.238919,-0.050912319 29.8361467,-0.050912319 29.5248375,0.151842414 L2.3547375,17.7992193 C2.00770626,18.0245305 1.85092658,18.4494714 1.9692321,18.8441062 C2.08753763,19.238741 2.45282526,19.5093254 2.8674375,19.5094459 L2.86742813,19.5094459 Z M30.0375,2.0434531 L54.0609375,17.6473769 L6.0140625,17.6473769 L30.0375,2.0434531 Z\"\n                fillRule=\"nonzero\"\n              />\n              <path\n                d=\"M30.0375,8.31748034 C28.0624928,8.31785569 26.4616926,9.90808967 26.4619032,11.8694761 C26.4621137,13.8308626 28.0632553,15.4207576 30.0382625,15.4207148 C32.0132697,15.4206719 33.6143413,13.8307075 33.6144656,11.869321 C33.6124137,9.90836017 32.0120789,8.31926622 30.0375,8.31748034 L30.0375,8.31748034 Z M30.0375,13.5586366 C29.097967,13.5582612 28.3366081,12.8016113 28.3369032,11.8685578 C28.3371983,10.9355043 29.0990356,10.1793294 30.0385687,10.1795402 C30.9781017,10.1797509 31.739595,10.9362675 31.7394656,11.869321 C31.7385708,12.8022952 30.9769535,13.55826 30.0375,13.5586552 L30.0375,13.5586366 Z\"\n                fillRule=\"nonzero\"\n              />\n              <path\n                d=\"M7.99712813 22.8371679L7.99712813 48.8102369C7.99712813 49.324433 8.41686117 49.7412714 8.93462813 49.7412714 9.45239508 49.7412714 9.87212813 49.324433 9.87212813 48.8102369L9.87212813 22.8371679C9.87212813 22.3229718 9.45239508 21.9061334 8.93462813 21.9061334 8.41686117 21.9061334 7.99712813 22.3229718 7.99712813 22.8371679zM22.4322469 22.8371679L22.4322469 48.8102369C22.4322469 49.324433 22.8519799 49.7412714 23.3697469 49.7412714 23.8875138 49.7412714 24.3072469 49.324433 24.3072469 48.8102369L24.3072469 22.8371679C24.3072469 22.3229718 23.8875138 21.9061334 23.3697469 21.9061334 22.8519799 21.9061334 22.4322469 22.3229718 22.4322469 22.8371679zM36.8664563 22.8371679L36.8664563 48.8102369C36.8664563 49.324433 37.2861893 49.7412714 37.8039563 49.7412714 38.3217232 49.7412714 38.7414563 49.324433 38.7414563 48.8102369L38.7414563 22.8371679C38.7414563 22.3229718 38.3217232 21.9061334 37.8039563 21.9061334 37.2861893 21.9061334 36.8664563 22.3229718 36.8664563 22.8371679zM51.301575 22.8371679L51.301575 48.8102369C51.301575 49.324433 51.721308 49.7412714 52.239075 49.7412714 52.756842 49.7412714 53.176575 49.324433 53.176575 48.8102369L53.176575 22.8371679C53.176575 22.3229718 52.756842 21.9061334 52.239075 21.9061334 51.721308 21.9061334 51.301575 22.3229718 51.301575 22.8371679zM1.50695625 54L58.4930437 54C59.0108107 54 59.4305437 53.5831617 59.4305437 53.0689655 59.4305437 52.5547694 59.0108107 52.137931 58.4930437 52.137931L1.50695625 52.137931C.989189297 52.137931.56945625 52.5547694.56945625 53.0689655.56945625 53.5831617.989189297 54 1.50695625 54z\"\n              />\n            </g>\n          </g>\n        </svg>\n      </div>\n      <div\n        className=\"sc-LzMmn ctwvws\"\n      >\n         \n        This is a foundation action notice\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            foundation action\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Notice\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        type\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            4\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        icon\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            &lt;function (props) {\n    var width = (props.width || 82).toString();\n    var height = (props.height || 82).toString();\n    return (React.createElement(\"svg\", { width: width, height: height, viewBox: \"0 0 82 82\", xmlns: \"http://www.w3.org/2000/svg\" },\n        React.createElement(\"g\", { fill: \"none\", fillRule: \"evenodd\" },\n            React.createElement(\"circle\", { cx: \"41\", cy: \"41\", r: \"41\", fill: \"#90E8D3\" }),\n            React.createElement(\"g\", { fill: \"#000\", transform: \"translate(11 10)\" },\n                React.createElement(\"path\", { fillRule: \"nonzero\", d: \"M2.86742813,19.5094459 L57.2076375,19.5094459 C57.6222497,19.5093254 57.9875374,19.238741 58.1058429,18.8441062 C58.2241484,18.4494714 58.0673687,18.0245305 57.7203375,17.7992193 L30.5502281,0.151842414 C30.238919,-0.050912319 29.8361467,-0.050912319 29.5248375,0.151842414 L2.3547375,17.7992193 C2.00770626,18.0245305 1.85092658,18.4494714 1.9692321,18.8441062 C2.08753763,19.238741 2.45282526,19.5093254 2.8674375,19.5094459 L2.86742813,19.5094459 Z M30.0375,2.0434531 L54.0609375,17.6473769 L6.0140625,17.6473769 L30.0375,2.0434531 Z\" }),\n                React.createElement(\"path\", { fillRule: \"nonzero\", d: \"M30.0375,8.31748034 C28.0624928,8.31785569 26.4616926,9.90808967 26.4619032,11.8694761 C26.4621137,13.8308626 28.0632553,15.4207576 30.0382625,15.4207148 C32.0132697,15.4206719 33.6143413,13.8307075 33.6144656,11.869321 C33.6124137,9.90836017 32.0120789,8.31926622 30.0375,8.31748034 L30.0375,8.31748034 Z M30.0375,13.5586366 C29.097967,13.5582612 28.3366081,12.8016113 28.3369032,11.8685578 C28.3371983,10.9355043 29.0990356,10.1793294 30.0385687,10.1795402 C30.9781017,10.1797509 31.739595,10.9362675 31.7394656,11.869321 C31.7385708,12.8022952 30.9769535,13.55826 30.0375,13.5586552 L30.0375,13.5586366 Z\" }),\n                React.createElement(\"path\", { d: \"M7.99712813 22.8371679L7.99712813 48.8102369C7.99712813 49.324433 8.41686117 49.7412714 8.93462813 49.7412714 9.45239508 49.7412714 9.87212813 49.324433 9.87212813 48.8102369L9.87212813 22.8371679C9.87212813 22.3229718 9.45239508 21.9061334 8.93462813 21.9061334 8.41686117 21.9061334 7.99712813 22.3229718 7.99712813 22.8371679zM22.4322469 22.8371679L22.4322469 48.8102369C22.4322469 49.324433 22.8519799 49.7412714 23.3697469 49.7412714 23.8875138 49.7412714 24.3072469 49.324433 24.3072469 48.8102369L24.3072469 22.8371679C24.3072469 22.3229718 23.8875138 21.9061334 23.3697469 21.9061334 22.8519799 21.9061334 22.4322469 22.3229718 22.4322469 22.8371679zM36.8664563 22.8371679L36.8664563 48.8102369C36.8664563 49.324433 37.2861893 49.7412714 37.8039563 49.7412714 38.3217232 49.7412714 38.7414563 49.324433 38.7414563 48.8102369L38.7414563 22.8371679C38.7414563 22.3229718 38.3217232 21.9061334 37.8039563 21.9061334 37.2861893 21.9061334 36.8664563 22.3229718 36.8664563 22.8371679zM51.301575 22.8371679L51.301575 48.8102369C51.301575 49.324433 51.721308 49.7412714 52.239075 49.7412714 52.756842 49.7412714 53.176575 49.324433 53.176575 48.8102369L53.176575 22.8371679C53.176575 22.3229718 52.756842 21.9061334 52.239075 21.9061334 51.721308 21.9061334 51.301575 22.3229718 51.301575 22.8371679zM1.50695625 54L58.4930437 54C59.0108107 54 59.4305437 53.5831617 59.4305437 53.0689655 59.4305437 52.5547694 59.0108107 52.137931 58.4930437 52.137931L1.50695625 52.137931C.989189297 52.137931.56945625 52.5547694.56945625 53.0689655.56945625 53.5831617.989189297 54 1.50695625 54z\" })))));\n} /&gt;\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     \n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    This is a foundation action notice\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Notice\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Notice\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Notice/index.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\nimport { InfoNotification } from \"../icons\";\n\nexport enum NoticeTypes {\n  INFO,\n  ERROR,\n  ALERT,\n  ATTENTION,\n  FOUNDATION_ACTION,\n}\n\nexport interface NoticeContainerProps {\n  type: NoticeTypes;\n}\n\nconst typeColors = {\n  [NoticeTypes.INFO]: {\n    border: \"rgb(208,237,237)\",\n    background: \"rgb(208,237,237)\",\n    color: colors.primary.CIVIL_GRAY_1,\n    weight: \"400\",\n  },\n  [NoticeTypes.ERROR]: {\n    border: \"rgb(242, 82, 74,1)\",\n    background: \"rgb(242, 82, 74,0.1)\",\n    color: colors.primary.CIVIL_GRAY_1,\n    weight: \"400\",\n  },\n  [NoticeTypes.ALERT]: {\n    border: \"rgba(94,94,94,0.12)\",\n    background: colors.accent.CIVIL_YELLOW_VERY_FADED,\n    color: colors.primary.CIVIL_GRAY_1,\n    weight: \"400\",\n  },\n  [NoticeTypes.ATTENTION]: {\n    border: \"rgba(255,00,0,1)\",\n    background: \"#FBF9F6\",\n    color: colors.primary.CIVIL_GRAY_1,\n    weight: \"400\",\n  },\n  [NoticeTypes.FOUNDATION_ACTION]: {\n    border: colors.accent.CIVIL_GRAY_3,\n    background: colors.basic.WHITE,\n    color: colors.primary.BLACK,\n    weight: \"bold\",\n  },\n};\n\nexport const NoticeContainer = styled.div<NoticeContainerProps>`\n  display: flex;\n  flex-direction: row;\n  color: ${(props: NoticeContainerProps) => typeColors[props.type].color};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 20px;\n  padding: 30px 0;\n  text-align: center;\n  border: 1px solid ${(props: NoticeContainerProps) => typeColors[props.type].border};\n  border-radius: 4px;\n  background-color: ${(props: NoticeContainerProps) => typeColors[props.type].background};\n  align-items: center;\n  font-weight: ${(props: NoticeContainerProps) => typeColors[props.type].weight};\n`;\n\nexport const NoticeIconContainer = styled(\"div\")`\n  padding-left: 24px;\n  width: 52px;\n`;\n\nexport const NoticeMessageContainer = styled.div`\n  flex-grow: 1;\n  margin-right: 80px;\n  margin-left: 28px;\n`;\n\nexport interface NoticeProps {\n  type: NoticeTypes;\n  icon?: any;\n  className?: string;\n  children?: any;\n}\n\nexport const Notice = ({ className, children, type, icon }: NoticeProps): JSX.Element => {\n  let displayIcon = null;\n  if (type === NoticeTypes.ERROR) {\n    displayIcon = <InfoNotification />;\n  } else if (type === NoticeTypes.FOUNDATION_ACTION) {\n    displayIcon = icon;\n  }\n  return (\n    <NoticeContainer type={type} className={className}>\n      <NoticeIconContainer>{displayIcon}</NoticeIconContainer>\n      <NoticeMessageContainer>{children}</NoticeMessageContainer>\n    </NoticeContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ChallengeProposal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport {\n  StyledCreateProposalOuter,\n  StyledCreateProposalContainer,\n  StyledCreateProposalHeader,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n  MetaSingleLine,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  ChallengeProposalHeaderText,\n  ChallengeProposalDescriptionText,\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n  CreateProposalTokenDepositText,\n  ChallengeProposalNewValueLabelText,\n} from \"./textComponents\";\n\nexport interface ChallengeProposalProps {\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterNewValue: string;\n  parameterProposalValue: string;\n  proposalDeposit: string;\n  transactions?: any[];\n  modalContentComponents?: any;\n  handleClose(): void;\n  postExecuteTransactions?(): any;\n}\n\nexport class ChallengeProposal extends React.Component<ChallengeProposalProps> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledCreateProposalContainer>\n          <StyledCreateProposalHeader>\n            <ChallengeProposalHeaderText />\n            <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n          </StyledCreateProposalHeader>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <ChallengeProposalDescriptionText />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <ChallengeProposalNewValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterNewValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <MetaSingleLine>\n                <StyledMetaName>\n                  <CreateProposalTokenDepositText />\n                </StyledMetaName>\n                <StyledMetaValue>{this.props.proposalDeposit}</StyledMetaValue>\n              </MetaSingleLine>\n              <TransactionButtonNoModal\n                transactions={this.props.transactions!}\n                postExecuteTransactions={this.props.postExecuteTransactions}\n              >\n                Confirm With Metamask\n              </TransactionButtonNoModal>\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledCreateProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ChallengeProposalCommitVote.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { PhaseWithExpiryProps, ChallengePhaseProps, CommitVoteProps } from \"../ListingDetailPhaseCard/types\";\nimport {\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  FormHeader,\n  FormCopy,\n} from \"../ListingDetailPhaseCard/styledComponents\";\nimport { ChallengePhaseDetail } from \"../ListingDetailPhaseCard/ChallengePhaseDetail\";\nimport { CommitVote } from \"../ListingDetailPhaseCard/CommitVote\";\nimport {\n  UnderChallengePhaseDisplayNameText,\n  CommitVoteAlreadyVotedHeaderText,\n  CommitVoteAlreadyVotedCopyText,\n  CommitVoteCalloutHeaderText,\n  CommitVoteCalloutCopyText,\n} from \"../ListingDetailPhaseCard/textComponents\";\nimport { TwoPhaseProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport {\n  StyledCreateProposalOuter,\n  StyledChallengeProposalContainer,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n  ChallengeProposalNewValueLabelText,\n} from \"./textComponents\";\n\nexport interface ChallengeProposalCommitVoteProps {\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterProposalValue: string;\n  userHasCommittedVote?: boolean;\n  transactions?: any[];\n  modalContentComponents?: any;\n  handleClose(): void;\n}\n\nexport type TChallengeProposalCommitVoteProps = ChallengeProposalCommitVoteProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  CommitVoteProps;\n\nexport class ChallengeProposalCommitVote extends React.Component<TChallengeProposalCommitVoteProps> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    const callout = this.renderCommitVoteCallout();\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledChallengeProposalContainer>\n          <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n              <StyledPhaseDisplayName>\n                <UnderChallengePhaseDisplayNameText />\n              </StyledPhaseDisplayName>\n              <TwoPhaseProgressBarCountdownTimer\n                endTime={this.props.endTime}\n                totalSeconds={this.props.phaseLength}\n                displayLabel=\"Accepting votes\"\n                secondaryDisplayLabel=\"Confirming Votes\"\n                flavorText=\"under challenge\"\n                activePhaseIndex={0}\n              />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <ChallengeProposalNewValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterProposalValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <ChallengePhaseDetail\n                challengeID={this.props.challengeID}\n                challenger={this.props.challenger}\n                rewardPool={this.props.rewardPool}\n                stake={this.props.stake}\n              />\n            </StyledSection>\n            {callout}\n            <StyledSection>\n              <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n              <CommitVote\n                tokenBalance={this.props.tokenBalance}\n                votingTokenBalance={this.props.votingTokenBalance}\n                tokenBalanceDisplay={this.props.tokenBalanceDisplay}\n                votingTokenBalanceDisplay={this.props.votingTokenBalanceDisplay}\n                voteOption={this.props.voteOption}\n                salt={this.props.salt}\n                numTokens={this.props.numTokens}\n                onInputChange={this.props.onInputChange}\n                userHasCommittedVote={this.props.userHasCommittedVote}\n                onReviewVote={this.props.onReviewVote}\n                onCommitMaxTokens={this.props.onCommitMaxTokens}\n              >\n                Should this proposal be <b>accepted</b> or <b>rejected</b> from the Civil Registry?\n              </CommitVote>\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledChallengeProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n\n  private renderCommitVoteCallout = (): JSX.Element => {\n    if (this.props.userHasCommittedVote) {\n      return (\n        <>\n          <FormHeader>\n            <CommitVoteAlreadyVotedHeaderText />\n          </FormHeader>\n          <FormCopy>\n            <CommitVoteAlreadyVotedCopyText />\n          </FormCopy>\n        </>\n      );\n    }\n    return (\n      <>\n        <FormHeader>\n          <CommitVoteCalloutHeaderText />\n        </FormHeader>\n        <FormCopy>\n          <CommitVoteCalloutCopyText />\n        </FormCopy>\n      </>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ChallengeProposalRevealVote.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { PhaseWithExpiryProps, ChallengePhaseProps, RevealVoteProps } from \"../ListingDetailPhaseCard/types\";\nimport {\n  StyledPhaseKicker,\n  StyledPhaseDisplayName,\n  FormHeader,\n  FormCopy,\n} from \"../ListingDetailPhaseCard/styledComponents\";\nimport { ChallengePhaseDetail } from \"../ListingDetailPhaseCard/ChallengePhaseDetail\";\nimport { RevealVote } from \"../ListingDetailPhaseCard/RevealVote\";\nimport { UnderChallengePhaseDisplayNameText } from \"../ListingDetailPhaseCard/textComponents\";\nimport { TwoPhaseProgressBarCountdownTimer } from \"../PhaseCountdown/\";\nimport {\n  StyledCreateProposalOuter,\n  StyledChallengeProposalContainer,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n  ChallengeProposalNewValueLabelText,\n} from \"./textComponents\";\n\nexport interface ChallengeProposalRevealVoteProps {\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterProposalValue: string;\n  transactions?: any[];\n  modalContentComponents?: any;\n  userHasRevealedVote?: boolean;\n  userHasCommittedVote?: boolean;\n  handleClose(): void;\n  postExecuteTransactions?(): any;\n}\n\nexport type TChallengeProposalRevealVoteProps = ChallengeProposalRevealVoteProps &\n  PhaseWithExpiryProps &\n  ChallengePhaseProps &\n  RevealVoteProps;\n\nexport class ChallengeProposalRevealVote extends React.Component<TChallengeProposalRevealVoteProps> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledChallengeProposalContainer>\n          <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n              <StyledPhaseDisplayName>\n                <UnderChallengePhaseDisplayNameText />\n              </StyledPhaseDisplayName>\n              <TwoPhaseProgressBarCountdownTimer\n                endTime={this.props.endTime}\n                totalSeconds={this.props.phaseLength}\n                displayLabel=\"Accepting votes\"\n                secondaryDisplayLabel=\"Confirming Votes\"\n                flavorText=\"under challenge\"\n                activePhaseIndex={0}\n              />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <ChallengeProposalNewValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterProposalValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <ChallengePhaseDetail\n                challengeID={this.props.challengeID}\n                challenger={this.props.challenger}\n                rewardPool={this.props.rewardPool}\n                stake={this.props.stake}\n              />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledPhaseKicker>Challenge ID {this.props.challengeID}</StyledPhaseKicker>\n              {this.renderRevealVote()}\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledChallengeProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n\n  private renderRevealVote = (): JSX.Element => {\n    if (!this.props.userHasCommittedVote) {\n      return (\n        <>\n          <FormHeader>You did not participate in this challenge</FormHeader>\n          <FormCopy>You did not commit a vote, so there is nothing here for you to reveal</FormCopy>\n        </>\n      );\n    } else if (this.props.userHasRevealedVote) {\n      return (\n        <>\n          <FormHeader>You have revealed your vote</FormHeader>\n          <FormCopy>\n            Thank you for participating! Please check back after the challenge ends to see if you have earned a reward{\" \"}\n          </FormCopy>\n        </>\n      );\n    } else {\n      return (\n        <>\n          <RevealVote\n            voteOption={this.props.voteOption}\n            salt={this.props.salt}\n            onInputChange={this.props.onInputChange}\n            transactions={this.props.transactions}\n            postExecuteTransactions={this.props.postExecuteTransactions}\n            votingSmartContractFaqURL={this.props.votingSmartContractFaqURL}\n          >\n            Should this proposal be <b>accepted</b> or <b>rejected</b> from the Civil Registry?\n          </RevealVote>\n        </>\n      );\n    }\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ChallengeProposalReviewVote.tsx",
    "content": "import * as React from \"react\";\nimport AddToCalendar from \"react-add-to-calendar\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { saltToWords, getFormattedEthAddress, getLocalDateTimeStrings, padString } from \"@joincivil/utils\";\nimport { FullScreenModal, FullScreenModalProps } from \"../FullscreenModal\";\nimport { buttonSizes, CancelButton } from \"../Button\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\nimport { Checkbox, CheckboxSizes } from \"../input/Checkbox\";\nimport { MetaMaskLogoButton } from \"../\";\nimport {\n  ReviewVoteHeaderTitleText,\n  ReviewVoteCopyText,\n  SaltLabelText,\n  ReviewVoteDepositedCVLLabelText,\n  ReviewVoteMyAddressLabelText,\n  ConfirmVotesLabelText,\n  TransactionButtonText,\n  SaltPhraseToolTipText,\n  TransactionFinePrintText,\n  SaveSaltCheckboxLabelText,\n} from \"../ReviewVote/textComponents\";\nimport {\n  ModalOuter,\n  ModalContent,\n  StyledReviewVoteHeaderTitle,\n  StyledReviewVoteContent,\n  StyledReviewVoteContentCopy,\n  StyledReviewVoteDetails,\n  MetaRow,\n  MetaRowSalt,\n  MetaItemLabel,\n  MetaItemLabelSalt,\n  MetaItemValue,\n  MetaItemValueUser,\n  MetaItemValueSalt,\n  MetaItemValueTwoCol,\n  StyledAddToCalendarContainer,\n  StyledConfirmVoteDateRange,\n  StyledAddToCalendar,\n  StyledButtonContainer,\n  StyledTransactionFinePrint,\n  StyledDidSaveSaltContainer,\n} from \"../ReviewVote/styledComponents\";\n\nexport interface ChallengeProposalReviewVoteProps extends FullScreenModalProps {\n  parameterName: string | JSX.Element;\n  proposalURL: string;\n  challengeID: string;\n  numTokens?: string;\n  voteOption?: string;\n  salt?: string;\n  userAccount: EthAddress;\n  commitEndDate: number;\n  revealEndDate: number;\n  transactions: any[];\n  modalContentComponents?: any;\n  handleClose(): void;\n  postExecuteTransactions?(): void;\n}\n\ninterface ReviewVoteState {\n  didSaveSalt: boolean;\n}\n\nfunction printThis(): void {\n  window.print();\n}\n\nfunction getSaltyWords(salt?: string): string {\n  if (!salt) {\n    return \"\";\n  }\n\n  return saltToWords(salt).join(\" \");\n}\n\nfunction getReadableRevealDateRange(commitEndDate: number, revealEndDate: number): string {\n  const revealStartDateTime = getLocalDateTimeStrings(commitEndDate + 1);\n  const revealEndDateTime = getLocalDateTimeStrings(revealEndDate);\n  return `From ${revealStartDateTime[0]} at ${revealStartDateTime[1]} to ${revealEndDateTime[0]} at ${revealEndDateTime[1]}`;\n}\n\nfunction getCalendarEventDateTime(seconds: number | Date): string {\n  const theDate = typeof seconds === \"number\" ? new Date(seconds * 1000) : seconds;\n  const pad = (num: number | string) => {\n    return padString(num, 2, \"0\");\n  };\n  const hours = pad(theDate.getHours());\n  const mins = pad(theDate.getMinutes());\n  const tzOffset = `${pad(theDate.getTimezoneOffset() / 60)}${pad(theDate.getTimezoneOffset() % 60)}`;\n  const dateString = `${theDate.getFullYear()}-${pad(theDate.getMonth() + 1)}-${pad(theDate.getDate())}`;\n  const timeString = `${hours}:${mins}-${tzOffset}`;\n  return `${dateString}T${timeString}`;\n}\n\nconst AddRevealPhaseToCalendar: React.FunctionComponent<ChallengeProposalReviewVoteProps> = props => {\n  // @TODO(jon): `textComponents` don't work here b/c these fields are plaintext. Let's\n  // revisit converting JSX.Components to strings via textContent before this goes to mainnet\n  const title = `Reveal My Vote for ${props.parameterName} on The Civil Registry`;\n  const description = `\n    ${props.proposalURL}\\n\\n\n    My Secret Phrase\\n\n    ${getSaltyWords(props.salt)}\\n\\n\n    Challenge ID ${props.challengeID}\\n\n    I voted for ${props.parameterName} to ${\n    props.voteOption === \"0\" ? \"remain the same\" : \"change\"\n  } on the Civil Registry\\n\\n\n    My Deposited CVL\\n\n    ${props.numTokens}\n  `;\n  const location = props.proposalURL;\n  const startTime = getCalendarEventDateTime(props.commitEndDate + 1);\n  const endTime = getCalendarEventDateTime(props.revealEndDate);\n  const event = {\n    title,\n    description,\n    location,\n    startTime,\n    endTime,\n  };\n  return (\n    <StyledAddToCalendar>\n      <AddToCalendar event={event} />\n    </StyledAddToCalendar>\n  );\n};\n\nexport class ChallengeProposalReviewVote extends React.Component<ChallengeProposalReviewVoteProps, ReviewVoteState> {\n  public state = {\n    didSaveSalt: false,\n  };\n\n  public render(): JSX.Element {\n    const {\n      open,\n      challengeID,\n      salt,\n      commitEndDate,\n      revealEndDate,\n      voteOption,\n      parameterName,\n      numTokens,\n      userAccount,\n      transactions,\n      postExecuteTransactions,\n      handleClose,\n    } = this.props;\n\n    const { didSaveSalt } = this.state;\n\n    return (\n      <FullScreenModal open={open || false}>\n        <ModalOuter>\n          <ModalContent>\n            <StyledReviewVoteHeaderTitle>\n              <ReviewVoteHeaderTitleText />\n            </StyledReviewVoteHeaderTitle>\n            <StyledReviewVoteContentCopy>\n              <ReviewVoteCopyText handlePrintClick={printThis} />\n            </StyledReviewVoteContentCopy>\n\n            <StyledReviewVoteContent>\n              <div>\n                <StyledReviewVoteDetails>\n                  <MetaRowSalt>\n                    <MetaItemLabelSalt>\n                      <SaltLabelText challengeID={challengeID} />\n                      <QuestionToolTip explainerText={<SaltPhraseToolTipText />} positionBottom={true} />\n                    </MetaItemLabelSalt>\n\n                    <MetaItemValueSalt>{getSaltyWords(salt)}</MetaItemValueSalt>\n                  </MetaRowSalt>\n\n                  <MetaRow>\n                    <MetaItemLabel>\n                      <ConfirmVotesLabelText />\n                    </MetaItemLabel>\n\n                    <MetaItemValueTwoCol>\n                      <StyledConfirmVoteDateRange>\n                        {getReadableRevealDateRange(commitEndDate, revealEndDate)}\n                      </StyledConfirmVoteDateRange>\n\n                      <StyledAddToCalendarContainer>\n                        <AddRevealPhaseToCalendar {...this.props} />\n                        <p>Remember to set event to Private</p>\n                      </StyledAddToCalendarContainer>\n                    </MetaItemValueTwoCol>\n                  </MetaRow>\n\n                  <MetaRow>\n                    <MetaItemLabel>Challenge ID {challengeID}</MetaItemLabel>\n\n                    <MetaItemValue>\n                      I voted for {parameterName} to {voteOption === \"0\" ? \"remain the same\" : \"change\"} on the Civil\n                      Registry\\n\\n\n                    </MetaItemValue>\n                  </MetaRow>\n                  <MetaRow>\n                    <MetaItemLabel>\n                      <ReviewVoteDepositedCVLLabelText />\n                    </MetaItemLabel>\n\n                    <MetaItemValue>{numTokens}</MetaItemValue>\n                  </MetaRow>\n\n                  <MetaRow>\n                    <MetaItemLabel>\n                      <ReviewVoteMyAddressLabelText />\n                    </MetaItemLabel>\n\n                    <MetaItemValueUser>{userAccount && getFormattedEthAddress(userAccount)}</MetaItemValueUser>\n                  </MetaRow>\n                </StyledReviewVoteDetails>\n              </div>\n\n              <StyledDidSaveSaltContainer>\n                <div>\n                  <Checkbox size={CheckboxSizes.SMALL} checked={didSaveSalt} onClick={this.toggleHasSavedSalt} />\n                </div>\n                <div>\n                  <SaveSaltCheckboxLabelText />\n                </div>\n              </StyledDidSaveSaltContainer>\n\n              <StyledButtonContainer>\n                <TransactionButtonNoModal\n                  transactions={transactions}\n                  postExecuteTransactions={postExecuteTransactions}\n                  Button={MetaMaskLogoButton}\n                  disabled={!didSaveSalt}\n                >\n                  <TransactionButtonText />\n                </TransactionButtonNoModal>\n                <CancelButton size={buttonSizes.SMALL} onClick={handleClose}>\n                  Cancel\n                </CancelButton>\n              </StyledButtonContainer>\n\n              <StyledTransactionFinePrint>\n                <TransactionFinePrintText />\n              </StyledTransactionFinePrint>\n            </StyledReviewVoteContent>\n          </ModalContent>\n        </ModalOuter>\n      </FullScreenModal>\n    );\n  }\n\n  private toggleHasSavedSalt = (): void => {\n    this.setState({ didSaveSalt: !this.state.didSaveSalt });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/CreateGovtProposal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { InputGroup } from \"../input\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport {\n  StyledCreateProposalOuter,\n  StyledCreateProposalContainer,\n  StyledCreateProposalHeader,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  CreateProposalHeaderText,\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n} from \"./textComponents\";\n\nexport interface CreateGovtProposalProps {\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterDisplayUnits: string;\n  parameterProposalValue: string;\n  transactions?: any[];\n  handleClose(): void;\n  handleUpdateProposalValue(name: string, value: string): void;\n  postExecuteTransactions?(): any;\n}\n\nexport interface CreateGovtProposalState {\n  parameterProposalValue: string;\n}\n\nexport class CreateGovtProposal extends React.Component<CreateGovtProposalProps, CreateGovtProposalState> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledCreateProposalContainer>\n          <StyledCreateProposalHeader>\n            <CreateProposalHeaderText />\n            <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n          </StyledCreateProposalHeader>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <InputGroup\n                append={this.props.parameterDisplayUnits}\n                label=\"Enter proposed value\"\n                placeholder=\"Enter a proposed value\"\n                name=\"proposalValue\"\n                value={this.props.parameterProposalValue}\n                onChange={this.props.handleUpdateProposalValue}\n                icon={<></>}\n              />\n            </StyledSection>\n\n            <StyledSection>\n              <TransactionButtonNoModal\n                transactions={this.props.transactions!}\n                postExecuteTransactions={this.props.postExecuteTransactions}\n              >\n                Confirm With Metamask\n              </TransactionButtonNoModal>\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledCreateProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/CreateProposal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { InputGroup } from \"../input\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport {\n  StyledCreateProposalOuter,\n  StyledCreateProposalContainer,\n  StyledCreateProposalHeader,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n  MetaSingleLine,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  CreateProposalHeaderText,\n  CreateProposalDescriptionText,\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n  CreateProposalTokenDepositText,\n} from \"./textComponents\";\n\nexport interface CreateProposalProps {\n  pApplyLenText: string | JSX.Element;\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterDisplayUnits: string;\n  parameterProposalValue: string;\n  proposalDeposit: string;\n  transactions?: any[];\n  handleClose(): void;\n  handleUpdateProposalValue(name: string, value: string): void;\n  postExecuteTransactions?(): any;\n}\n\nexport interface CreateProposalState {\n  parameterProposalValue: string;\n}\n\nexport class CreateProposal extends React.Component<CreateProposalProps, CreateProposalState> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledCreateProposalContainer>\n          <StyledCreateProposalHeader>\n            <CreateProposalHeaderText />\n            <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n          </StyledCreateProposalHeader>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <CreateProposalDescriptionText applicationLenText={this.props.pApplyLenText} />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <InputGroup\n                append={this.props.parameterDisplayUnits}\n                label=\"Enter proposed value\"\n                placeholder=\"Enter a proposed value\"\n                name=\"proposalValue\"\n                value={this.props.parameterProposalValue}\n                onChange={this.props.handleUpdateProposalValue}\n                icon={<></>}\n              />\n            </StyledSection>\n\n            <StyledSection>\n              <MetaSingleLine>\n                <StyledMetaName>\n                  <CreateProposalTokenDepositText />\n                </StyledMetaName>\n                <StyledMetaValue>{this.props.proposalDeposit}</StyledMetaValue>\n              </MetaSingleLine>\n              <TransactionButtonNoModal\n                transactions={this.props.transactions!}\n                postExecuteTransactions={this.props.postExecuteTransactions}\n              >\n                Confirm With Metamask\n              </TransactionButtonNoModal>\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledCreateProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/Parameterizer.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StyledParameterizerContainer } from \"./ParameterizerStyledComponents\";\nimport { CreateProposal } from \"./CreateProposal\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 110px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nconst noop = () => {\n  return;\n};\n\nstoriesOf(\"Registry / Parameterizer\", module).add(\"Create Proposal\", () => {\n  return (\n    <Container>\n      {process.env.NODE_ENV !== \"test\" && (\n        <StyledParameterizerContainer>\n          <CreateProposal\n            pApplyLenText=\"14 days\"\n            parameterDisplayName=\"Application Deposit\"\n            parameterCurrentValue=\"100.00 CVL\"\n            parameterDisplayUnits=\"CVL\"\n            parameterProposalValue=\"\"\n            proposalDeposit=\"1,000 CVL\"\n            transactions={[]}\n            handleClose={noop}\n            handleUpdateProposalValue={(name: string, value: string) => console.log(\"Proposed Value is\", value)}\n          />\n        </StyledParameterizerContainer>\n      )}\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ParameterizerStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\n\nexport const StyledParameterizerContainer = styled.div`\n  margin: 40px 0 0;\n`;\n\nexport const StyledCreateProposalContainer = styled.div`\n  background: ${colors.accent.CIVIL_GRAY_4};\n  bottom: 0;\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  font-family: ${fonts.SANS_SERIF};\n  right: 0;\n  top: 0;\n  width: 634px;\n`;\n\nexport const StyledChallengeProposalContainer = styled.div`\n  background: ${colors.basic.WHITE};\n  bottom: 0;\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  font-family: ${fonts.SANS_SERIF};\n  overflow-y: scroll;\n  right: 0;\n  top: 0;\n  width: 634px;\n`;\n\nexport const StyledCreateProposalOuter = styled.div`\n  background: ${colors.basic.WHITE}9a; // 9a is hex for 60^\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  bottom: 0;\n  left: 0;\n  position: fixed;\n  overflow-y: scroll;\n  right: 0;\n  top: 56px;\n\n  & ${StyledCreateProposalContainer}, & ${StyledChallengeProposalContainer} {\n    position: absolute;\n  }\n`;\n\nexport const StyledCreateProposalHeader = styled.div`\n  background-color: ${colors.accent.CIVIL_BLUE};\n  color: ${colors.basic.WHITE};\n  font-size: 21px;\n  font-weight: bold;\n  letter-spacing: -0.45px;\n  line-height: 25px;\n  padding: 16px 40px;\n  position: relative;\n`;\n\nexport const StyledCreateProposalHeaderClose = styled.div`\n  cursor: pointer;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 21px;\n  position: absolute;\n  right: 14px;\n  top: 11px;\n`;\n\nexport const StyledCreateProposalContent = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 16px;\n  line-height: 20px;\n  padding: 24px 40px 40px;\n`;\n\nexport const StyledSection = styled.div`\n  margin: 0 0 19px;\n`;\n\nexport const StyledMetaName = styled.div`\n  margin: 0 0 3px;\n`;\n\nexport const StyledMetaValue = styled.div`\n  font-weight: bold;\n`;\n\nexport const MetaSingleLine = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin: 0 0 20px;\n\n  & ${StyledMetaValue} {\n    text-align: right;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ParameterizerTableCell.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, mediaQueries } from \"../styleConstants\";\nimport { Td } from \"../Table\";\nimport { StyledTableCell } from \"../Table/styledComponents\";\nimport { TableCellProps } from \"../Table/types\";\n\nconst StyledParameterizerTableCell = styled(StyledTableCell)`\n  ${mediaQueries.MOBILE} {\n    display: flex;\n\n    &:before {\n      display: block;\n      background-color: ${(props: TableCellProps) =>\n        props.accent ? colors.accent.CIVIL_GRAY_4 + \"7D\" : \"transparent\"};\n      content: attr(data-mobile-th);\n      text-align: ${(props: TableCellProps) => props.align || \"left\"};\n      width: 50%;\n    }\n  }\n`;\n\nconst StyledParameterizerTableCellInner = styled.div`\n  ${mediaQueries.MOBILE} {\n    width: 50%;\n  }\n`;\n\nexport const ParameterizerTd: React.FunctionComponent<TableCellProps> = props => {\n  return (\n    <Td StyledTableCellComponent={StyledParameterizerTableCell} {...props}>\n      <StyledParameterizerTableCellInner {...props}>{props.children}</StyledParameterizerTableCellInner>\n    </Td>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ProcessProposal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport {\n  StyledCreateProposalOuter,\n  StyledChallengeProposalContainer,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  ProcessProposalDescriptionText,\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n  ChallengeProposalNewValueLabelText,\n} from \"./textComponents\";\n\nexport interface ProcessProposalProps {\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterNewValue: string;\n  parameterProposalValue: string;\n  transactions?: any[];\n  modalContentComponents?: any;\n  handleClose(): void;\n  postExecuteTransactions?(): any;\n}\n\nexport class ProcessProposal extends React.Component<ProcessProposalProps> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledChallengeProposalContainer>\n          <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <ProcessProposalDescriptionText />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <ChallengeProposalNewValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterNewValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <TransactionButtonNoModal\n                transactions={this.props.transactions!}\n                postExecuteTransactions={this.props.postExecuteTransactions}\n              >\n                Confirm With Metamask\n              </TransactionButtonNoModal>\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledChallengeProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/ResolveChallengeProposal.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { ChallengeResults, ChallengeResultsProps } from \"../ChallengeResultsChart\";\nimport {\n  StyledCreateProposalOuter,\n  StyledChallengeProposalContainer,\n  StyledCreateProposalHeaderClose,\n  StyledCreateProposalContent,\n  StyledSection,\n  StyledMetaName,\n  StyledMetaValue,\n} from \"./ParameterizerStyledComponents\";\nimport {\n  ResolveChallengeProposalDescriptionText,\n  CreateProposalParamNameLabelText,\n  CreateProposalParamCurrentValueLabelText,\n  ChallengeProposalNewValueLabelText,\n} from \"./textComponents\";\n\nexport interface ResolveChallengeProposalProps {\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterNewValue: string;\n  transactions?: any[];\n  handleClose(): void;\n  postExecuteTransactions?(): any;\n}\n\nexport class ResolveChallengeProposal extends React.Component<ResolveChallengeProposalProps & ChallengeResultsProps> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(\n      <StyledCreateProposalOuter>\n        <StyledChallengeProposalContainer>\n          <StyledCreateProposalHeaderClose onClick={this.props.handleClose}>✖</StyledCreateProposalHeaderClose>\n\n          <StyledCreateProposalContent>\n            <StyledSection>\n              <ResolveChallengeProposalDescriptionText />\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamNameLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterDisplayName}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <CreateProposalParamCurrentValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterCurrentValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <StyledMetaName>\n                <ChallengeProposalNewValueLabelText />\n              </StyledMetaName>\n              <StyledMetaValue>{this.props.parameterNewValue}</StyledMetaValue>\n            </StyledSection>\n\n            <StyledSection>\n              <ChallengeResults\n                collapsable={true}\n                totalVotes={this.props.totalVotes}\n                votesFor={this.props.votesFor}\n                votesAgainst={this.props.votesAgainst}\n                percentFor={this.props.percentFor}\n                percentAgainst={this.props.percentAgainst}\n                didChallengeSucceed={this.props.didChallengeSucceed}\n              />\n            </StyledSection>\n\n            <StyledSection>\n              <TransactionButtonNoModal\n                transactions={this.props.transactions!}\n                postExecuteTransactions={this.props.postExecuteTransactions}\n              >\n                Confirm With Metamask\n              </TransactionButtonNoModal>\n            </StyledSection>\n          </StyledCreateProposalContent>\n        </StyledChallengeProposalContainer>\n      </StyledCreateProposalOuter>,\n      this.bucket,\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Parameterizer/__snapshots__/Parameterizer.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Parameterizer Create Proposal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPt kfzXEx\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Parameterizer\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Create Proposal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  Container\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Parameterizer/index.ts",
    "content": "export * from \"./textComponents\";\nexport * from \"./CreateProposal\";\nexport * from \"./CreateGovtProposal\";\nexport * from \"./ChallengeProposal\";\nexport * from \"./ChallengeProposalCommitVote\";\nexport * from \"./ChallengeProposalRevealVote\";\nexport * from \"./ChallengeProposalReviewVote\";\nexport * from \"./ResolveChallengeProposal\";\nexport * from \"./ProcessProposal\";\nexport * from \"./ParameterizerTableCell\";\nexport { StyledParameterizerContainer } from \"./ParameterizerStyledComponents\";\n"
  },
  {
    "path": "packages/components/src/Parameterizer/textComponents.tsx",
    "content": "import * as React from \"react\";\n\nexport const MinDepositLabelText: React.FunctionComponent = props => <>Application Deposit</>;\n\nexport const ParamMinDepositLabelText: React.FunctionComponent = props => <>Parameter Proposal Deposit</>;\n\nexport const ApplicationStageLenLabelText: React.FunctionComponent = props => <>Duration for Application Stage</>;\n\nexport const ParamApplicationStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration for Parameter Proposal Application Stage</>\n);\n\nexport const CommitStageLenLabelText: React.FunctionComponent = props => <>Duration for Commit Vote Stage</>;\n\nexport const ParamCommitStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration for Parameter Commit Vote Stage</>\n);\n\nexport const RevealStageLenLabelText: React.FunctionComponent = props => <>Duration for Reveal Vote Stage</>;\n\nexport const ParamRevealStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration for Parameter Reveal Vote Stage</>\n);\n\nexport const DispensationPctLabelText: React.FunctionComponent = props => (\n  <>Percentage of Stake Distributed To Challenge Winner</>\n);\n\nexport const ParamDispensationPctLabelText: React.FunctionComponent = props => (\n  <>Percentage of Stake Distributed To Parameter Proposal Challenge Winner</>\n);\n\nexport const VoteQuorumLabelText: React.FunctionComponent = props => (\n  <>Percentage of Votes Needed for Challenge to Succeed</>\n);\n\nexport const ParamVoteQuorumLabelText: React.FunctionComponent = props => (\n  <>Percentage of Votes Needed for Parameter Proposal Challenge to Succeed</>\n);\n\nexport const ChallengeAppealLenLabelText: React.FunctionComponent = props => <>Duration of Challenge Appeal Stage</>;\n\nexport const ChallengeAppealCommitStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration of Challenge Appeal Commit Vote Stage</>\n);\n\nexport const ChallengeAppealRevealStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration of Challenge Appeal Reveal Vote Stage</>\n);\n\nexport const RequestAppealLenLabelText: React.FunctionComponent = props => <>Duration of Request Appeal Stage</>;\n\nexport const JudgeAppealLenLabelText: React.FunctionComponent = props => <>Duration of Judge Appeal Stage</>;\n\nexport const GovtProposalCommitStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration of Government Proposal Commit Vote Stage</>\n);\n\nexport const GovtProposalRevealStageLenLabelText: React.FunctionComponent = props => (\n  <>Duration of Government Proposal Reveal Vote Stage</>\n);\n\nexport const AppealFeeLabelText: React.FunctionComponent = props => <>Request Appeal Deposit</>;\n\nexport const AppealVotePercentageLabelText: React.FunctionComponent = props => (\n  <>Percentage of Votes Needed To Overturn a Granted Appeal</>\n);\n\nexport const AppealVoteDispensationPctLabelText: React.FunctionComponent = props => (\n  <>Percentage of Stake Distributed To Appeal Challenge Winner</>\n);\n\n// Create Proposal\nexport const CreateProposalHeaderText: React.FunctionComponent = props => <>Propose New Value</>;\n\nexport interface CreateProposalDescriptionTextProps {\n  applicationLenText: string | JSX.Element;\n}\n\nexport const CreateProposalDescriptionText: React.FunctionComponent<CreateProposalDescriptionTextProps> = props => (\n  <>\n    Create a new proposal to change a parameter value on The Civil Registry. The CVL token holder community will have{\" \"}\n    {props.applicationLenText} to challenge the proposal. If there are no challenges, the new value will be\n    automatically approved.\n  </>\n);\n\nexport const CreateProposalParamNameLabelText: React.FunctionComponent = props => <>Parameter Name</>;\n\nexport const CreateProposalParamCurrentValueLabelText: React.FunctionComponent = props => <>Current Value</>;\n\nexport const CreateProposalTokenDepositText: React.FunctionComponent = props => <>Total token deposit</>;\n\n// Challenge Proposal\nexport const ChallengeProposalHeaderText: React.FunctionComponent = props => <>Challenge Proposal</>;\n\nexport const ChallengeProposalDescriptionText: React.FunctionComponent = props => <>Challenge this proposal.</>;\n\nexport const ChallengeProposalNewValueLabelText: React.FunctionComponent = props => <>Proposed Value</>;\n\nexport const ResolveChallengeProposalDescriptionText: React.FunctionComponent = props => (\n  <>Resolve this Proposal Challenge</>\n);\n\nexport const ProcessProposalDescriptionText: React.FunctionComponent = props => (\n  <>Process this proposal and update the Registry Parameters with the new value</>\n);\n"
  },
  {
    "path": "packages/components/src/Payments/AvatarLogin.tsx",
    "content": "import * as React from \"react\";\nimport { AvatarGenericIcon, DropdownArrow, colors } from \"@joincivil/elements\";\nimport styled from \"styled-components\";\nimport { ICivilContext, CivilContext } from \"../context\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nconst AvatarLoginWrapper = styled.div`\n  position: relative;\n`;\n\nconst AvatarImg = styled.img`\n  border-radius: 50%;\n  height: 24px;\n  width: 24px;\n`;\n\nconst AvatarLoginAvatarBtn = styled.button`\n  align-items: center;\n  background-color: transparent;\n  border: none;\n  cursor: pointer;\n  display: flex;\n  justify-content: space-between;\n  outline: none;\n  padding: 5px;\n  width: 50px;\n`;\n\nconst AvatarLoginDropdown = styled.div`\n  background-color: ${colors.basic.WHITE};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 4px;\n  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);\n  padding: 5px 0;\n  position: absolute;\n  right: 0;\n  top: 30px;\n  width: 120px;\n`;\n\nconst AvatarLoginOptionBtn = styled.button`\n  background-color: ${colors.basic.WHITE};\n  border: none;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  cursor: pointer;\n  font-size: 13px;\n  line-height: 16px;\n  outline: none;\n  padding: 5px 12px;\n  text-align: left;\n  transition: color 250ms;\n  width: 100%;\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nconst AvatarLoginOptionLink = styled.a`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  cursor: pointer;\n  font-size: 13px;\n  line-height: 16px;\n  padding: 5px 12px;\n  transition: color 250ms;\n  width: 100%;\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nexport interface AvatarLoginStates {\n  isOpen: boolean;\n}\n\nexport class AvatarLogin extends React.Component<{}, AvatarLoginStates> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  constructor(props: any) {\n    super(props);\n    this.state = { isOpen: false };\n  }\n\n  public render(): JSX.Element {\n    const currentUser = this.context && this.context.currentUser;\n    const showWeb3Login = this.context.auth.showWeb3Login;\n    const logout = this.context.auth.logout.bind(this.context.auth);\n\n    return (\n      <AvatarLoginWrapper>\n        {currentUser ? (\n          <>\n            <AvatarLoginAvatarBtn onClick={() => this.setState({ isOpen: !this.state.isOpen })}>\n              {currentUser.userChannel.tiny72AvatarDataUrl ? (\n                <AvatarImg src={currentUser.userChannel.tiny72AvatarDataUrl} />\n              ) : (\n                <AvatarGenericIcon />\n              )}\n              <DropdownArrow />\n            </AvatarLoginAvatarBtn>\n            {this.state.isOpen && (\n              <AvatarLoginDropdown>\n                <AvatarLoginOptionLink href={links.DASHBOARD} target=\"_blank\">\n                  Your Profile\n                </AvatarLoginOptionLink>\n                <AvatarLoginOptionBtn onClick={logout}>Logout</AvatarLoginOptionBtn>\n              </AvatarLoginDropdown>\n            )}\n          </>\n        ) : (\n          <>\n            <AvatarLoginAvatarBtn onClick={() => this.setState({ isOpen: !this.state.isOpen })}>\n              <AvatarGenericIcon />\n              <DropdownArrow />\n            </AvatarLoginAvatarBtn>\n            {this.state.isOpen && (\n              <AvatarLoginDropdown>\n                <AvatarLoginOptionBtn onClick={showWeb3Login}>Log In / Sign Up</AvatarLoginOptionBtn>\n              </AvatarLoginDropdown>\n            )}\n          </>\n        )}\n      </AvatarLoginWrapper>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentIntentsStripeForm.tsx",
    "content": "import * as React from \"react\";\nimport {\n  PAYMENTS_STRIPE_MUTATION,\n  SET_EMAIL_MUTATION,\n  GET_STRIPE_PAYMENT_INTENT,\n  CREATE_PAYMENT_METHOD,\n  CLONE_PAYMENT_METHOD,\n} from \"./queries\";\nimport { injectStripe, ReactStripeElements } from \"react-stripe-elements\";\nimport styled from \"styled-components\";\nimport { PaymentsFormWrapper } from \"./PaymentsFormWrapper\";\nimport { CivilContext, ICivilContext } from \"../context\";\nimport { isValidEmail } from \"@joincivil/utils\";\nimport { RadioInput, RadioButtonStandard } from \"@joincivil/elements\";\nimport {\n  PaymentTerms,\n  PaymentBtn,\n  PaymentInputLabel,\n  PaymentError,\n  CheckboxContainer,\n  CheckboxSection,\n  CheckboxLabel,\n} from \"./PaymentsStyledComponents\";\nimport {\n  PayWithCardText,\n  PaymentStripeNoticeText,\n  PaymentTermsText,\n  PaymentErrorText,\n} from \"./PaymentsTextComponents\";\nimport { INPUT_STATE } from \"./types\";\nimport { Checkbox, CheckboxSizes } from \"../input\";\nimport { PaymentStripeFormSavedCard } from \"./PaymentsStripeFormSavedCard\";\nimport ApolloClient from \"apollo-client\";\nimport { PaymentsStripeCardComponent } from \"./PaymentsStripeCardComponent\";\n\nexport interface PaymentIntentsStripeFormProps extends ReactStripeElements.InjectedStripeProps {\n  postId: string;\n  newsroomName: string;\n  shouldPublicize: boolean;\n  userEmail?: string;\n  userChannelID?: string;\n  paymentMethods?: any[];\n  usdToSpend: number;\n  apolloClient: ApolloClient<any>;\n  paymentIntentsEnabled: boolean;\n  stripeApiKey: string;\n  connectedStripeAccountID: string;\n  handlePaymentSuccess(userSubmittedEmail: boolean, didSaveEmail: boolean): void;\n  handleEditPaymentType(): void;\n}\n\nexport interface PaymentIntentsStripeFormStates {\n  email: string;\n  emailState: string;\n  name: string;\n  nameState: string;\n  cardInfoState: string;\n  isPaymentError: boolean;\n  paymentProcessing: boolean;\n  wasEmailPrepopulated: boolean;\n  promptSaveEmail: boolean;\n  shouldSaveEmailToAccount: boolean;\n  shouldAddEmailToMailingList: boolean;\n  shouldSaveCCToAccount: boolean;\n  displayStripeErrorMessage: string;\n  payWithNewCard: boolean;\n  paymentMethodId: string;\n  defaultPaymentMethodId: string;\n  hasSavedPaymentMethod: boolean;\n}\n\nclass PaymentIntentsStripeForm extends React.Component<PaymentIntentsStripeFormProps, PaymentIntentsStripeFormStates> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  constructor(props: any) {\n    super(props);\n    const defaultPaymentMethodId =\n      props.paymentMethods && props.paymentMethods.length > 0 ? props.paymentMethods[0].paymentMethodID : \"\";\n    this.state = {\n      email: props.userEmail || \"\",\n      wasEmailPrepopulated: props.userEmail ? true : false,\n      promptSaveEmail: !props.userEmail && props.userChannelID ? true : false,\n      emailState: this.props.userEmail ? INPUT_STATE.VALID : INPUT_STATE.EMPTY,\n      name: \"\",\n      nameState: INPUT_STATE.EMPTY,\n      cardInfoState: INPUT_STATE.EMPTY,\n      isPaymentError: false,\n      paymentProcessing: false,\n      shouldSaveEmailToAccount: true,\n      shouldAddEmailToMailingList: false,\n      shouldSaveCCToAccount: false,\n      displayStripeErrorMessage: \"\",\n      payWithNewCard: false,\n      paymentMethodId: defaultPaymentMethodId,\n      defaultPaymentMethodId,\n      hasSavedPaymentMethod: props.paymentMethods && props.paymentMethods.length > 0,\n    };\n\n    this.handleSubmit = this.handleSubmit.bind(this);\n  }\n\n  public render(): JSX.Element {\n    const showCreditCardForm = !this.state.hasSavedPaymentMethod || this.state.payWithNewCard;\n\n    return (\n      <>\n        <PaymentsFormWrapper\n          handleEditPaymentType={this.props.handleEditPaymentType}\n          payWithText={<PayWithCardText />}\n          paymentNoticeText={<PaymentStripeNoticeText />}\n          showSecureIcon={true}\n        >\n          {this.props.paymentIntentsEnabled && this.state.defaultPaymentMethodId !== \"\" && (\n            <RadioInput\n              name={\"Save Credit Card\"}\n              label=\"\"\n              onChange={this.handleSavedCreditCard}\n              defaultValue={this.state.defaultPaymentMethodId}\n            >\n              {this.props.paymentMethods!.map(pm => {\n                return (\n                  <RadioButtonStandard value={pm.paymentMethodID}>\n                    <PaymentStripeFormSavedCard\n                      cardDetails={pm.brand + \" \" + pm.last4Digits}\n                      date={pm.expMonth + \"/\" + pm.expYear}\n                    />\n                  </RadioButtonStandard>\n                );\n              })}\n\n              <RadioButtonStandard value={\"new card\"}>Pay with a new credit card</RadioButtonStandard>\n            </RadioInput>\n          )}\n          {showCreditCardForm && (\n            <>\n            <PaymentsStripeCardComponent\n              email={this.state.email}\n              wasEmailPrepopulated={this.state.wasEmailPrepopulated}\n              emailState={this.state.emailState}\n              nameState={this.state.nameState}\n              cardInfoState={this.state.cardInfoState}\n              displayStripeErrorMessage={this.state.displayStripeErrorMessage}\n              handleOnBlur={this.handleOnBlur}\n              handleStripeChange={this.handleStripeChange}\n            />\n              {this.props.userChannelID && this.props.userChannelID !== \"\" && (\n                <>\n                  <PaymentInputLabel>Remember Credit Card</PaymentInputLabel>\n                  <CheckboxContainer>\n                    <CheckboxSection>\n                      <label>\n                        <Checkbox\n                          size={CheckboxSizes.SMALL}\n                          checked={this.state.shouldSaveCCToAccount}\n                          onClick={this.toggleShouldSaveCCToAccount}\n                        />\n                        <CheckboxLabel>Save my credit card information for future Boosts payments</CheckboxLabel>\n                      </label>\n                    </CheckboxSection>\n                  </CheckboxContainer>\n                </>\n              )}\n            </>\n          )}\n        </PaymentsFormWrapper>\n        {this.state.promptSaveEmail && this.state.emailState === INPUT_STATE.VALID && (\n          <>\n            <CheckboxContainer>\n              <CheckboxSection>\n                <label>\n                  <Checkbox\n                    size={CheckboxSizes.SMALL}\n                    checked={this.state.shouldSaveEmailToAccount}\n                    onClick={this.toggleShouldSaveEmailToAccount}\n                  />\n                  <CheckboxLabel>Save my email to my Civil account.</CheckboxLabel>\n                </label>\n              </CheckboxSection>\n            </CheckboxContainer>\n            <CheckboxContainer>\n              <CheckboxSection>\n                <label>\n                  <Checkbox\n                    size={CheckboxSizes.SMALL}\n                    checked={this.state.shouldAddEmailToMailingList}\n                    onClick={this.toggleShouldAddEmailToMailingList}\n                  />\n                  <CheckboxLabel>Receive the Civil Weekly newsletter in my inbox.</CheckboxLabel>\n                </label>\n              </CheckboxSection>\n            </CheckboxContainer>\n          </>\n        )}\n        <PaymentBtn onClick={() => this.handleSubmit()} disabled={this.disableBoostBtn()}>\n          {this.state.paymentProcessing ? \"Payment processing...\" : \"Complete Boost\"}\n        </PaymentBtn>\n        {this.state.isPaymentError && (\n          <PaymentError>\n            <PaymentErrorText />\n          </PaymentError>\n        )}\n        <PaymentTerms>\n          <PaymentTermsText />\n        </PaymentTerms>\n      </>\n    );\n  }\n\n  private handleStripeChange = (event: any) => {\n    const stripeElements = document.querySelectorAll(\".StripeElement\");\n    let displayStripeErrorMessage = \"\";\n\n    if (event.error) {\n      displayStripeErrorMessage = event.error.message;\n    }\n\n    stripeElements.forEach(element => {\n      const classList = element.classList;\n      if (classList.contains(\"StripeElement--invalid\")) {\n        this.setState({ cardInfoState: INPUT_STATE.INVALID, displayStripeErrorMessage });\n      } else if (classList.contains(\"StripeElement--empty\")) {\n        this.setState({ cardInfoState: INPUT_STATE.EMPTY, displayStripeErrorMessage });\n      } else {\n        this.setState({ cardInfoState: INPUT_STATE.VALID, displayStripeErrorMessage });\n      }\n    });\n  };\n\n  private disableBoostBtn = () => {\n    const disableBoostBtn =\n      this.state.emailState === INPUT_STATE.VALID &&\n      this.state.nameState === INPUT_STATE.VALID &&\n      this.state.cardInfoState === INPUT_STATE.VALID &&\n      this.state.paymentProcessing === false\n        ? false\n        : true;\n\n    return disableBoostBtn && !this.state.paymentMethodId;\n  };\n\n  private toggleShouldSaveCCToAccount = () => {\n    this.setState({ shouldSaveCCToAccount: !this.state.shouldSaveCCToAccount });\n  };\n\n  private toggleShouldSaveEmailToAccount = () => {\n    this.setState({ shouldSaveEmailToAccount: !this.state.shouldSaveEmailToAccount });\n  };\n\n  private toggleShouldAddEmailToMailingList = () => {\n    this.setState({ shouldAddEmailToMailingList: !this.state.shouldAddEmailToMailingList });\n  };\n\n  private handleSavedCreditCard = (name: string, value: any) => {\n    if (value === \"new card\") {\n      this.setState({ payWithNewCard: true, paymentMethodId: \"\" });\n    } else {\n      this.setState({ payWithNewCard: false, paymentMethodId: value });\n    }\n  };\n\n  private handleOnBlur = (event: any) => {\n    const state = event.target.id;\n    const value = event.target.value;\n\n    switch (state) {\n      case \"email\":\n        const validEmail = isValidEmail(value);\n        validEmail\n          ? this.setState({ email: value, emailState: INPUT_STATE.VALID })\n          : this.setState({ emailState: INPUT_STATE.INVALID });\n        break;\n      case \"name\":\n        const validName = value !== \"\";\n        validName\n          ? this.setState({ name: value, nameState: INPUT_STATE.VALID })\n          : this.setState({ nameState: INPUT_STATE.INVALID });\n        break;\n      default:\n        break;\n    }\n  };\n\n  private async handleChargePayment(): Promise<boolean> {\n    try {\n      const token = await this.props.stripe!.createToken({\n        name: this.state.name,\n      });\n      await this.props.apolloClient.mutate({\n        mutation: PAYMENTS_STRIPE_MUTATION,\n        variables: {\n          postID: this.props.postId,\n          input: {\n            // @ts-ignore\n            paymentToken: token.token.id,\n            amount: this.props.usdToSpend,\n            currencyCode: \"usd\",\n            emailAddress: this.state.email,\n            shouldPublicize: this.props.shouldPublicize,\n            payerChannelID: this.props.userChannelID,\n          },\n        },\n      });\n      return true;\n    } catch (err) {\n      console.error(err);\n      return false;\n    }\n  }\n\n  private async clonePaymentMethodAndPayViaIntent(\n    paymentMethodID: string,\n    clonePayerChannelID?: string,\n  ): Promise<boolean> {\n    try {\n      const cloneVariables = {\n        postID: this.props.postId,\n        input: {\n          payerChannelID: clonePayerChannelID,\n          paymentMethodID,\n          amount: 0,\n          currencyCode: \"usd\",\n        },\n      };\n      const cloneResult = await this.props.apolloClient.mutate({\n        mutation: CLONE_PAYMENT_METHOD,\n        variables: cloneVariables,\n      });\n      if (cloneResult.error) {\n        console.error(cloneResult.error)\n      }\n      const pamentMethodID2 = (cloneResult as any).data.paymentsClonePaymentMethod.paymentMethodID;\n\n      const paymentIntentVariables = {\n        postID: this.props.postId,\n        input: {\n          amount: this.props.usdToSpend,\n          currencyCode: \"usd\",\n          emailAddress: this.state.email,\n          shouldPublicize: this.props.shouldPublicize,\n          payerChannelID: this.props.userChannelID,\n        },\n      };\n\n      const paymentIntent = await this.props.apolloClient.mutate({\n        mutation: GET_STRIPE_PAYMENT_INTENT,\n        variables: paymentIntentVariables,\n      });\n      if (paymentIntent.error) {\n        console.error(paymentIntent.error);\n        return false;\n      }\n      const paymentIntentSecret = (paymentIntent as any).data.paymentsCreateStripePaymentIntent.clientSecret;\n\n      const connectedAccountStripe = window.Stripe(this.props.stripeApiKey, {\n        stripeAccount: this.props.connectedStripeAccountID,\n      });\n\n      const piResult = await connectedAccountStripe.confirmCardPayment(paymentIntentSecret, {\n        payment_method: pamentMethodID2,\n      });\n      if (piResult.error) {\n        console.error(piResult.error);\n        return false;\n      }\n      return true;\n    } catch (err) {\n      console.error(err);\n      return false;\n    }\n  }\n\n  private async savePaymentMethodThenCloneAndPayViaIntent(): Promise<boolean> {\n    try {\n      const result = await (this.props.stripe as any).createPaymentMethod({\n        type: \"card\",\n        card: (this.props as any).elements.getElement(\"card\"),\n        billing_details: {\n          name: this.state.name,\n          email: this.state.email,\n        },\n      });\n\n      const paymentMethodID = result.paymentMethod.id;\n\n      const paymentMethodVariables = {\n        input: {\n          paymentMethodID,\n          emailAddress: this.state.email,\n          payerChannelID: this.props.userChannelID,\n        },\n      };\n\n      const paymentMethodResult = await this.props.apolloClient.mutate({\n        mutation: CREATE_PAYMENT_METHOD,\n        variables: paymentMethodVariables,\n      });\n      if (paymentMethodResult.error) {\n        console.error(paymentMethodResult.error);\n        return false;\n      }\n      return this.clonePaymentMethodAndPayViaIntent(\n        paymentMethodResult.data.paymentsCreateStripePaymentMethod.paymentMethodID,\n        this.props.userChannelID,\n      );\n    } catch (err) {\n      console.error(err);\n      return false;\n    }\n  }\n\n  private async useOneTimePaymentIntent(): Promise<boolean> {\n    try {\n      const result = await (this.props.stripe as any).createPaymentMethod({\n        type: \"card\",\n        card: (this.props as any).elements.getElement(\"card\"),\n        billing_details: {\n          name: this.state.name,\n          email: this.state.email,\n        },\n      });\n\n      const paymentMethodID = result.paymentMethod.id;\n      return this.clonePaymentMethodAndPayViaIntent(paymentMethodID);\n    } catch (err) {\n      console.error(err);\n      return false;\n    }\n  }\n\n  private async handleSubmit(): Promise<void> {\n    this.context.fireAnalyticsEvent(\"boost\", \"Stripe submit clicked\", this.props.postId, this.props.usdToSpend);\n    this.setState({ paymentProcessing: true, isPaymentError: false });\n    let didSaveEmail = false;\n    if (this.state.promptSaveEmail && this.state.email && this.state.shouldSaveEmailToAccount) {\n      didSaveEmail = true;\n      const variables = {\n        input: {\n          emailAddress: this.state.email,\n          channelID: this.props.userChannelID,\n          addToMailing: this.state.shouldAddEmailToMailingList,\n        },\n      };\n      await this.props.apolloClient.mutate({\n        mutation: SET_EMAIL_MUTATION,\n        variables,\n      });\n    }\n    let success = false;\n\n    const cardFormVisible = !this.state.hasSavedPaymentMethod || this.state.payWithNewCard;\n    if (this.props.stripe) {\n      if (!this.props.paymentIntentsEnabled) {\n        success = await this.handleChargePayment();\n      } else if (this.state.paymentMethodId !== \"\") {\n        success = await this.clonePaymentMethodAndPayViaIntent(this.state.paymentMethodId, this.props.userChannelID);\n      } else if (cardFormVisible && this.state.shouldSaveCCToAccount) {\n        success = await this.savePaymentMethodThenCloneAndPayViaIntent();\n      } else {\n        success = await this.useOneTimePaymentIntent();\n      }\n    }\n    if (success) {\n      this.context.fireAnalyticsEvent(\n        \"boost\",\n        \"Stripe transaction confirmed\",\n        this.props.postId,\n        this.props.usdToSpend,\n      );\n      this.props.handlePaymentSuccess(this.state.email !== \"\" && true, didSaveEmail);\n    } else {\n      this.context.fireAnalyticsEvent(\"boost\", \"Stripe transaction rejected\", this.props.postId, this.props.usdToSpend);\n      this.setState({ paymentProcessing: false, isPaymentError: true });\n    }\n  }\n}\n\nexport default injectStripe(PaymentIntentsStripeForm);\n"
  },
  {
    "path": "packages/components/src/Payments/Payments.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled, { ThemeProvider } from \"styled-components\";\nimport { PaymentsAmount } from \"./PaymentsAmount\";\nimport { PaymentsLoginOrGuest } from \"./PaymentsLoginOrGuest\";\nimport { PaymentsSuccess } from \"./PaymentsSuccess\";\nimport { RENDER_CONTEXT } from \"../context\";\nimport { DEFAULT_CHECKBOX_THEME } from \"../input\";\nimport { DEFAULT_BUTTON_THEME } from \"../Button\";\n\nconst Container = styled.div`\n  width: 400px;\n`;\n\nconst suggestedAmounts = [{ amount: \"1\" }, { amount: \"2\" }, { amount: \"3\" }, { amount: \"5\" }];\n\nconst onClickFunc = () => {\n  console.log(\"clicked\");\n};\n\nconst theme = {\n  ...DEFAULT_CHECKBOX_THEME,\n  ...DEFAULT_BUTTON_THEME,\n  renderContext: RENDER_CONTEXT.EMBED,\n};\n\nstoriesOf(\"Boost / Payments\", module)\n  .add(\"Payment Amount\", () => {\n    return (\n      <Container>\n        <ThemeProvider theme={theme}>\n          <PaymentsAmount newsroomName={\"Coda Story\"} suggestedAmounts={suggestedAmounts} handleAmount={onClickFunc} />\n        </ThemeProvider>\n      </Container>\n    );\n  })\n  .add(\"Payment Login or Guest Selection\", () => {\n    return (\n      <Container>\n        <ThemeProvider theme={theme}>\n          <PaymentsLoginOrGuest handleNext={onClickFunc} handleLogin={onClickFunc} />\n        </ThemeProvider>\n      </Container>\n    );\n  })\n  .add(\"Payment Success\", () => {\n    return (\n      <Container>\n        <ThemeProvider theme={theme}>\n          <PaymentsSuccess\n            newsroomName={\"Coda Story\"}\n            etherToSpend={2}\n            usdToSpend={2}\n            userSubmittedEmail={true}\n            handleClose={onClickFunc}\n          />\n        </ThemeProvider>\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Payments/Payments.tsx",
    "content": "import * as React from \"react\";\nimport { ICivilContext, CivilContext } from \"../context\";\nimport { PaymentsAmount } from \"./PaymentsAmount\";\nimport { PaymentsLoginOrGuest } from \"./PaymentsLoginOrGuest\";\nimport { PaymentsSelectType } from \"./PaymentsSelectType\";\nimport { PaymentsEth } from \"./PaymentsEth\";\nimport { PaymentsStripe } from \"./PaymentsStripe\";\nimport { PaymentsApplePay } from \"./PaymentsApplePay\";\nimport { PaymentsGooglePay } from \"./PaymentsGooglePay\";\nimport { PaymentsWrapper } from \"./PaymentsWrapper\";\nimport { SuggestedPaymentAmounts, CreditCardMin, PAYMENT_STATE } from \"./types\";\nimport { PaymentsSuccess } from \"./PaymentsSuccess\";\n\nexport interface PaymentsProps {\n  postId: string;\n  usdToSpend?: number;\n  boostType?: string;\n  paymentAddress: string;\n  newsroomName: string;\n  activeChallenge: boolean;\n  isStripeConnected: boolean;\n  stripeAccountID: string;\n  handleClose(): void;\n}\n\nexport interface PaymentsStates {\n  usdToSpend: number;\n  etherToSpend?: number;\n  selectedUsdToSpend?: number;\n  paymentAdjustedWarning: boolean;\n  paymentAdjustedStripe: boolean;\n  paymentAdjustedEth: boolean;\n  shouldPublicize: boolean;\n  paymentState: PAYMENT_STATE;\n  resetEthPayments: boolean;\n  userSubmittedEmail: boolean;\n  paymentInProgress: boolean;\n  waitingForConfirmation: boolean;\n}\n\nexport class Payments extends React.Component<PaymentsProps, PaymentsStates> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      usdToSpend: props.usdToSpend || 0,\n      paymentAdjustedWarning: false,\n      paymentAdjustedStripe: false,\n      paymentAdjustedEth: false,\n      shouldPublicize: true,\n      paymentState: PAYMENT_STATE.SELECT_AMOUNT,\n      resetEthPayments: false,\n      userSubmittedEmail: false,\n      paymentInProgress: false,\n      waitingForConfirmation: false,\n    };\n  }\n\n  public componentDidMount(): void {\n    this.context.auth.ensureLoggedInUserEnabled();\n\n    if (this.props.boostType === \"project\") {\n      const paymentAdjustedWarning = this.props.usdToSpend && this.props.usdToSpend <= CreditCardMin ? true : false;\n      this.setState({\n        paymentState: PAYMENT_STATE.PAYMENT_CHOOSE_LOGIN_OR_GUEST,\n        paymentAdjustedWarning,\n      });\n    }\n  }\n\n  public render(): JSX.Element {\n    if (!this.context) {\n      return <></>;\n    }\n\n    const {\n      usdToSpend,\n      etherToSpend,\n      shouldPublicize,\n      paymentState,\n      selectedUsdToSpend,\n      paymentAdjustedWarning,\n      paymentAdjustedStripe,\n      paymentAdjustedEth,\n      userSubmittedEmail,\n      paymentInProgress,\n      waitingForConfirmation,\n    } = this.state;\n    const {\n      postId,\n      paymentAddress,\n      newsroomName,\n      activeChallenge,\n      isStripeConnected,\n      stripeAccountID,\n      boostType,\n      handleClose,\n    } = this.props;\n    const showWeb3Login = this.context.auth.showWeb3Login;\n\n    // User logged in from PAYMENT_CHOOSE_LOGIN_OR_GUEST state, which will be reflected in context, and we should now show them SELECT_PAYMENT_TYPE state instead.\n    const proceedToPaymentType =\n      paymentState === PAYMENT_STATE.PAYMENT_CHOOSE_LOGIN_OR_GUEST && !!this.context.currentUser;\n\n    if (paymentState === PAYMENT_STATE.PAYMENT_CHOOSE_LOGIN_OR_GUEST && !proceedToPaymentType) {\n      return (\n        <PaymentsLoginOrGuest\n          handleNext={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n          handleLogin={showWeb3Login}\n        />\n      );\n    }\n\n    if (proceedToPaymentType || paymentState === PAYMENT_STATE.SELECT_PAYMENT_TYPE) {\n      return (\n        <PaymentsWrapper\n          boostType={boostType}\n          usdToSpend={usdToSpend}\n          newsroomName={newsroomName}\n          activeChallenge={activeChallenge}\n          paymentAdjustedWarning={paymentAdjustedWarning}\n          handleEditAmount={() => this.handleUpdateState(PAYMENT_STATE.SELECT_AMOUNT)}\n          handleBack={() => this.handleUpdateState(PAYMENT_STATE.SELECT_AMOUNT)}\n        >\n          <PaymentsSelectType\n            postId={postId}\n            usdToSpend={usdToSpend}\n            isStripeConnected={isStripeConnected}\n            newsroomName={newsroomName}\n            shouldPublicize={shouldPublicize}\n            handleShouldPublicize={this.handleShouldPublicize}\n            handleNext={this.handleUpdateState}\n            handlePaymentSuccess={() => this.handleUpdateState(PAYMENT_STATE.PAYMENT_SUCCESS)}\n          />\n        </PaymentsWrapper>\n      );\n    }\n\n    if (paymentState === PAYMENT_STATE.ETH_PAYMENT) {\n      return (\n        <PaymentsWrapper\n          boostType={boostType}\n          usdToSpend={usdToSpend}\n          newsroomName={newsroomName}\n          activeChallenge={activeChallenge}\n          paymentAdjustedEth={paymentAdjustedEth}\n          selectedUsdToSpend={selectedUsdToSpend}\n          etherToSpend={etherToSpend}\n          paymentInProgress={paymentInProgress}\n          waitingForConfirmation={waitingForConfirmation}\n          handleBack={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n          handleClose={handleClose}\n        >\n          <PaymentsEth\n            postId={postId}\n            newsroomName={newsroomName}\n            paymentAddress={paymentAddress}\n            shouldPublicize={shouldPublicize}\n            usdToSpend={usdToSpend}\n            etherToSpend={this.state.etherToSpend}\n            resetEthPayments={this.state.resetEthPayments}\n            handleBoostUpdate={this.handleUpdateBoostFromEth}\n            handlePaymentSuccess={this.handlePaymentSuccess}\n            handleEditPaymentType={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n            handlePaymentInProgress={this.handlePaymentInProgress}\n          />\n        </PaymentsWrapper>\n      );\n    }\n\n    if (paymentState === PAYMENT_STATE.STRIPE_PAYMENT) {\n      return (\n        <PaymentsWrapper\n          boostType={boostType}\n          usdToSpend={usdToSpend}\n          newsroomName={newsroomName}\n          activeChallenge={activeChallenge}\n          paymentAdjustedStripe={paymentAdjustedStripe}\n          selectedUsdToSpend={selectedUsdToSpend}\n          handleBack={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n        >\n          <PaymentsStripe\n            postId={postId}\n            newsroomName={newsroomName}\n            shouldPublicize={shouldPublicize}\n            usdToSpend={usdToSpend}\n            stripeAccountID={stripeAccountID}\n            handlePaymentSuccess={this.handlePaymentSuccess}\n            handleEditPaymentType={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n          />\n        </PaymentsWrapper>\n      );\n    }\n\n    if (paymentState === PAYMENT_STATE.APPLE_PAY) {\n      return (\n        <PaymentsWrapper\n          boostType={boostType}\n          usdToSpend={usdToSpend}\n          newsroomName={newsroomName}\n          activeChallenge={activeChallenge}\n          handleBack={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n        >\n          <PaymentsApplePay\n            handleEditPaymentType={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n            newsroomName={newsroomName}\n            usdToSpend={usdToSpend}\n          />\n        </PaymentsWrapper>\n      );\n    }\n\n    if (paymentState === PAYMENT_STATE.GOOGLE_PAY) {\n      return (\n        <PaymentsWrapper\n          boostType={boostType}\n          usdToSpend={usdToSpend}\n          newsroomName={newsroomName}\n          activeChallenge={activeChallenge}\n          handleBack={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n        >\n          <PaymentsGooglePay\n            handleEditPaymentType={() => this.handleUpdateState(PAYMENT_STATE.SELECT_PAYMENT_TYPE)}\n            newsroomName={newsroomName}\n            usdToSpend={usdToSpend}\n          />\n        </PaymentsWrapper>\n      );\n    }\n\n    if (\n      paymentState === PAYMENT_STATE.PAYMENT_SUCCESS ||\n      paymentState === PAYMENT_STATE.PAYMENT_SUCCESS_WITH_SAVED_EMAIL\n    ) {\n      return (\n        <PaymentsWrapper newsroomName={newsroomName} activeChallenge={activeChallenge} boostType={boostType}>\n          <PaymentsSuccess\n            newsroomName={newsroomName}\n            usdToSpend={usdToSpend}\n            handleClose={handleClose}\n            userSubmittedEmail={userSubmittedEmail}\n          />\n          {paymentState === PAYMENT_STATE.PAYMENT_SUCCESS_WITH_SAVED_EMAIL && (\n            <p>Please check your email to confirm your email address.</p>\n          )}\n        </PaymentsWrapper>\n      );\n    }\n\n    return (\n      <PaymentsWrapper\n        newsroomName={newsroomName}\n        activeChallenge={activeChallenge}\n        handleBack={handleClose}\n        boostType={boostType}\n      >\n        <PaymentsAmount\n          newsroomName={newsroomName}\n          suggestedAmounts={SuggestedPaymentAmounts}\n          handleAmount={this.handleAmount}\n        />\n      </PaymentsWrapper>\n    );\n  }\n\n  private handleShouldPublicize = (shouldPublicize: boolean) => {\n    this.setState({ shouldPublicize });\n  };\n\n  private handlePaymentSuccess = (userSubmittedEmail: boolean, didSaveEmail: boolean, etherToSpend?: number) => {\n    if (didSaveEmail) {\n      this.setState({ paymentState: PAYMENT_STATE.PAYMENT_SUCCESS_WITH_SAVED_EMAIL, userSubmittedEmail, etherToSpend });\n    } else {\n      this.setState({ paymentState: PAYMENT_STATE.PAYMENT_SUCCESS, userSubmittedEmail, etherToSpend });\n    }\n  };\n\n  private handlePaymentInProgress = (paymentInProgress: boolean, waitingForConfirmation: boolean) => {\n    this.setState({ paymentInProgress, waitingForConfirmation });\n  };\n\n  private handleUpdateState = (paymentState: PAYMENT_STATE) => {\n    if (paymentState === PAYMENT_STATE.STRIPE_PAYMENT && this.state.usdToSpend < CreditCardMin) {\n      this.setState({\n        paymentState,\n        usdToSpend: CreditCardMin,\n        selectedUsdToSpend: this.state.usdToSpend,\n        paymentAdjustedStripe: true,\n        paymentAdjustedEth: true,\n      });\n    } else {\n      this.setState({ paymentState, paymentAdjustedStripe: false, paymentAdjustedEth: false });\n    }\n  };\n\n  private handleAmount = (usdToSpend: number) => {\n    const paymentAdjustedWarning = usdToSpend < CreditCardMin ? true : false;\n    if (this.context && this.context.currentUser) {\n      this.setState({\n        usdToSpend,\n        paymentState: PAYMENT_STATE.SELECT_PAYMENT_TYPE,\n        paymentAdjustedWarning,\n      });\n    } else {\n      this.setState({\n        usdToSpend,\n        paymentState: PAYMENT_STATE.PAYMENT_CHOOSE_LOGIN_OR_GUEST,\n        paymentAdjustedWarning,\n      });\n    }\n  };\n\n  private handleUpdateBoostFromEth = (newUsdToSpend: number, selectedUsdToSpend: number, etherToSpend: number) => {\n    this.setState({\n      usdToSpend: newUsdToSpend,\n      selectedUsdToSpend,\n      etherToSpend,\n      paymentAdjustedEth: true,\n      paymentAdjustedStripe: false,\n      resetEthPayments: true,\n    });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsAmount.tsx",
    "content": "import * as React from \"react\";\nimport {\n  PaymentBtn,\n  PaymentAmountUserInput,\n  PaymentGhostBtn,\n  PaymentDirectionsStyled,\n} from \"./PaymentsStyledComponents\";\nimport { SelectPaymentAmountText, EnterCustomAmountText } from \"./PaymentsTextComponents\";\nimport { PaymentsRadio } from \"./PaymentsRadio\";\nimport { RENDER_CONTEXT, CivilContext, ICivilContext } from \"../context\";\nimport { RadioInput, CurrencyInput } from \"@joincivil/elements\";\n\nexport interface SuggestedAmounts {\n  amount: string;\n}\n\nexport interface PaymentsAmountProps {\n  newsroomName: string;\n  suggestedAmounts: SuggestedAmounts[];\n  handleAmount(usdToSpend: number): void;\n}\n\nexport interface PaymentsAmountStates {\n  showInput: boolean;\n  usdToSpend: number;\n}\n\nexport class PaymentsAmount extends React.Component<PaymentsAmountProps, PaymentsAmountStates> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      showInput: false,\n      usdToSpend: 0,\n    };\n  }\n\n  public render(): JSX.Element {\n    const disableNext = this.state.usdToSpend === 0;\n    return (\n      <>\n        {(!this.context || this.context.renderContext !== RENDER_CONTEXT.EMBED) && (\n          <PaymentDirectionsStyled>\n            <SelectPaymentAmountText />\n          </PaymentDirectionsStyled>\n        )}\n        <RadioInput onChange={this.handleRadioSelection} label=\"\" name=\"SuggestedAmounts\">\n          {this.props.suggestedAmounts.map((item, i) => (\n            <PaymentsRadio value={item.amount} key={i}>\n              ${item.amount}\n              <span>USD</span>\n            </PaymentsRadio>\n          ))}\n        </RadioInput>\n        <PaymentAmountUserInput>\n          {this.state.showInput ? (\n            <CurrencyInput icon={<>$</>} name=\"CurrencyInput\" onChange={this.handleAmountInput} />\n          ) : (\n            <PaymentGhostBtn onClick={this.handleShowInput}>\n              <EnterCustomAmountText />\n            </PaymentGhostBtn>\n          )}\n        </PaymentAmountUserInput>\n        <PaymentBtn onClick={() => this.props.handleAmount(this.state.usdToSpend)} disabled={disableNext}>\n          Next\n        </PaymentBtn>\n      </>\n    );\n  }\n\n  private handleShowInput = () => {\n    this.setState({ showInput: true });\n  };\n\n  private handleRadioSelection = (name: string, value: any) => {\n    this.setState({ usdToSpend: value });\n  };\n\n  private handleAmountInput = (name: string, value: any) => {\n    this.setState({ usdToSpend: value });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsApplePay.tsx",
    "content": "import * as React from \"react\";\nimport { PayWithAppleText, PaymentStripeNoticeText, PaymentTermsText } from \"./PaymentsTextComponents\";\nimport { PaymentTerms } from \"./PaymentsStyledComponents\";\nimport { PaymentsFormWrapper } from \"./PaymentsFormWrapper\";\n\nexport interface PaymentsApplePayProps {\n  newsroomName: string;\n  usdToSpend: number;\n  handleEditPaymentType(): void;\n}\n\nexport const PaymentsApplePay: React.FunctionComponent<PaymentsApplePayProps> = props => {\n  return (\n    <>\n      <PaymentsFormWrapper\n        handleEditPaymentType={props.handleEditPaymentType}\n        payWithText={<PayWithAppleText />}\n        paymentNoticeText={<PaymentStripeNoticeText />}\n      />\n      {/* Apple Pay TKTK */}\n      <PaymentTerms>\n        <PaymentTermsText />\n      </PaymentTerms>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsEth.tsx",
    "content": "import * as React from \"react\";\nimport { Mutation, MutationFunc } from \"react-apollo\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { ICivilContext, CivilContext } from \"../context\";\nimport { PAYMENTS_ETH_MUTATION, SET_EMAIL_MUTATION } from \"./queries\";\nimport { UsdEthConverter } from \"../\";\nimport { PaymentBtn, PaymentHide } from \"./PaymentsStyledComponents\";\nimport { ConnectWalletWarningText } from \"./PaymentsTextComponents\";\nimport { PaymentsEthForm } from \"./PaymentsEthForm\";\nimport { PaymentsEthUpdateAmount } from \"./PaymentsEthUpdateAmount\";\nimport { PaymentsEthWrapper } from \"./PaymentsEthWrapper\";\n\nexport interface PaymentsEthProps {\n  postId: string;\n  newsroomName: string;\n  paymentAddress: EthAddress;\n  shouldPublicize: boolean;\n  etherToSpend?: number;\n  usdToSpend: number;\n  resetEthPayments: boolean;\n  handleBoostUpdate(newUsdToSpend: number, selectedUsdToSpend: number, etherToSpend: number): void;\n  handlePaymentSuccess(userSubmittedEmail: boolean, didSaveEmail: boolean, etherToSpend: number): void;\n  handleEditPaymentType(): void;\n  handlePaymentInProgress(ethPaymentInProgress: boolean, waitingForConfirmation: boolean): void;\n}\n\nexport interface PaymentsEthStates {\n  etherToSpend: number;\n  usdToSpend: number;\n  notEnoughEthError: boolean;\n  userAddress?: string;\n}\n\nexport class PaymentsEth extends React.Component<PaymentsEthProps, PaymentsEthStates> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  public static getDerivedStateFromProps(props: PaymentsEthProps, state: PaymentsEthStates): PaymentsEthStates {\n    if (props.resetEthPayments) {\n      return {\n        etherToSpend: props.etherToSpend || 0,\n        usdToSpend: props.usdToSpend,\n        notEnoughEthError: false,\n      };\n    }\n\n    return {\n      ...state,\n    };\n  }\n\n  public constructor(props: PaymentsEthProps) {\n    super(props);\n    this.state = {\n      etherToSpend: props.etherToSpend || 0,\n      usdToSpend: props.usdToSpend,\n      notEnoughEthError: false,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    // Grab user address after any `currentProviderEnable` call. For users who aren't logged in to Civil but are logged in to metamask, this is the only way we can get their address:\n    this.setState({\n      userAddress: await this.context.civil.accountStream.first().toPromise(),\n    });\n  }\n\n  public render(): JSX.Element {\n    const userChannelID = (this.context && this.context.currentUser && this.context.currentUser.userChannel.id) || \"\";\n    const userEmail =\n      this.context && this.context.currentUser && this.context.currentUser.userChannel.EmailAddressRestricted;\n\n    const userAddress =\n      this.state.userAddress || (this.context && this.context.currentUser && this.context.currentUser.ethAddress);\n\n    if (!userAddress) {\n      return (\n        <PaymentsEthWrapper\n          handleEditPaymentType={this.props.handleEditPaymentType}\n          etherToSpend={this.state.etherToSpend}\n          usdToSpend={this.state.usdToSpend}\n        >\n          <ConnectWalletWarningText />\n          <PaymentBtn\n            onClick={async () => {\n              await this.context.civil.currentProviderEnable();\n            }}\n          >\n            Select Wallet\n          </PaymentBtn>\n        </PaymentsEthWrapper>\n      );\n    }\n\n    if (this.state.notEnoughEthError) {\n      return (\n        <PaymentsEthWrapper\n          handleEditPaymentType={this.props.handleEditPaymentType}\n          etherToSpend={this.state.etherToSpend}\n          usdToSpend={this.state.usdToSpend}\n        >\n          <PaymentsEthUpdateAmount\n            etherToSpend={this.state.etherToSpend}\n            usdToSpend={this.state.usdToSpend}\n            handleBoostUpdate={this.props.handleBoostUpdate}\n          />\n        </PaymentsEthWrapper>\n      );\n    }\n\n    if (this.state.etherToSpend === 0) {\n      return (\n        <PaymentsEthWrapper\n          handleEditPaymentType={this.props.handleEditPaymentType}\n          etherToSpend={this.state.etherToSpend}\n          usdToSpend={this.state.usdToSpend}\n        >\n          <PaymentHide>\n            <UsdEthConverter\n              fromValue={this.state.usdToSpend.toString()}\n              onNotEnoughEthError={(error: boolean) => this.notEnoughEthError(error)}\n              onConversion={(usd: number, eth: number) => this.setConvertedAmount(usd, eth)}\n            />\n          </PaymentHide>\n        </PaymentsEthWrapper>\n      );\n    }\n\n    return (\n      <Mutation mutation={PAYMENTS_ETH_MUTATION}>\n        {(paymentsCreateEtherPayment: MutationFunc) => {\n          return (\n            <Mutation mutation={SET_EMAIL_MUTATION}>\n              {(setEmailMutation: MutationFunc) => {\n                return (\n                  <PaymentsEthForm\n                    postId={this.props.postId}\n                    paymentAddress={this.props.paymentAddress}\n                    userAddress={userAddress}\n                    userEmail={userEmail}\n                    userChannelID={userChannelID}\n                    shouldPublicize={this.props.shouldPublicize}\n                    savePayment={paymentsCreateEtherPayment}\n                    setEmail={setEmailMutation}\n                    etherToSpend={this.state.etherToSpend}\n                    usdToSpend={this.state.usdToSpend}\n                    newsroomName={this.props.newsroomName}\n                    handlePaymentSuccess={this.props.handlePaymentSuccess}\n                    handleEditPaymentType={this.props.handleEditPaymentType}\n                    handlePaymentInProgress={this.props.handlePaymentInProgress}\n                  />\n                );\n              }}\n            </Mutation>\n          );\n        }}\n      </Mutation>\n    );\n  }\n\n  private setConvertedAmount(usdToSpend: number, etherToSpend: number): void {\n    const eth = parseFloat(etherToSpend.toFixed(6));\n    this.setState({ usdToSpend, etherToSpend: eth });\n  }\n\n  private notEnoughEthError = (error: boolean) => {\n    this.setState({ notEnoughEthError: error });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsEthForm.tsx",
    "content": "import * as React from \"react\";\nimport { MutationFunc } from \"react-apollo\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { isValidEmail } from \"@joincivil/utils\";\nimport {\n  PaymentTerms,\n  PaymentInputLabel,\n  CheckboxContainer,\n  CheckboxSection,\n  CheckboxLabel,\n} from \"./PaymentsStyledComponents\";\nimport { TransactionButtonNoModal, CivilContext, ICivilContext } from \"../\";\nimport { PaymentsEthWrapper } from \"./PaymentsEthWrapper\";\nimport { InputValidationUI } from \"./PaymentsInputValidationUI\";\nimport {\n  PaymentErrorText,\n  PaymentTermsText,\n  PaymentEmailConfirmationText,\n  EnoughETHInWalletText,\n  PaymentEmailPrepopulatedText,\n} from \"./PaymentsTextComponents\";\nimport { INPUT_STATE } from \"./types\";\nimport { Checkbox, CheckboxSizes } from \"../input\";\n\nexport interface PaymentsEthFormProps {\n  postId: string;\n  etherToSpend: number;\n  usdToSpend: number;\n  shouldPublicize: boolean;\n  newsroomName: string;\n  paymentAddress: EthAddress;\n  userAddress?: EthAddress;\n  userEmail?: string;\n  userChannelID?: string;\n  savePayment: MutationFunc;\n  setEmail: MutationFunc;\n  handlePaymentSuccess(userSubmittedEmail: boolean, didSaveEmail: boolean, etherToSpend: number): void;\n  handleEditPaymentType(): void;\n  handlePaymentInProgress(ethPaymentInProgress: boolean, waitingForConfirmation: boolean): void;\n}\n\nexport interface PaymentsEthFormState {\n  email: string;\n  emailState: string;\n  saveEmailState: string;\n  isPaymentError: boolean;\n  wasEmailPrepopulated: boolean;\n  promptSaveEmail: boolean;\n  shouldSaveEmailToAccount: boolean;\n  shouldAddEmailToMailingList: boolean;\n}\n\nexport class PaymentsEthForm extends React.Component<PaymentsEthFormProps, PaymentsEthFormState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  constructor(props: PaymentsEthFormProps) {\n    super(props);\n    this.state = {\n      email: this.props.userEmail || \"\",\n      promptSaveEmail: !props.userEmail && props.userChannelID ? true : false,\n      wasEmailPrepopulated: this.props.userEmail ? true : false,\n      emailState: INPUT_STATE.EMPTY,\n      saveEmailState: INPUT_STATE.EMPTY,\n      isPaymentError: false,\n      shouldSaveEmailToAccount: true,\n      shouldAddEmailToMailingList: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <PaymentsEthWrapper\n          handleEditPaymentType={this.props.handleEditPaymentType}\n          etherToSpend={this.props.etherToSpend}\n          usdToSpend={this.props.usdToSpend}\n        >\n          <EnoughETHInWalletText />\n          {this.state.wasEmailPrepopulated && <PaymentEmailPrepopulatedText email={this.state.email} />}\n          {!this.state.wasEmailPrepopulated && (\n            <>\n              <PaymentInputLabel>Email address (optional)</PaymentInputLabel>\n              <InputValidationUI inputState={this.state.emailState}>\n                <input\n                  defaultValue={this.state.email}\n                  id=\"email\"\n                  name=\"email\"\n                  type=\"email\"\n                  maxLength={254}\n                  onBlur={() => this.handleOnBlur(event)}\n                  onChange={() => this.handleOnChange(event)}\n                />\n                <PaymentEmailConfirmationText />\n              </InputValidationUI>\n            </>\n          )}\n        </PaymentsEthWrapper>\n        {this.state.promptSaveEmail && this.state.saveEmailState === INPUT_STATE.VALID && (\n          <>\n            <CheckboxContainer>\n              <CheckboxSection>\n                <label>\n                  <Checkbox\n                    size={CheckboxSizes.SMALL}\n                    checked={this.state.shouldSaveEmailToAccount}\n                    onClick={this.toggleShouldSaveEmailToAccount}\n                  />\n                  <CheckboxLabel>Save my email to my Civil account.</CheckboxLabel>\n                </label>\n              </CheckboxSection>\n            </CheckboxContainer>\n            <CheckboxContainer>\n              <CheckboxSection>\n                <label>\n                  <Checkbox\n                    size={CheckboxSizes.SMALL}\n                    checked={this.state.shouldAddEmailToMailingList}\n                    onClick={this.toggleShouldAddEmailToMailingList}\n                  />\n                  <CheckboxLabel>Receive the Civil Weekly newsletter in my inbox.</CheckboxLabel>\n                </label>\n              </CheckboxSection>\n            </CheckboxContainer>\n          </>\n        )}\n        <TransactionButtonNoModal\n          transactions={[\n            {\n              preTransaction: this.saveEmail,\n              transaction: this.sendPayment,\n              handleTransactionHash: this.handleTransactionHash,\n              onTransactionError: this.onTransactionError,\n              postTransaction: this.postTransaction,\n            },\n          ]}\n          disabled={this.state.emailState === INPUT_STATE.INVALID}\n        >\n          Complete Boost\n        </TransactionButtonNoModal>\n        {this.state.isPaymentError && <PaymentErrorText />}\n        <PaymentTerms>\n          <PaymentTermsText />\n        </PaymentTerms>\n      </>\n    );\n  }\n\n  private toggleShouldSaveEmailToAccount = () => {\n    this.setState({ shouldSaveEmailToAccount: !this.state.shouldSaveEmailToAccount });\n  };\n\n  private toggleShouldAddEmailToMailingList = () => {\n    this.setState({ shouldAddEmailToMailingList: !this.state.shouldAddEmailToMailingList });\n  };\n\n  private handleOnBlur = (event: any) => {\n    const state = event.target.id;\n    const value = event.target.value;\n\n    switch (state) {\n      case \"email\":\n        const validEmail = isValidEmail(event.target.value);\n        validEmail || value === \"\"\n          ? this.setState({ email: value, emailState: INPUT_STATE.VALID })\n          : this.setState({ emailState: INPUT_STATE.INVALID });\n        break;\n      default:\n        break;\n    }\n  };\n\n  private handleOnChange = (event: any) => {\n    const state = event.target.id;\n    const value = event.target.value;\n\n    switch (state) {\n      case \"email\":\n        const validEmail = isValidEmail(event.target.value);\n        validEmail\n          ? this.setState({ email: value, saveEmailState: INPUT_STATE.VALID, emailState: INPUT_STATE.VALID })\n          : this.setState({ saveEmailState: INPUT_STATE.INVALID });\n        if (value === \"\") {\n          this.setState({ email: value, emailState: INPUT_STATE.VALID });\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  private saveEmail = async (): Promise<void> => {\n    if (\n      this.state.promptSaveEmail &&\n      this.state.emailState === INPUT_STATE.VALID &&\n      this.state.shouldSaveEmailToAccount\n    ) {\n      const variables = {\n        input: {\n          emailAddress: this.state.email,\n          channelID: this.props.userChannelID,\n          addToMailing: this.state.shouldAddEmailToMailingList,\n        },\n      };\n      await this.props.setEmail({\n        variables,\n      });\n    }\n  };\n\n  private sendPayment = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    this.context.fireAnalyticsEvent(\"boost\", \"ETH submit clicked\", this.props.postId, this.props.usdToSpend);\n    this.props.handlePaymentInProgress(true, true);\n    if (this.context.civil) {\n      return this.context.civil.simplePayment(this.props.paymentAddress, this.props.etherToSpend.toString());\n    }\n  };\n\n  private handleTransactionHash = async (txHash: TxHash) => {\n    this.context.fireAnalyticsEvent(\"boost\", \"ETH transaction submitted\", this.props.postId, this.props.usdToSpend);\n    this.props.handlePaymentInProgress(true, false);\n    await this.props.savePayment({\n      variables: {\n        postID: this.props.postId,\n        input: {\n          transactionID: txHash,\n          paymentAddress: this.props.paymentAddress,\n          fromAddress: this.props.userAddress,\n          amount: this.props.etherToSpend,\n          usdAmount: this.props.usdToSpend.toString(),\n          emailAddress: this.state.email,\n          shouldPublicize: this.props.shouldPublicize,\n          payerChannelID: this.props.userChannelID,\n        },\n      },\n    });\n  };\n\n  private onTransactionError = (err: string) => {\n    this.context.fireAnalyticsEvent(\"boost\", \"ETH transaction rejected\", this.props.postId, this.props.usdToSpend);\n    this.setState({ isPaymentError: true });\n    this.props.handlePaymentInProgress(false, false);\n  };\n\n  private postTransaction = () => {\n    this.context.fireAnalyticsEvent(\"boost\", \"ETH transaction confirmed\", this.props.postId, this.props.usdToSpend);\n    const didSaveEmail =\n      this.state.promptSaveEmail && this.state.email && this.state.shouldSaveEmailToAccount ? true : false;\n    this.props.handlePaymentSuccess(this.state.email !== \"\" && true, didSaveEmail, this.props.etherToSpend);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsEthUpdateAmount.tsx",
    "content": "import * as React from \"react\";\nimport { UsdEthConverter } from \"../\";\nimport { PaymentBtn } from \"./PaymentsStyledComponents\";\nimport { NotEnoughETHInWalletText } from \"./PaymentsTextComponents\";\n\nexport interface PaymentsEthUpdateAmountProps {\n  etherToSpend: number;\n  usdToSpend: number;\n  handleBoostUpdate(newUsdToSpend: number, selectedUsdToSpend: number, etherToSpend: number): void;\n}\n\nexport interface PaymentsEthUpdateAmountStates {\n  etherToSpend: number;\n  usdToSpend: number;\n  notEnoughEthError: boolean;\n}\n\nexport class PaymentsEthUpdateAmount extends React.Component<\n  PaymentsEthUpdateAmountProps,\n  PaymentsEthUpdateAmountStates\n> {\n  public constructor(props: PaymentsEthUpdateAmountProps) {\n    super(props);\n    this.state = {\n      etherToSpend: this.props.etherToSpend,\n      usdToSpend: this.props.usdToSpend,\n      notEnoughEthError: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <NotEnoughETHInWalletText />\n        <UsdEthConverter\n          fromValue={this.state.usdToSpend.toString()}\n          onNotEnoughEthError={(error: boolean) => this.notEnoughEthError(error)}\n          onConversion={(usd: number, eth: number) => this.setConvertedAmount(usd, eth)}\n        />\n        <PaymentBtn\n          onClick={() =>\n            this.props.handleBoostUpdate(this.state.usdToSpend, this.props.usdToSpend, this.state.etherToSpend)\n          }\n          disabled={this.state.notEnoughEthError}\n        >\n          Update Boost Amount\n        </PaymentBtn>\n      </>\n    );\n  }\n\n  private setConvertedAmount(usdToSpend: number, etherToSpend: number): void {\n    const eth = parseFloat(etherToSpend.toFixed(6));\n    this.setState({ usdToSpend, etherToSpend: eth });\n  }\n\n  private notEnoughEthError = (error: boolean) => {\n    this.setState({ notEnoughEthError: error });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsEthWrapper.tsx",
    "content": "import * as React from \"react\";\nimport { PaymentsFormWrapper } from \"./PaymentsFormWrapper\";\nimport {\n  PayWithEthText,\n  PaymentEthNoticeText,\n  WhyEthInfoText,\n  WhatIsEthInfoText,\n  CanUseCVLInfoText,\n} from \"./PaymentsTextComponents\";\nimport { PaymentEthLearnMore, PaymentAmountEth } from \"./PaymentsStyledComponents\";\nimport { PaymentsModal } from \"./PaymentsModal\";\n\nexport enum MODEL_CONTENT {\n  WHY_ETH,\n  WHAT_IS_ETH,\n  CAN_USE_CVL,\n}\n\nexport interface PaymentsEthWrapperProps {\n  etherToSpend: number;\n  usdToSpend: number;\n  children?: any;\n  handleEditPaymentType(): void;\n}\nexport interface PaymentsEthWrapperStates {\n  isInfoModalOpen: boolean;\n  modalContent?: MODEL_CONTENT;\n}\n\nexport class PaymentsEthWrapper extends React.Component<PaymentsEthWrapperProps, PaymentsEthWrapperStates> {\n  public constructor(props: PaymentsEthWrapperProps) {\n    super(props);\n    this.state = {\n      isInfoModalOpen: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <PaymentsFormWrapper\n        handleEditPaymentType={this.props.handleEditPaymentType}\n        payWithText={<PayWithEthText />}\n        paymentNoticeText={<PaymentEthNoticeText />}\n      >\n        <PaymentEthLearnMore>\n          <a onClick={() => this.openInfoModal(MODEL_CONTENT.WHAT_IS_ETH)}>What is ETH?</a>\n          <a onClick={() => this.openInfoModal(MODEL_CONTENT.WHY_ETH)}>Why ETH?</a>\n          <a onClick={() => this.openInfoModal(MODEL_CONTENT.CAN_USE_CVL)}>Can I use CVL?</a>\n        </PaymentEthLearnMore>\n        <PaymentAmountEth>\n          <label>Boost</label>\n          {this.props.etherToSpend + \" ETH\"} <span>&asymp; {\"$\" + this.props.usdToSpend}</span>\n        </PaymentAmountEth>\n        {this.props.children}\n        <PaymentsModal open={this.state.isInfoModalOpen} handleClose={this.handleClose}>\n          {this.renderInfoModal()}\n        </PaymentsModal>\n      </PaymentsFormWrapper>\n    );\n  }\n\n  private renderInfoModal = () => {\n    switch (this.state.modalContent) {\n      case MODEL_CONTENT.WHY_ETH:\n        return <WhyEthInfoText />;\n      case MODEL_CONTENT.WHAT_IS_ETH:\n        return <WhatIsEthInfoText />;\n      case MODEL_CONTENT.CAN_USE_CVL:\n        return <CanUseCVLInfoText />;\n      default:\n        return <></>;\n    }\n  };\n\n  private openInfoModal = (modelContent: any) => {\n    this.setState({ isInfoModalOpen: true, modalContent: modelContent });\n  };\n\n  private handleClose = () => {\n    this.setState({ isInfoModalOpen: false });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsFormWrapper.tsx",
    "content": "import * as React from \"react\";\nimport { SecureLockIcon } from \"@joincivil/elements\";\nimport {\n  PaymentFormWrapperStyled,\n  PaymentInfoFlex,\n  PaymentTypeLabel,\n  PaymentSecure,\n  PaymentNotice,\n} from \"./PaymentsStyledComponents\";\nimport { PaymentEditText } from \"./PaymentsTextComponents\";\n\nexport interface PaymentsFormWrapperProps {\n  payWithText: string | JSX.Element;\n  paymentNoticeText: string | JSX.Element;\n  showSecureIcon?: boolean;\n  children?: any;\n  handleEditPaymentType(): void;\n}\n\nexport const PaymentsFormWrapper: React.FunctionComponent<PaymentsFormWrapperProps> = props => {\n  return (\n    <>\n      <PaymentEditText handleEditPaymentType={props.handleEditPaymentType} />\n      <PaymentFormWrapperStyled>\n        <PaymentInfoFlex>\n          <PaymentTypeLabel>{props.payWithText}</PaymentTypeLabel>\n          {props.showSecureIcon && (\n            <PaymentSecure>\n              Secure transaction <SecureLockIcon />\n            </PaymentSecure>\n          )}\n        </PaymentInfoFlex>\n        <PaymentNotice>{props.paymentNoticeText}</PaymentNotice>\n        {props.children}\n      </PaymentFormWrapperStyled>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsGooglePay.tsx",
    "content": "import * as React from \"react\";\nimport { PayWithGoogleText, PaymentStripeNoticeText, PaymentTermsText } from \"./PaymentsTextComponents\";\nimport { PaymentTerms } from \"./PaymentsStyledComponents\";\nimport { PaymentsFormWrapper } from \"./PaymentsFormWrapper\";\n\nexport interface PaymentsGooglePayProps {\n  newsroomName: string;\n  usdToSpend: number;\n  handleEditPaymentType(): void;\n}\n\nexport const PaymentsGooglePay: React.FunctionComponent<PaymentsGooglePayProps> = props => {\n  return (\n    <>\n      <PaymentsFormWrapper\n        handleEditPaymentType={props.handleEditPaymentType}\n        payWithText={<PayWithGoogleText />}\n        paymentNoticeText={<PaymentStripeNoticeText />}\n      />\n      {/* Google Pay TKTK */}\n      <PaymentTerms>\n        <PaymentTermsText />\n      </PaymentTerms>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsInputValidationUI.tsx",
    "content": "import * as React from \"react\";\nimport { INPUT_STATE } from \"./types\";\nimport { colors, fonts, ErrorIcon } from \"../\";\nimport styled from \"styled-components\";\n\nexport interface InputValidationStyleProps {\n  inputState?: string;\n}\n\nexport const StripeElement = styled.div`\n  border: 1px solid\n    ${(props: InputValidationStyleProps) =>\n      props.inputState === INPUT_STATE.INVALID ? colors.accent.CIVIL_RED : colors.accent.CIVIL_GRAY_3};\n  border-radius: 3px;\n  padding: 12px;\n`;\n\nconst InputErrorMessageWrapper = styled.div`\n  bottom: -25px;\n  color: ${colors.accent.CIVIL_RED};\n  font-size: 12px;\n  left: 2px;\n  position: absolute;\n\n  svg {\n    margin-right: 5px;\n    vertical-align: top;\n  }\n`;\n\nconst InputWrapper = styled.div`\n  margin-bottom: 20px;\n  position: relative;\n  width: 100%;\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 13px;\n    line-height: 18px;\n    margin: 5px 0 0;\n  }\n\n  input {\n    border: 1px solid\n      ${(props: InputValidationStyleProps) =>\n        props.inputState === INPUT_STATE.INVALID ? colors.accent.CIVIL_RED : colors.accent.CIVIL_GRAY_3};\n    border-radius: 3px;\n    font-size: 13px;\n    padding: 10px 35px 10px 12px;\n    width: 100%;\n\n    &::placeholder {\n      color: ${colors.accent.CIVIL_GRAY_1};\n    }\n\n    &:focus {\n      border-color: ${colors.accent.CIVIL_BLUE};\n      outline: none;\n    }\n  }\n\n  select {\n    appearance: none;\n    background-color: transparent;\n    border: 1px solid\n      ${(props: InputValidationStyleProps) =>\n        props.inputState === INPUT_STATE.INVALID ? colors.accent.CIVIL_RED : colors.accent.CIVIL_GRAY_3};\n    border-radius: 3px;\n    display: block;\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 13px;\n    line-height: 16px;\n    margin: 0;\n    padding: 11px 12px 12px;\n    position: relative;\n    width: 100%;\n    z-index: 1;\n\n    &::-ms-expand {\n      display: none;\n    }\n\n    &:hover {\n      cursor: pointer;\n    }\n\n    &:focus {\n      border-color: ${colors.accent.CIVIL_BLUE};\n      outline: none;\n    }\n  }\n`;\n\nconst InputErrorIcon = styled.div`\n  display: ${(props: InputValidationStyleProps) => (props.inputState === INPUT_STATE.INVALID ? \"block\" : \"none\")};\n  position: absolute;\n  right: 5px;\n  top: 10px;\n`;\n\nexport interface InputValidationUIProps {\n  children: any;\n  className?: string;\n  inputState?: string;\n}\n\nexport const InputValidationUI: React.FunctionComponent<InputValidationUIProps> = props => {\n  return (\n    <>\n      <InputWrapper inputState={props.inputState} className={props.className}>\n        {props.children}\n        <InputErrorIcon inputState={props.inputState}>\n          <ErrorIcon width={20} height={20} />\n        </InputErrorIcon>\n      </InputWrapper>\n    </>\n  );\n};\n\nexport const InputStripeValidationUI: React.FunctionComponent<InputValidationUIProps> = props => {\n  return (\n    <>\n      <InputWrapper inputState={props.inputState} className={props.className}>\n        {props.children}\n      </InputWrapper>\n    </>\n  );\n};\n\nexport const InputErrorMessage: React.FunctionComponent<InputValidationUIProps> = props => {\n  return (\n    <>\n      <InputErrorMessageWrapper>\n        <ErrorIcon width={16} height={16} />\n        {props.children}\n      </InputErrorMessageWrapper>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsLoadStripePayRequest.tsx",
    "content": "import * as React from \"react\";\nimport { StripeProvider, Elements } from \"react-stripe-elements\";\nimport { Mutation, MutationFunc } from \"react-apollo\";\nimport { PAYMENTS_STRIPE_MUTATION } from \"./queries\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nimport PaymentRequestForm from \"./PaymentsRequest\";\nimport { CivilContext, ICivilContext } from \"../context\";\n\nexport interface PaymentsStripeProps {\n  postId: string;\n  newsroomName: string;\n  shouldPublicize: boolean;\n  usdToSpend: number;\n  handlePaymentSuccess(): void;\n}\n\nconst Loading: React.FunctionComponent = props => <></>;\n\nexport interface PaymentsStripeStates {\n  stripeLoaded: boolean;\n  stripe: any;\n}\n\nexport class PaymentsLoadStripePayRequest extends React.Component<PaymentsStripeProps, PaymentsStripeStates> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n  constructor(props: PaymentsStripeProps) {\n    super(props);\n    this.state = {\n      stripeLoaded: false,\n      stripe: null,\n    };\n  }\n\n  public render(): JSX.Element {\n    const userChannelID = (this.context && this.context.currentUser && this.context.currentUser.userChannel.id) || \"\";\n    const AsyncScriptLoader = makeAsyncScriptLoader(\"https://js.stripe.com/v3/\")(Loading);\n    if (this.state.stripeLoaded) {\n      return (\n        <StripeProvider apiKey={this.context.config.STRIPE_API_KEY}>\n          <Elements>\n            <Mutation mutation={PAYMENTS_STRIPE_MUTATION}>\n              {(paymentsCreateStripePayment: MutationFunc) => {\n                return (\n                  <PaymentRequestForm\n                    savePayment={paymentsCreateStripePayment}\n                    boostId={this.props.postId}\n                    usdToSpend={this.props.usdToSpend}\n                    userChannelID={userChannelID}\n                    shouldPublicize={this.props.shouldPublicize}\n                    handlePaymentSuccess={this.props.handlePaymentSuccess}\n                  />\n                );\n              }}\n            </Mutation>\n          </Elements>\n        </StripeProvider>\n      );\n    }\n\n    return (\n      <AsyncScriptLoader\n        asyncScriptOnLoad={() => {\n          this.setState({ stripeLoaded: true });\n        }}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsLoginOrGuest.tsx",
    "content": "import * as React from \"react\";\nimport {\n  PaymentLoginOrGuestWrapper,\n  PaymentLoginOrGuestTitle,\n  PaymentLoginOrGuestOption,\n  PaymentLoginOrGuestType,\n  PaymentLoginOrGuestDescription,\n  PaymentBtn,\n  PaymentInvertedBtn,\n} from \"./PaymentsStyledComponents\";\n\nexport interface PaymentsLoginProps {\n  handleLogin(): void;\n  handleNext(): void;\n}\n\nexport const PaymentsLoginOrGuest: React.FunctionComponent<PaymentsLoginProps> = props => {\n  return (\n    <PaymentLoginOrGuestWrapper>\n      <PaymentLoginOrGuestTitle>Welcome to Civil!</PaymentLoginOrGuestTitle>\n      <PaymentLoginOrGuestOption>\n        <PaymentLoginOrGuestType>Log in to give a Boost 🚀</PaymentLoginOrGuestType>\n        <PaymentBtn onClick={props.handleLogin}>Log In / Sign Up</PaymentBtn>\n        <PaymentLoginOrGuestDescription>\n          You’ll be able to keep track of your contributions and your username may be listed on the Boost leaderboard.\n        </PaymentLoginOrGuestDescription>\n      </PaymentLoginOrGuestOption>\n      <PaymentLoginOrGuestOption>\n        <PaymentLoginOrGuestType>Guest</PaymentLoginOrGuestType>\n        <PaymentLoginOrGuestDescription>\n          Proceed to Boost and become a Civil member later.\n        </PaymentLoginOrGuestDescription>\n        <PaymentInvertedBtn onClick={props.handleNext}>Continue as a Guest</PaymentInvertedBtn>\n      </PaymentLoginOrGuestOption>\n    </PaymentLoginOrGuestWrapper>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsModal.tsx",
    "content": "import * as React from \"react\";\nimport { PaymentFullscreenModal, PaymentModalContain, PaymentModalCloseBtn } from \"./PaymentsStyledComponents\";\nimport { CloseXIcon } from \"../icons\";\nimport { colors } from \"../styleConstants\";\nimport { RENDER_CONTEXT, CivilContext, ICivilContext } from \"../context\";\n\nexport interface PaymentsModalProps {\n  open: boolean;\n  children: any;\n  handleClose?(): void;\n}\n\nexport const PaymentsModal: React.FunctionComponent<PaymentsModalProps> = props => {\n  const context = React.useContext<ICivilContext>(CivilContext);\n  const maxHeight = window.innerHeight - 200;\n  return (\n    <>\n      <PaymentFullscreenModal open={props.open} solidBackground={context.renderContext === RENDER_CONTEXT.EMBED}>\n        {/*iframe resizer used by embed looks for elements with `data-iframe-height` attribute and expands to fit even if they extend outside of `<body>` which this does*/}\n        <PaymentModalContain maxHeight={maxHeight} data-iframe-height>\n          {props.handleClose && (\n            <PaymentModalCloseBtn onClick={() => props.handleClose && props.handleClose()}>\n              <CloseXIcon color={colors.accent.CIVIL_GRAY_2} width={32} height={32} />\n            </PaymentModalCloseBtn>\n          )}\n          {props.children}\n        </PaymentModalContain>\n      </PaymentFullscreenModal>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsRadio.tsx",
    "content": "import * as React from \"react\";\nimport { PaymentRadioBtnContain, PaymentRadioBtn } from \"./PaymentsStyledComponents\";\n\nexport interface PaymentsRadioProps {\n  onChange?: any;\n  value: any;\n  name?: string;\n}\n\nexport const PaymentsRadio: React.FunctionComponent<PaymentsRadioProps> = props => {\n  let input: any;\n  const { onChange, children, value, name } = props;\n  const clickHandler = () => {\n    input.checked = true;\n    if (onChange) {\n      onChange(name, input.value);\n    }\n  };\n\n  return (\n    <PaymentRadioBtnContain>\n      <input type=\"radio\" value={value} onChange={onChange} name={name} ref={ref => (input = ref)} />\n      <PaymentRadioBtn onClick={clickHandler}>{children}</PaymentRadioBtn>\n    </PaymentRadioBtnContain>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsRequest.tsx",
    "content": "import * as React from \"react\";\nimport { MutationFunc } from \"react-apollo\";\nimport { injectStripe, ReactStripeElements, PaymentRequestButtonElement } from \"react-stripe-elements\";\nimport styled from \"styled-components\";\nimport { colors } from \"@joincivil/elements\";\nimport { PaymentExpress, PaymentOrBorder } from \"./PaymentsStyledComponents\";\nimport { ExpressPayText } from \"./PaymentsTextComponents\";\n\nconst StripePaymentRequest = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_2};\n  margin-bottom: 10px;\n  padding: 10px 0;\n`;\n\nexport interface PaymentRequestProps extends ReactStripeElements.InjectedStripeProps {\n  savePayment: MutationFunc;\n  boostId: string;\n  usdToSpend: number;\n  userChannelID?: string;\n  shouldPublicize: boolean;\n  handlePaymentSuccess(): void;\n  onPayRequestError?(): void;\n}\n\nexport interface PaymentRequestStates {\n  canMakePayment: boolean;\n  paymentRequest: any;\n}\n\nclass PaymentRequestForm extends React.Component<PaymentRequestProps, PaymentRequestStates> {\n  constructor(props: any) {\n    super(props);\n\n    const paymentRequest = props.stripe.paymentRequest({\n      country: \"US\",\n      currency: \"usd\",\n      total: {\n        label: \"Civil Boost\",\n        amount: this.props.usdToSpend * 100,\n      },\n      requestPayerName: true,\n      requestPayerEmail: true,\n    });\n\n    paymentRequest.on(\"token\", async (ev: any) => {\n      if (ev && ev.token && ev.complete && ev.payerEmail) {\n        return this.handlePaymentRequest(ev.token, ev.complete, ev.payerEmail);\n      } else {\n        console.error(\"Error processing Payment Request\");\n        if (this.props.onPayRequestError) {\n          this.props.onPayRequestError();\n        }\n      }\n    });\n\n    paymentRequest.canMakePayment().then((result: any) => {\n      this.setState({ canMakePayment: !!result });\n    });\n\n    this.state = {\n      canMakePayment: false,\n      paymentRequest,\n    };\n  }\n\n  public render(): JSX.Element {\n    return this.state.canMakePayment ? (\n      <PaymentExpress>\n        <ExpressPayText />\n        <StripePaymentRequest>\n          <PaymentRequestButtonElement paymentRequest={this.state.paymentRequest} className=\"PaymentRequestButton\" />\n        </StripePaymentRequest>\n        <PaymentOrBorder />\n      </PaymentExpress>\n    ) : (\n      <></>\n    );\n  }\n\n  private async handlePaymentRequest(token: any, complete: any, email: string): Promise<void> {\n    try {\n      await this.props.savePayment({\n        variables: {\n          postID: this.props.boostId,\n          input: {\n            // @ts-ignore\n            paymentToken: token.id,\n            amount: this.props.usdToSpend,\n            currencyCode: \"usd\",\n            emailAddress: email,\n            shouldPublicize: this.props.shouldPublicize,\n            payerChannelID: this.props.userChannelID,\n          },\n        },\n      });\n      complete(\"success\");\n      this.props.handlePaymentSuccess();\n    } catch (err) {\n      console.error(err);\n      complete(\"fail\");\n      if (this.props.onPayRequestError) {\n        this.props.onPayRequestError();\n      }\n    }\n  }\n}\n\nexport default injectStripe(PaymentRequestForm);\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsSelectType.tsx",
    "content": "import * as React from \"react\";\nimport {\n  PaymentDirectionsStyled,\n  PaymentTypeSelect,\n  PaymentBtn,\n  PaymentInfoStyled,\n  PayAppleGoogleOnCivilPrompt,\n  PaymentAmountUserOptions,\n} from \"./PaymentsStyledComponents\";\nimport {\n  SelectPaymentMethodText,\n  PayWithCardText,\n  PayWithEthText,\n  PaymentInfoText,\n  PayAppleGoogleOnCivilText,\n  PublicizeUserText,\n} from \"./PaymentsTextComponents\";\nimport { PAYMENT_STATE } from \"./types\";\nimport { RENDER_CONTEXT, CivilContext, ICivilContext } from \"../context\";\nimport { PaymentsLoadStripePayRequest } from \"./PaymentsLoadStripePayRequest\";\nimport { Checkbox, CheckboxSizes } from \"../input\";\n\nexport interface PaymentsSelectTypeProps {\n  postId: string;\n  usdToSpend: number;\n  newsroomName: string;\n  shouldPublicize: boolean;\n  isStripeConnected: boolean;\n  handleShouldPublicize(shouldPublicize: boolean): void;\n  handleNext(paymentState: PAYMENT_STATE): void;\n  handlePaymentSuccess(): void;\n}\n\nexport const PaymentsSelectType: React.FunctionComponent<PaymentsSelectTypeProps> = props => {\n  const context = React.useContext<ICivilContext>(CivilContext);\n  return (\n    <>\n      <PaymentDirectionsStyled>\n        <SelectPaymentMethodText />\n      </PaymentDirectionsStyled>\n      <PaymentTypeSelect>\n        {props.isStripeConnected && context.renderContext === RENDER_CONTEXT.DAPP && (\n          <PaymentsLoadStripePayRequest\n            postId={props.postId}\n            newsroomName={props.newsroomName}\n            shouldPublicize={props.shouldPublicize}\n            usdToSpend={props.usdToSpend}\n            handlePaymentSuccess={props.handlePaymentSuccess}\n          />\n        )}\n        {props.isStripeConnected && (\n          <PaymentBtn onClick={() => props.handleNext(PAYMENT_STATE.STRIPE_PAYMENT)} backgroundColor={\"#26CD41\"}>\n            <PayWithCardText />\n          </PaymentBtn>\n        )}\n        <PaymentBtn onClick={() => props.handleNext(PAYMENT_STATE.ETH_PAYMENT)}>\n          <PayWithEthText />\n        </PaymentBtn>\n      </PaymentTypeSelect>\n      <PaymentAmountUserOptions>\n        <Checkbox\n          id=\"shouldPublicize\"\n          size={CheckboxSizes.SMALL}\n          checked={!props.shouldPublicize}\n          onClick={() => props.handleShouldPublicize(!props.shouldPublicize)}\n        />\n        <label htmlFor=\"shouldPublicize\">\n          <PublicizeUserText />\n        </label>\n      </PaymentAmountUserOptions>\n      {context.renderContext === RENDER_CONTEXT.DAPP && (\n        <PaymentInfoStyled>\n          <PaymentInfoText />\n        </PaymentInfoStyled>\n      )}\n      {props.isStripeConnected && context.renderContext === RENDER_CONTEXT.EMBED && (\n        <PayAppleGoogleOnCivilPrompt>\n          <PayAppleGoogleOnCivilText postId={props.postId} />\n        </PayAppleGoogleOnCivilPrompt>\n      )}\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsStripe.tsx",
    "content": "import * as React from \"react\";\nimport { StripeProvider, Elements } from \"react-stripe-elements\";\nimport { ApolloConsumer, Mutation, MutationFunc } from \"react-apollo\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nimport PaymentStripeForm from \"./PaymentsStripeForm\";\nimport { CivilContext, ICivilContext } from \"../context\";\nimport { LoadingMessage } from \"../\";\nimport PaymentIntentsStripeForm from \"./PaymentIntentsStripeForm\";\nimport { PAYMENTS_STRIPE_MUTATION, SET_EMAIL_MUTATION } from \"./queries\";\n\nexport interface PaymentsStripeProps {\n  postId: string;\n  newsroomName: string;\n  shouldPublicize: boolean;\n  usdToSpend: number;\n  stripeAccountID: string;\n  handlePaymentSuccess(userSubmittedEmail: boolean, didSaveEmail: boolean): void;\n  handleEditPaymentType(): void;\n}\n\nexport interface PaymentsStripeStates {\n  stripeLoaded: boolean;\n  stripe: any;\n}\n\nexport class PaymentsStripe extends React.Component<PaymentsStripeProps, PaymentsStripeStates> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n  constructor(props: PaymentsStripeProps) {\n    super(props);\n    this.state = {\n      stripeLoaded: false,\n      stripe: null,\n    };\n  }\n\n  public render(): JSX.Element {\n    const { currentUser, features } = this.context;\n    const userChannelID = (currentUser && currentUser.userChannel.id) || \"\";\n    const userEmail =\n      currentUser && currentUser.userChannel.EmailAddressRestricted;\n    const paymentMethods = currentUser && currentUser.userChannel.stripeCustomerInfo.paymentMethods;\n    const AsyncScriptLoader = makeAsyncScriptLoader(\"https://js.stripe.com/v3/\")(LoadingMessage);\n    if (this.state.stripeLoaded) {\n      if (!features.featureEnabled(\"payment-intents\")) {\n        return (\n          <StripeProvider apiKey={this.context.config.STRIPE_API_KEY} stripeAccount={this.props.stripeAccountID}>\n            <Elements>\n              <Mutation mutation={PAYMENTS_STRIPE_MUTATION}>\n                {(paymentsCreateStripePayment: MutationFunc) => {\n                  return (\n                    <Mutation mutation={SET_EMAIL_MUTATION}>\n                      {(setEmailMutation: MutationFunc) => {\n                        return (\n                          <PaymentStripeForm\n                            postId={this.props.postId}\n                            newsroomName={this.props.newsroomName}\n                            shouldPublicize={this.props.shouldPublicize}\n                            userEmail={userEmail}\n                            userChannelID={userChannelID}\n                            usdToSpend={this.props.usdToSpend}\n                            savePayment={paymentsCreateStripePayment}\n                            setEmail={setEmailMutation}\n                            handlePaymentSuccess={this.props.handlePaymentSuccess}\n                            handleEditPaymentType={this.props.handleEditPaymentType}\n                          />\n                        );\n                      }}\n                    </Mutation>\n                  );\n                }}\n              </Mutation>\n            </Elements>\n          </StripeProvider>\n        );\n      } else {\n        return (\n          <StripeProvider apiKey={this.context.config.STRIPE_API_KEY} stripeAccount={this.context.config.STRIPE_PLATFORM_ACCOUNT_ID}>\n            <Elements>\n              <ApolloConsumer>\n                {client => (\n                  <PaymentIntentsStripeForm\n                    postId={this.props.postId}\n                    newsroomName={this.props.newsroomName}\n                    shouldPublicize={this.props.shouldPublicize}\n                    userEmail={userEmail}\n                    userChannelID={userChannelID}\n                    usdToSpend={this.props.usdToSpend}\n                    handlePaymentSuccess={this.props.handlePaymentSuccess}\n                    handleEditPaymentType={this.props.handleEditPaymentType}\n                    apolloClient={client}\n                    paymentMethods={paymentMethods}\n                    paymentIntentsEnabled={features.featureEnabled(\"payment-intents\")}\n                    stripeApiKey={this.context.config.STRIPE_API_KEY}\n                    connectedStripeAccountID={this.props.stripeAccountID}\n                  />\n                )}\n              </ApolloConsumer>\n            </Elements>\n          </StripeProvider>\n        );\n      }\n    }\n\n    return (\n      <AsyncScriptLoader\n        asyncScriptOnLoad={() => {\n          this.setState({ stripeLoaded: true });\n        }}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsStripeCardComponent.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { PaymentInputLabel } from \"./PaymentsStyledComponents\";\nimport { InputValidationUI, InputStripeValidationUI, StripeElement, InputErrorMessage } from \"./PaymentsInputValidationUI\";\nimport { PaymentEmailPrepopulatedText, PaymentEmailConfirmationText, AddCardEmailConfirmationText } from \"./PaymentsTextComponents\";\nimport { CardElement } from \"react-stripe-elements\";\n\nconst StripeWrapper = styled.div`\n  margin: 20px 0 0;\n  max-width: 500px;\n  width: 100%;\n`;\n\ninterface PaymentsStripeCardComponentProps {\n  email: string;\n  wasEmailPrepopulated: boolean;\n  emailState: string;\n  nameState: string;\n  cardInfoState: string;\n  displayStripeErrorMessage: string;\n  showAddCardText?: boolean;\n  handleOnBlur(event: any): void;\n  handleStripeChange(event: any): void;\n}\n\nexport const PaymentsStripeCardComponent: React.FunctionComponent<PaymentsStripeCardComponentProps> = props => {\n  const { email, wasEmailPrepopulated, emailState, nameState, cardInfoState, displayStripeErrorMessage, handleOnBlur, handleStripeChange, showAddCardText } = props;\n  return (\n    <StripeWrapper>\n      {wasEmailPrepopulated && <PaymentEmailPrepopulatedText email={email} />}\n      {!wasEmailPrepopulated && (\n        <>\n          <PaymentInputLabel>Email Address</PaymentInputLabel>\n          <InputValidationUI inputState={emailState}>\n            <input\n              defaultValue={email}\n              id=\"email\"\n              name=\"email\"\n              type=\"email\"\n              maxLength={254}\n              onBlur={() => handleOnBlur(event)}\n            />\n            {showAddCardText && <AddCardEmailConfirmationText />}\n            {!showAddCardText && <PaymentEmailConfirmationText />}\n          </InputValidationUI>\n        </>\n      )}\n      <PaymentInputLabel>Name on card</PaymentInputLabel>\n      <InputValidationUI inputState={nameState}>\n        <input id=\"name\" name=\"name\" onBlur={() => handleOnBlur(event)} required />\n      </InputValidationUI>\n      <PaymentInputLabel>Card information</PaymentInputLabel>\n      <InputStripeValidationUI inputState={cardInfoState}>\n        <StripeElement inputState={cardInfoState}>\n          <CardElement\n            id=\"card-info\"\n            style={{ base: { fontSize: \"13px\" } }}\n            onChange={handleStripeChange}\n          />\n        </StripeElement>\n        {displayStripeErrorMessage !== \"\" && (\n          <InputErrorMessage>{displayStripeErrorMessage}</InputErrorMessage>\n        )}\n      </InputStripeValidationUI>\n    </StripeWrapper>\n  );\n}\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsStripeForm.tsx",
    "content": "import * as React from \"react\";\nimport { MutationFunc } from \"react-apollo\";\nimport { injectStripe, ReactStripeElements, CardElement } from \"react-stripe-elements\";\nimport styled from \"styled-components\";\nimport { PaymentsFormWrapper } from \"./PaymentsFormWrapper\";\nimport { CivilContext, ICivilContext } from \"../context\";\nimport { isValidEmail } from \"@joincivil/utils\";\nimport {\n  PaymentTerms,\n  PaymentBtn,\n  PaymentInputLabel,\n  PaymentError,\n  CheckboxContainer,\n  CheckboxSection,\n  CheckboxLabel,\n} from \"./PaymentsStyledComponents\";\nimport {\n  PayWithCardText,\n  PaymentStripeNoticeText,\n  PaymentEmailConfirmationText,\n  PaymentTermsText,\n  PaymentErrorText,\n  PaymentEmailPrepopulatedText,\n} from \"./PaymentsTextComponents\";\nimport {\n  InputValidationUI,\n  InputStripeValidationUI,\n  StripeElement,\n  InputErrorMessage,\n} from \"./PaymentsInputValidationUI\";\nimport { INPUT_STATE } from \"./types\";\nimport { Checkbox, CheckboxSizes } from \"../input\";\n\nconst StripeWrapper = styled.div`\n  margin: 20px 0 0;\n  max-width: 500px;\n  width: 100%;\n`;\n\nexport interface PaymentStripeFormProps extends ReactStripeElements.InjectedStripeProps {\n  postId: string;\n  newsroomName: string;\n  shouldPublicize: boolean;\n  userEmail?: string;\n  userChannelID?: string;\n  usdToSpend: number;\n  savePayment: MutationFunc;\n  setEmail: MutationFunc;\n  handlePaymentSuccess(userSubmittedEmail: boolean, didSaveEmail: boolean): void;\n  handleEditPaymentType(): void;\n}\n\nexport interface PaymentStripeFormStates {\n  email: string;\n  emailState: string;\n  name: string;\n  nameState: string;\n  cardInfoState: string;\n  isPaymentError: boolean;\n  paymentProcessing: boolean;\n  wasEmailPrepopulated: boolean;\n  promptSaveEmail: boolean;\n  shouldSaveEmailToAccount: boolean;\n  shouldAddEmailToMailingList: boolean;\n  displayStripeErrorMessage: string;\n}\n\nclass PaymentStripeForm extends React.Component<PaymentStripeFormProps, PaymentStripeFormStates> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      email: props.userEmail || \"\",\n      wasEmailPrepopulated: props.userEmail ? true : false,\n      promptSaveEmail: !props.userEmail && props.userChannelID ? true : false,\n      emailState: this.props.userEmail ? INPUT_STATE.VALID : INPUT_STATE.EMPTY,\n      name: \"\",\n      nameState: INPUT_STATE.EMPTY,\n      cardInfoState: INPUT_STATE.EMPTY,\n      isPaymentError: false,\n      paymentProcessing: false,\n      shouldSaveEmailToAccount: true,\n      shouldAddEmailToMailingList: false,\n      displayStripeErrorMessage: \"\",\n    };\n\n    this.handleSubmit = this.handleSubmit.bind(this);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <PaymentsFormWrapper\n          handleEditPaymentType={this.props.handleEditPaymentType}\n          payWithText={<PayWithCardText />}\n          paymentNoticeText={<PaymentStripeNoticeText />}\n          showSecureIcon={true}\n        >\n          <StripeWrapper>\n            {this.state.wasEmailPrepopulated && <PaymentEmailPrepopulatedText email={this.state.email} />}\n            {!this.state.wasEmailPrepopulated && (\n              <>\n                <PaymentInputLabel>Email</PaymentInputLabel>\n                <InputValidationUI inputState={this.state.emailState}>\n                  <input\n                    defaultValue={this.state.email}\n                    id=\"email\"\n                    name=\"email\"\n                    type=\"email\"\n                    maxLength={254}\n                    onBlur={() => this.handleOnBlur(event)}\n                  />\n                  <PaymentEmailConfirmationText />\n                </InputValidationUI>\n              </>\n            )}\n            <PaymentInputLabel>Name on card</PaymentInputLabel>\n            <InputValidationUI inputState={this.state.nameState}>\n              <input id=\"name\" name=\"name\" onBlur={() => this.handleOnBlur(event)} required />\n            </InputValidationUI>\n            <PaymentInputLabel>Card information</PaymentInputLabel>\n            <InputStripeValidationUI inputState={this.state.cardInfoState}>\n              <StripeElement inputState={this.state.cardInfoState}>\n                <CardElement id=\"card-info\" style={{ base: { fontSize: \"13px\" } }} onChange={this.handleStripeChange} />\n              </StripeElement>\n              {this.state.displayStripeErrorMessage !== \"\" && (\n                <InputErrorMessage>{this.state.displayStripeErrorMessage}</InputErrorMessage>\n              )}\n            </InputStripeValidationUI>\n          </StripeWrapper>\n        </PaymentsFormWrapper>\n        {this.state.promptSaveEmail && this.state.emailState === INPUT_STATE.VALID && (\n          <>\n            <CheckboxContainer>\n              <CheckboxSection>\n                <label>\n                  <Checkbox\n                    size={CheckboxSizes.SMALL}\n                    checked={this.state.shouldSaveEmailToAccount}\n                    onClick={this.toggleShouldSaveEmailToAccount}\n                  />\n                  <CheckboxLabel>Save my email to my Civil account.</CheckboxLabel>\n                </label>\n              </CheckboxSection>\n            </CheckboxContainer>\n            <CheckboxContainer>\n              <CheckboxSection>\n                <label>\n                  <Checkbox\n                    size={CheckboxSizes.SMALL}\n                    checked={this.state.shouldAddEmailToMailingList}\n                    onClick={this.toggleShouldAddEmailToMailingList}\n                  />\n                  <CheckboxLabel>Receive the Civil Weekly newsletter in my inbox.</CheckboxLabel>\n                </label>\n              </CheckboxSection>\n            </CheckboxContainer>\n          </>\n        )}\n        <PaymentBtn onClick={() => this.handleSubmit()} disabled={this.disableBoostBtn()}>\n          {this.state.paymentProcessing ? \"Payment processing...\" : \"Complete Boost\"}\n        </PaymentBtn>\n        {this.state.isPaymentError && (\n          <PaymentError>\n            <PaymentErrorText />\n          </PaymentError>\n        )}\n        <PaymentTerms>\n          <PaymentTermsText />\n        </PaymentTerms>\n      </>\n    );\n  }\n\n  private handleStripeChange = (event: any) => {\n    const stripeElements = document.querySelectorAll(\".StripeElement\");\n    let displayStripeErrorMessage = \"\";\n\n    if (event.error) {\n      displayStripeErrorMessage = event.error.message;\n    }\n\n    stripeElements.forEach(element => {\n      const classList = element.classList;\n      if (classList.contains(\"StripeElement--invalid\")) {\n        this.setState({ cardInfoState: INPUT_STATE.INVALID, displayStripeErrorMessage });\n      } else if (classList.contains(\"StripeElement--empty\")) {\n        this.setState({ cardInfoState: INPUT_STATE.EMPTY, displayStripeErrorMessage });\n      } else {\n        this.setState({ cardInfoState: INPUT_STATE.VALID, displayStripeErrorMessage });\n      }\n    });\n  };\n\n  private disableBoostBtn = () => {\n    const disableBoostBtn =\n      this.state.emailState === INPUT_STATE.VALID &&\n      this.state.nameState === INPUT_STATE.VALID &&\n      this.state.cardInfoState === INPUT_STATE.VALID &&\n      this.state.paymentProcessing === false\n        ? false\n        : true;\n\n    return disableBoostBtn;\n  };\n\n  private toggleShouldSaveEmailToAccount = () => {\n    this.setState({ shouldSaveEmailToAccount: !this.state.shouldSaveEmailToAccount });\n  };\n\n  private toggleShouldAddEmailToMailingList = () => {\n    this.setState({ shouldAddEmailToMailingList: !this.state.shouldAddEmailToMailingList });\n  };\n\n  private handleOnBlur = (event: any) => {\n    const state = event.target.id;\n    const value = event.target.value;\n\n    switch (state) {\n      case \"email\":\n        const validEmail = isValidEmail(value);\n        validEmail\n          ? this.setState({ email: value, emailState: INPUT_STATE.VALID })\n          : this.setState({ emailState: INPUT_STATE.INVALID });\n        break;\n      case \"name\":\n        const validName = value !== \"\";\n        validName\n          ? this.setState({ name: value, nameState: INPUT_STATE.VALID })\n          : this.setState({ nameState: INPUT_STATE.INVALID });\n        break;\n      default:\n        break;\n    }\n  };\n\n  private async handleSubmit(): Promise<void> {\n    this.context.fireAnalyticsEvent(\"boost\", \"Stripe submit clicked\", this.props.postId, this.props.usdToSpend);\n    this.setState({ paymentProcessing: true, isPaymentError: false });\n    if (this.props.stripe) {\n      try {\n        let didSaveEmail = false;\n        if (this.state.promptSaveEmail && this.state.email && this.state.shouldSaveEmailToAccount) {\n          didSaveEmail = true;\n          const variables = {\n            input: {\n              emailAddress: this.state.email,\n              channelID: this.props.userChannelID,\n              addToMailing: this.state.shouldAddEmailToMailingList,\n            },\n          };\n          await this.props.setEmail({\n            variables,\n          });\n        }\n        const token = await this.props.stripe.createToken({\n          name: this.state.name,\n        });\n        await this.props.savePayment({\n          variables: {\n            postID: this.props.postId,\n            input: {\n              // @ts-ignore\n              paymentToken: token.token.id,\n              amount: this.props.usdToSpend,\n              currencyCode: \"usd\",\n              emailAddress: this.state.email,\n              shouldPublicize: this.props.shouldPublicize,\n              payerChannelID: this.props.userChannelID,\n            },\n          },\n        });\n        this.context.fireAnalyticsEvent(\n          \"boost\",\n          \"Stripe transaction confirmed\",\n          this.props.postId,\n          this.props.usdToSpend,\n        );\n        this.props.handlePaymentSuccess(this.state.email !== \"\" && true, didSaveEmail);\n      } catch (err) {\n        console.error(err);\n        this.context.fireAnalyticsEvent(\n          \"boost\",\n          \"Stripe transaction rejected\",\n          this.props.postId,\n          this.props.usdToSpend,\n        );\n        this.setState({ paymentProcessing: false, isPaymentError: true });\n      }\n    }\n  }\n}\n\nexport default injectStripe(PaymentStripeForm);\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsStripeFormSavedCard.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"@joincivil/elements\";\n\nconst SavedCardStyled = styled.div`\n  align-items: flex-start;\n  display: flex;\n  > div {\n    margin-right: 10px;\n  }\n  label {\n    color: ${colors.accent.CIVIL_GRAY_3};\n    font-size: 13px;\n    line-height: 16px;\n  }\n`;\n\nconst SavedCardDetails = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 16px;\n`;\n\nconst SavedCardDate = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 13px;\n  line-height: 16px;\n`;\n\nexport interface PaymentStripeFormSavedCardProps {\n  cardDetails: string;\n  date: string;\n}\n\nexport const PaymentStripeFormSavedCard: React.FunctionComponent<PaymentStripeFormSavedCardProps> = props => {\n  return (\n    <SavedCardStyled>\n      <div>\n        <SavedCardDetails>{props.cardDetails}</SavedCardDetails>\n        <SavedCardDate>{props.date}</SavedCardDate>\n      </div>\n      <label>Saved card</label>\n    </SavedCardStyled>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { CurrencyErrorMsg } from \"../CurrencyConverter\";\nimport { RENDER_CONTEXT } from \"../context\";\nimport { FullScreenModal, ModalInner } from \"../FullscreenModal\";\nimport { InputBase, InputIcon, InvertedButton, colors, fonts, mediaQueries } from \"@joincivil/elements\";\n\nexport const PaymentWrapperStyled = styled.div`\n  margin: 0 auto;\n  max-width: 400px;\n  width: 100%;\n\n  ${props =>\n    props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n    `\n    max-width: 100%;\n  `}\n\n  ${CurrencyErrorMsg} {\n    bottom: 10px;\n  }\n`;\n\nexport const PaymentHeader = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  margin-bottom: 25px;\n  position: relative;\n\n  h2 {\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 22px;\n    margin-bottom: 12px;\n    padding-bottom: 10px;\n\n    ${props => props.theme.renderContext === RENDER_CONTEXT.EMBED && \"border-bottom: none; padding-bottom: 0;\"}\n  }\n`;\n\nexport const PaymentCivilLogo = styled.div`\n  left: calc(50% - 25px);\n  position: absolute;\n  top: 10px;\n`;\n\nexport const PaymentHeaderFlex = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 10px;\n`;\n\nexport const PaymentHeaderCenter = styled.div`\n  margin-bottom: 10px;\n  text-align: center;\n`;\n\nexport const PaymentHeaderNewsroom = styled.div`\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 17px;\n  svg {\n    vertical-align: bottom;\n  }\n`;\n\nexport const PaymentHeaderTip = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 13px;\n  line-height: 16px;\n`;\n\nexport const PaymentAdjustedNotice = styled.div`\n  background-color: rgba(255, 204, 0, 0.1);\n  border-radius: 8px;\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin-bottom: 25px;\n  padding: 15px 15px 12px;\n\n  p {\n    font-size: 13px;\n    line-height: 18px;\n    margin-top: 0;\n\n    span {\n      display: block;\n      font-weight: 700;\n    }\n  }\n`;\n\nexport const PaymentAdjustedNoticeFtr = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 14px;\n  line-height: 17px;\n  padding-top: 10px;\n  text-align: right;\n\n  span {\n    color: ${colors.primary.BLACK};\n    font-size: 18px;\n    font-weight: 700;\n    line-height: 22px;\n  }\n`;\n\nexport const PaymentFormWrapperStyled = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 3px;\n  font-family: ${fonts.SANS_SERIF};\n  padding: 20px 15px;\n  margin-bottom: 25px;\n`;\n\nexport const PaymentHeaderBoostLabel = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 14px;\n  line-height: 17px;\n  margin-right: 5px;\n`;\n\nexport const PaymentHeaderAmount = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 18px;\n  line-height: 22px;\n\n  b {\n    color: ${colors.primary.BLACK};\n    font-weight: 700;\n  }\n`;\n\nexport const PaymentDirectionsStyled = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 15px;\n  line-height: 20px;\n  margin: 0 0 20px;\n\n  a:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: underline;\n  }\n`;\n\nexport interface PaymentBtnProps {\n  backgroundColor?: string;\n}\n\nexport const PaymentBtn = styled.button`\n  background-color: ${(props: PaymentBtnProps) =>\n    props.backgroundColor ? props.backgroundColor : colors.accent.CIVIL_BLUE};\n  border: none;\n  border-radius: 3px;\n  color: ${colors.basic.WHITE};\n  cursor: pointer;\n  font-size: 14px;\n  font-weight: 700;\n  line-height: 19px;\n  opacity: 1;\n  outline: none;\n  padding: 10px 40px;\n  transition: opacity 250ms;\n  width: 100%;\n\n  &:hover {\n    opacity: 0.8;\n  }\n\n  &:disabled {\n    cursor: default;\n    opacity: 0.8;\n  }\n`;\n\nexport const PaymentInvertedBtn = styled(InvertedButton)`\n  cursor: pointer;\n  font-size: 14px;\n  font-weight: 700;\n  letter-spacing: 0;\n  line-height: 19px;\n  padding: 10px 40px;\n  text-transform: none;\n  width: 100%;\n`;\n\nexport const PaymentTypeSelect = styled.div`\n  padding-bottom: 40px;\n\n  button {\n    margin-bottom: 8px;\n  }\n`;\n\nexport const PaymentNotice = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 12px;\n  line-height: 18px;\n  margin: 0 0 15px;\n`;\n\nexport const PaymentTerms = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 12px;\n  line-height: 18px;\n  margin: 15px 0 10px;\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport const PaymentInfoFlex = styled.div`\n  align-items: flex-start;\n  display: flex;\n  justify-content: space-between;\n`;\n\nexport const PaymentSecure = styled.div`\n  align-items: center;\n  display: flex;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 11px;\n`;\n\nexport const PaymentTypeLabel = styled.div`\n  font-size: 15px;\n  font-weight: 700;\n  line-height: 20px;\n  margin-bottom: 10px;\n`;\n\nexport const PaymentAmountEth = styled.div`\n  font-size: 14px;\n  line-height: 18px;\n  margin-bottom: 20px;\n\n  label {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    display: block;\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.92px;\n    margin-bottom: 2px;\n    text-transform: uppercase;\n  }\n\n  span {\n    color: ${colors.accent.CIVIL_GRAY_1};\n  }\n`;\n\nexport const PaymentError = styled.div`\n  color: ${colors.accent.CIVIL_RED};\n  font-size: 13px;\n  line-height: 22px;\n  margin-top: 10px;\n`;\n\nexport const PaymentInputLabel = styled.label`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  display: block;\n  font-size: 13px;\n  line-height: 16px;\n  margin-bottom: 5px;\n`;\n\nexport interface PaymentWarningProps {\n  redText?: boolean;\n}\n\nexport const PaymentWarning = styled.div`\n  color: ${(props: PaymentWarningProps) => (props.redText ? colors.accent.CIVIL_RED : colors.accent.CIVIL_GRAY_1)};\n  font-size: 13px;\n  line-height: 22px;\n  margin-bottom: 15px;\n\n  svg {\n    vertical-align: sub;\n  }\n`;\n\nexport const PaymentFullscreenModal = styled(FullScreenModal)`\n  ${ModalInner} {\n    ${mediaQueries.MOBILE_SMALL} {\n      ${props =>\n        props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n        `\n        top: 0;\n        bottom: auto;\n      `}\n    }\n  }\n`;\n\nexport interface PaymentModalProps {\n  maxHeight: number;\n}\n\nexport const PaymentModalContain = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  overflow: auto;\n  position: relative;\n  max-height: ${(props: PaymentModalProps) => props.maxHeight + \"px\"};\n  padding: 20px;\n  width: 400px;\n\n  ${props =>\n    props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n    `\n    padding: 8px 16px 32px;\n    height: 100%;\n    max-height: 100%;\n    width: 100%;\n  `}\n\n  ${mediaQueries.MOBILE_SMALL} {\n    height: 100%;\n    max-height: 100%;\n    width: 100%;\n\n    ${props =>\n      props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n      `\n      top: 0;\n      height: auto;\n      max-height: none;\n      overflow: visible;\n    `}\n  }\n`;\n\nexport const PaymentModalCloseBtn = styled(InvertedButton)`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 50%;\n  height: 32px;\n  padding: 0;\n  position: absolute;\n  right: 15px;\n  top: 15px;\n  width: 32px;\n\n  svg path {\n    transition: fill 0.2s ease;\n  }\n\n  &:focus,\n  &:hover {\n    background-color: ${colors.basic.WHITE};\n\n    svg path {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport const PaymentEthLearnMore = styled.div`\n  background-color: rgba(255, 204, 0, 0.1);\n  border-radius: 5px;\n  display: flex;\n  font-size: 12px;\n  justify-content: center;\n  letter-spacing: -0.07px;\n  line-height: 18px;\n  margin-bottom: 20px;\n  padding: 15px;\n\n  a {\n    cursor: pointer;\n    margin-right: 30px;\n\n    ${mediaQueries.MOBILE} {\n      margin-right: 15px;\n    }\n\n    &:last-of-type {\n      margin-right: 0;\n    }\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport const PaymentRadioBtnContain = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin-right: 4%;\n  width: 22%;\n\n  input {\n    display: none;\n  }\n\n  input:checked + button {\n    border: 2px solid ${colors.accent.CIVIL_BLUE};\n  }\n\n  &:last-of-type {\n    margin-right: 0;\n  }\n`;\n\nexport const PaymentRadioBtn = styled.button`\n  background-color: ${colors.basic.WHITE};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  border-radius: 4px;\n  cursor: pointer;\n  font-size: 18px;\n  font-weight: 600;\n  height: 75px;\n  outline: none;\n  padding: 10px;\n  transition: border 0.2s ease;\n  width: 100%;\n\n  span {\n    display: block;\n    font-size: 12px;\n    font-weight: 400;\n  }\n\n  &:hover {\n    border: 2px solid ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nexport const PaymentAmountNewsroom = styled.div`\n  h3 {\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 22px;\n    margin: 0 0 10px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 14px;\n    line-height: 17px;\n    margin: 0 0 15px;\n    text-align: center;\n  }\n`;\n\nexport const PaymentGhostBtn = styled.button`\n  background-color: ${colors.basic.WHITE};\n  border: none;\n  color: ${colors.accent.CIVIL_BLUE};\n  cursor: pointer;\n  display: block;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 17px;\n  outline: none;\n  padding: 0;\n\n  &:hover {\n    text-decoration: underline;\n  }\n`;\n\nexport const PaymentAmountUserInput = styled.div`\n  display: flex;\n  justify-content: center;\n  margin: 20px 0 30px;\n\n  > div {\n    padding: 0;\n  }\n\n  label {\n    display: none;\n  }\n\n  ${InputBase} {\n    padding-left: 25px;\n    width: 150px;\n  }\n\n  ${InputIcon} {\n    left: 9px;\n    top: -40px;\n    width: 18px;\n  }\n`;\n\nexport const PaymentAmountUserOptions = styled.div`\n  display: flex;\n  margin: 20px 0;\n\n  label {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 14px;\n    margin-right: 8px;\n  }\n`;\n\nexport const PaymentLoginOrGuestWrapper = styled.div`\n  padding: 20px;\n`;\n\nexport const PaymentLoginOrGuestTitle = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 22px;\n  margin-bottom: 40px;\n  text-align: center;\n`;\n\nexport const PaymentLoginOrGuestOption = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin-bottom: 20px;\n  padding-bottom: 15px;\n\n  &:last-of-type {\n    border-bottom: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  button {\n    margin-bottom: 12px;\n  }\n`;\n\nexport const PaymentLoginOrGuestType = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  font-weight: 600;\n  line-height: 19px;\n  margin-bottom: 12px;\n`;\n\nexport const PaymentLoginOrGuestDescription = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  line-height: 16px;\n  margin-bottom: 12px;\n`;\n\nexport const PaymentInfoStyled = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 22px;\n  padding: 20px 0;\n\n  span {\n    color: ${colors.primary.BLACK};\n    display: block;\n    font-weight: 700;\n    margin: 0;\n  }\n`;\n\nexport const PaymentExpress = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_1};\n  display: block;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  padding: 20px 0 15px;\n  text-align: center;\n  width: 100%;\n\n  label {\n    line-height: 14px;\n    margin-bottom: 10px;\n  }\n`;\n\nexport const PaymentOrBorder = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  height: 1px;\n  margin: 20px 5%;\n  position: relative;\n  width: 90%;\n\n  &:after {\n    background-color: ${colors.basic.WHITE};\n    color: ${colors.accent.CIVIL_GRAY_2};\n    content: \"Or\";\n    font-size: 12px;\n    left: calc(50% - 25px);\n    position: absolute;\n    text-align: center;\n    top: -8px;\n    width: 50px;\n  }\n`;\n\nexport const PaymentEdit = styled.div`\n  align-items: center;\n  display: flex;\n  font-size: 15px;\n  justify-content: space-between;\n  margin-bottom: 8px;\n`;\n\nexport const PaymentHide = styled.div`\n  visibility: hidden;\n`;\n\nexport const PaymentBackBtn = styled.button`\n  align-items: center;\n  background-color: ${colors.basic.WHITE};\n  border: none;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  cursor: pointer;\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 17px;\n  opacity: 0.5;\n  outline: none;\n  padding: 0;\n  transition: color 250ms, opacity 250ms;\n\n  svg {\n    margin-right: 5px;\n    transform: rotate(180deg);\n\n    g {\n      fill: ${colors.accent.CIVIL_GRAY_1};\n      transition: color 250ms, opacity 250ms;\n    }\n  }\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n    opacity: 1;\n\n    svg g {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport const PayAppleGoogleOnCivilPrompt = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 17px;\n  text-align: center;\n\n  a {\n    font-weight: 700;\n    text-decoration: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport const CheckboxContainer = styled.ul`\n  list-style: none;\n  padding-left: 0;\n  margin-top: 0;\n  max-width: 400px;\n`;\n\nexport const CheckboxSection = styled.li`\n  margin-bottom: 10px;\n`;\n\nexport const CheckboxLabel = styled.span`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font: 400 14px/24px ${fonts.SANS_SERIF};\n  padding-left: 7px;\n  vertical-align: middle;\n`;\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsSuccess.tsx",
    "content": "import * as React from \"react\";\nimport { PaymentBtn } from \"./PaymentsStyledComponents\";\nimport { PaymentSuccessText } from \"./PaymentsTextComponents\";\nimport { HollowGreenCheck, fonts, colors } from \"@joincivil/elements\";\nimport styled from \"styled-components\";\n\nconst PaymentsSuccessStyled = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  text-align: center;\n\n  svg {\n    margin-bottom: 10px;\n  }\n\n  h2 {\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 22px;\n    margin: 0 0 5px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 14px;\n    line-height: 17px;\n    margin: 0 0 15px;\n  }\n`;\n\nconst PaymentSuccessTextStyled = styled.div`\n  margin: 0 auto 30px;\n  width: 280px;\n`;\n\nexport interface PaymentsSuccessProps {\n  newsroomName: string;\n  etherToSpend?: number;\n  usdToSpend: number;\n  userSubmittedEmail: boolean;\n  handleClose(): void;\n}\n\nexport const PaymentsSuccess: React.FunctionComponent<PaymentsSuccessProps> = props => {\n  return (\n    <PaymentsSuccessStyled>\n      <HollowGreenCheck width={48} height={48} />\n      <PaymentSuccessTextStyled>\n        <PaymentSuccessText\n          newsroomName={props.newsroomName}\n          etherToSpend={props.etherToSpend}\n          usdToSpend={props.usdToSpend}\n          userSubmittedEmail={props.userSubmittedEmail}\n        />\n      </PaymentSuccessTextStyled>\n      <PaymentBtn onClick={props.handleClose}>Done</PaymentBtn>\n    </PaymentsSuccessStyled>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { urlConstants as links } from \"@joincivil/utils\";\nimport { ErrorIcon, HollowGreenCheck, NorthEastArrow, colors } from \"@joincivil/elements\";\nimport { ClipLoader } from \"../ClipLoader\";\nimport {\n  PaymentWarning,\n  PaymentGhostBtn,\n  PaymentEdit,\n  PaymentAdjustedNotice,\n  PaymentAdjustedNoticeFtr,\n  PaymentNotice,\n} from \"./PaymentsStyledComponents\";\nimport { CreditCardMin } from \"./types\";\n\nexport const SendPaymentHdrText: React.FunctionComponent = props => <h2>Send a Boost</h2>;\n\nexport const SendPaymentHdrEmbedText: React.FunctionComponent<PaymentTextProps> = props => (\n  <h2>Send a Boost to {props.newsroomName}</h2>\n);\n\nexport const PaymentToNewsroomsTipText: React.FunctionComponent = props => (\n  <>Your Boost goes directly to the newsroom.</>\n);\n\nexport const EnterCustomAmountText: React.FunctionComponent = props => <>Or enter a custom amount</>;\n\nexport const PublicizeUserText: React.FunctionComponent = props => <>Hide my username from everyone but the newsroom</>;\n\nexport const SelectPaymentAmountText: React.FunctionComponent = props => <>Select how much you would like to Boost</>;\n\nexport const SelectPaymentMethodText: React.FunctionComponent = props => <>Select how you'd like to pay</>;\n\nexport const ExpressPayText: React.FunctionComponent = props => <label>Express payment</label>;\n\nexport const PaymentInfoText: React.FunctionComponent = props => (\n  <>\n    <span>Payment Information</span>\n    Boosts procceds are funded using Debit/Credit Cards or ETH. Civil does not collect any fees on Boosts.\n  </>\n);\n\nexport const PayWithCardText: React.FunctionComponent = props => <>Pay with Card</>;\n\nexport const PayWithAppleText: React.FunctionComponent = props => <>Pay with Apple Pay</>;\n\nexport const PayWithGoogleText: React.FunctionComponent = props => <>Pay with Google Pay</>;\n\nexport interface PayOnCivilTextProps {\n  postId: string;\n}\n\nexport const PayAppleGoogleOnCivilText: React.FunctionComponent<PayOnCivilTextProps> = props => (\n  <>\n    <p>Want to pay with Apple Pay or Google Pay?</p>\n    <a href={\"/storyfeed/\" + props.postId + \"/payment\"} target=\"_blank\">\n      Send your Boost on Civil <NorthEastArrow color={colors.accent.CIVIL_BLUE} />\n    </a>\n  </>\n);\n\nexport const PaymentStripeNoticeText: React.FunctionComponent = props => (\n  <>Proceeds of the Boost go directly to the newsroom minus Stripe processing fees. Refunds are not possible.</>\n);\n\nexport const PayWithEthText: React.FunctionComponent = props => <>Pay with ETH</>;\n\nexport const PaymentEthNoticeText: React.FunctionComponent = props => (\n  <>There are small transaction fees added by the Ethereum network. Refunds are not possible.</>\n);\n\nexport interface PaymentEmailPrepopulatedTextProps {\n  email: string;\n}\nexport const PaymentEmailPrepopulatedText: React.FunctionComponent<PaymentEmailPrepopulatedTextProps> = props => (\n  <PaymentNotice>Your payment receipt will be sent to {props.email}</PaymentNotice>\n);\n\nexport interface PaymentAmountTextProps {\n  handleEditAmount(): void;\n}\n\nexport const PayWithCardMinimumText: React.FunctionComponent<PaymentAmountTextProps> = props => (\n  <PaymentAdjustedNotice>\n    <p>\n      <span>The Boost minimum for cards is {\"$\" + CreditCardMin + \".00\"}.</span>\n      Boosts amount will be increased to {\"$\" + CreditCardMin + \".00\"} if you pay with a card. Select ETH for smaller\n      amounts. <a onClick={() => props.handleEditAmount()}>You can edit your Boost</a> amount or continue.\n    </p>\n  </PaymentAdjustedNotice>\n);\n\nexport const PayWithCardMinimumAdjustedText: React.FunctionComponent = props => (\n  <PaymentAdjustedNotice>\n    <p>\n      <span>The Boost minimum for cards is {\"$\" + CreditCardMin + \".00\"}.</span>\n      Your new Boost amount will be increased to {\"$\" + CreditCardMin + \".00\"} when you complete your Boost. This is due\n      to Credit Card processing fees. You can select ETH for smaller amounts.\n    </p>\n    <PaymentAdjustedNoticeFtr>\n      Adjusted <span>{\"$\" + CreditCardMin + \".00\"}</span>\n    </PaymentAdjustedNoticeFtr>\n  </PaymentAdjustedNotice>\n);\n\nexport interface PaymentUpdatedTextProps {\n  etherToSpend?: number;\n  usdToSpend?: number;\n}\n\nexport const PaymentUpdatedByEthText: React.FunctionComponent<PaymentUpdatedTextProps> = props => (\n  <PaymentAdjustedNotice>\n    <p>\n      <span>Your Boost amount was updated.</span>\n      Your new Boost amount will be {props.etherToSpend} ETH &asymp; ${props.usdToSpend} when you complete your Boost.\n    </p>\n    <PaymentAdjustedNoticeFtr>\n      Adjusted <span>${props.usdToSpend}</span>\n    </PaymentAdjustedNoticeFtr>\n  </PaymentAdjustedNotice>\n);\n\nexport interface PaymentSelectTextProps {\n  handleEditPaymentType(): void;\n}\n\nexport const PaymentEditText: React.FunctionComponent<PaymentSelectTextProps> = props => (\n  <PaymentEdit>\n    Payment\n    <PaymentGhostBtn onClick={props.handleEditPaymentType}>Edit</PaymentGhostBtn>\n  </PaymentEdit>\n);\n\nexport const ConnectWalletWarningText: React.FunctionComponent = props => (\n  <PaymentWarning redText={true}>\n    <ErrorIcon height={15} width={15} /> You need a digital wallet to continue.\n  </PaymentWarning>\n);\n\nexport const EnoughETHInWalletText: React.FunctionComponent = props => (\n  <PaymentWarning>\n    <HollowGreenCheck height={15} width={15} /> You have enough ETH in your connected wallet.\n  </PaymentWarning>\n);\n\nexport const NotEnoughETHInWalletText: React.FunctionComponent = props => (\n  <PaymentWarning>\n    <ErrorIcon height={15} width={15} /> You don't have enough ETH in your connected wallet. You can update your Boost\n    or purchase more ETH in your wallet.\n  </PaymentWarning>\n);\n\nexport const PaymentEmailConfirmationText: React.FunctionComponent = props => (\n  <p>We’ll be sending you a confirmation email of your completed transaction.</p>\n);\n\nexport const AddCardEmailConfirmationText: React.FunctionComponent = props => (\n  <p>We'll send receipts to this email address when you contribute to boosts.</p>\n);\n\nexport const PaymentTermsText: React.FunctionComponent = props => (\n  <>\n    By sending a Boost, you agree to Civil’s{\" \"}\n    <a href={links.TERMS} target=\"_blank\">\n      Terms of Use\n    </a>{\" \"}\n    and{\" \"}\n    <a href={links.PRIVACY_POLICY} target=\"_blank\">\n      Privacy Policy\n    </a>\n    . Depending on your selection, your email may be visible to the newsroom.\n  </>\n);\n\nexport const PaymentInProgressText: React.FunctionComponent = props => (\n  <>\n    <p>Your wallet has popped up a new window. Confirm the transaction in your wallet to complete the payment.</p>\n    <ClipLoader />\n  </>\n);\n\nexport interface PaymentTextProps {\n  newsroomName: string;\n  etherToSpend?: number;\n  usdToSpend?: number;\n  userSubmittedEmail?: boolean;\n}\n\nexport const PaymentSuccessText: React.FunctionComponent<PaymentTextProps> = props => (\n  <>\n    <h2>Boost payment successful!</h2>\n    <p>Thank you for being a contributor.</p>\n    <p>\n      {props.newsroomName} has received your Boost of{\" \"}\n      {props.etherToSpend ? (\n        <>\n          {props.etherToSpend + \" ETH\"} &asymp; {\"$\" + props.usdToSpend}\n        </>\n      ) : (\n        <>${props.usdToSpend}</>\n      )}\n      . {props.userSubmittedEmail && <>You’ll receive an email with your Boost details.</>}\n    </p>\n  </>\n);\n\nexport const PaymentErrorText: React.FunctionComponent = props => <>Your transaction failed. Please try again.</>;\n\nexport const WhyEthInfoText: React.FunctionComponent = props => (\n  <>\n    <h2>Why ETH?</h2>\n    <p>100% of your ETH will go right into the newsroom’s wallet. This way, the Newsroom gets your full support.</p>\n    <p>\n      You’ll have to use Ethereum cryptocurrency (ETH) in a digital wallet like MetaMask in order to continue. Currently\n      it’s not possible to use other cryptocurrencies, dollars or other fiat currencies.\n    </p>\n    <p>\n      There is a very small network transaction cost for sending Ethereum out of your wallet, usually it’s a matter of a\n      few cents. This cost goes to the Ethereum miners who perform the computational work for your content to be\n      included on the Ethereum blockchain.\n    </p>\n  </>\n);\n\nexport const WhatIsEthInfoText: React.FunctionComponent = props => (\n  <>\n    <h2>What is ETH?</h2>\n    <p>Ether (ETH) is the cryptocurrency for the Ethereum blockchain. You’ll be paying in ETH to tip a newsroom.</p>\n    <p>\n      You can purchase or exchange for ETH using a cryptocurrency exchange such as Coinbase or Gemini and fund a digital\n      wallet such as MetaMask. Don’t worry, both Coinbase and Gemini are regulated and in compliance with all applicable\n      laws in each jurisdiction in which they operate. Buying ETH with a debit or certain credit cards is instant, once\n      your account is verified.\n    </p>\n    <p>\n      Each transaction includes a small transaction cost, called gas, which is usually a few cents. These fees go to the\n      Ethereum miners who perform the computational work for your content to be included on the Ethereum blockchain.\n    </p>\n  </>\n);\n\nexport const CanUseCVLInfoText: React.FunctionComponent = props => (\n  <>\n    <h2>Can I use CVL to tip a newsroom?</h2>\n    <p>\n      Civil tokens (CVL) are intended as a governance token to be used on the Civil Registry. You can use them to\n      participate in and contribute to Civil’s community. Civil tokens unlock specific activities on the Civil platform,\n      including launching a newsroom on the Registry, challenging and voting for/against Newsrooms for ethics violations\n      or appealing the outcome of a community vote to the Civil Council.\n    </p>\n    <p>\n      <a target=\"_blank\" href={links.FAQ_CVL_TOKENS}>\n        Learn more about Civil tokens\n      </a>\n    </p>\n  </>\n);\n"
  },
  {
    "path": "packages/components/src/Payments/PaymentsWrapper.tsx",
    "content": "import * as React from \"react\";\nimport {\n  PaymentWrapperStyled,\n  PaymentHeader,\n  PaymentHeaderFlex,\n  PaymentHeaderCenter,\n  PaymentHeaderNewsroom,\n  PaymentHeaderBoostLabel,\n  PaymentHeaderAmount,\n  PaymentHeaderTip,\n  PaymentBackBtn,\n  PaymentCivilLogo,\n} from \"./PaymentsStyledComponents\";\nimport {\n  SendPaymentHdrText,\n  SendPaymentHdrEmbedText,\n  PaymentToNewsroomsTipText,\n  PayWithCardMinimumText,\n  PayWithCardMinimumAdjustedText,\n  PaymentUpdatedByEthText,\n} from \"./PaymentsTextComponents\";\nimport { AvatarLogin } from \"./AvatarLogin\";\nimport { StoryNewsroomStatus } from \"../StoryFeed\";\nimport { CivilLogo, DisclosureArrowIcon, CloseXButton } from \"@joincivil/elements\";\nimport { RENDER_CONTEXT, ICivilContext, CivilContext } from \"../context\";\n\nexport interface PaymentsWrapperProps {\n  boostType?: string;\n  newsroomName: string;\n  activeChallenge: boolean;\n  usdToSpend?: number;\n  etherToSpend?: number;\n  selectedUsdToSpend?: number;\n  paymentAdjustedWarning?: boolean;\n  paymentAdjustedEth?: boolean;\n  paymentAdjustedStripe?: boolean;\n  paymentInProgress?: boolean;\n  waitingForConfirmation?: boolean;\n  children: any;\n  handleEditAmount?(): void;\n  handleBack?(): void;\n  handleClose?(): void;\n}\n\nexport class PaymentsWrapper extends React.Component<PaymentsWrapperProps> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  public render(): JSX.Element {\n    return (\n      <PaymentWrapperStyled>\n        <PaymentHeader>\n          {this.context.renderContext === RENDER_CONTEXT.EMBED ? this.renderEmbedHeader() : this.renderHeader()}\n        </PaymentHeader>\n        {this.props.paymentAdjustedWarning && this.props.handleEditAmount && (\n          <PayWithCardMinimumText handleEditAmount={this.props.handleEditAmount} />\n        )}\n        {this.props.paymentAdjustedStripe && <PayWithCardMinimumAdjustedText />}\n        {this.props.paymentAdjustedEth && (\n          <PaymentUpdatedByEthText usdToSpend={this.props.usdToSpend} etherToSpend={this.props.etherToSpend} />\n        )}\n        {this.props.children}\n      </PaymentWrapperStyled>\n    );\n  }\n\n  public renderHeader(): JSX.Element {\n    return (\n      <>\n        {this.props.boostType !== \"project\" && <SendPaymentHdrText />}\n        <PaymentHeaderFlex>\n          <PaymentHeaderNewsroom>\n            <StoryNewsroomStatus newsroomName={this.props.newsroomName} activeChallenge={this.props.activeChallenge} />\n          </PaymentHeaderNewsroom>\n          {this.props.usdToSpend && this.renderBoostAmount()}\n        </PaymentHeaderFlex>\n        <PaymentHeaderTip>\n          <PaymentToNewsroomsTipText />\n        </PaymentHeaderTip>\n      </>\n    );\n  }\n\n  public renderEmbedHeader(): JSX.Element {\n    return (\n      <>\n        <PaymentHeaderFlex>\n          {this.props.handleBack ? (\n            this.props.paymentInProgress ? (\n              this.props.waitingForConfirmation ? (\n                <PaymentBackBtn disabled={true}>\n                  <DisclosureArrowIcon />\n                  Back\n                </PaymentBackBtn>\n              ) : (\n                <CloseXButton onClick={() => this.props.handleClose && this.props.handleClose()} />\n              )\n            ) : (\n              <PaymentBackBtn onClick={this.props.handleBack}>\n                <DisclosureArrowIcon />\n                Back\n              </PaymentBackBtn>\n            )\n          ) : (\n            <div>{/*spacer so flex remains the same with avatarlogin on right*/}</div>\n          )}\n          <PaymentCivilLogo>\n            <CivilLogo width={50} height={13} />\n          </PaymentCivilLogo>\n          <AvatarLogin />\n        </PaymentHeaderFlex>\n        {!this.props.usdToSpend ? (\n          <PaymentHeaderCenter>\n            <SendPaymentHdrEmbedText newsroomName={this.props.newsroomName} />\n            <PaymentHeaderTip>\n              <PaymentToNewsroomsTipText />\n            </PaymentHeaderTip>\n          </PaymentHeaderCenter>\n        ) : (\n          <PaymentHeaderFlex>\n            <PaymentHeaderNewsroom>\n              <StoryNewsroomStatus\n                newsroomName={this.props.newsroomName}\n                activeChallenge={this.props.activeChallenge}\n              />\n            </PaymentHeaderNewsroom>\n            {this.props.usdToSpend && this.renderBoostAmount()}\n          </PaymentHeaderFlex>\n        )}\n      </>\n    );\n  }\n\n  public renderBoostAmount(): JSX.Element {\n    return (\n      <div>\n        <PaymentHeaderBoostLabel>\n          {this.props.paymentAdjustedWarning || this.props.paymentAdjustedEth || this.props.paymentAdjustedStripe\n            ? \"Selected Boost\"\n            : \"Boost\"}\n        </PaymentHeaderBoostLabel>\n        <PaymentHeaderAmount>\n          {this.props.paymentAdjustedEth || this.props.paymentAdjustedStripe ? (\n            \"$\" + this.props.selectedUsdToSpend\n          ) : (\n            <b>{\"$\" + this.props.usdToSpend}</b>\n          )}\n        </PaymentHeaderAmount>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Payments/__snapshots__/Payments.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Boost / Payments Payment Amount 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPu kCEZTI\"\n    >\n      <p\n        className=\"sc-LzNtX hKhXNT\"\n      >\n        Select how much you would like to Boost\n      </p>\n      <div\n        className=\"sc-fzXfNj brJHhZ\"\n      >\n        <div>\n          <div\n            className=\"sc-LzNvh eWybht\"\n          >\n            <input\n              name=\"SuggestedAmounts\"\n              onChange={[Function]}\n              type=\"radio\"\n              value=\"1\"\n            />\n            <button\n              className=\"sc-LzNvi hTYwnj\"\n              onClick={[Function]}\n            >\n              $\n              1\n              <span>\n                USD\n              </span>\n            </button>\n          </div>\n          <div\n            className=\"sc-LzNvh eWybht\"\n          >\n            <input\n              name=\"SuggestedAmounts\"\n              onChange={[Function]}\n              type=\"radio\"\n              value=\"2\"\n            />\n            <button\n              className=\"sc-LzNvi hTYwnj\"\n              onClick={[Function]}\n            >\n              $\n              2\n              <span>\n                USD\n              </span>\n            </button>\n          </div>\n          <div\n            className=\"sc-LzNvh eWybht\"\n          >\n            <input\n              name=\"SuggestedAmounts\"\n              onChange={[Function]}\n              type=\"radio\"\n              value=\"3\"\n            />\n            <button\n              className=\"sc-LzNvi hTYwnj\"\n              onClick={[Function]}\n            >\n              $\n              3\n              <span>\n                USD\n              </span>\n            </button>\n          </div>\n          <div\n            className=\"sc-LzNvh eWybht\"\n          >\n            <input\n              name=\"SuggestedAmounts\"\n              onChange={[Function]}\n              type=\"radio\"\n              value=\"5\"\n            />\n            <button\n              className=\"sc-LzNvi hTYwnj\"\n              onClick={[Function]}\n            >\n              $\n              5\n              <span>\n                USD\n              </span>\n            </button>\n          </div>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzNvl dESMNz\"\n      >\n        <button\n          className=\"sc-LzNvk krDqLA\"\n          onClick={[Function]}\n        >\n          Or enter a custom amount\n        </button>\n      </div>\n      <div\n        className=\"sc-LzNvm hVqCLG\"\n      >\n        <label\n          className=\"sc-fzXfPL kIKmHS\"\n          size=\"SMALL\"\n        >\n          <input\n            checked={false}\n            id=\"shouldPublicize\"\n            onChange={[Function]}\n            type=\"checkbox\"\n          />\n          <span\n            className=\"sc-fzXfPK buXQoO\"\n            size=\"SMALL\"\n          />\n        </label>\n        <label\n          htmlFor=\"shouldPublicize\"\n        >\n          Hide my username from everyone but the newsroom\n        </label>\n      </div>\n      <button\n        className=\"sc-LzNtY iUrEb\"\n        disabled={true}\n        onClick={[Function]}\n      >\n        Next\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Boost / Payments\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Payment Amount\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      ThemeProvider\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          theme\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxInactiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#7D7373'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxActiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  primaryButtonBackground\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      PaymentsAmount\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          newsroomName\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Coda Story\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          suggestedAmounts\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      amount\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    '1'\n                                  </span>\n                                  }\n                                </span>\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      amount\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    '2'\n                                  </span>\n                                  }\n                                </span>\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  {\n                                  <span>\n                                    <span\n                                      style={\n                                        Object {\n                                          \"color\": \"#666\",\n                                        }\n                                      }\n                                    >\n                                      amount\n                                    </span>\n                                  </span>\n                                  : \n                                  <span\n                                    style={\n                                      Object {\n                                        \"color\": \"#22a\",\n                                        \"wordBreak\": \"break-word\",\n                                      }\n                                    }\n                                  >\n                                    '3'\n                                  </span>\n                                  }\n                                </span>\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              ]\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          handleAmount\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onClickFunc\n                            </span>\n                            }\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      ThemeProvider\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              PaymentsAmount\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ThemeProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Boost / Payments Payment Login or Guest Selection 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPu kCEZTI\"\n    >\n      <div\n        className=\"sc-LzNvK dSssFl\"\n      >\n        <div\n          className=\"sc-LzNvL dKOumV\"\n        >\n          Welcome to Civil!\n        </div>\n        <div\n          className=\"sc-LzNvM geArzy\"\n        >\n          <div\n            className=\"sc-LzNvN eJjvbJ\"\n          >\n            Log in to give a Boost 🚀\n          </div>\n          <button\n            className=\"sc-LzNtY iUrEb\"\n            onClick={[Function]}\n          >\n            Log In / Sign Up\n          </button>\n          <div\n            className=\"sc-LzNvO fipUBi\"\n          >\n            You’ll be able to keep track of your contributions and your username may be listed on the Boost leaderboard.\n          </div>\n        </div>\n        <div\n          className=\"sc-LzNvM geArzy\"\n        >\n          <div\n            className=\"sc-LzNvN eJjvbJ\"\n          >\n            Guest\n          </div>\n          <div\n            className=\"sc-LzNvO fipUBi\"\n          >\n            Proceed to Boost and become a Civil member later.\n          </div>\n          <button\n            className=\"sc-fzXfLO sc-fzXfLQ sc-LzNuw llULVL\"\n            onClick={[Function]}\n            theme={\n              Object {\n                \"invertedButtonBackground\": \"#FFFFFF\",\n                \"invertedButtonColor\": \"#2B56FF\",\n              }\n            }\n            type=\"button\"\n          >\n            Continue as a Guest\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Boost / Payments\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Payment Login or Guest Selection\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      ThemeProvider\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          theme\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxInactiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#7D7373'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxActiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  primaryButtonBackground\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      PaymentsLoginOrGuest\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          handleNext\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onClickFunc\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          handleLogin\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onClickFunc\n                            </span>\n                            }\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      ThemeProvider\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              PaymentsLoginOrGuest\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ThemeProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Boost / Payments Payment Success 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPu kCEZTI\"\n    >\n      <div\n        className=\"sc-LzNxe dqIdWb\"\n      >\n        <svg\n          height=\"48\"\n          viewBox=\"0 0 20 20\"\n          width=\"48\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            fill=\"none\"\n            fillRule=\"evenodd\"\n            transform=\"translate(1 1)\"\n          >\n            <circle\n              className=\"svg-stroke\"\n              cx=\"9\"\n              cy=\"9\"\n              r=\"8.25\"\n              stroke=\"#29cb42\"\n              strokeWidth=\"1.5\"\n            />\n            <path\n              className=\"svg-fill\"\n              d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n              fill=\"#29cb42\"\n              fillRule=\"nonzero\"\n            />\n          </g>\n        </svg>\n        <div\n          className=\"sc-LzNxf ddhYHY\"\n        >\n          <h2>\n            Boost payment successful!\n          </h2>\n          <p>\n            Thank you for being a contributor.\n          </p>\n          <p>\n            Coda Story\n             has received your Boost of $\n            2\n            . You’ll receive an email with your Boost details.\n          </p>\n        </div>\n        <button\n          className=\"sc-LzNtY iUrEb\"\n          onClick={[Function]}\n        >\n          Done\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Boost / Payments\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Payment Success\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      ThemeProvider\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          theme\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxInactiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#7D7373'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxActiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  primaryButtonBackground\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      PaymentsSuccess\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          newsroomName\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Coda Story\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          usdToSpend\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              2\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          handleClose\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onClickFunc\n                            </span>\n                            }\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      ThemeProvider\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              PaymentsSuccess\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ThemeProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Boost / Payments Payment Type 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPu kCEZTI\"\n    >\n      <p\n        className=\"sc-LzNtX hKhXNT\"\n      >\n        Select how you'd like to pay\n      </p>\n      <div\n        className=\"sc-LzNux jPLOFS\"\n      >\n        <button\n          className=\"sc-LzNtY FOJac\"\n          onClick={[Function]}\n        >\n          Pay with Card\n        </button>\n        <button\n          className=\"sc-LzNtY iUrEb\"\n          onClick={[Function]}\n        >\n          Pay with ETH\n        </button>\n      </div>\n      <div\n        className=\"sc-LzNws ixZNSw\"\n      >\n        <p>\n          Want to pay with Apple Pay or Google Pay?\n        </p>\n        <a\n          href=\"/storyfeed/jlasjdfkljsdf/payment\"\n          target=\"_blank\"\n        >\n          Send your Boost on Civil \n          <svg\n            height=\"11\"\n            viewBox=\"0 0 11 11\"\n            width=\"11\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n              fill=\"#2B56FF\"\n              fillRule=\"evenodd\"\n            />\n          </svg>\n        </a>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Boost / Payments\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Payment Type\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      ThemeProvider\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          theme\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxInactiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#7D7373'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  checkboxActiveColor\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  primaryButtonBackground\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                '#2B56FF'\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      PaymentsOptions\n                    </span>\n                    <span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          postId\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              jlasjdfkljsdf\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          usdToSpend\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              1\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          isStripeConnected\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          handleNext\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onClickFunc\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          renderContext\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              1\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        <br />\n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      ThemeProvider\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              PaymentsOptions\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ThemeProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Payments/index.ts",
    "content": "export * from \"./AvatarLogin\";\nexport * from \"./Payments\";\nexport * from \"./PaymentsModal\";\nexport * from \"./PaymentsStripeCardComponent\";\n"
  },
  {
    "path": "packages/components/src/Payments/queries.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const PAYMENTS_ETH_MUTATION = gql`\n  mutation($postID: String!, $input: PaymentsCreateEtherPaymentInput!) {\n    paymentsCreateEtherPayment(postID: $postID, input: $input) {\n      transactionID\n    }\n  }\n`;\n\nexport const PAYMENTS_STRIPE_MUTATION = gql`\n  mutation($postID: String!, $input: PaymentsCreateStripePaymentInput!) {\n    paymentsCreateStripePayment(postID: $postID, input: $input) {\n      amount\n    }\n  }\n`;\n\nexport const SET_EMAIL_MUTATION = gql`\n  mutation($input: ChannelsSetEmailInput!) {\n    userChannelSetEmail(input: $input) {\n      id\n    }\n  }\n`;\n\nexport const GET_STRIPE_PAYMENT_INTENT = gql`\n  mutation($postID: String!, $input: PaymentsCreateStripePaymentInput!) {\n    paymentsCreateStripePaymentIntent(postID: $postID, input: $input) {\n      id\n      clientSecret\n    }\n  }\n`;\n\nexport const CREATE_PAYMENT_METHOD = gql`\n  mutation($input: PaymentsCreateStripePaymentMethodInput!) {\n    paymentsCreateStripePaymentMethod(input: $input) {\n      paymentMethodID\n      customerID\n    }\n  }\n`;\n\nexport const CLONE_PAYMENT_METHOD = gql`\n  mutation($postID: String!, $input: PaymentsCreateStripePaymentInput!) {\n    paymentsClonePaymentMethod(postID: $postID, input: $input) {\n      payerChannelID\n      paymentMethodID\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Payments/types.ts",
    "content": "export const SuggestedPaymentAmounts = [{ amount: \"1\" }, { amount: \"2\" }, { amount: \"3\" }, { amount: \"5\" }];\n\nexport const CreditCardMin = 1;\n\nexport enum PAYMENT_STATE {\n  SELECT_AMOUNT,\n  PAYMENT_CHOOSE_LOGIN_OR_GUEST,\n  SELECT_PAYMENT_TYPE,\n  ETH_PAYMENT,\n  STRIPE_PAYMENT,\n  APPLE_PAY,\n  GOOGLE_PAY,\n  PAYMENT_SUCCESS,\n  PAYMENT_SUCCESS_WITH_SAVED_EMAIL,\n}\n\nexport enum INPUT_STATE {\n  EMPTY = \"empty\",\n  VALID = \"valid\",\n  INVALID = \"invalid\",\n}\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/PhaseCountdown.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { TextCountdownTimer, ProgressBarCountdownTimer, TwoPhaseProgressBarCountdownTimer } from \"./index\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 400px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\nconst now = Date.now() / 1000;\nconst oneDay = 86400;\n\nstoriesOf(\"Registry / Application Phase Countdown Timer\", module)\n  .add(\"Text Timers\", () => {\n    const eightDaysFromNow = now + oneDay * 8;\n\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <>\n            <h3>Base style</h3>\n            <TextCountdownTimer endTime={eightDaysFromNow} />\n\n            <h3>Warning style</h3>\n            <TextCountdownTimer endTime={eightDaysFromNow} warn={true} />\n\n            <h3>Ended</h3>\n            <TextCountdownTimer endTime={now} />\n          </>\n        )}\n      </Container>\n    );\n  })\n  .add(\"Progress Bar Timers\", () => {\n    const shortTotalSeconds = 60 * 1;\n    const shortEndTime = now + shortTotalSeconds * 0.65;\n    const totalSeconds = oneDay * 8;\n    const endTime = now + oneDay * 3.5;\n    const flavorText = \"under community review\";\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <>\n            <h3>A Short Phase</h3>\n            <p>The animation is more visible</p>\n            <ProgressBarCountdownTimer\n              endTime={shortEndTime}\n              totalSeconds={shortTotalSeconds}\n              flavorText={flavorText}\n              displayLabel=\"Waiting for approval\"\n              toolTipText=\"Tool Tip for label\"\n            />\n\n            <h3>A Long Phase</h3>\n            <ProgressBarCountdownTimer\n              endTime={endTime}\n              totalSeconds={totalSeconds}\n              flavorText={flavorText}\n              displayLabel=\"Waiting for approval\"\n              toolTipText=\"Tool Tip for label\"\n            />\n          </>\n        )}\n      </Container>\n    );\n  })\n  .add(\"Two Phase Progress Bar Timers\", () => {\n    const shortTotalSeconds = 60 * 1;\n    const shortEndTime = now + shortTotalSeconds * 0.65;\n    const flavorText = \"under community review\";\n    return (\n      <Container>\n        {process.env.NODE_ENV !== \"test\" && (\n          <>\n            <h3>First phase is active</h3>\n            <TwoPhaseProgressBarCountdownTimer\n              endTime={shortEndTime}\n              totalSeconds={shortTotalSeconds}\n              flavorText={flavorText}\n              displayLabel=\"Committing Votes\"\n              toolTipText=\"Tool Tip text for Committing Votes\"\n              secondaryDisplayLabel=\"Revealing Votes\"\n              secondaryToolTipText=\"Tool Tip text for Revealing Votes\"\n              activePhaseIndex={0}\n            />\n\n            <h3>Second phase is active</h3>\n            <TwoPhaseProgressBarCountdownTimer\n              endTime={shortEndTime}\n              totalSeconds={shortTotalSeconds}\n              flavorText={flavorText}\n              displayLabel=\"Revealing Votes\"\n              toolTipText=\"Tool Tip text for Revealing Votes\"\n              secondaryDisplayLabel=\"Committing Votes\"\n              secondaryToolTipText=\"Tool Tip text for Committing Votes\"\n              activePhaseIndex={1}\n            />\n          </>\n        )}\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/ProgressBarCountdownTimer.tsx",
    "content": "import * as React from \"react\";\nimport { getLocalDateTimeStrings, getReadableDuration } from \"@joincivil/utils\";\nimport { InjectedCountdownTimerProps, ProgressBarCountdownProps } from \"./types\";\nimport {\n  StyledProgressBarCountdownTimer,\n  ProgressBarCountdownContainer,\n  ProgressBarDisplayLabel,\n  ProgressBarCountdownTotal,\n  ProgressBarCountdownProgress,\n  ProgressBarCopy,\n  MetaItem,\n  MetaItemValueAccent,\n  MetaItemLabel,\n} from \"./styledComponents\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport class ProgressBarCountdownTimerComponent extends React.Component<\n  ProgressBarCountdownProps & InjectedCountdownTimerProps\n> {\n  public render(): JSX.Element {\n    const progress = this.getProgress();\n    const style = { width: `${(progress * 100).toString()}%` };\n    return (\n      <StyledProgressBarCountdownTimer>\n        <ProgressBarCountdownContainer>\n          <ProgressBarDisplayLabel>\n            {this.props.displayLabel}\n            <QuestionToolTip explainerText={this.props.toolTipText} positionBottom={true} />\n          </ProgressBarDisplayLabel>\n          <ProgressBarCountdownTotal>\n            <ProgressBarCountdownProgress style={style} />\n          </ProgressBarCountdownTotal>\n        </ProgressBarCountdownContainer>\n        {this.renderReadableTimeRemaining()}\n        {this.renderExpiry()}\n      </StyledProgressBarCountdownTimer>\n    );\n  }\n\n  private renderExpiry = (): JSX.Element => {\n    const [expiryDateString, expiryTimeString] = this.props.endTime\n      ? getLocalDateTimeStrings(parseInt(this.props.endTime.toString(), 10))\n      : [\"\", \"\"];\n    return (\n      <ProgressBarCopy>\n        Newsroom listing {this.props.secondsRemaining! > 0 ? \"is\" : \"was\"} {this.props.flavorText} until{\" \"}\n        {expiryDateString} {expiryTimeString}\n      </ProgressBarCopy>\n    );\n  };\n\n  private renderReadableTimeRemaining = (): JSX.Element => {\n    if (this.props.secondsRemaining! > 0) {\n      return (\n        <MetaItem>\n          <MetaItemValueAccent>{getReadableDuration(this.props.secondsRemaining!, [\"second\"])}</MetaItemValueAccent>\n          <MetaItemLabel>Remaining</MetaItemLabel>\n        </MetaItem>\n      );\n    }\n    return (\n      <MetaItem>\n        <MetaItemValueAccent>Ended</MetaItemValueAccent>\n        <MetaItemLabel>&nbsp;</MetaItemLabel>\n      </MetaItem>\n    );\n  };\n\n  private getProgress = (): number => {\n    if (this.props.secondsRemaining! > 0) {\n      return 1 - this.props.secondsRemaining! / this.props.totalSeconds;\n    }\n    return 1;\n  };\n}\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/SmallProgressBarCountdownTimer.tsx",
    "content": "import * as React from \"react\";\nimport { InjectedCountdownTimerProps, ProgressBarCountdownProps } from \"./types\";\nimport { getReadableDuration } from \"@joincivil/utils\";\nimport {\n  StyledProgressBarCountdownTimer,\n  ProgressBarCountdownContainer,\n  ProgressBarCountdownTotal,\n  ProgressBarCountdownProgress,\n  MetaItem,\n  CompactProgressBarDisplayLabel,\n  CompactMetaItemValueAccent,\n} from \"./styledComponents\";\n\nexport class SmallProgressBarCountdownTimerComponent extends React.Component<\n  ProgressBarCountdownProps & InjectedCountdownTimerProps\n> {\n  public render(): JSX.Element {\n    const progress = this.getProgress();\n    const style = { width: `${(progress * 100).toString()}%` };\n    const DisplayLabel = this.props.displayLabel;\n    return (\n      <StyledProgressBarCountdownTimer>\n        <ProgressBarCountdownContainer>\n          <CompactProgressBarDisplayLabel>\n            <DisplayLabel />\n          </CompactProgressBarDisplayLabel>\n          {this.renderReadableTimeRemaining()}\n          <ProgressBarCountdownTotal>\n            <ProgressBarCountdownProgress style={style} />\n          </ProgressBarCountdownTotal>\n        </ProgressBarCountdownContainer>\n      </StyledProgressBarCountdownTimer>\n    );\n  }\n\n  private getProgress = (): number => {\n    if (this.props.secondsRemaining! > 0) {\n      return 1 - this.props.secondsRemaining! / this.props.totalSeconds;\n    }\n    return 1;\n  };\n\n  private renderReadableTimeRemaining = (): JSX.Element => {\n    const FlavorText = this.props.flavorText || (() => <></>);\n    if (this.props.secondsRemaining! > 0) {\n      return (\n        <MetaItem>\n          <CompactMetaItemValueAccent>\n            {getReadableDuration(this.props.secondsRemaining!)} <FlavorText />\n          </CompactMetaItemValueAccent>\n        </MetaItem>\n      );\n    }\n    return (\n      <MetaItem>\n        <CompactMetaItemValueAccent>Ended</CompactMetaItemValueAccent>\n      </MetaItem>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/TextCountdownTimer.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { getLocalDateTimeStrings, getReadableDuration } from \"@joincivil/utils\";\nimport { colors, fonts } from \"../styleConstants\";\nimport { ClockIcon } from \"../icons\";\nimport { CountdownTimerProps, InjectedCountdownTimerProps } from \"./types\";\n\nconst StyledCountdownTimerContainer = styled.div`\n  display: flex;\n  font: normal 14px/17px ${fonts.SANS_SERIF};\n  margin: 0 0 16px;\n`;\n\nexport const StyledDurationContainer = styled.span`\n  color: ${colors.accent.CIVIL_BLUE};\n`;\nconst StyledIconContainer = styled.span`\n  margin-right: 12px;\n`;\nexport const StyledCountdownLabel = styled.span`\n  color: ${colors.accent.CIVIL_BLUE};\n`;\nexport const StyledCountdownLabelWarn = styled(StyledCountdownLabel)`\n  color: ${colors.accent.CIVIL_RED};\n`;\nconst StyledExpiry = styled.div`\n  font-size: 14px;\n  line-height: 17px;\n  margin: 2px 0 0;\n`;\n\nexport class TextCountdownTimerComponent extends React.Component<CountdownTimerProps & InjectedCountdownTimerProps> {\n  public render(): JSX.Element {\n    const labelText = this.props.secondsRemaining! > 0 ? \"Ends in \" : \"Ended\";\n    let label;\n    if (this.props.warn) {\n      label = <StyledCountdownLabelWarn>{labelText}</StyledCountdownLabelWarn>;\n    } else {\n      label = <StyledCountdownLabel>{labelText}</StyledCountdownLabel>;\n    }\n    return (\n      <StyledCountdownTimerContainer>\n        <StyledIconContainer>\n          <ClockIcon />\n        </StyledIconContainer>\n        <div>\n          <StyledDurationContainer>\n            {label} {this.renderReadableTimeRemaining()}\n          </StyledDurationContainer>\n          {this.renderExpiry()}\n        </div>\n      </StyledCountdownTimerContainer>\n    );\n  }\n\n  private renderExpiry = (): JSX.Element => {\n    const [expiryDateString, expiryTimeString] = getLocalDateTimeStrings(this.props.endTime);\n    return (\n      <StyledExpiry>\n        {expiryDateString} at {expiryTimeString}\n      </StyledExpiry>\n    );\n  };\n\n  private renderReadableTimeRemaining = (): JSX.Element => {\n    if (this.props.warn) {\n      return (\n        <StyledCountdownLabelWarn>\n          <b>{getReadableDuration(this.props.secondsRemaining!, [\"second\"])}</b>\n        </StyledCountdownLabelWarn>\n      );\n    }\n    return <b>{getReadableDuration(this.props.secondsRemaining!, [\"second\"])}</b>;\n  };\n}\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/TwoPhaseProgressBarCountdownTimer.tsx",
    "content": "import * as React from \"react\";\nimport { getLocalDateTimeStrings, getReadableDuration } from \"@joincivil/utils\";\nimport { InjectedCountdownTimerProps, TwoPhaseProgressBarCountdownProps } from \"./types\";\nimport {\n  StyledProgressBarCountdownTimer,\n  ProgressBarCountdownContainer,\n  ProgressBarDisplayLabel,\n  ProgressBarCountdownTotal,\n  ProgressBarCountdownProgress,\n  ProgressBarCopy,\n  TwoPhaseProgressBarContainer,\n  MetaItem,\n  MetaItemValueAccent,\n  MetaItemLabel,\n} from \"./styledComponents\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\n\nexport class TwoPhaseProgressBarCountdownTimerComponent extends React.Component<\n  TwoPhaseProgressBarCountdownProps & InjectedCountdownTimerProps\n> {\n  public render(): JSX.Element {\n    return (\n      <StyledProgressBarCountdownTimer>\n        {this.renderCountdownProgressBars()}\n        {this.renderReadableTimeRemaining()}\n        {this.renderExpiry()}\n      </StyledProgressBarCountdownTimer>\n    );\n  }\n\n  private renderCountdownProgressBars = (): JSX.Element => {\n    const primaryProgressBar = this.renderPrimaryProgressBar();\n    const secondaryProgressBar = this.renderSecondaryProgressBar();\n    let progressBars: JSX.Element[];\n\n    if (this.props.activePhaseIndex === 0) {\n      progressBars = [primaryProgressBar, secondaryProgressBar];\n    } else {\n      progressBars = [secondaryProgressBar, primaryProgressBar];\n    }\n\n    return <TwoPhaseProgressBarContainer>{progressBars}</TwoPhaseProgressBarContainer>;\n  };\n\n  private renderPrimaryProgressBar = (): JSX.Element => {\n    const progress = this.getProgress();\n    const style = { width: `${(progress * 100).toString()}%` };\n    return (\n      <ProgressBarCountdownContainer key=\"progressBarPrimary\">\n        <ProgressBarDisplayLabel>\n          {this.props.displayLabel}\n          <QuestionToolTip explainerText={this.props.toolTipText} positionBottom={true} />\n        </ProgressBarDisplayLabel>\n        <ProgressBarCountdownTotal>\n          <ProgressBarCountdownProgress style={style} />\n        </ProgressBarCountdownTotal>\n      </ProgressBarCountdownContainer>\n    );\n  };\n\n  private renderSecondaryProgressBar = (): JSX.Element => {\n    const progress = this.props.activePhaseIndex === 0 ? 0 : 1;\n    const style = { width: `${(progress * 100).toString()}%` };\n    return (\n      <ProgressBarCountdownContainer key=\"progressBarSecondary\">\n        <ProgressBarDisplayLabel>\n          {this.props.secondaryDisplayLabel}\n          <QuestionToolTip explainerText={this.props.secondaryToolTipText} positionBottom={true} />\n        </ProgressBarDisplayLabel>\n        <ProgressBarCountdownTotal>\n          <ProgressBarCountdownProgress style={style} />\n        </ProgressBarCountdownTotal>\n      </ProgressBarCountdownContainer>\n    );\n  };\n\n  private renderExpiry = (): JSX.Element => {\n    const [expiryDateString, expiryTimeString] = getLocalDateTimeStrings(this.props.endTime);\n    return (\n      <ProgressBarCopy>\n        Newsroom listing {this.props.secondsRemaining! > 0 ? \"is\" : \"was\"} {this.props.flavorText} until{\" \"}\n        {expiryDateString} {expiryTimeString}\n      </ProgressBarCopy>\n    );\n  };\n\n  private renderReadableTimeRemaining = (): JSX.Element => {\n    if (this.props.secondsRemaining! > 0) {\n      return (\n        <MetaItem>\n          <MetaItemValueAccent>{getReadableDuration(this.props.secondsRemaining!)}</MetaItemValueAccent>\n          <MetaItemLabel>Remaining</MetaItemLabel>\n        </MetaItem>\n      );\n    }\n    return (\n      <MetaItem>\n        <MetaItemValueAccent>Ended</MetaItemValueAccent>\n        <MetaItemLabel>&nbsp;</MetaItemLabel>\n      </MetaItem>\n    );\n  };\n\n  private getProgress = (): number => {\n    if (this.props.secondsRemaining! > 0) {\n      return 1 - this.props.secondsRemaining! / this.props.totalSeconds;\n    }\n    return 1;\n  };\n}\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/__snapshots__/PhaseCountdown.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Application Phase Countdown Timer Progress Bar Timers 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPv efRwJd\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Application Phase Countdown Timer\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Progress Bar Timers\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  Container\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Application Phase Countdown Timer Text Timers 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPv efRwJd\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Application Phase Countdown Timer\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Text Timers\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  Container\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / Application Phase Countdown Timer Two Phase Progress Bar Timers 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPv efRwJd\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Application Phase Countdown Timer\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Two Phase Progress Bar Timers\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  Container\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/constants.ts",
    "content": "import * as React from \"react\";\nimport {\n  InApplicationPhaseLabelText,\n  ChallengeCommitVotePhaseLabelText,\n  ChallengeRevealVotePhaseLabelText,\n  ChallengeAwaitingAppealRequestPhaseLabelText,\n  ChallengeAwaitingAppealJudgementPhaseLabelText,\n  InApplicationFlavorText,\n  ChallengeCommitVoteFlavorText,\n  ChallengeRevealVoteFlavorText,\n  ChallengeAwaitingAppealRequestFlavorText,\n  ChallengeAwaitingAppealJudgementFlavorText,\n  ChallengeAwaitingAppealChallengePhaseLabelText,\n  ChallengeAwaitingAppealChallengeFlavorText,\n} from \"./textComponents\";\n\nexport enum PHASE_TYPE_NAMES {\n  IN_APPLICATION = \"IN_APPLICATION\",\n  CHALLENGE_COMMIT_VOTE = \"CHALLENGE_COMMIT_VOTE\",\n  CHALLENGE_REVEAL_VOTE = \"CHALLENGE_REVEAL_VOTE\",\n  CHALLENGE_AWAITING_APPEAL_REQUEST = \"CHALLENGE_AWAITING_APPEAL_REQUEST\",\n  CHALLENGE_AWAITING_APPEAL_JUDGEMENT = \"CHALLENGE_AWAITING_APPEAL_JUDGEMENT\",\n  CHALLENGE_AWAITING_APPEAL_CHALLENGE = \"CHALLENGE_AWAITING_APPEAL_CHALLENGE\",\n  APPEAL_CHALLENGE_COMMIT_VOTE = \"APPEAL_CHALLENGE_COMMIT_VOTE\",\n  APPEAL_CHALLENGE_REVEAL_VOTE = \"APPEAL_CHALLENGE_REVEAL_VOTE\",\n}\n\nexport const PHASE_TYPE_LABEL: { [index: string]: React.FunctionComponent } = {\n  IN_APPLICATION: InApplicationPhaseLabelText,\n  CHALLENGE_COMMIT_VOTE: ChallengeCommitVotePhaseLabelText,\n  CHALLENGE_REVEAL_VOTE: ChallengeRevealVotePhaseLabelText,\n  CHALLENGE_AWAITING_APPEAL_REQUEST: ChallengeAwaitingAppealRequestPhaseLabelText,\n  CHALLENGE_AWAITING_APPEAL_JUDGEMENT: ChallengeAwaitingAppealJudgementPhaseLabelText,\n  CHALLENGE_AWAITING_APPEAL_CHALLENGE: ChallengeAwaitingAppealChallengePhaseLabelText,\n  APPEAL_CHALLENGE_COMMIT_VOTE: ChallengeCommitVotePhaseLabelText,\n  APPEAL_CHALLENGE_REVEAL_VOTE: ChallengeRevealVotePhaseLabelText,\n};\n\nexport const PHASE_TYPE_FLAVOR_TEXT: { [index: string]: React.FunctionComponent } = {\n  IN_APPLICATION: InApplicationFlavorText,\n  CHALLENGE_COMMIT_VOTE: ChallengeCommitVoteFlavorText,\n  CHALLENGE_REVEAL_VOTE: ChallengeRevealVoteFlavorText,\n  CHALLENGE_AWAITING_APPEAL_REQUEST: ChallengeAwaitingAppealRequestFlavorText,\n  CHALLENGE_AWAITING_APPEAL_JUDGEMENT: ChallengeAwaitingAppealJudgementFlavorText,\n  CHALLENGE_AWAITING_APPEAL_CHALLENGE: ChallengeAwaitingAppealChallengeFlavorText,\n  APPEAL_CHALLENGE_COMMIT_VOTE: ChallengeCommitVoteFlavorText,\n  APPEAL_CHALLENGE_REVEAL_VOTE: ChallengeRevealVoteFlavorText,\n};\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/index.tsx",
    "content": "import {\n  CountdownTimerProps,\n  InjectedCountdownTimerProps,\n  CountdownTimerState,\n  ProgressBarCountdownProps,\n  TwoPhaseProgressBarCountdownProps,\n} from \"./types\";\nimport { TextCountdownTimerComponent } from \"./TextCountdownTimer\";\nimport { ProgressBarCountdownTimerComponent } from \"./ProgressBarCountdownTimer\";\nimport { TwoPhaseProgressBarCountdownTimerComponent } from \"./TwoPhaseProgressBarCountdownTimer\";\nimport { SmallProgressBarCountdownTimerComponent } from \"./SmallProgressBarCountdownTimer\";\nimport * as React from \"react\";\n\nconst connectCountdownTimer = () => <TCountdownTimerProps extends CountdownTimerProps>(\n  CountdownTimerComponent:\n    | React.ComponentClass<TCountdownTimerProps & InjectedCountdownTimerProps>\n    | React.FunctionComponent<TCountdownTimerProps & InjectedCountdownTimerProps>,\n) => {\n  return class HOCountdownTimerContainer extends React.Component<TCountdownTimerProps, CountdownTimerState> {\n    public timer?: number;\n\n    constructor(props: TCountdownTimerProps) {\n      super(props);\n      this.state = {\n        secondsRemaining: 0,\n      };\n    }\n\n    public render(): JSX.Element {\n      return <CountdownTimerComponent {...this.props} {...this.state} />;\n    }\n\n    public async componentDidMount(): Promise<void> {\n      return this.initCountdown();\n    }\n\n    public componentWillUnmount(): void {\n      if (this.timer) {\n        window.clearInterval(this.timer);\n      }\n    }\n\n    public updateTimeRemaining = () => {\n      const expiry = this.props.endTime;\n      const currentTime = parseInt((Date.now() / 1000).toString(), 10); // convert from milliseconds\n      const secondsRemaining = expiry - currentTime;\n      this.setState({ secondsRemaining });\n      return secondsRemaining;\n    };\n\n    public initCountdown = async () => {\n      const timeRemaining = this.updateTimeRemaining();\n      if (timeRemaining > 0) {\n        this.timer = window.setInterval(this.updateTimeRemaining, 1000);\n      } else {\n        window.clearInterval(this.timer);\n      }\n    };\n  };\n};\n\nexport const TextCountdownTimer = connectCountdownTimer()(TextCountdownTimerComponent);\n\nexport const ProgressBarCountdownTimer: React.ComponentClass<ProgressBarCountdownProps> = connectCountdownTimer()(\n  ProgressBarCountdownTimerComponent,\n);\n\nexport const SmallProgressBarCountdownTimer: React.ComponentClass<ProgressBarCountdownProps> = connectCountdownTimer()(\n  SmallProgressBarCountdownTimerComponent,\n);\n\nexport const TwoPhaseProgressBarCountdownTimer: React.ComponentClass<\n  TwoPhaseProgressBarCountdownProps\n> = connectCountdownTimer()(TwoPhaseProgressBarCountdownTimerComponent);\n\nexport * from \"./types\";\nexport * from \"./constants\";\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\n\nexport const ProgressBarCountdownContainer = styled.div`\n  margin-bottom: 24px;\n`;\nexport const ProgressBarDisplayLabel = styled.h4`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 12px;\n  font-weight: 600;\n  line-height: 15px;\n  margin: 0 0 7px;\n  text-transform: uppercase;\n`;\nexport const ProgressBarBase = styled.div`\n  height: 12px;\n  border-radius: 7.5px;\n`;\nexport const ProgressBarCountdownTotal = styled(ProgressBarBase)`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  box-sizing: border-box;\n  position: relative;\n  width: 100%;\n`;\nexport const ProgressBarCountdownProgress = styled(ProgressBarBase)`\n  display: inline-block;\n  background-color: ${colors.accent.CIVIL_BLUE};\n  left: 0;\n  top: 0;\n  position: absolute;\n  transition: width 500ms ease;\n`;\nexport const StyledProgressBarCountdownTimer = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  text-align: left;\n`;\n\nexport const TwoPhaseProgressBarContainer = styled.div`\n  display: flex;\n  justify-content: space-between;\n\n  ${ProgressBarCountdownContainer}${ProgressBarCountdownContainer} {\n    width: 46%;\n    margin-left: 4%;\n  }\n  ${ProgressBarCountdownContainer}${ProgressBarCountdownContainer}:first-of-type {\n    border-right: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    margin-left: 0;\n    padding-right: 4%;\n  }\n`;\n\nexport const MetaItem = styled.div`\n  margin: 0 0 16px;\n`;\nexport const MetaItemValue = styled.div`\n  font-size: 22px;\n  line-height: 27px;\n`;\nexport const MetaItemValueAccent = styled(MetaItemValue)`\n  color: ${colors.primary.CIVIL_BLUE_1};\n`;\nexport const MetaItemLabel = styled.div`\n  font-size: 14px;\n  line-height: 17px;\n`;\nexport const ProgressBarCopy = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 14px;\n  letter-spacing: 0.68px;\n  line-height: 20px;\n`;\n\nexport const CompactProgressBarDisplayLabel = styled.h4`\n  font-size: 12px;\n  line-height: 15px;\n  margin: 0 0 7px;\n  text-transform: uppercase;\n`;\n\nexport const CompactMetaItemValueAccent = styled.div`\n  color: ${colors.accent.CIVIL_RED};\n  font-size: 14px;\n  line-height: 17px;\n`;\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/textComponents.tsx",
    "content": "import * as React from \"react\";\n\nexport const InApplicationPhaseLabelText: React.FunctionComponent = props => <>Awaiting Approval</>;\n\nexport const ChallengeCommitVotePhaseLabelText: React.FunctionComponent = props => <>Commit Vote</>;\n\nexport const ChallengeRevealVotePhaseLabelText: React.FunctionComponent = props => <>Reveal Vote</>;\n\nexport const ChallengeAwaitingAppealRequestPhaseLabelText: React.FunctionComponent = props => (\n  <>Awaiting Appeal Request</>\n);\n\nexport const ChallengeAwaitingAppealJudgementPhaseLabelText: React.FunctionComponent = props => (\n  <>Awaiting Appeal Decision</>\n);\n\nexport const ChallengeAwaitingAppealChallengePhaseLabelText: React.FunctionComponent = props => (\n  <>Awaiting Appeal Challenge</>\n);\n\nexport const InApplicationFlavorText: React.FunctionComponent = props => <>until approval</>;\n\nexport const ChallengeCommitVoteFlavorText: React.FunctionComponent = props => <>to commit votes</>;\n\nexport const ChallengeRevealVoteFlavorText: React.FunctionComponent = props => <>to reveal votes</>;\n\nexport const ChallengeAwaitingAppealRequestFlavorText: React.FunctionComponent = props => <>to request an appeal</>;\n\nexport const ChallengeAwaitingAppealJudgementFlavorText: React.FunctionComponent = props => (\n  <>until Council's decision</>\n);\n\nexport const ChallengeAwaitingAppealChallengeFlavorText: React.FunctionComponent = props => (\n  <>to challenge the granted appeal</>\n);\n"
  },
  {
    "path": "packages/components/src/PhaseCountdown/types.ts",
    "content": "import * as React from \"react\";\n\nexport interface CountdownTimerProps {\n  warn?: boolean | undefined;\n  endTime: number;\n}\n\nexport interface InjectedCountdownTimerProps {\n  secondsRemaining?: number;\n}\n\nexport interface CountdownTimerState {\n  secondsRemaining: number;\n}\n\nexport interface ProgressBarCountdownProps extends CountdownTimerProps {\n  displayLabel: string | React.FunctionComponent | React.ComponentClass;\n  totalSeconds: number;\n  flavorText?: string | React.FunctionComponent | React.ComponentClass;\n  toolTipText?: string | React.ReactNode;\n}\n\nexport interface TwoPhaseProgressBarCountdownProps extends ProgressBarCountdownProps {\n  activePhaseIndex: number;\n  secondaryDisplayLabel: string | React.FunctionComponent | React.ComponentClass;\n  secondaryToolTipText?: string | React.ReactNode;\n}\n"
  },
  {
    "path": "packages/components/src/ProgressModalContent.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingIndicator } from \"./LoadingIndicator\";\nimport { ModalHeading, ModalContent, ModalContentInsetContainer, StyledModalErrorContainer } from \"./ModalContent\";\nimport { Button, buttonSizes } from \"./Button\";\nimport { OctopusErrorIcon } from \"./icons\";\n\nexport interface ProgressModalContentProps {\n  hideModal?(): void;\n}\n\nexport const ProgressModalContentInProgress: React.FunctionComponent<ProgressModalContentProps> = props => {\n  const content = props.children || <ModalHeading>Your transaction is in progress.</ModalHeading>;\n\n  return (\n    <>\n      <LoadingIndicator height={100} width={150} />\n      {content}\n      <ModalContentInsetContainer>\n        <ModalContent>\n          Your transaction is processing. This can take several minutes. Please don't close the tab.\n        </ModalContent>\n        <ModalContent>How about taking a little breather and standing for a bit? Maybe even stretching?</ModalContent>\n      </ModalContentInsetContainer>\n    </>\n  );\n};\n\nexport const ProgressModalContentSuccess: React.FunctionComponent<ProgressModalContentProps> = props => {\n  const handleOnClick = (event: any): void => {\n    if (props.hideModal) {\n      props.hideModal();\n    }\n  };\n\n  return (\n    <>\n      <ModalHeading>Success!</ModalHeading>\n\n      <ModalContentInsetContainer>\n        <ModalContent>Transaction processed.</ModalContent>\n      </ModalContentInsetContainer>\n\n      <Button onClick={handleOnClick} size={buttonSizes.MEDIUM}>\n        Ok!\n      </Button>\n    </>\n  );\n};\n\nexport const ProgressModalContentError: React.FunctionComponent<ProgressModalContentProps> = props => {\n  const handleOnClick = (event: any): void => {\n    if (props.hideModal) {\n      props.hideModal();\n    }\n  };\n\n  if (props.children) {\n    return (\n      <>\n        <StyledModalErrorContainer>\n          <OctopusErrorIcon />\n        </StyledModalErrorContainer>\n        {props.children}\n        <Button onClick={handleOnClick} size={buttonSizes.MEDIUM}>\n          Dismiss\n        </Button>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <StyledModalErrorContainer>\n        <OctopusErrorIcon />\n      </StyledModalErrorContainer>\n      <ModalHeading>Uh oh!</ModalHeading>\n      <ModalContent>Your transaction failed. Please try again.</ModalContent>\n      <Button onClick={handleOnClick} size={buttonSizes.MEDIUM}>\n        Dismiss\n      </Button>\n    </>\n  );\n};\n\nexport const ProgressModalContentMobileUnsupported: React.FunctionComponent<ProgressModalContentProps> = props => {\n  const handleOnClick = (event: any): void => {\n    if (props.hideModal) {\n      props.hideModal();\n    }\n  };\n\n  return (\n    <>\n      <StyledModalErrorContainer>\n        <OctopusErrorIcon />\n      </StyledModalErrorContainer>\n\n      <ModalHeading>We're sorry, this action is only available on desktop.</ModalHeading>\n      <ModalContentInsetContainer>\n        <ModalContent>\n          Transactions requiring MetaMask on mobile are not available yet, but they're coming. In the meantime, you can\n          still browse newsroom listings on our site.\n        </ModalContent>\n      </ModalContentInsetContainer>\n\n      <Button onClick={handleOnClick} size={buttonSizes.MEDIUM}>\n        Continue\n      </Button>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/QuestionToolTip.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { QuestionToolTip } from \"./QuestionToolTip\";\nimport styled from \"styled-components\";\n\nconst Wrapper = styled.div`\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: 100vw;\n  height: 100vh;\n`;\n\nstoriesOf(\"Pattern Library / Tooltips / QuestionToolTip\", module).add(\"tooltip\", () => {\n  return (\n    <Wrapper>\n      <QuestionToolTip explainerText={\"this is a tool tip\"} />\n    </Wrapper>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/QuestionToolTip.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ToolTip, ToolTipProps } from \"./ToolTip\";\nimport { colors } from \"./styleConstants\";\n\nconst Outer = styled.div`\n  display: inline-block;\n  vertical-align: top;\n`;\n\nconst Wrapper = styled.div`\n  width: 18px;\n  height: 18px;\n  position: relative;\n  margin-left: 5px;\n  margin-top: -1px;\n`;\n\nexport class QuestionToolTip extends React.Component<ToolTipProps> {\n  public render(): JSX.Element {\n    const colorEnabled = (this.props.theme && this.props.theme.toolTipColorEnabled) || colors.primary.BLACK;\n    const colorDisabled = (this.props.theme && this.props.theme.toolTipColorDisabled) || colors.accent.CIVIL_GRAY_4;\n    const color = this.props.disabled ? colorDisabled : colorEnabled;\n    return (\n      <Outer>\n        <ToolTip {...this.props}>\n          <Wrapper>\n            <svg height=\"18\" viewBox=\"0 0 18 18\" width=\"18\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g fill=\"none\" fillRule=\"evenodd\" opacity=\".56\">\n                <path d=\"m0 0h18v18h-18z\" stroke={color} strokeOpacity=\".008\" strokeWidth=\".5\" />\n                <path\n                  d=\"m8.25 13.5h1.5v-1.5h-1.5zm.75-12c-4.13999999 0-7.5 3.36000001-7.5 7.5 0 4.1400003 3.36000001 7.5 7.5 7.5 4.1400003 0 7.5-3.3599997 7.5-7.5 0-4.14000035-3.3599997-7.5-7.5-7.5zm0 13.5c-3.30749989 0-6-2.6925002-6-6 0-3.30749989 2.69250011-6 6-6 3.3074998 0 6 2.69250011 6 6 0 3.3074998-2.6925002 6-6 6zm0-10.5c-1.65750003 0-3 1.34249997-3 3h1.5c0-.82500029.6749997-1.5 1.5-1.5.82500023 0 1.5.67499971 1.5 1.5 0 1.5-2.25 1.3125-2.25 3.75h1.5c0-1.6875 2.25-1.875 2.25-3.75 0-1.65750003-1.3425-3-3-3z\"\n                  fill={color}\n                />\n              </g>\n            </svg>\n          </Wrapper>\n        </ToolTip>\n      </Outer>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/RegistryEmpty/index.ts",
    "content": "export * from \"./styledComponents\";\n"
  },
  {
    "path": "packages/components/src/RegistryEmpty/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\nimport { Button } from \"../Button\";\n\nexport const StyledRegistryEmpty = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  padding: 50px 0 221px;\n  text-align: center;\n`;\n\nexport const StyledEmptyHeader = styled.div`\n  font-size: 21px;\n  line-height: 33px;\n  letter-spacing: -0.2px;\n  margin: 0 0 60px;\n`;\n\nexport const StyledEmptyCopy = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 18px;\n  line-height: 33px;\n  letter-spacing: -0.12px;\n  margin: 40px 0;\n\n  ${Button} {\n    margin-top: 12px;\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/RescueTokens.tsx",
    "content": "import * as React from \"react\";\nimport { TextInput } from \"./input/\";\nimport { TransactionButton } from \"./TransactionButton\";\nimport { FormCopy, FormHeader } from \"./ListingDetailPhaseCard/styledComponents\";\n\nexport interface RescueTokensProps {\n  challengeID: string;\n  transactions: any[];\n  modalContentComponents?: any;\n}\n\nexport class RescueTokens extends React.Component<RescueTokensProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <FormHeader>Rescue Tokens</FormHeader>\n        <FormCopy>\n          You did not reveal your vote. Please use the below button to rescue your unrevealed voting tokens.\n        </FormCopy>\n\n        <TextInput name=\"challengeID\" readOnly={true} value={this.props.challengeID} label=\"Challenge ID\" />\n\n        <TransactionButton\n          transactions={this.props.transactions}\n          modalContentComponents={this.props.modalContentComponents}\n        >\n          Rescue Tokens\n        </TransactionButton>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/ReviewVote/ReviewVote.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ReviewVote, ReviewVoteProps } from \"./ReviewVoteModal\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Registry / Review Vote\", module).add(\"Review Vote Modal\", () => {\n  const handleClose = () => {\n    console.log(\"Closed the  modal\");\n  };\n  const props: ReviewVoteProps = {\n    newsroomName: \"Taco Tuesdays\",\n    listingDetailURL: \"https://civil.co/#taco-tuesdays\",\n    challengeID: \"420\",\n    open: true,\n    numTokens: \"1000\",\n    voteOption: \"1\",\n    salt: \"9635457449074\",\n    userAccount: \"0xa441d0e2b078f13e8c45e221b81f6aa103c48a45\",\n    commitEndDate: 1533916728,\n    revealEndDate: 1533917128,\n    transactions: [],\n    handleClose,\n  };\n\n  return (\n    <Container>\n      <p>Some good stuff was already on the page which is pretty exciting</p>\n      {process.env.NODE_ENV !== \"test\" && <ReviewVote {...props} />}\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/ReviewVote/ReviewVoteModal.tsx",
    "content": "import * as React from \"react\";\nimport AddToCalendar from \"react-add-to-calendar\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { saltToWords, getFormattedEthAddress, getLocalDateTimeStrings, padString } from \"@joincivil/utils\";\nimport { FullScreenModal, FullScreenModalProps } from \"../FullscreenModal\";\nimport { buttonSizes, CancelButton } from \"../Button\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { QuestionToolTip } from \"../QuestionToolTip\";\nimport { Checkbox, CheckboxSizes } from \"../input/Checkbox\";\nimport { MetaMaskLogoButton } from \"../\";\nimport {\n  ReviewVoteHeaderTitleText,\n  ReviewVoteCopyText,\n  SaltLabelText,\n  ReviewVoteDecisionText,\n  AppealChallengeReviewVoteDecisionText,\n  ReviewVoteDepositedCVLLabelText,\n  ReviewVoteMyAddressLabelText,\n  ConfirmVotesLabelText,\n  TransactionButtonText,\n  SaltPhraseToolTipText,\n  TransactionFinePrintText,\n  SaveSaltCheckboxLabelText,\n} from \"./textComponents\";\nimport {\n  ModalOuter,\n  ModalContent,\n  StyledReviewVoteHeaderTitle,\n  StyledReviewVoteContent,\n  StyledReviewVoteContentCopy,\n  StyledReviewVoteDetails,\n  MetaRow,\n  MetaRowSalt,\n  MetaItemLabel,\n  MetaItemLabelSalt,\n  MetaItemValue,\n  MetaItemValueUser,\n  MetaItemValueSalt,\n  MetaItemValueTwoCol,\n  StyledAddToCalendarContainer,\n  StyledConfirmVoteDateRange,\n  StyledAddToCalendar,\n  StyledButtonContainer,\n  StyledTransactionFinePrint,\n  StyledDidSaveSaltContainer,\n} from \"./styledComponents\";\n\nexport interface ReviewVoteProps extends FullScreenModalProps {\n  newsroomName: string;\n  listingDetailURL: string;\n  challengeID: string;\n  isAppealChallenge?: boolean;\n  numTokens?: string;\n  voteOption?: string;\n  salt?: string;\n  userAccount: EthAddress;\n  commitEndDate: number;\n  revealEndDate: number;\n  transactions: any[];\n  modalContentComponents?: any;\n  handleClose(): void;\n  postExecuteTransactions?(): void;\n}\n\ninterface ReviewVoteState {\n  didSaveSalt: boolean;\n}\n\nfunction printThis(): void {\n  window.print();\n}\n\nfunction getSaltyWords(salt?: string): string {\n  if (!salt) {\n    return \"\";\n  }\n\n  return saltToWords(salt).join(\" \");\n}\n\nfunction getReadableRevealDateRange(commitEndDate: number, revealEndDate: number): string {\n  const revealStartDateTime = getLocalDateTimeStrings(commitEndDate + 1);\n  const revealEndDateTime = getLocalDateTimeStrings(revealEndDate);\n  return `From ${revealStartDateTime[0]} at ${revealStartDateTime[1]} to ${revealEndDateTime[0]} at ${revealEndDateTime[1]}`;\n}\n\nfunction getCalendarEventDateTime(seconds: number | Date): string {\n  const theDate = typeof seconds === \"number\" ? new Date(seconds * 1000) : seconds;\n  const pad = (num: number | string) => {\n    return padString(num, 2, \"0\");\n  };\n  const hours = pad(theDate.getHours());\n  const mins = pad(theDate.getMinutes());\n  const tzOffset = `${pad(theDate.getTimezoneOffset() / 60)}${pad(theDate.getTimezoneOffset() % 60)}`;\n  const dateString = `${theDate.getFullYear()}-${pad(theDate.getMonth() + 1)}-${pad(theDate.getDate())}`;\n  const timeString = `${hours}:${mins}-${tzOffset}`;\n  return `${dateString}T${timeString}`;\n}\n\nconst AddRevealPhaseToCalendar: React.FunctionComponent<ReviewVoteProps> = props => {\n  // @TODO(jon): `textComponents` don't work here b/c these fields are plaintext. Let's\n  // revisit converting JSX.Components to strings via textContent before this goes to mainnet\n  const title = `Reveal My Vote for ${props.newsroomName} on The Civil Registry`;\n  const description = `\n    ${props.listingDetailURL}\\n\\n\n    My Secret Phrase\\n\n    ${getSaltyWords(props.salt)}\\n\\n\n    Challenge ID ${props.challengeID}\\n\n    I voted for ${props.newsroomName} to be ${\n    props.voteOption === \"0\" ? \"rejected from\" : \"accepted to\"\n  } the Civil Registry\\n\\n\n    My Deposited CVL\\n\n    ${props.numTokens}\n  `;\n  const location = props.listingDetailURL;\n  const startTime = getCalendarEventDateTime(props.commitEndDate + 1);\n  const endTime = getCalendarEventDateTime(props.revealEndDate);\n  const event = {\n    title,\n    description,\n    location,\n    startTime,\n    endTime,\n  };\n  return (\n    <StyledAddToCalendar>\n      <AddToCalendar event={event} />\n    </StyledAddToCalendar>\n  );\n};\n\nexport class ReviewVote extends React.Component<ReviewVoteProps, ReviewVoteState> {\n  public state = {\n    didSaveSalt: false,\n  };\n\n  public render(): JSX.Element {\n    const {\n      open,\n      challengeID,\n      salt,\n      commitEndDate,\n      revealEndDate,\n      isAppealChallenge,\n      voteOption,\n      newsroomName,\n      numTokens,\n      userAccount,\n      transactions,\n      postExecuteTransactions,\n      handleClose,\n    } = this.props;\n\n    const { didSaveSalt } = this.state;\n\n    return (\n      <FullScreenModal open={open || false}>\n        <ModalOuter>\n          <ModalContent>\n            <StyledReviewVoteHeaderTitle>\n              <ReviewVoteHeaderTitleText />\n            </StyledReviewVoteHeaderTitle>\n            <StyledReviewVoteContentCopy>\n              <ReviewVoteCopyText handlePrintClick={printThis} />\n            </StyledReviewVoteContentCopy>\n\n            <StyledReviewVoteContent>\n              <div>\n                <StyledReviewVoteDetails>\n                  <MetaRowSalt>\n                    <MetaItemLabelSalt>\n                      <SaltLabelText challengeID={challengeID} />\n                      <QuestionToolTip explainerText={<SaltPhraseToolTipText />} positionBottom={true} />\n                    </MetaItemLabelSalt>\n\n                    <MetaItemValueSalt>{getSaltyWords(salt)}</MetaItemValueSalt>\n                  </MetaRowSalt>\n\n                  <MetaRow>\n                    <MetaItemLabel>\n                      <ConfirmVotesLabelText />\n                    </MetaItemLabel>\n\n                    <MetaItemValueTwoCol>\n                      <StyledConfirmVoteDateRange>\n                        {getReadableRevealDateRange(commitEndDate, revealEndDate)}\n                      </StyledConfirmVoteDateRange>\n\n                      <StyledAddToCalendarContainer>\n                        <AddRevealPhaseToCalendar {...this.props} />\n                        <p>Remember to set event to Private</p>\n                      </StyledAddToCalendarContainer>\n                    </MetaItemValueTwoCol>\n                  </MetaRow>\n\n                  <MetaRow>\n                    <MetaItemLabel>Challenge ID {challengeID}</MetaItemLabel>\n\n                    <MetaItemValue>\n                      {isAppealChallenge ? (\n                        <AppealChallengeReviewVoteDecisionText voteOption={voteOption} newsroomName={newsroomName} />\n                      ) : (\n                        <ReviewVoteDecisionText voteOption={voteOption} newsroomName={newsroomName} />\n                      )}\n                    </MetaItemValue>\n                  </MetaRow>\n                  <MetaRow>\n                    <MetaItemLabel>\n                      <ReviewVoteDepositedCVLLabelText />\n                    </MetaItemLabel>\n\n                    <MetaItemValue>{numTokens}</MetaItemValue>\n                  </MetaRow>\n\n                  <MetaRow>\n                    <MetaItemLabel>\n                      <ReviewVoteMyAddressLabelText />\n                    </MetaItemLabel>\n\n                    <MetaItemValueUser>{userAccount && getFormattedEthAddress(userAccount)}</MetaItemValueUser>\n                  </MetaRow>\n                </StyledReviewVoteDetails>\n              </div>\n\n              <StyledDidSaveSaltContainer>\n                <div>\n                  <Checkbox size={CheckboxSizes.SMALL} checked={didSaveSalt} onClick={this.toggleHasSavedSalt} />\n                </div>\n                <div>\n                  <SaveSaltCheckboxLabelText />\n                </div>\n              </StyledDidSaveSaltContainer>\n\n              <StyledButtonContainer>\n                <TransactionButtonNoModal\n                  transactions={transactions}\n                  postExecuteTransactions={postExecuteTransactions}\n                  Button={MetaMaskLogoButton}\n                  disabled={!didSaveSalt}\n                >\n                  <TransactionButtonText />\n                </TransactionButtonNoModal>\n                <CancelButton size={buttonSizes.SMALL} onClick={handleClose}>\n                  Cancel\n                </CancelButton>\n              </StyledButtonContainer>\n\n              <StyledTransactionFinePrint>\n                <TransactionFinePrintText />\n              </StyledTransactionFinePrint>\n            </StyledReviewVoteContent>\n          </ModalContent>\n        </ModalOuter>\n      </FullScreenModal>\n    );\n  }\n\n  private toggleHasSavedSalt = (): void => {\n    this.setState({ didSaveSalt: !this.state.didSaveSalt });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/ReviewVote/__snapshots__/ReviewVote.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Review Vote Review Vote Modal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPx kKJvfR\"\n    >\n      <div>\n        <p>\n          Some good stuff was already on the page which is pretty exciting\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Review Vote\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Review Vote Modal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      p\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Some good stuff was already on the page which is pretty exciting\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      p\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  />\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ReviewVote/index.ts",
    "content": "export * from \"./ReviewVoteModal\";\nexport { StyledAddToCalendar } from \"./styledComponents\";\n"
  },
  {
    "path": "packages/components/src/ReviewVote/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\n\nexport const ModalOuter = styled.div`\n  display: flex;\n  height: 100vh;\n  justify-content: center;\n  overflow: hidden scroll;\n  width: 100vw;\n`;\n\nexport const ModalContent = styled.div`\n  padding: 100px 0 156px;\n  max-width: 800px;\n\n  a {\n    border-bottom: transparent 1px solid;\n    color: ${colors.accent.CIVIL_BLUE};\n    cursor: pointer;\n    text-decoration: none;\n  }\n\n  a:hover {\n    border-bottom-color: ${colors.accent.CIVIL_BLUE};\n  }\n  ${mediaQueries.MOBILE} {\n    margin-right: 10px;\n    margin-left: 10px;\n  }\n`;\n\nexport const StyledReviewVoteHeaderTitle = styled.h2`\n  font-size: 24px;\n  line-height: 30px;\n  letter-spacing: -0.17px;\n  margin: 0 0 2px;\n`;\n\nexport const StyledReviewVoteContent = styled.div`\n  max-width: 790px;\n`;\n\nexport const StyledReviewVoteContentCopy = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 16px;\n  line-height: 26px;\n  margin: 12px 0 30px;\n\n  span {\n    border-bottom: transparent 1px solid;\n    color: ${colors.accent.CIVIL_BLUE};\n    cursor: pointer;\n    text-decoration: none;\n  }\n\n  span:hover {\n    border-bottom-color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nexport const StyledReviewVoteDetails = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 3px;\n  padding: 33px 30px;\n`;\n\nexport const MetaRowSalt = styled.div`\n  background: ${colors.accent.CIVIL_TEAL_FADED};\n  margin: -33px -30px 24px;\n  padding: 33px 30px;\n`;\n\nexport const MetaRow = styled.div`\n  margin: 0 0 18px;\n\n  & ~ & {\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    padding: 19px 0 0;\n  }\n`;\n\nexport const MetaItemLabel = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 15px;\n  margin-bottom: 8px;\n  text-transform: uppercase;\n`;\n\nexport const MetaItemLabelSalt = styled(MetaItemLabel)`\n  color: ${colors.primary.BLACK};\n  font-size: 18px;\n  line-height: 21px;\n  margin-bottom: 10px;\n`;\n\nexport const MetaItemValue = styled.div`\n  line-height: 33px;\n`;\n\nexport const MetaItemValueTwoCol = styled(MetaItemValue)`\n  display: flex;\n  font-size: 18px;\n  justify-content: space-between;\n`;\n\nexport const StyledConfirmVoteDateRange = styled.div`\n  width: 50%;\n`;\n\nexport const StyledAddToCalendarContainer = styled.div`\n  width: 207px;\n\n  p {\n    color: ${colors.primary.CIVIL_GRAY_1};\n    font-size: 12px;\n    line-height: 15px;\n    margin: 6px 0 0;\n  }\n`;\n\nexport const MetaItemValueUser = styled(MetaItemValue)`\n  font-family: ${fonts.MONOSPACE};\n`;\n\nexport const MetaItemValueSalt = styled.div`\n  background: ${colors.basic.WHITE};\n  font-family: ${fonts.MONOSPACE};\n  font-size: 21px;\n  line-height: 14px;\n  padding: 10px 27px;\n  text-align: center;\n`;\n\nexport const StyledAddToCalendar = styled.div`\n  .react-add-to-calendar {\n    -webkit-font-smoothing: antialiased;\n    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);\n    position: relative;\n    display: inline-block;\n    margin: 0 auto 6px;\n    white-space: nowrap;\n  }\n\n  .react-add-to-calendar__wrapper {\n    zoom: 1;\n    cursor: pointer;\n  }\n\n  .react-add-to-calendar__button {\n    background-color: ${colors.basic.WHITE};\n    border: 1px solid ${colors.accent.CIVIL_BLUE_VERY_FADED};\n    border-radius: 0px;\n    font-weight: bold;\n    color: ${colors.accent.CIVIL_BLUE};\n    font-size: 14px;\n    line-height: 17px;\n    padding: 15px 35px;\n\n    .react-add-to-calendar--light {\n      background-color: ${colors.basic.WHITE};\n    }\n  }\n\n  .react-add-to-calendar__icon {\n    .react-add-to-calendar--right {\n      padding-left: 5px;\n    }\n\n    .react-add-to-calendar--left {\n      padding-right: 5px;\n    }\n  }\n\n  .react-add-to-calendar__dropdown {\n    position: absolute;\n    top: 42px;\n    left: 1px;\n    width: 93%;\n    padding: 5px 0 5px 8px;\n    box-shadow: 1px 3px 6px rgba(0, 0, 0, 0.15);\n    border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    background-color: ${colors.basic.WHITE};\n    text-align: left;\n\n    ul {\n      list-style: none;\n      margin: 0;\n      padding: 0;\n\n      li {\n        padding: 0 0 5px;\n\n        a {\n          font-size: 14px;\n          text-decoration: none;\n\n          &:hover {\n            color: ${colors.accent.CIVIL_BLUE};\n          }\n\n          i {\n            padding-right: 10px;\n          }\n        }\n      }\n    }\n  }\n`;\n\nexport const StyledButtonContainer = styled.div`\n  display: flex;\n  flex-direction: row-reverse;\n  justify-content: flex-start;\n  margin-bottom: 16px;\n  text-align: right;\n\n  & > button {\n    margin-left: 10px;\n  }\n`;\n\nexport const StyledDidSaveSaltContainer = styled.div`\n  display: flex;\n  font-size: 15px;\n  letter-spacing: -0.1px;\n  line-height: 26px;\n  padding: 0 30px;\n  margin: 58px 0 51px;\n\n  & > div + div {\n    margin: -8px 0 0 8px;\n  }\n`;\n\nexport const StyledTransactionFinePrint = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 13px;\n  line-height: 16px;\n  margin-bottom: 150px;\n  text-align: right;\n`;\n"
  },
  {
    "path": "packages/components/src/ReviewVote/textComponents.tsx",
    "content": "import * as React from \"react\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport {\n  WhitelistActionText,\n  RemoveActionText,\n  OverturnActionText,\n  UpholdActionText,\n} from \"../ListingDetailPhaseCard/textComponents\";\n\n// Review Vote modal\nexport const ReviewVoteHeaderTitleText: React.FunctionComponent = props => {\n  return <>Review and Save Your Voting Information</>;\n};\n\nexport interface ReviewVoteCopyTextProps {\n  handlePrintClick(): void;\n}\n\nexport const ReviewVoteCopyText: React.FunctionComponent<ReviewVoteCopyTextProps> = props => {\n  return (\n    <>\n      <p>\n        Civil does not store your voting information; it is stored in a{\" \"}\n        <a href={links.FAQ_WHAT_IS_PLCR_CONTRACT} target=\"_blank\">\n          voting smart contract\n        </a>\n        .\n      </p>\n\n      <p>\n        You need to carefully <b>save your unique 4-word voting code</b> for the next voting stage. If you forget this\n        voting code when you confirm your vote in the next voting stage, your vote will not be counted.\n      </p>\n\n      <p>\n        We recommend writing your voting code down and emailing it to yourself, taking a screenshot of this page, or{\" \"}\n        <span onClick={props.handlePrintClick}>print this out</span>. Or, <b>add a reminder to your calendar</b> so you\n        don’t forget to confirm your vote.\n      </p>\n    </>\n  );\n};\n\nexport const ReviewVoteDepositedCVLLabelText: React.FunctionComponent = props => {\n  return <>Amount of Voting Tokens Submitted</>;\n};\n\nexport const ReviewVoteMyAddressLabelText: React.FunctionComponent = props => {\n  return <>My Public Address</>;\n};\n\nexport interface SaltLabelTextProps {\n  challengeID: string;\n}\n\nexport const SaltLabelText: React.FunctionComponent<SaltLabelTextProps> = props => {\n  return <>Unique 4-word Voting Code for Challenge #{props.challengeID}</>;\n};\n\nexport interface ReviewVoteDecisionTextProps {\n  newsroomName?: string;\n  voteOption?: string;\n}\n\nexport const ReviewVoteDecisionText: React.FunctionComponent<ReviewVoteDecisionTextProps> = props => {\n  if (!props.voteOption) {\n    return <></>;\n  }\n  const voteText = props.voteOption === \"0\" ? <RemoveActionText /> : <WhitelistActionText />;\n  return (\n    <>\n      I voted to <b>{voteText}</b> {props.newsroomName || \"this newsroom\"} {props.voteOption === \"0\" ? \"from\" : \"in\"}{\" \"}\n      the Civil Registry\n    </>\n  );\n};\n\nexport const AppealChallengeReviewVoteDecisionText: React.FunctionComponent<ReviewVoteDecisionTextProps> = props => {\n  if (!props.voteOption) {\n    return <></>;\n  }\n  const voteText = props.voteOption === \"1\" ? <OverturnActionText /> : <UpholdActionText />;\n  return (\n    <>\n      I voted for the Granted Appeal for {props.newsroomName || \"this newsroom\"} to be <b>{voteText}</b>\n    </>\n  );\n};\n\nexport const ConfirmVotesLabelText: React.FunctionComponent = props => {\n  return <>Confirm Vote Dates</>;\n};\n\nexport const TransactionButtonText: React.FunctionComponent = props => {\n  return <>Open MetaMask to Approve</>;\n};\n\nexport const SaltPhraseToolTipText: React.FunctionComponent = props => {\n  return (\n    <>\n      <p>\n        Your vote will be hidden, using this secret phrase. You will need to enter this secret phrase when you confirm\n        your vote during the reveal phase of this challenge.\n      </p>\n      <p>\n        Be sure to record your secret phrase for safekeeping. If you lose your secret phrase, your vote is lost.\n        Unfortunately, we can not recover it for you.\n      </p>\n    </>\n  );\n};\n\nexport const TransactionFinePrintText: React.FunctionComponent = props => {\n  return (\n    <>\n      This will open a new window asking to confirm and process your transaction. A small transaction fee will be added\n      for all votes. This fee does not go to the Civil Media Company.{\" \"}\n      <a href={links.FAQ_GAS} target=\"_blank\">\n        Learn more\n      </a>\n      .\n    </>\n  );\n};\n\nexport const SaveSaltCheckboxLabelText: React.FunctionComponent = props => {\n  return (\n    <>\n      I have saved my voting information by one of the following ways: <b>Added to My Calendar</b>, wrote down the\n      voting code, took a screenshot or printed this page.{\" \"}\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Share/Share.stories.tsx",
    "content": "import * as React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport styled from \"styled-components\";\n\nimport { ShareStory } from \"@joincivil/elements\";\n\nconst Container = styled.div`\n  width: 400px;\n`;\n\nstoriesOf(\"Common / Share\", module).add(\"Share Story\", () => {\n  return (\n    <Container>\n      <ShareStory title={\"Memes and Satire on Hong Kong’s Front Lines\"} url={\"https://civil.co\"} />\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/Share/__snapshots__/Share.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Share Share Story 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPy hTDNgs\"\n    >\n      <div\n        className=\"sc-fzXfNL bvUmxB\"\n      >\n        <div\n          className=\"sc-fzXfNM fhYGZF\"\n        >\n          <h2>\n            Share\n          </h2>\n          <p\n            className=\"sc-fzXfNN DEnni\"\n          >\n            Memes and Satire on Hong Kong’s Front Lines\n            <a\n              href=\"https://civil.co\"\n              target=\"_blank\"\n            >\n              https://civil.co\n            </a>\n          </p>\n        </div>\n        <div\n          className=\"sc-fzXfNO dXsXZJ\"\n        >\n          <a\n            href=\"https://twitter.com/intent/tweet?text=Memes%20and%20Satire%20on%20Hong%20Kong%E2%80%99s%20Front%20Lines&url=https://civil.co\"\n          >\n            Share to Twitter\n            <svg\n              height=\"32\"\n              viewBox=\"0 0 32 32\"\n              width=\"32\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m28.954 8.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124-4.09-.193-7.715-2.157-10.141-5.126-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548z\"\n                fill=\"#191919\"\n                fillRule=\"nonzero\"\n              />\n            </svg>\n          </a>\n          <a\n            href=\"mailto:?subject=Memes%20and%20Satire%20on%20Hong%20Kong%E2%80%99s%20Front%20Lines&body=https://civil.co\"\n          >\n            Share via Email\n            <svg\n              height=\"32\"\n              viewBox=\"0 0 32 32\"\n              width=\"32\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <g\n                fill=\"none\"\n                fillRule=\"evenodd\"\n                stroke=\"none\"\n                strokeWidth=\"1\"\n              >\n                <g\n                  transform=\"translate(-977.000000, -505.000000)\"\n                >\n                  <g\n                    transform=\"translate(931.000000, 482.000000)\"\n                  >\n                    <g\n                      transform=\"translate(0.000000, 23.000000)\"\n                    >\n                      <g\n                        transform=\"translate(46.000000, 0.000000)\"\n                      >\n                        <g>\n                          <polygon\n                            points=\"4 4 28 4 28 28 4 28\"\n                          />\n                          <path\n                            d=\"M24,8 L8,8 C6.9,8 6.01,8.9 6.01,10 L6,22 C6,23.1 6.9,24 8,24 L24,24 C25.1,24 26,23.1 26,22 L26,10 C26,8.9 25.1,8 24,8 Z M23.6,12.25 L16.53,16.67 C16.21,16.87 15.79,16.87 15.47,16.67 L8.4,12.25 C8.15,12.09 8,11.82 8,11.53 C8,10.86 8.73,10.46 9.3,10.81 L16,15 L22.7,10.81 C23.27,10.46 24,10.86 24,11.53 C24,11.82 23.85,12.09 23.6,12.25 Z\"\n                            fill=\"#191919\"\n                            fillRule=\"nonzero\"\n                          />\n                        </g>\n                      </g>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </svg>\n          </a>\n          <button\n            onClick={[Function]}\n          >\n            Copy Link\n            <svg\n              height=\"32\"\n              version=\"1.1\"\n              viewBox=\"0 0 32 32\"\n              width=\"32\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <g\n                fill=\"none\"\n                fillRule=\"evenodd\"\n                stroke=\"none\"\n                strokeWidth=\"1\"\n              >\n                <polygon\n                  points=\"4 4 28 4 28 28 4 28\"\n                />\n                <g\n                  fill=\"#191919\"\n                  fillRule=\"nonzero\"\n                  transform=\"translate(7, 7)\"\n                >\n                  <path\n                    d=\"M4.68779528,8.21176934 C5.00935039,8.53326117 5.03614665,9.03931313 4.76818406,9.39156498 L4.68779528,9.48356623 L2.59370079,11.5772486 C2.07992126,12.0873844 1.8,12.7675654 1.8,13.4902578 C1.8,14.2129502 2.08346457,14.8931313 2.59370079,15.4032671 C3.60561024,16.4149774 5.22605192,16.457132 6.28867239,15.5297309 L6.42401575,15.4032671 L8.51811024,13.3095847 C8.86889764,12.9588664 9.43937008,12.9588664 9.79370079,13.3166699 C10.1152559,13.6381618 10.1420522,14.1442137 9.87408957,14.4964656 L9.79370079,14.5884668 L7.6996063,16.6821492 C6.82086614,17.5607164 5.66574803,18 4.51062992,18 C3.35551181,18 2.2003937,17.5607164 1.32165354,16.6821492 C0.467716535,15.8283802 0,14.6982877 0,13.4938004 C0,12.3696123 0.410519685,11.3071443 1.15665722,10.4792128 L1.32165354,10.3054517 L3.41574803,8.21176934 C3.76653543,7.86105097 4.33700787,7.86105097 4.68779528,8.21176934 Z M12.3413386,5.66463295 C12.6628937,5.98612478 12.68969,6.49217674 12.4217274,6.84442859 L12.3413386,6.93642984 L6.94133858,12.3353671 C6.76417323,12.5089549 6.53385827,12.5975202 6.30354331,12.5975202 C6.07322835,12.5975202 5.84291339,12.5124975 5.66574803,12.3353671 C5.34419291,12.0138752 5.31739665,11.5078233 5.58535925,11.1555714 L5.66574803,11.0635702 L11.065748,5.66463295 C11.4165354,5.31037197 11.9870079,5.31037197 12.3413386,5.66463295 Z M13.4929134,0 C14.6976378,0 15.8314961,0.471167093 16.6818898,1.32139343 C18.4393701,3.07852785 18.4393701,5.93741389 16.6818898,7.69454832 L16.6818898,7.69454832 L14.5877953,9.78823066 C14.4106299,9.96181854 14.180315,10.0503838 13.95,10.0503838 C13.719685,10.0503838 13.4893701,9.96536115 13.3122047,9.78823066 C12.9614173,9.4375123 12.9614173,8.86715214 13.3122047,8.51643377 L13.3122047,8.51643377 L15.4062992,6.42275143 C16.4622047,5.36705373 16.4622047,3.64888801 15.4062992,2.59319032 C14.3822835,1.56937611 12.6,1.56937611 11.5759843,2.59319032 L11.5759843,2.59319032 L9.48188976,4.68687266 C9.13110236,5.03759103 8.56062992,5.03759103 8.20984252,4.68687266 C7.85905512,4.3361543 7.85905512,3.76579414 8.20984252,3.41507577 L8.20984252,3.41507577 L10.303937,1.32139343 C11.157874,0.467624483 12.288189,0 13.4929134,0 Z\"\n                  />\n                </g>\n              </g>\n            </svg>\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Share\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Share Story\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ShareStory\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        title\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            Memes and Satire on Hong Kong’s Front Lines\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        url\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            https://civil.co\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ShareStory\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/SignConstitutionButton.stories.tsx",
    "content": "// import { storiesOf } from \"@storybook/react\";\n// import * as React from \"react\";\n// import styled from \"styled-components\";\n// import { SignConstitutionButton } from \"./SignConstitutionButton\";\n// import { Civil } from \"@joincivil/core\";\n\n// let civil: Civil | undefined;\n\n// try {\n// civil = new Civil();\n// } catch (error) {\n// civil = undefined;\n// }\n\n// const signConstitution = async (): Promise<void> => {\n// console.log(\"Signing the Constituion!\");\n// };\n\n// const Wrapper = styled.div`\n// margin: 50px;\n// max-width: 500px;\n// `;\n// TODO: Fix these when we build constitution\n// storiesOf(\"Sign Constitution Button\", module)\n//   .add(\"User can sign\", () => {\n//     return (\n//       <Wrapper>\n//         <SignConstitutionButton\n//           civil={civil}\n//           requiredNetwork=\"rinkeby\"\n//           isNewsroomOwner={true}\n//           signConstitution={signConstitution}\n//         >\n//           Create Newsroom\n//         </SignConstitutionButton>\n//       </Wrapper>\n//     );\n//   })\n//   .add(\"Metamask is not installed\", () => {\n//     return (\n//       <Wrapper>\n//         <SignConstitutionButton\n//           civil={undefined}\n//           requiredNetwork=\"rinkeby\"\n//           isNewsroomOwner={false}\n//           signConstitution={signConstitution}\n//         >\n//           Create Newsroom\n//         </SignConstitutionButton>\n//       </Wrapper>\n//     );\n//   })\n//   .add(\"Metamask is locked\", () => {\n//     const fakeCivil = {};\n//     return (\n//       <Wrapper>\n//         <SignConstitutionButton\n//           civil={fakeCivil as Civil}\n//           requiredNetwork=\"rinkeby\"\n//           isNewsroomOwner={false}\n//           signConstitution={signConstitution}\n//         >\n//           Create Newsroom\n//         </SignConstitutionButton>\n//       </Wrapper>\n//     );\n//   })\n//   .add(\"Metamask connected to wrong network\", () => {\n//     const fakeCivil = { userAccount: \"0x0\", networkName: \"fakenet\" };\n//     return (\n//       <Wrapper>\n//         <SignConstitutionButton\n//           civil={fakeCivil as Civil}\n//           requiredNetwork=\"rinkeby\"\n//           isNewsroomOwner={false}\n//           signConstitution={signConstitution}\n//         >\n//           Create Newsroom\n//         </SignConstitutionButton>\n//       </Wrapper>\n//     );\n//   })\n//   .add(\"User is not an Owner of the Newsroom\", () => {\n//     return (\n//       <Wrapper>\n//         <SignConstitutionButton\n//           civil={civil}\n//           requiredNetwork=\"rinkeby\"\n//           isNewsroomOwner={false}\n//           signConstitution={signConstitution}\n//         >\n//           Create Newsroom\n//         </SignConstitutionButton>\n//       </Wrapper>\n//     );\n//   });\n"
  },
  {
    "path": "packages/components/src/SignConstitutionButton.tsx",
    "content": "import { EthAddress } from \"@joincivil/core\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Button } from \"./Button\";\nimport { DetailsButtonComponent } from \"./DetailsButtonComponent\";\nimport { colors, fonts } from \"./styleConstants\";\n\nexport interface SignConstitutionButtonProps {\n  currentNetwork?: string;\n  currentAccount?: EthAddress;\n  requiredNetwork: string;\n  isNewsroomOwner: boolean | undefined;\n  signConstitution(): Promise<void>;\n}\n\nconst SmallHeader = styled.h4`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 600;\n  font-size: 14px;\n  margin-bottom: 10px;\n`;\n\nconst SmallText = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  line-height: 18px;\n`;\n\nconst Link = styled.a`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  text-decoration: none;\n  font-weight: 600;\n  color: ${colors.primary.CIVIL_BLUE_1};\n`;\n\nexport class SignConstitutionButton extends React.Component<SignConstitutionButtonProps> {\n  constructor(props: SignConstitutionButtonProps) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    const detailsComponent = this.renderDetails();\n    const buttonComponent = this.renderButtonComponent();\n    return <DetailsButtonComponent detailsComponent={detailsComponent} buttonComponent={buttonComponent} />;\n  }\n\n  public isDisabled(): boolean {\n    return (\n      !this.props.currentAccount ||\n      this.props.requiredNetwork !== this.props.currentNetwork ||\n      !this.props.isNewsroomOwner\n    );\n  }\n\n  public renderNoMetaMask(): JSX.Element {\n    return (\n      <>\n        <SmallHeader>Set up your MetaMask wallet</SmallHeader>\n        <SmallText>Download the MetaMask browser plugin and follow the instructions to set up your wallet.</SmallText>\n        <Link href=\"https://metamask.io/\" target=\"_blank\">\n          Get MetaMask >\n        </Link>\n      </>\n    );\n  }\n\n  public renderMetaMaskLocked(): JSX.Element {\n    return (\n      <>\n        <SmallHeader>MetaMask is locked</SmallHeader>\n        <SmallText>Please unlock MetaMask to create a newsroom contract</SmallText>\n      </>\n    );\n  }\n\n  public renderWrongNetwork(): JSX.Element {\n    return (\n      <>\n        <SmallHeader>MetaMask is on the wrong network</SmallHeader>\n        <SmallText>\n          Please change your network to the {this.props.requiredNetwork.replace(/^\\w/, c => c.toUpperCase())} Network\n          before proceeding\n        </SmallText>\n      </>\n    );\n  }\n\n  public renderTransactionDetails(): JSX.Element {\n    return (\n      <>\n        <SmallHeader>Wallet Connected</SmallHeader>\n        <SmallText>Signing the Civil Constitution does not incur a gas cost.</SmallText>\n      </>\n    );\n  }\n\n  public renderIsNotOwner(): JSX.Element {\n    return (\n      <>\n        <SmallHeader>Your current wallet address is not an owner of this contract</SmallHeader>\n        <SmallText>Please switch to the wallet associated with this newsroom contract on Metamask.</SmallText>\n      </>\n    );\n  }\n\n  public renderDetails(): JSX.Element {\n    if (!this.props.currentNetwork) {\n      return this.renderNoMetaMask();\n    } else if (!this.props.currentAccount) {\n      return this.renderMetaMaskLocked();\n    } else if (this.props.requiredNetwork !== this.props.currentNetwork) {\n      return this.renderWrongNetwork();\n    } else if (!this.props.isNewsroomOwner) {\n      return this.renderIsNotOwner();\n    } else {\n      return this.renderTransactionDetails();\n    }\n  }\n\n  private handleOnClick = async (event: any): Promise<void> => {\n    return this.props.signConstitution();\n  };\n\n  private renderButtonComponent = (): JSX.Element => {\n    return (\n      <Button onClick={this.handleOnClick} disabled={this.isDisabled()}>\n        Sign Constitution\n      </Button>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/components/src/SnackBar/SnackBar.tsx",
    "content": "import * as React from \"react\";\nimport { StyledSnackBar, StyledSnackBarContent } from \"./styledComponents\";\n\nexport const SnackBar: React.FunctionComponent = props => {\n  return (\n    <StyledSnackBar>\n      <StyledSnackBarContent>{props.children}</StyledSnackBarContent>\n    </StyledSnackBar>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/SnackBar/index.ts",
    "content": "export * from \"./SnackBar\";\n"
  },
  {
    "path": "packages/components/src/SnackBar/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\n\nexport const StyledSnackBar = styled.div`\n  justify-content: center;\n  display: flex;\n  background: ${colors.basic.WHITE};\n  box-shadow: 0 2px 10px 0 ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 30px 0;\n  position: fixed;\n  top: 62px;\n  width: 100%;\n  z-index: 99;\n`;\n\nexport const StyledSnackBarContent = styled.div`\n  width: 708px;\n`;\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepHeader.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport styled from \"styled-components\";\nimport { fonts, colors } from \"../styleConstants\";\n\nexport interface ComponentProps {\n  disabled?: boolean;\n  active?: boolean;\n}\n\nexport const SectionHeader = styled.h4<ComponentProps>`\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: ${props => (props.active ? props.theme.stepHeaderWeightHeavy : props.theme.stepHeaderWeightLight)};\n  font-size: 20px;\n  font-weight: 600;\n  margin-top: 0;\n  margin-bottom: 15px;\n  color: ${props => (props.disabled ? colors.accent.CIVIL_GRAY_3 : \"#000\")};\n`;\n\nSectionHeader.defaultProps = {\n  theme: {\n    sansSerifFont: fonts.SANS_SERIF,\n    stepHeaderWeightHeavy: 600,\n    stepHeaderWeightLight: 400,\n  },\n};\n\nexport interface StepHeaderTheme {\n  stepHeaderWeight: number;\n  stepHeaderWeightHeavy: number;\n}\n\nexport interface StepHeaderProps {\n  children: React.ReactNode | React.ReactNode[];\n  disabled?: boolean;\n  active?: boolean;\n}\n\nexport const StepHeader = (props: StepHeaderProps): JSX.Element => {\n  return <SectionHeader {...props}>{props.children}</SectionHeader>;\n};\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcess.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StepProcess, StepProps } from \"./StepProcess\";\nimport { StepHeader } from \"./StepHeader\";\nimport { StepStyled } from \"./StepStyled\";\n\nconst Step1 = (props: StepProps): JSX.Element => {\n  return (\n    <StepStyled index={props.index || 0}>\n      <StepHeader>Step 1</StepHeader>\n      <p> this is a step </p>\n    </StepStyled>\n  );\n};\n\nconst Step2 = (props: StepProps): JSX.Element => {\n  return (\n    <StepStyled index={props.index || 0}>\n      <StepHeader>Step 2</StepHeader>\n      <p> this is another step </p>\n    </StepStyled>\n  );\n};\n\nconst Step3 = (props: StepProps): JSX.Element => {\n  return (\n    <StepStyled index={props.index || 0}>\n      <StepHeader>Step 3</StepHeader>\n      <p> this is another step </p>\n    </StepStyled>\n  );\n};\n\nstoriesOf(\"Common / Steps / Step Process (deprecated?)\", module).add(\"Step Process\", () => {\n  return (\n    <div>\n      <StepProcess>\n        <Step1 />\n        <Step2 />\n        <Step3 />\n      </StepProcess>\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcess.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface StepProcessProps {\n  disabled?: boolean;\n  activeIndex?: number;\n  stepIsDisabled?(index: number): boolean;\n}\n\nexport interface StepProps {\n  index?: number;\n  active?: boolean;\n  disabled?: boolean;\n}\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n`;\n\nexport class StepProcess extends React.Component<StepProcessProps> {\n  public render(): JSX.Element {\n    const childrenWithDisabled = React.Children.map(this.props.children, (child, index) => {\n      let disabled = this.props.stepIsDisabled ? this.props.stepIsDisabled(index) : false;\n      if (this.props.disabled) {\n        disabled = this.props.disabled;\n      }\n      return React.cloneElement(child as JSX.Element, {\n        index,\n        active: this.props.activeIndex === index,\n        disabled,\n      });\n    });\n    return <Container>{childrenWithDisabled}</Container>;\n  }\n}\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNav/Step.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { fonts } from \"../../styleConstants\";\nimport * as ReactDom from \"react-dom\";\n\nexport interface RenderButtonsArgs {\n  stepsLength: number;\n  index: number;\n  goNext(): void;\n  goPrevious(): void;\n}\n\nexport interface StepTopNavProps {\n  title: string | JSX.Element;\n  isActive?: boolean;\n  isCurrent?: boolean;\n  startPosition?: number;\n  complete?: boolean;\n  disabled?: boolean;\n  index?: number;\n  children: React.ReactChild;\n  renderButtons?(args: RenderButtonsArgs): JSX.Element;\n  onClick?(index: number): void;\n  setStartPosition?(position: number): void;\n}\n\nexport interface StepState {\n  dotPosition?: number;\n}\n\nexport interface DotProps {\n  isActive?: boolean;\n  isCurrent?: boolean;\n  tailLength?: number;\n}\n\nexport interface StyledLiProps {\n  isActive?: boolean;\n  isCurrent?: boolean;\n  disabled?: boolean;\n}\n\nconst StyledLi = styled.li<StyledLiProps>`\n  cursor: ${props => (props.disabled ? \"default\" : \"pointer\")};\n  box-sizing: border-box;\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: ${props => (props.isCurrent ? 500 : 300)};\n  margin-bottom: 0;\n  padding: 3px 0 18px;\n  text-align: center;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  align-items: center;\n  color: ${props => {\n    if (props.isCurrent) {\n      return props.theme.stepProccessTopNavCurrentColor;\n    } else if (props.isActive) {\n      return props.theme.stepProccessTopNavActiveColor;\n    } else {\n      return props.theme.stepProccessTopNavFutureColor;\n    }\n  }};\n`;\n\nconst Dot = styled.div<DotProps>`\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  background-color: ${(props): string =>\n    props.isActive ? props.theme.stepProcessDotActiveColor : props.theme.stepProcessDotFutureColor};\n  margin: 0;\n  margin-bottom: 8px;\n  box-sizing: border-box;\n  ${(props): string =>\n    props.isCurrent\n      ? `margin-left: -${props.tailLength}px;\n     width: ${props.tailLength! + 10 || 10}px;\n     border-radius: 10px;\n     `\n      : \"\"};\n`;\n\nconst CompleteDot = styled(Dot)`\n  position: relative;\n  width: 21px;\n  height: 21px;\n  z-index: 10;\n  margin-top: -5px;\n  margin-left: -2px;\n  margin-bottom: 2px;\n  background-color: ${props => props.theme.stepProcessDotActiveColor};\n  border: 2px solid ${props => props.theme.stepProccessCompleteDotBorderColor};\n  ${(props): string =>\n    props.isCurrent ? `margin-left: ${props.tailLength ? props.tailLength! - 2 : -2}px;` : \"\"} &:after {\n    content: \"\";\n    position: absolute;\n    left: 6px;\n    top: 2.5px;\n    width: 3px;\n    height: 7px;\n    border: solid white;\n    border-width: 0 1.5px 1.5px 0;\n    transform: rotate(45deg);\n  }\n`;\n\nStyledLi.defaultProps = {\n  theme: {\n    sansSerifFont: fonts.SANS_SERIF,\n    stepProccessTopNavCurrentColor: \"blue\",\n    stepProccessTopNavActiveColor: \"#404040\",\n    stepProccessTopNavFutureColor: \"#bbb\",\n  },\n};\n\nDot.defaultProps = {\n  theme: {\n    stepProcessDotActiveColor: \"blue\",\n    stepProcessDotFutureColor: \"#ddd\",\n  },\n};\n\nCompleteDot.defaultProps = {\n  theme: {\n    stepProccessCompleteDotBorderColor: \"#fff\",\n    stepProcessDotActiveColor: \"blue\",\n  },\n};\n\nexport interface StepProcessTopNavTheme {\n  stepProccessTopNavCurrentColor: string;\n  stepProccessTopNavActiveColor: string;\n  stepProccessTopNavFutureColor: string;\n  stepProcessDotActiveColor: string;\n  stepProcessDotFutureColor: string;\n  stepProccessCompleteDotBorderColor: string;\n}\n\nexport class Step extends React.Component<StepTopNavProps, StepState> {\n  public dot?: HTMLDivElement;\n\n  constructor(props: StepTopNavProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public componentDidMount(): void {\n    if (this.props.setStartPosition) {\n      this.props.setStartPosition(this.dot ? this.dot!.offsetLeft : 0);\n    }\n    this.setState({ dotPosition: this.dot ? this.dot!.offsetLeft : 0 });\n  }\n\n  public render(): JSX.Element {\n    const tailLength = this.state.dotPosition! - this.props.startPosition!;\n    return (\n      <StyledLi\n        onClick={() => !this.props.disabled && this.props.onClick!(this.props.index!)}\n        isActive={this.props.isActive}\n        isCurrent={this.props.isCurrent}\n        disabled={this.props.disabled}\n      >\n        <Dot\n          ref={(el: HTMLDivElement) => (this.dot = el)}\n          isActive={this.props.isActive}\n          isCurrent={this.props.isCurrent}\n          tailLength={tailLength}\n        >\n          {this.props.complete && <CompleteDot isCurrent={this.props.isCurrent} tailLength={tailLength} />}\n        </Dot>{\" \"}\n        {this.props.title}\n      </StyledLi>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNav/StepProcessTopNav.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Button, SecondaryButton } from \"../../Button\";\n\nimport { StepProcessTopNav } from \"./StepProcessTopNav\";\nimport { Step, RenderButtonsArgs } from \"./Step\";\n\nstoriesOf(\"Common / Steps / Step Process (with buttons)\", module)\n  .add(\"StepProcessTopNav step 1\", () => {\n    return (\n      <StepProcessTopNav>\n        <Step\n          title={\"Step 1\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 2\"}\n          disabled={true}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 3\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 4\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 5\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 6\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 7\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n      </StepProcessTopNav>\n    );\n  })\n  .add(\"StepProcessTopNav complete step 1\", () => {\n    return (\n      <StepProcessTopNav>\n        <Step complete={true} title={\"Step 1\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 2\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 3\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 4\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 5\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 6\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 7\"}>\n          <p>Content</p>\n        </Step>\n      </StepProcessTopNav>\n    );\n  })\n  .add(\"step 2\", () => {\n    return (\n      <StepProcessTopNav activeIndex={1}>\n        <Step complete={true} title={\"Step 1\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 2\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 3\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 4\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 5\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 6\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 7\"}>\n          <p>Content</p>\n        </Step>\n      </StepProcessTopNav>\n    );\n  })\n  .add(\"step 3\", () => {\n    return (\n      <StepProcessTopNav activeIndex={2}>\n        <Step complete={true} title={\"Step 1\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 2\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 3\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 4\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 5\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 6\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 7\"}>\n          <p>Content</p>\n        </Step>\n      </StepProcessTopNav>\n    );\n  })\n  .add(\"step 3 2 complete\", () => {\n    return (\n      <StepProcessTopNav activeIndex={2}>\n        <Step complete={true} title={\"Step 1\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 2\"} complete={true}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 3\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 4\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 5\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 6\"}>\n          <p>Content</p>\n        </Step>\n        <Step title={\"Step 7\"}>\n          <p>Content</p>\n        </Step>\n      </StepProcessTopNav>\n    );\n  })\n  .add(\"scrolls to top\", () => {\n    return (\n      <StepProcessTopNav>\n        <Step\n          title={\"Step 1\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <div>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n          </div>\n        </Step>\n        <Step\n          title={\"Step 2\"}\n          disabled={true}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <div>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n          </div>\n        </Step>\n        <Step\n          title={\"Step 3\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 4\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 5\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 6\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n                <Button onClick={() => args.goNext()}>got to next</Button>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n        <Step\n          title={\"Step 7\"}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton onClick={() => args.goPrevious()}>got to previous</SecondaryButton>\n              </>\n            );\n          }}\n        >\n          <p>Content</p>\n        </Step>\n      </StepProcessTopNav>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNav/StepProcessTopNav.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StepTopNavProps } from \"./Step\";\n\nexport interface StepsProps {\n  activeIndex?: number;\n  children: Array<React.ReactElement<StepTopNavProps>>;\n  startPosition?: number;\n  contentPrepend?: JSX.Element;\n  onActiveTabChange?(activeIndex: number): void;\n}\n\nexport interface StepProcessTopNavState {\n  activeIndex: number;\n  startPosition?: number;\n}\n\nconst StyledNav = styled.div`\n  position: relative;\n  height: 76px;\n  margin: 0 auto;\n  width: 100%;\n  & > ul {\n    justify-content: space-between;\n  }\n`;\n\nconst StyledContainer = styled.ul`\n  display: flex;\n  list-style: none;\n  margin: 0 auto;\n  padding: 0;\n`;\n\nconst MainSection = styled.div`\n  background-color: #fff;\n  padding: 45px 115px;\n`;\n\nconst ButtonSection = styled.div`\n  border-top: 1px solid rgb(233, 233, 234);\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  padding: 25px;\n  & > button {\n    margin-left: 15px;\n  }\n`;\n\nexport class StepProcessTopNav extends React.Component<StepsProps, StepProcessTopNavState> {\n  public buttonContainer?: HTMLDivElement;\n  public navContainer?: HTMLDivElement;\n\n  constructor(props: StepsProps) {\n    super(props);\n    this.state = {\n      activeIndex: props.activeIndex || 0,\n    };\n  }\n\n  public componentDidUpdate(prevProps: StepsProps, prevState: StepProcessTopNavState): void {\n    if (typeof this.props.activeIndex === \"undefined\") {\n      return;\n    }\n    if (this.state.activeIndex !== prevState.activeIndex) {\n      return;\n    }\n    if (this.props.activeIndex !== prevProps.activeIndex) {\n      this.setState({ activeIndex: this.props.activeIndex });\n    } else if (prevProps.activeIndex !== prevState.activeIndex && this.props.activeIndex !== this.state.activeIndex) {\n      this.setState({ activeIndex: this.props.activeIndex });\n    }\n  }\n\n  public renderTabs(): Array<React.ReactElement<StepTopNavProps>> {\n    return React.Children.map(this.props.children, (child, index) => {\n      return React.cloneElement(child as React.ReactElement, {\n        index,\n        startPosition: this.state.startPosition,\n        isCurrent: this.state.activeIndex === index,\n        isActive: this.state.activeIndex >= index,\n        onClick: this.handleClick,\n        setStartPosition: index === 0 ? this.setStartPosition : undefined,\n      });\n    });\n  }\n\n  public renderContent(): React.ReactNode | undefined {\n    const children = this.props.children;\n    const { activeIndex } = this.state;\n    if (children[activeIndex]) {\n      return children[activeIndex].props.children;\n    }\n  }\n\n  public renderButtons(): JSX.Element | undefined {\n    const children = this.props.children;\n    const { activeIndex } = this.state;\n    if (children[activeIndex] && children[activeIndex].props.renderButtons) {\n      return children[activeIndex].props.renderButtons!({\n        goNext: this.goNext,\n        goPrevious: this.goPrevious,\n        index: this.state.activeIndex,\n        stepsLength: children.length,\n      });\n    }\n  }\n\n  public render(): JSX.Element {\n    return (\n      <div>\n        <StyledNav ref={(el: any) => (this.navContainer = el)}>\n          <StyledContainer>{this.renderTabs()}</StyledContainer>\n        </StyledNav>\n        <MainSection>{this.renderContent()}</MainSection>\n        <ButtonSection>{this.renderButtons()}</ButtonSection>\n      </div>\n    );\n  }\n\n  private setStartPosition = (position: number): void => {\n    this.setState({ startPosition: position });\n  };\n\n  private scrollToTop = (): void => {\n    if (this.navContainer) {\n      this.navContainer.scrollIntoView(true);\n    }\n  };\n\n  private goNext = (): void => {\n    this.scrollToTop();\n    const newIndex = this.state.activeIndex + 1;\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(newIndex);\n    }\n    this.setState({ activeIndex: newIndex });\n  };\n\n  private goPrevious = (): void => {\n    this.scrollToTop();\n    const newIndex = this.state.activeIndex - 1;\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(newIndex);\n    }\n    this.setState({ activeIndex: newIndex });\n  };\n\n  private handleClick = (index: number): void => {\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(index);\n    }\n    this.setState({ activeIndex: index });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNav/__snapshots__/StepProcessTopNav.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Steps / Step Process (with buttons) StepProcessTopNav complete step 1 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrp hzropR\"\n      >\n        <ul\n          className=\"sc-LzLrq eXGWCa\"\n        >\n          <li\n            className=\"sc-LzLrm hhvEBn\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn bXLppL\"\n            >\n              <div\n                className=\"sc-LzLrn sc-LzLro bDwTRh\"\n              />\n            </div>\n             \n            Step 1\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 2\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 3\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 4\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 5\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 6\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 7\n          </li>\n        </ul>\n      </div>\n      <div\n        className=\"sc-LzLrr foAnWo\"\n      >\n        <p>\n          Content\n        </p>\n      </div>\n      <div\n        className=\"sc-LzLrs bfolEJ\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (with buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepProcessTopNav complete step 1\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNav\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNav\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNav\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (with buttons) StepProcessTopNav step 1 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrp hzropR\"\n      >\n        <ul\n          className=\"sc-LzLrq eXGWCa\"\n        >\n          <li\n            className=\"sc-LzLrm hhvEBn\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn bXLppL\"\n            />\n             \n            Step 1\n          </li>\n          <li\n            className=\"sc-LzLrm hyoANG\"\n            disabled={true}\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 2\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 3\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 4\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 5\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 6\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 7\n          </li>\n        </ul>\n      </div>\n      <div\n        className=\"sc-LzLrr foAnWo\"\n      >\n        <p>\n          Content\n        </p>\n      </div>\n      <div\n        className=\"sc-LzLrs bfolEJ\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          got to next\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (with buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepProcessTopNav step 1\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNav\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          disabled\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNav\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNav\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (with buttons) scrolls to top 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrp hzropR\"\n      >\n        <ul\n          className=\"sc-LzLrq eXGWCa\"\n        >\n          <li\n            className=\"sc-LzLrm hhvEBn\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn bXLppL\"\n            />\n             \n            Step 1\n          </li>\n          <li\n            className=\"sc-LzLrm hyoANG\"\n            disabled={true}\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 2\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 3\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 4\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 5\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 6\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 7\n          </li>\n        </ul>\n      </div>\n      <div\n        className=\"sc-LzLrr foAnWo\"\n      >\n        <div>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrs bfolEJ\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          got to next\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (with buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            scrolls to top\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNav\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          disabled\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          renderButtons\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              renderButtons\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNav\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNav\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (with buttons) step 2 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrp hzropR\"\n      >\n        <ul\n          className=\"sc-LzLrq eXGWCa\"\n        >\n          <li\n            className=\"sc-LzLrm ifALjQ\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn hDYsDG\"\n            >\n              <div\n                className=\"sc-LzLrn sc-LzLro kNZNWu\"\n              />\n            </div>\n             \n            Step 1\n          </li>\n          <li\n            className=\"sc-LzLrm hhvEBn\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn bXLppL\"\n            />\n             \n            Step 2\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 3\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 4\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 5\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 6\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 7\n          </li>\n        </ul>\n      </div>\n      <div\n        className=\"sc-LzLrr foAnWo\"\n      >\n        <p>\n          Content\n        </p>\n      </div>\n      <div\n        className=\"sc-LzLrs bfolEJ\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (with buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            step 2\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNav\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            1\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNav\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNav\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (with buttons) step 3 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrp hzropR\"\n      >\n        <ul\n          className=\"sc-LzLrq eXGWCa\"\n        >\n          <li\n            className=\"sc-LzLrm ifALjQ\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn hDYsDG\"\n            >\n              <div\n                className=\"sc-LzLrn sc-LzLro kNZNWu\"\n              />\n            </div>\n             \n            Step 1\n          </li>\n          <li\n            className=\"sc-LzLrm ifALjQ\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn hDYsDG\"\n            />\n             \n            Step 2\n          </li>\n          <li\n            className=\"sc-LzLrm hhvEBn\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn bXLppL\"\n            />\n             \n            Step 3\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 4\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 5\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 6\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 7\n          </li>\n        </ul>\n      </div>\n      <div\n        className=\"sc-LzLrr foAnWo\"\n      >\n        <p>\n          Content\n        </p>\n      </div>\n      <div\n        className=\"sc-LzLrs bfolEJ\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (with buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            step 3\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNav\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            2\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNav\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNav\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (with buttons) step 3 2 complete 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrp hzropR\"\n      >\n        <ul\n          className=\"sc-LzLrq eXGWCa\"\n        >\n          <li\n            className=\"sc-LzLrm ifALjQ\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn hDYsDG\"\n            >\n              <div\n                className=\"sc-LzLrn sc-LzLro kNZNWu\"\n              />\n            </div>\n             \n            Step 1\n          </li>\n          <li\n            className=\"sc-LzLrm ifALjQ\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn hDYsDG\"\n            >\n              <div\n                className=\"sc-LzLrn sc-LzLro kNZNWu\"\n              />\n            </div>\n             \n            Step 2\n          </li>\n          <li\n            className=\"sc-LzLrm hhvEBn\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn bXLppL\"\n            />\n             \n            Step 3\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 4\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 5\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 6\n          </li>\n          <li\n            className=\"sc-LzLrm iLDcju\"\n            onClick={[Function]}\n          >\n            <div\n              className=\"sc-LzLrn gnhRiB\"\n            />\n             \n            Step 7\n          </li>\n        </ul>\n      </div>\n      <div\n        className=\"sc-LzLrr foAnWo\"\n      >\n        <p>\n          Content\n        </p>\n      </div>\n      <div\n        className=\"sc-LzLrs bfolEJ\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (with buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            step 3 2 complete\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNav\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            2\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Step 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Step\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNav\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNav\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNav/index.ts",
    "content": "export * from \"./Step\";\nexport * from \"./StepProcessTopNav\";\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNavNoButtons/Step.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../../styleConstants\";\nimport { StyledLiProps, StepState } from \"../StepProcessTopNav\";\n\nexport interface StepTopNavNoButtonsProps {\n  title: string | JSX.Element;\n  isActive?: boolean;\n  isCurrent?: boolean;\n  startPosition?: number;\n  complete?: boolean;\n  disabled?: boolean;\n  index?: number;\n  children: React.ReactChild;\n  onClick?(index: number): void;\n  setStartPosition?(position: number): void;\n}\n\nconst StyledLi = styled.li<StyledLiProps>`\n  cursor: ${props => (props.disabled ? \"default\" : \"pointer\")};\n  box-sizing: border-box;\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: 500;\n  margin-bottom: 0;\n  padding: 3px 0 18px;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  align-items: center;\n  color: ${props => {\n    if (props.isCurrent) {\n      return colors.primary.CIVIL_BLUE_1;\n    } else if (props.isActive) {\n      return colors.primary.BLACK;\n    } else {\n      return colors.accent.CIVIL_GRAY_3;\n    }\n  }};\n`;\n\nexport class StepNoButtons extends React.Component<StepTopNavNoButtonsProps, StepState> {\n  public render(): JSX.Element {\n    return (\n      <StyledLi\n        onClick={() => !this.props.disabled && this.props.onClick!(this.props.index!)}\n        isActive={this.props.isActive}\n        isCurrent={this.props.isCurrent}\n        disabled={this.props.disabled}\n      >\n        {this.props.title}\n      </StyledLi>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNavNoButtons/StepProcessTopNav.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { StepProcessTopNavNoButtons, ContentProps } from \"./StepProcessTopNavNoButtons\";\nimport { StepNoButtons } from \"./Step\";\n\nexport interface StepThingProps extends ContentProps {\n  children: string;\n}\n\nconst StepThing = (props: StepThingProps): JSX.Element => {\n  return (\n    <div>\n      {props.children}\n      <button onClick={() => props.goNext!()}>next</button>\n    </div>\n  );\n};\n\nstoriesOf(\"Common / Steps / Step Process (no buttons)\", module)\n  .add(\"StepProcessTopNavNoButtons StepNoButtons 1\", () => {\n    return (\n      <StepProcessTopNavNoButtons>\n        <StepNoButtons title={\"StepNoButtons 1\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"} disabled={true}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <p>Content</p>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  })\n  .add(\"StepProcessTopNavNoButtons complete StepNoButtons 1\", () => {\n    return (\n      <StepProcessTopNavNoButtons>\n        <StepNoButtons complete={true} title={\"StepNoButtons 1\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <p>Content</p>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  })\n  .add(\"StepNoButtons 2\", () => {\n    return (\n      <StepProcessTopNavNoButtons activeIndex={1}>\n        <StepNoButtons complete={true} title={\"StepNoButtons 1\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <p>Content</p>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  })\n  .add(\"StepNoButtons 3\", () => {\n    return (\n      <StepProcessTopNavNoButtons activeIndex={2}>\n        <StepNoButtons complete={true} title={\"StepNoButtons 1\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <p>Content</p>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  })\n  .add(\"StepNoButtons 3 2 complete\", () => {\n    return (\n      <StepProcessTopNavNoButtons activeIndex={2}>\n        <StepNoButtons complete={true} title={\"StepNoButtons 1\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"} complete={true}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <p>Content</p>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  })\n  .add(\"scrolls to top\", () => {\n    return (\n      <StepProcessTopNavNoButtons>\n        <StepNoButtons title={\"StepNoButtons 1\"}>\n          <div>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n          </div>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"} disabled={true}>\n          <div>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n            <p>Content</p>\n          </div>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <p>Content</p>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <p>Content</p>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  })\n  .add(\"passes go next to content\", () => {\n    return (\n      <StepProcessTopNavNoButtons activeIndex={2}>\n        <StepNoButtons complete={true} title={\"StepNoButtons 1\"}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 2\"} complete={true}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 3\"}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 4\"}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 5\"}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 6\"}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n        <StepNoButtons title={\"StepNoButtons 7\"}>\n          <StepThing>Content</StepThing>\n        </StepNoButtons>\n      </StepProcessTopNavNoButtons>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNavNoButtons/StepProcessTopNavNoButtons.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StepTopNavNoButtonsProps } from \"./Step\";\nimport { StepProcessTopNavState, StepsProps } from \"../StepProcessTopNav\";\nimport { colors } from \"../../styleConstants\";\n\nexport interface StepsNoButtonsProps extends StepsProps {\n  fullyControlledIndex?: boolean /** If true, step nav won't update activeIndex, it will simply call onActiveTabChange and rely on parent component to update index. */;\n}\n\nexport interface ContentProps {\n  goNext?(): void;\n  goPrevious?(): void;\n}\n\nexport interface ProgressBarInnerProps {\n  percent: number;\n}\n\nconst StyledNav = styled.div`\n  position: relative;\n  margin: 0 auto;\n  width: 100%;\n  & > ul {\n    justify-content: space-around;\n  }\n`;\n\nconst StyledContainer = styled.ul`\n  display: flex;\n  list-style: none;\n  margin: 27px auto 0 auto;\n  padding: 0;\n`;\n\nconst MainSection = styled.div`\n  background-color: #fff;\n  padding: 45px 10px;\n`;\n\nconst ProgressBar = styled.div`\n  width: 100%;\n  height: 6px;\n  display: block;\n  border-radius: 2px;\n  background-color: ${colors.accent.CIVIL_GRAY_3};\n`;\n\nconst ProgressBarInner = styled.div<ProgressBarInnerProps>`\n  width: ${props => `${Math.ceil(props.percent * 100)}%`};\n  height: 6px;\n  border-radius: 2px;\n  background-color: ${colors.accent.CIVIL_BLUE_FADED};\n`;\n\nexport class StepProcessTopNavNoButtons extends React.Component<StepsNoButtonsProps, StepProcessTopNavState> {\n  public buttonContainer?: HTMLDivElement;\n  public navContainer?: HTMLDivElement;\n\n  constructor(props: StepsNoButtonsProps) {\n    super(props);\n    this.state = {\n      activeIndex: props.activeIndex || 0,\n    };\n  }\n\n  public componentDidUpdate(prevProps: StepsNoButtonsProps, prevState: StepProcessTopNavState): void {\n    if (typeof this.props.activeIndex === \"undefined\") {\n      return;\n    }\n    if (this.state.activeIndex !== prevState.activeIndex) {\n      return;\n    }\n    if (this.props.activeIndex !== prevProps.activeIndex) {\n      this.setState({ activeIndex: this.props.activeIndex });\n    } else if (prevProps.activeIndex !== prevState.activeIndex && this.props.activeIndex !== this.state.activeIndex) {\n      this.setState({ activeIndex: this.props.activeIndex });\n    }\n  }\n\n  public renderTabs(): Array<React.ReactElement<StepTopNavNoButtonsProps>> {\n    return React.Children.map(this.props.children, (child, index) => {\n      return React.cloneElement(child as React.ReactElement, {\n        index,\n        startPosition: this.state.startPosition,\n        isCurrent: this.state.activeIndex === index,\n        isActive: this.state.activeIndex >= index,\n        onClick: this.handleClick,\n        setStartPosition: index === 0 ? this.setStartPosition : undefined,\n      });\n    });\n  }\n\n  public renderContent(): React.ReactNode | undefined {\n    const children = this.props.children;\n    const { activeIndex } = this.state;\n    if (children[activeIndex]) {\n      return React.cloneElement(children[activeIndex].props.children as React.ReactElement<ContentProps>, {\n        goNext: this.goNext,\n        goPrevious: this.goPrevious,\n      });\n    }\n  }\n\n  public render(): JSX.Element {\n    const progress = (this.state.activeIndex + 1) / this.props.children.length;\n    return (\n      <div>\n        <StyledNav ref={(el: any) => (this.navContainer = el)}>\n          <StyledContainer>{this.renderTabs()}</StyledContainer>\n          <ProgressBar>\n            <ProgressBarInner percent={progress} />\n          </ProgressBar>\n        </StyledNav>\n        <MainSection>\n          {this.props.contentPrepend}\n          {this.renderContent()}\n        </MainSection>\n      </div>\n    );\n  }\n\n  private setStartPosition = (position: number): void => {\n    this.setState({ startPosition: position });\n  };\n\n  private scrollToTop = (): void => {\n    if (this.navContainer) {\n      this.navContainer.scrollIntoView(true);\n    }\n  };\n\n  private goNext = (): void => {\n    this.scrollToTop();\n    const newIndex = this.state.activeIndex + 1;\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(newIndex);\n    }\n    if (!this.props.fullyControlledIndex) {\n      this.setState({ activeIndex: newIndex });\n    }\n  };\n\n  private goPrevious = (): void => {\n    this.scrollToTop();\n    const newIndex = this.state.activeIndex - 1;\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(newIndex);\n    }\n    if (!this.props.fullyControlledIndex) {\n      this.setState({ activeIndex: newIndex });\n    }\n  };\n\n  private handleClick = (index: number): void => {\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(index);\n    }\n    if (!this.props.fullyControlledIndex) {\n      this.setState({ activeIndex: index });\n    }\n  };\n}\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNavNoButtons/__snapshots__/StepProcessTopNav.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) StepNoButtons 2 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV ieOXKH\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <p\n          goNext={[Function]}\n          goPrevious={[Function]}\n        >\n          Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepNoButtons 2\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            1\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) StepNoButtons 3 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV gGwMWD\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <p\n          goNext={[Function]}\n          goPrevious={[Function]}\n        >\n          Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepNoButtons 3\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            2\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) StepNoButtons 3 2 complete 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV gGwMWD\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <p\n          goNext={[Function]}\n          goPrevious={[Function]}\n        >\n          Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepNoButtons 3 2 complete\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            2\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) StepProcessTopNavNoButtons StepNoButtons 1 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ jrvbn\"\n            disabled={true}\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV jtxwSS\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <p\n          goNext={[Function]}\n          goPrevious={[Function]}\n        >\n          Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepProcessTopNavNoButtons StepNoButtons 1\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          disabled\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) StepProcessTopNavNoButtons complete StepNoButtons 1 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV jtxwSS\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <p\n          goNext={[Function]}\n          goPrevious={[Function]}\n        >\n          Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            StepProcessTopNavNoButtons complete StepNoButtons 1\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) passes go next to content 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ kcGbdI\"\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV gGwMWD\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <div>\n          Content\n          <button\n            onClick={[Function]}\n          >\n            next\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            passes go next to content\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        activeIndex\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            2\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          complete\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        StepThing\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        StepThing\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepThing\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Steps / Step Process (no buttons) scrolls to top 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLrR htFHaB\"\n      >\n        <ul\n          className=\"sc-LzLrS diDcXi\"\n        >\n          <li\n            className=\"sc-LzLrQ iqPxAb\"\n            onClick={[Function]}\n          >\n            StepNoButtons 1\n          </li>\n          <li\n            className=\"sc-LzLrQ jrvbn\"\n            disabled={true}\n            onClick={[Function]}\n          >\n            StepNoButtons 2\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 3\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 4\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 5\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 6\n          </li>\n          <li\n            className=\"sc-LzLrQ dFspSn\"\n            onClick={[Function]}\n          >\n            StepNoButtons 7\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzLrU iBJMvE\"\n        >\n          <div\n            className=\"sc-LzLrV jtxwSS\"\n          />\n        </div>\n      </div>\n      <div\n        className=\"sc-LzLrT bnrCQc\"\n      >\n        <div\n          goNext={[Function]}\n          goPrevious={[Function]}\n        >\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n          <p>\n            Content\n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (no buttons)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            scrolls to top\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StepProcessTopNavNoButtons\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          disabled\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        div\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          p\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Content\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          p\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        div\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 5\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 6\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepNoButtons\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              StepNoButtons 7\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepNoButtons\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StepProcessTopNavNoButtons\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcessTopNavNoButtons\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepProcessTopNavNoButtons/index.ts",
    "content": "export * from \"./Step\";\nexport * from \"./StepProcessTopNavNoButtons\";\n"
  },
  {
    "path": "packages/components/src/StepProcess/StepStyled.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\n\nexport interface StepStyledProps {\n  index: number;\n  disabled?: boolean;\n}\n\nexport interface StepDescriptionProps {\n  disabled?: boolean;\n}\n\nexport const StepStyled = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 23px 4px 37px 75px;\n  width: 645px;\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  align-items: flex-start;\n  justify-content: space-between;\n  &:after{\n    content: \"${(props: StepStyledProps) => props.index + 1}\";\n    color: ${(props: StepStyledProps) => (props.disabled ? colors.accent.CIVIL_GRAY_3 : \"#000\")};\n    position: absolute;\n    left: 3px;\n    top: 23px;\n    height: 10px;\n    font-family: ${props => props.theme.sansSerifFont};\n    font-size: 20px;\n    font-weight: 600;\n  }\n`;\n\nStepStyled.defaultProps = {\n  theme: {\n    sansSerifFont: fonts.SANS_SERIF,\n  },\n};\n\nexport const StepStyledFluid = styled(StepStyled)`\n  padding-left: 0;\n  padding-right: 0;\n  width: 100%;\n\n  // Step counter marker is position \"outside\" for Fluid sections\n  &:after {\n    background: ${colors.accent.CIVIL_GRAY_4};\n    border-radius: 50%;\n    box-sizing: border-box;\n    left: -52px;\n    height: 34px;\n    padding-top: 8px;\n    text-align: center;\n    width: 34px;\n  }\n`;\n\nexport const StepDescription = styled.p<StepDescriptionProps>`\n  color: ${props => (props.disabled ? colors.accent.CIVIL_GRAY_3 : colors.accent.CIVIL_GRAY_2)};\n  margin-bottom: 23px;\n  margin-top: 0;\n`;\n\nexport const StepFormSection = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding-top: 10px;\n  padding-bottom: 40px;\n`;\n"
  },
  {
    "path": "packages/components/src/StepProcess/__snapshots__/StepProcess.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Steps / Step Process (deprecated?) Step Process 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzLqK dvhBLT\"\n      >\n        <div\n          className=\"sc-LzLqL dhMmoZ\"\n        >\n          <h4\n            className=\"sc-LzLqJ hBlALg\"\n          >\n            Step 1\n          </h4>\n          <p>\n             this is a step \n          </p>\n        </div>\n        <div\n          className=\"sc-LzLqL iCmrCm\"\n        >\n          <h4\n            className=\"sc-LzLqJ hBlALg\"\n          >\n            Step 2\n          </h4>\n          <p>\n             this is another step \n          </p>\n        </div>\n        <div\n          className=\"sc-LzLqL cHqNqD\"\n        >\n          <h4\n            className=\"sc-LzLqJ hBlALg\"\n          >\n            Step 3\n          </h4>\n          <p>\n             this is another step \n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Steps / Step Process (deprecated?)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Step Process\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      StepProcess\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step1\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step2\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Step3\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      StepProcess\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step1\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Step3\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StepProcess\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/StepProcess/index.ts",
    "content": "export * from \"./StepHeader\";\nexport * from \"./StepProcess\";\nexport * from \"./StepStyled\";\nexport * from \"./StepProcessTopNav\";\nexport * from \"./StepProcessTopNavNoButtons\";\n"
  },
  {
    "path": "packages/components/src/StoryFeed/StoryNewsroomStatus.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ChallengeMarkIcon, TrustMarkIcon, colors, fonts } from \"@joincivil/elements\";\n\nexport const StoryNewsroomStatusStyled = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  font-weight: 600;\n  line-height: 16px;\n  margin-bottom: 7px;\n\n  a {\n    align-items: center;\n    color: ${colors.primary.BLACK};\n    cursor: pointer;\n    display: flex;\n    transition: color 0.2s ease;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n\n  svg {\n    margin-left: 5px;\n  }\n`;\n\nexport interface StoryNewsroomStatusProps {\n  newsroomName: string;\n  activeChallenge: boolean;\n  handleOpenNewsroom?(): void;\n}\n\nexport const StoryNewsroomStatus: React.FunctionComponent<StoryNewsroomStatusProps> = props => {\n  if (props.handleOpenNewsroom) {\n    return (\n      <StoryNewsroomStatusStyled>\n        <a onClick={props.handleOpenNewsroom}>\n          {props.newsroomName}\n          {props.activeChallenge ? (\n            <ChallengeMarkIcon width={18} height={18} />\n          ) : (\n            <TrustMarkIcon width={18} height={18} />\n          )}\n        </a>\n      </StoryNewsroomStatusStyled>\n    );\n  }\n\n  return (\n    <StoryNewsroomStatusStyled>\n      {props.newsroomName}\n      {props.activeChallenge ? <ChallengeMarkIcon width={18} height={18} /> : <TrustMarkIcon width={18} height={18} />}\n    </StoryNewsroomStatusStyled>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/StoryFeed/index.ts",
    "content": "export * from \"./StoryNewsroomStatus\";\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/Dashboard.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\n\nconst StyledDashboardHeaderOuter = styled.div`\n  display: flex;\n  padding: 62px 0 38px;\n  justify-content: center;\n  width: 400px;\n  min-width: 400px;\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n    min-width: 0;\n  }\n`;\n\nconst StyledDashboardHeader = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SERIF};\n`;\n\nexport const UserDashboardHeader: React.FunctionComponent = props => {\n  return (\n    <StyledDashboardHeaderOuter>\n      <StyledDashboardHeader>{props.children}</StyledDashboardHeader>\n    </StyledDashboardHeaderOuter>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivity.tsx",
    "content": "import * as React from \"react\";\nimport { Tabs, Tab } from \"../Tabs\";\nimport {\n  StyledUserActivity,\n  StyledDashboardTabsContainer,\n  StyledDashboardTab,\n  StyledUserActivityContent,\n} from \"./DashboardStyledComponents\";\nimport { MyVotingTabText, MyNewsroomsTabText, MyChallengesTabText } from \"./DashboardTextComponents\";\n\nexport interface DashboardActivityProps {\n  userVotes: JSX.Element;\n  numUserVotes: number;\n  userNewsrooms: JSX.Element;\n  numUserNewsrooms: number;\n  userChallenges: JSX.Element;\n  activeIndex: number;\n  preventStartingTabOverride: boolean;\n  onTabChange(activeIndex: number): void;\n  onTabsLoadChange(activeIndex: number): void;\n}\n\nexport const DashboardActivity: React.FunctionComponent<DashboardActivityProps> = props => {\n  const [hasSetStartingTab, setStartingTab] = React.useState(false);\n  React.useEffect(() => {\n    if (!hasSetStartingTab && !props.preventStartingTabOverride) {\n      setStartingTab(true);\n      if (props.numUserVotes > 0) {\n        props.onTabsLoadChange(0);\n      } else if (props.numUserNewsrooms > 0) {\n        props.onTabsLoadChange(1);\n      }\n    }\n  });\n  return (\n    <StyledUserActivity>\n      <Tabs\n        TabsNavComponent={StyledDashboardTabsContainer}\n        TabComponent={StyledDashboardTab}\n        activeIndex={props.activeIndex}\n        onActiveTabChange={props.onTabChange}\n      >\n        <Tab title={<MyVotingTabText />} badgeNum={props.numUserVotes}>\n          <StyledUserActivityContent>{props.userVotes}</StyledUserActivityContent>\n        </Tab>\n        <Tab title={<MyNewsroomsTabText />}>\n          <StyledUserActivityContent>{props.userNewsrooms}</StyledUserActivityContent>\n        </Tab>\n        <Tab title={<MyChallengesTabText />}>\n          <StyledUserActivityContent>{props.userChallenges}</StyledUserActivityContent>\n        </Tab>\n      </Tabs>\n    </StyledUserActivity>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivityItem.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { buttonSizes, InvertedButton } from \"../Button\";\nimport { CharterData } from \"@joincivil/typescript-types\";\nimport { SmallNewsroomIcon } from \"../ListingSummary/styledComponents\";\nimport defaultNewsroomImgUrl from \"../images/img-default-newsroom@2x.png\";\nimport {\n  StyledDashboardActivityItem,\n  StyledDashboardActivityItemDetails,\n  StyledNewsroomName,\n} from \"./DashboardStyledComponents\";\n\nconst StyledDashboardActivityItemIcon = styled.div`\n  margin-right: 16px;\n  width: 50px;\n`;\n\nconst StyledDashboardActivityItemAction = styled.div`\n  text-align: right;\n`;\n\nconst StyledButtonHelperText = styled.div`\n  font-weight: normal;\n  font-size: 14px;\n  line-height: 18px;\n  margin: 0 0 10px;\n`;\n\nexport interface DashboardActivityItemProps {\n  newsroomName: string;\n  charter?: CharterData;\n  listingDetailURL: string;\n  buttonText: string;\n  buttonHelperText?: string | JSX.Element;\n  challengeID?: string;\n  salt?: any;\n  toggleSelect?(challengeID: string, isSelected: boolean, salt: any): void;\n}\n\nexport const DashboardActivityItem: React.FunctionComponent<DashboardActivityItemProps> = props => {\n  return (\n    <StyledDashboardActivityItem>\n      <StyledDashboardActivityItemIcon>\n        {props.charter && props.charter.logoUrl && (\n          <SmallNewsroomIcon>\n            <img\n              src={props.charter.logoUrl}\n              onError={e => {\n                (e.target as any).src = defaultNewsroomImgUrl;\n              }}\n            />\n          </SmallNewsroomIcon>\n        )}\n      </StyledDashboardActivityItemIcon>\n\n      <StyledDashboardActivityItemDetails>\n        <StyledNewsroomName>{props.newsroomName}</StyledNewsroomName>\n        {props.children}\n      </StyledDashboardActivityItemDetails>\n\n      <StyledDashboardActivityItemAction>\n        <StyledButtonHelperText>{props.buttonHelperText}</StyledButtonHelperText>\n        <InvertedButton to={props.listingDetailURL} size={buttonSizes.SMALL}>\n          {props.buttonText}\n        </InvertedButton>\n      </StyledDashboardActivityItemAction>\n    </StyledDashboardActivityItem>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivityItemCTAButton.tsx",
    "content": "import * as React from \"react\";\n\nimport { buttonSizes, InvertedButton } from \"../Button\";\n\nimport { DashboardActivityItemCTAButtonProps } from \"./DashboardTypes\";\n\nexport const DashboardActivityItemCTAButton: React.FunctionComponent<DashboardActivityItemCTAButtonProps> = props => {\n  const {\n    listingDetailURL,\n    inCommitPhase,\n    inRevealPhase,\n    canRequestAppeal,\n    canResolveChallenge,\n    isAwaitingAppealChallenge,\n    canListingAppealBeResolved,\n    isAppealChallengeInCommitStage,\n    isAppealChallengeInRevealStage,\n    canListingAppealChallengeBeResolved,\n    didUserCommit,\n    didUserReveal,\n    canUserCollect,\n    canUserRescue,\n    onClick,\n  } = props;\n\n  let buttonText;\n\n  if (inCommitPhase) {\n    buttonText = \"Change Vote\";\n  } else if (isAppealChallengeInCommitStage && didUserCommit) {\n    buttonText = \"Commit Vote\";\n  } else if ((!didUserReveal && inRevealPhase) || isAppealChallengeInRevealStage) {\n    buttonText = \"Reveal Vote\";\n  } else if (canRequestAppeal) {\n    buttonText = \"Request Appeal\";\n  } else if (canResolveChallenge || canListingAppealChallengeBeResolved) {\n    buttonText = \"Resolve\";\n  } else if (isAwaitingAppealChallenge) {\n    buttonText = \"Challenge Appeal\";\n  } else if (canListingAppealBeResolved) {\n    buttonText = \"Resolve\";\n  } else if (canUserCollect) {\n    buttonText = \"Claim Rewards\";\n  } else if (canUserRescue) {\n    buttonText = \"Rescue Tokens\";\n  }\n\n  if ((!listingDetailURL && !onClick) || !buttonText) {\n    return <></>;\n  }\n\n  let actionProp = {};\n  if (onClick) {\n    actionProp = { onClick };\n  } else if (listingDetailURL) {\n    actionProp = { to: listingDetailURL };\n  }\n\n  return (\n    <InvertedButton {...actionProp} size={buttonSizes.SMALL}>\n      {buttonText}\n    </InvertedButton>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivityItemTask.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { SmallNewsroomIcon } from \"../ListingSummary/styledComponents\";\nimport defaultNewsroomImgUrl from \"../images/img-default-newsroom@2x.png\";\n\nimport { DashboardActivityItemProps } from \"./DashboardTypes\";\nimport {\n  StyledDashboardActivityItem,\n  StyledDashboardActivityItemIcon,\n  StyledDashboardActivityItemDetails,\n} from \"./DashboardStyledComponents\";\nimport DashboardActivityItemTitle from \"./DashboardActivityItemTitle\";\n\nexport const DashboardActivityItemTask: React.FunctionComponent<DashboardActivityItemProps> = props => {\n  const { logoUrl } = props;\n  return (\n    <StyledDashboardActivityItem>\n      <StyledDashboardActivityItemIcon>\n        {logoUrl && (\n          <SmallNewsroomIcon>\n            <img\n              src={logoUrl}\n              onError={e => {\n                (e.target as any).src = defaultNewsroomImgUrl;\n              }}\n            />\n          </SmallNewsroomIcon>\n        )}\n      </StyledDashboardActivityItemIcon>\n\n      <StyledDashboardActivityItemDetails>\n        <DashboardActivityItemTitle title={props.title} viewDetailURL={props.viewDetailURL} />\n        {props.children}\n      </StyledDashboardActivityItemDetails>\n    </StyledDashboardActivityItem>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivityItemTitle.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { DashboardActivityItemBaseProps, DashboardActivityItemTitleProps } from \"./DashboardTypes\";\nimport { StyledDashboardActivityItemTitle } from \"./DashboardStyledComponents\";\n\nconst DashboardActivityItemTitle: React.FunctionComponent<\n  DashboardActivityItemBaseProps & DashboardActivityItemTitleProps\n> = props => {\n  const titleChild = props.viewDetailURL ? <Link to={props.viewDetailURL}>{props.title}</Link> : props.title;\n  return <StyledDashboardActivityItemTitle>{titleChild}</StyledDashboardActivityItemTitle>;\n};\n\nexport default React.memo(DashboardActivityItemTitle);\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivityProposalItemCTAButton.tsx",
    "content": "import * as React from \"react\";\n\nimport { buttonSizes, InvertedButton } from \"../Button\";\n\nimport { DashboardActivityItemProposalCTAButtonProps } from \"./DashboardTypes\";\n\nexport const DashboardActivityProposalItemCTAButton: React.FunctionComponent<\n  DashboardActivityItemProposalCTAButtonProps\n> = props => {\n  const { propDetailURL, canUserReveal, canUserCollect, canUserRescue, canResolveChallenge, onClick } = props;\n\n  let buttonText;\n\n  if (canUserReveal) {\n    buttonText = \"Reveal Vote\";\n  } else if (canUserCollect) {\n    buttonText = \"Claim Rewards\";\n  } else if (canUserRescue) {\n    buttonText = \"Rescue Tokens\";\n  } else if (canResolveChallenge) {\n    buttonText = \"Resolve\";\n  } else {\n    buttonText = \"Change Vote\";\n  }\n\n  if ((!propDetailURL && !onClick) || !buttonText) {\n    return <></>;\n  }\n\n  let actionProp = {};\n  if (onClick) {\n    actionProp = { onClick };\n  } else if (propDetailURL) {\n    actionProp = { to: propDetailURL };\n  }\n\n  return (\n    <InvertedButton {...actionProp} size={buttonSizes.SMALL}>\n      {buttonText}\n    </InvertedButton>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivitySelectableItem.tsx",
    "content": "import * as React from \"react\";\n\nimport { DashboardActivitySelectableItemProps } from \"./DashboardTypes\";\nimport DashboardActivityItemTitle from \"./DashboardActivityItemTitle\";\nimport {\n  StyledDashboardActivityItem,\n  StyledChallengeIDKicker,\n  StyledItemCheckboxContainer,\n  StyledDashboardActivityItemDetails,\n  StyledNumTokensContainer,\n} from \"./DashboardStyledComponents\";\n\nconst ItemCheckbox: React.FunctionComponent<DashboardActivitySelectableItemProps> = props => {\n  const challengeID = props.appealChallengeID || props.challengeID;\n  const handleChange = (event: any) => {\n    props.toggleSelect!(challengeID!, event.target.checked, props.salt);\n  };\n  return <input type=\"checkbox\" onChange={handleChange} />;\n};\n\nexport const DashboardActivitySelectableItem: React.FunctionComponent<DashboardActivitySelectableItemProps> = props => {\n  if (props.challengeID && props.appealChallengeID) {\n    throw new Error(\"DashboardActivitySelectableItem: cannot have both challengeID and appealChallengeID props\");\n  }\n\n  let challengeIDDisplay = \"Challenge\";\n  if (props.challengeID) {\n    challengeIDDisplay = `Challenge #${props.challengeID}`;\n  } else if (props.appealChallengeID) {\n    challengeIDDisplay = `Appeal Challenge #${props.appealChallengeID}`;\n  }\n\n  return (\n    <StyledDashboardActivityItem>\n      <StyledItemCheckboxContainer>{props.toggleSelect && ItemCheckbox(props)}</StyledItemCheckboxContainer>\n\n      <StyledDashboardActivityItemDetails>\n        <StyledChallengeIDKicker>{challengeIDDisplay}</StyledChallengeIDKicker>\n        <DashboardActivityItemTitle title={props.title} viewDetailURL={props.viewDetailURL} />\n        {props.children}\n      </StyledDashboardActivityItemDetails>\n\n      {props.numTokens && <StyledNumTokensContainer>+{props.numTokens}</StyledNumTokensContainer>}\n    </StyledDashboardActivityItem>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardActivityTabTitle.tsx",
    "content": "import * as React from \"react\";\nimport { StyledSubTabCount } from \"./DashboardStyledComponents\";\nimport {\n  SubTabAllChallengesVotedText,\n  SubTabRevealVoteText,\n  SubTabClaimRewardsText,\n  SubTabRescueTokensText,\n  SubTabChallengesCompletedText,\n  SubTabChallengesStakedText,\n} from \"./DashboardTextComponents\";\n\nexport interface DashboardActivityTabTitleProps {\n  count?: number;\n}\n\nconst DashboardActivityTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <>\n      {props.children}\n      <StyledSubTabCount>{props.count || \"0\"}</StyledSubTabCount>\n    </>\n  );\n};\n\nexport const AllChallengesDashboardTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <DashboardActivityTabTitle count={props.count}>\n      <SubTabAllChallengesVotedText />\n    </DashboardActivityTabTitle>\n  );\n};\n\nexport const RevealVoteDashboardTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <DashboardActivityTabTitle count={props.count}>\n      <SubTabRevealVoteText />\n    </DashboardActivityTabTitle>\n  );\n};\n\nexport const ClaimRewardsDashboardTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <DashboardActivityTabTitle count={props.count}>\n      <SubTabClaimRewardsText />\n    </DashboardActivityTabTitle>\n  );\n};\n\nexport const RescueTokensDashboardTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <DashboardActivityTabTitle count={props.count}>\n      <SubTabRescueTokensText />\n    </DashboardActivityTabTitle>\n  );\n};\n\nexport const ChallengesCompletedDashboardTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <DashboardActivityTabTitle count={props.count}>\n      <SubTabChallengesCompletedText />\n    </DashboardActivityTabTitle>\n  );\n};\n\nexport const ChallengesStakedDashboardTabTitle: React.FunctionComponent<DashboardActivityTabTitleProps> = props => {\n  return (\n    <DashboardActivityTabTitle count={props.count}>\n      <SubTabChallengesStakedText />\n    </DashboardActivityTabTitle>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardNewsroom.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { urlConstants, copyToClipboard } from \"@joincivil/utils\";\nimport { EthAddressViewer } from \"../EthAddressViewer\";\nimport gql from \"graphql-tag\";\nimport { Query } from \"react-apollo\";\n\nimport { ChevronAnchor } from \"../ChevronAnchor\";\nimport { InvertedButton, buttonSizes } from \"../Button\";\nimport { FeatureFlag } from \"../features\";\nimport {\n  StyledDashboardNewsroom,\n  StyledDashboardNewsroomName,\n  StyledDashboardNewsroomSection,\n  StyledDashboardNewsroomSectionContentRow,\n  StyledDashboardNewsroomHdr,\n  StyledDashboardNewsroomSubHdr,\n  StyledDashboardNewsroomTerHdr,\n  StyledDashboardNewsroomBorder,\n  StyledChallengeIDKicker,\n  StyledDashboardNewsroomLinks,\n  StyledDashboardNewsroomTokensContainer,\n  StyledDashboardNewsroomTokensLabel,\n  StyledCVLLabel,\n  StyledEmbedCode,\n} from \"./DashboardStyledComponents\";\nimport { DashboardNewsroomStripeConnect } from \"./DashboardNewsroomStripeConnect\";\nimport { DashboardNewsroomSubmitLink } from \"./DashboardNewsroomSubmitLink\";\nimport { NewsroomProceeds } from \"./DashboardNewsroomProceeds\";\n\nexport interface DashboardNewsroomProps {\n  newsroomName: string;\n  newsroomAddress: string;\n  listingDetailURL: string;\n  manageNewsroomURL: string;\n  newsroomDeposit: string;\n  etherscanBaseURL: string;\n  newsroomMultiSigBalance: string;\n  newsroomMultiSigAddress?: string;\n  isAccepted?: boolean;\n  isInProgress?: boolean;\n  isUnderChallenge?: boolean;\n  isRejected?: boolean;\n  acceptedDate?: string;\n  inProgressPhaseDisplayName?: string;\n  inProgressPhaseCountdown?: JSX.Element;\n  inProgressPhaseDetails?: string | JSX.Element;\n  boostProceeds?: JSX.Element;\n  rejectedDate?: string;\n}\n\nconst CHANNEL_ID_FROM_NEWSROOM_ADDRESS_QUERY = gql`\n  query($contractAddress: String!) {\n    channelsGetByNewsroomAddress(contractAddress: $contractAddress) {\n      id\n    }\n  }\n`;\n\nconst DashboardNewsroomRegistryStatusBase: React.FunctionComponent<DashboardNewsroomProps> = props => {\n  let statusDisplay;\n  let statusDetails: string | JSX.Element = <></>;\n\n  const {\n    isAccepted,\n    isInProgress,\n    isRejected,\n    acceptedDate,\n    inProgressPhaseDisplayName,\n    inProgressPhaseCountdown,\n    inProgressPhaseDetails,\n    rejectedDate,\n  } = props;\n\n  if (isInProgress) {\n    statusDisplay = inProgressPhaseDisplayName;\n    if (inProgressPhaseCountdown) {\n      statusDetails = inProgressPhaseCountdown;\n    } else if (inProgressPhaseDetails) {\n      statusDetails = inProgressPhaseDetails;\n    }\n  } else if (isAccepted) {\n    statusDisplay = \"Accepted\";\n    if (acceptedDate) {\n      statusDisplay = \"Accepted Date\";\n      statusDetails = <>{acceptedDate}</>;\n    }\n  } else if (isRejected) {\n    statusDisplay = \"Rejected\";\n    if (rejectedDate) {\n      statusDisplay = \"Rejected Date\";\n      statusDetails = <>{rejectedDate}</>;\n    }\n  }\n  return (\n    <>\n      <StyledChallengeIDKicker>{statusDisplay}</StyledChallengeIDKicker>\n      {statusDetails}\n    </>\n  );\n};\n\nconst DashboardNewsroomRegistryStatus = React.memo(DashboardNewsroomRegistryStatusBase);\n\nconst DashboardNewsroomBase: React.FunctionComponent<DashboardNewsroomProps> = props => {\n  const [copied, setCopied] = React.useState(false);\n  const storyBoostEmbed = '<script src=\"https://civil.co/loader/boost.js\"></script>';\n\n  return (\n    <StyledDashboardNewsroom>\n      <StyledDashboardNewsroomSection>\n        <StyledDashboardNewsroomSectionContentRow>\n          <StyledDashboardNewsroomName>{props.newsroomName}</StyledDashboardNewsroomName>\n\n          <StyledDashboardNewsroomLinks>\n            <ChevronAnchor component={Link} to={props.manageNewsroomURL}>\n              Manage Newsroom\n            </ChevronAnchor>\n            <ChevronAnchor component={Link} to={props.listingDetailURL}>\n              View on Registry\n            </ChevronAnchor>\n          </StyledDashboardNewsroomLinks>\n        </StyledDashboardNewsroomSectionContentRow>\n      </StyledDashboardNewsroomSection>\n\n      <StyledDashboardNewsroomSection>\n        <StyledDashboardNewsroomSectionContentRow>\n          <StyledDashboardNewsroomHdr>Newsroom Token Balance</StyledDashboardNewsroomHdr>\n          <StyledDashboardNewsroomTokensContainer>\n            {props.newsroomMultiSigBalance} <StyledCVLLabel>CVL</StyledCVLLabel>\n            <StyledDashboardNewsroomTokensLabel>Tokens in Newsroom Wallet</StyledDashboardNewsroomTokensLabel>\n          </StyledDashboardNewsroomTokensContainer>\n        </StyledDashboardNewsroomSectionContentRow>\n      </StyledDashboardNewsroomSection>\n\n      <StyledDashboardNewsroomSection>\n        <StyledDashboardNewsroomHdr>Status on the Registry</StyledDashboardNewsroomHdr>\n\n        <StyledDashboardNewsroomSectionContentRow>\n          <div>\n            <DashboardNewsroomRegistryStatus {...props} />\n          </div>\n          <StyledDashboardNewsroomTokensContainer>\n            {props.newsroomDeposit} <StyledCVLLabel>CVL</StyledCVLLabel>\n            <StyledDashboardNewsroomTokensLabel>Newsroom Token Deposit</StyledDashboardNewsroomTokensLabel>\n          </StyledDashboardNewsroomTokensContainer>\n        </StyledDashboardNewsroomSectionContentRow>\n      </StyledDashboardNewsroomSection>\n\n      <StyledDashboardNewsroomSection>\n        {props.newsroomMultiSigAddress && (\n          <EthAddressViewer\n            address={props.newsroomMultiSigAddress}\n            displayName=\"Newsroom Public Wallet Address\"\n            etherscanBaseURL={props.etherscanBaseURL}\n          />\n        )}\n\n        <EthAddressViewer\n          address={props.newsroomAddress}\n          displayName=\"Newsroom Smart Contract Address\"\n          etherscanBaseURL={props.etherscanBaseURL}\n        />\n      </StyledDashboardNewsroomSection>\n\n      <StyledDashboardNewsroomSection>\n        <StyledDashboardNewsroomHdr>Boosts</StyledDashboardNewsroomHdr>\n        <StyledDashboardNewsroomSubHdr>Story Boosts</StyledDashboardNewsroomSubHdr>\n        <p>\n          Story Boosts allow supporters to give you small, incremental proceeds using ETH or credit cards. When you add\n          the Story Boost embed, your stories will be included on the Civil storyfeed and you will be able to collect\n          proceeds from the feed as well as your own site.\n        </p>\n        <p>\n          Place the following code in your CMS where you'd like a Story Boost to be displayed on your site. You can add\n          it to each story or your CMS template.\n        </p>\n        <StyledEmbedCode>{storyBoostEmbed}</StyledEmbedCode>\n        <InvertedButton size={buttonSizes.MEDIUM_WIDE} onClick={() => setCopied(copyToClipboard(storyBoostEmbed))}>\n          Copy\n        </InvertedButton>{\" \"}\n        {copied && \"Copied!\"}\n        <p>\n          Use WordPress? You can download and install the Story Boost plugin to automatically embed Story Boosts on your\n          site.\n        </p>\n        <p>\n          Download this zip file, navigate to the Plugins page in your admin dashboard, select Add New, then Upload\n          Plugin.\n        </p>\n        <InvertedButton\n          size={buttonSizes.MEDIUM_WIDE}\n          to={\"https://drive.google.com/uc?export=download&id=1Rq4ZW-gwDMy5TLIr_aKJzFUYnSIVXpC6\"}\n        >\n          Download Story Boost Plugin\n        </InvertedButton>\n        <FeatureFlag feature={\"pew\"}>\n          <Query<any>\n            query={CHANNEL_ID_FROM_NEWSROOM_ADDRESS_QUERY}\n            variables={{ contractAddress: props.newsroomAddress }}\n          >\n            {({ loading, error, data }) => {\n              if (loading || error) {\n                return <></>;\n              }\n              return (\n                <>\n                  <StyledDashboardNewsroomTerHdr>Submit a Story</StyledDashboardNewsroomTerHdr>\n                  <DashboardNewsroomSubmitLink channelID={data.channelsGetByNewsroomAddress.id} />\n                </>\n              );\n            }}\n          </Query>\n        </FeatureFlag>\n        <StyledDashboardNewsroomTerHdr>Proceeds collected from Story Boosts</StyledDashboardNewsroomTerHdr>\n        <NewsroomProceeds newsroomAddress={props.newsroomAddress} boostType={\"externallink\"} />\n        <StyledDashboardNewsroomBorder />\n        <StyledDashboardNewsroomSubHdr>Project Boosts</StyledDashboardNewsroomSubHdr>\n        <p>\n          Project Boosts lets your newsroom host one-off fundraisers anywhere on your website to fund and produce larger\n          journalism projects. Share your vision and how the money will be used so your readers can get behind it.\n        </p>\n        <p>\n          You can embed Projects Boosts on your site as well. You just need to copy the embed from each Project Boost.{\" \"}\n          <a href={urlConstants.FAQ_BOOSTS} target=\"_blank\">\n            Learn more\n          </a>\n        </p>\n        {/*@TODO Because we're in components we can't access dapp routes so we have to hard code the route*/}\n        <p>\n          <InvertedButton size={buttonSizes.MEDIUM_WIDE} to={`/manage-newsroom/${props.newsroomAddress}/launch-boost`}>\n            Launch a New Project Boost\n          </InvertedButton>\n        </p>\n        <p>\n          <InvertedButton size={buttonSizes.MEDIUM_WIDE} to={`${props.listingDetailURL}/boosts`}>\n            View your Project Boosts\n          </InvertedButton>\n        </p>\n        <StyledDashboardNewsroomTerHdr>Proceeds collected from Project Boosts</StyledDashboardNewsroomTerHdr>\n        <NewsroomProceeds newsroomAddress={props.newsroomAddress} boostType={\"boost\"} />\n      </StyledDashboardNewsroomSection>\n      <StyledDashboardNewsroomSection>\n        <StyledDashboardNewsroomHdr>Payments</StyledDashboardNewsroomHdr>\n        {/*@HACK We need to include `NewsroomWithdraw` from `sdk` package, but this component is in `components` package which `sdk` uses so we'd have a circular dependency. @TODO/tobek all these TCR dashboard components should be moved into `dapp` package.*/}\n        {props.boostProceeds}\n        <StyledDashboardNewsroomBorder />\n        <StyledDashboardNewsroomSubHdr>Set Up Credit Card Payments</StyledDashboardNewsroomSubHdr>\n        <p>\n          Connect a Stripe account to accept Credit Cards payments for your Boosts. You can link your existing Stripe\n          account or start a new one. Any payments sent with credit cards with automatically be deposited into your\n          Stripe account.\n        </p>\n        <FeatureFlag feature={\"stripe-admin\"}>\n          <DashboardNewsroomStripeConnect newsroomAddress={props.newsroomAddress} />\n        </FeatureFlag>\n      </StyledDashboardNewsroomSection>\n    </StyledDashboardNewsroom>\n  );\n};\n\nexport const DashboardNewsroom = React.memo(DashboardNewsroomBase);\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardNewsroomProceeds.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Query } from \"react-apollo\";\nimport { LoadingIndicator } from \"../LoadingIndicator\";\nimport { withNewsroomChannel, NewsroomChannelInjectedProps } from \"../WithNewsroomChannelHOC\";\nimport { colors, fonts, mediaQueries } from \"@joincivil/elements\";\nimport gql from \"graphql-tag\";\n\nconst boostTypeProceedsQuery = gql`\n  query proceeds($channelID: String!, $boostType: String!) {\n    getChannelTotalProceedsByBoostType(channelID: $channelID, boostType: $boostType) {\n      totalAmount\n      usd\n      ethUsdAmount\n      ether\n    }\n  }\n`;\n\nconst Wrapper = styled.div`\n  display: flex;\n  font-size: 14px;\n  justify-content: space-between;\n  margin: 0 0 20px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nconst Proceed = styled.div`\n  flex: 1;\n  padding: 15px;\n`;\n\nconst TotalProceeds = styled(Proceed)`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n`;\n\nconst Amount = styled.span`\n  color: ${colors.primary.BLACK};\n  font-size: 16px;\n`;\n\nconst TotalAmount = styled(Amount)`\n  font-size: 20px;\n`;\n\ninterface CurrencyLabelProps {\n  secondary?: boolean;\n}\nconst CurrencyLabel = styled.span`\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 12px;\n  font-weight: ${(props: CurrencyLabelProps) => (props.secondary ? 500 : 600)};\n`;\n\nexport interface NewsroomProceedsProps {\n  newsroomAddress: string;\n  boostType: string;\n}\n\nclass NewsroomProceedsComponent extends React.Component<NewsroomProceedsProps & NewsroomChannelInjectedProps> {\n  public constructor(props: NewsroomProceedsProps & NewsroomChannelInjectedProps) {\n    super(props);\n  }\n  public render(): JSX.Element {\n    return (\n      <Query<any>\n        query={boostTypeProceedsQuery}\n        variables={{ channelID: this.props.channelData.id, boostType: this.props.boostType }}\n      >\n        {({ loading, error, data }) => {\n          if (loading) {\n            return <LoadingIndicator />;\n          } else if (error || !data || !data.getChannelTotalProceedsByBoostType) {\n            console.error(\"Error loading boost proceeds query:\", error || \"no data returned\");\n            return <span>Error loading proceed amounts: {JSON.stringify(error || \"no data returned\")}</span>;\n          }\n\n          let { totalAmount, ether, ethUsdAmount, usd } = data.getChannelTotalProceedsByBoostType;\n          totalAmount = parseFloat(totalAmount || 0).toFixed(2);\n          ether = parseFloat(ether || 0).toFixed(5);\n          ethUsdAmount = parseFloat(ethUsdAmount || 0).toFixed(2);\n          usd = parseFloat(usd || 0).toFixed(2);\n\n          return (\n            <Wrapper>\n              <TotalProceeds>\n                <div>\n                  <TotalAmount>${totalAmount}</TotalAmount> <CurrencyLabel>USD</CurrencyLabel>\n                </div>\n                <div>Total Collected</div>\n              </TotalProceeds>\n              <Proceed>\n                <div>\n                  <Amount>{ether}</Amount> <CurrencyLabel>ETH</CurrencyLabel> ≈ ${ethUsdAmount}{\" \"}\n                  <CurrencyLabel secondary={true}>USD</CurrencyLabel>\n                </div>\n                <div>ETH Proceeds</div>\n              </Proceed>\n              <Proceed>\n                <div>\n                  <Amount>${usd}</Amount> <CurrencyLabel secondary={true}>USD</CurrencyLabel>\n                </div>\n                <div>Credit Card Proceeds</div>\n              </Proceed>\n            </Wrapper>\n          );\n        }}\n      </Query>\n    );\n  }\n}\n\nexport const NewsroomProceeds: React.ComponentType<NewsroomProceedsProps> = withNewsroomChannel(\n  NewsroomProceedsComponent,\n) as any;\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardNewsroomStripeConnect.tsx",
    "content": "import * as React from \"react\";\nimport * as qs from \"querystring\";\nimport { withApollo, WithApolloClient } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport styled from \"styled-components\";\n\nimport { CivilContext, ICivilContext } from \"../context/CivilContext\";\nimport {\n  withNewsroomChannel,\n  NewsroomChannelInjectedProps,\n  CHANNEL_BY_NEWSROOM_QUERY,\n} from \"../WithNewsroomChannelHOC\";\nimport { StyledDashboardLoadingMessage } from \"./DashboardStyledComponents\";\nimport { ErrorIcon, NorthEastArrow } from \"../icons\";\nimport { colors } from \"../styleConstants\";\nimport { InvertedButton, buttonSizes } from \"../Button\";\n\nimport stripeLogo from \"../images/stripe-logo-blue.png\";\nimport stripeConnectButtonLight from \"../images/stripe-connect-blue-on-light.png\";\nimport stripeConnectButtonDark from \"../images/stripe-connect-blue-on-dark.png\";\n\nexport const StripeContainer = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 20px 16px 24px;\n`;\nconst StripeLogo = styled.img`\n  display: block;\n  height: 24px;\n  margin-bottom: 10px;\n  width: auto;\n`;\nconst StripeConnectButtonLink = styled.a`\n  background-size: contain;\n  display: inline-block;\n  height: 33px;\n  width: 190px;\n\n  background-image: url(\"${stripeConnectButtonLight}\");\n  &:hover {\n    background-image: url(\"${stripeConnectButtonDark}\");\n  }\n  // Preload image to prevent flash on hover:\n  &:after {\n    content: url(\"${stripeConnectButtonDark}\");\n    position: absolute;\n    left: -50000px;\n  }\n`;\n\nexport interface StripeOauthParams {\n  code?: string;\n  error?: string;\n  error_description?: string;\n}\n\nexport interface DashboardNewsroomStripeConnectOwnProps {\n  newsroomAddress: string;\n}\nexport interface DashboardNewsroomStripeConnectState {\n  connectingStripe?: boolean;\n  connectStripeError?: any;\n}\nexport type DashboardNewsroomStripeConnectProps = WithApolloClient<\n  DashboardNewsroomStripeConnectOwnProps & NewsroomChannelInjectedProps\n>;\n\nexport const CHANNEL_CONNECT_STRIPE_MUTATION = gql`\n  mutation($input: ChannelsConnectStripeInput!) {\n    channelsConnectStripe(input: $input) {\n      id\n    }\n  }\n`;\n\nexport class DashboardNewsroomStripeConnectComponent extends React.Component<\n  DashboardNewsroomStripeConnectProps,\n  DashboardNewsroomStripeConnectState\n> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n  private qsParams: StripeOauthParams;\n\n  constructor(props: DashboardNewsroomStripeConnectProps) {\n    super(props);\n    this.state = {};\n    this.qsParams = qs.parse(document.location.search.substr(1));\n  }\n\n  public async componentDidMount(): Promise<void> {\n    if (this.qsParams.code) {\n      try {\n        this.setState({ connectingStripe: true });\n        await this.props.client.mutate({\n          mutation: CHANNEL_CONNECT_STRIPE_MUTATION,\n          variables: { input: { channelID: this.props.channelData.id, oauthCode: this.qsParams.code } },\n          refetchQueries: [\n            {\n              query: CHANNEL_BY_NEWSROOM_QUERY,\n              variables: {\n                contractAddress: this.props.newsroomAddress,\n              },\n            },\n          ],\n        });\n        this.setState({ connectingStripe: false });\n      } catch (err) {\n        console.error(\"error running channelsConnectStripe mutation:\", err);\n        this.setState({ connectStripeError: err });\n      }\n    }\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StripeContainer>\n          <StripeLogo src={stripeLogo} />\n          {this.renderBody()}\n        </StripeContainer>\n      </>\n    );\n  }\n\n  private renderBody(): JSX.Element {\n    if (!this.props.channelData.currentUserIsAdmin) {\n      return (\n        <>\n          {/*@TODO/tobek When we have a flow for updating newsroom channel admins, add it here*/}\n          <ErrorIcon width={16} height={16} /> You are not an admin for this Newsroom, so you cannot edit its Stripe\n          settings. Please contact an admin to be added.\n        </>\n      );\n    } else if (!this.state.connectingStripe && this.props.channelData.isStripeConnected) {\n      const justConnected = this.qsParams.code;\n      return (\n        <>\n          <p>\n            {justConnected ? \"Connection successful! You are now\" : \"You are currently\"} accepting credit cards through\n            your connected Stripe account.\n          </p>\n          <p>\n            <InvertedButton size={buttonSizes.SMALL} href=\"https://dashboard.stripe.com\" target=\"_blank\">\n              Go to Your Stripe Dashboard\n              <NorthEastArrow color={colors.accent.CIVIL_BLUE} />\n            </InvertedButton>\n          </p>\n          {!justConnected && this.renderStripeConnectButton(\"Connect a different Stripe account\")}\n        </>\n      );\n    } else if (this.state.connectStripeError) {\n      return (\n        <>\n          <p>\n            <ErrorIcon width={16} height={16} /> Sorry, there was an error connecting your Newsroom to your Stripe\n            account:{\" \"}\n            <code>{JSON.stringify(this.state.connectStripeError.message || this.state.connectStripeError)}</code>.\n            Please try again.\n          </p>\n          {this.renderStripeConnectButton()}\n        </>\n      );\n    } else if (this.state.connectingStripe || this.qsParams.code) {\n      return <StyledDashboardLoadingMessage>Connecting your Stripe account</StyledDashboardLoadingMessage>;\n    } else if (this.qsParams.error) {\n      return (\n        <>\n          <p>\n            <ErrorIcon width={16} height={16} /> Error connecting your Stripe account: {this.qsParams.error}:{\" \"}\n            {this.qsParams.error_description}. Please try again.\n          </p>\n          {this.renderStripeConnectButton()}\n        </>\n      );\n    } else {\n      return (\n        <>\n          <p>\n            Allows you to accept credit card payments for your Boosts. Stripe fees will apply. The Boost amounts sent by\n            supporters will go directly into your connected Stripe account. Civil will not keep or hold any of your\n            proceeds.\n          </p>\n          {this.renderStripeConnectButton()}\n        </>\n      );\n    }\n  }\n\n  private renderStripeConnectButton(linkText?: string): JSX.Element {\n    const redirectUrl = `${document.location.origin}/dashboard/newsrooms`;\n    const oauthUrl = `https://connect.stripe.com/oauth/authorize?response_type=code&client_id=${\n      this.context.config.STRIPE_CLIENT_ID\n    }&scope=read_write&redirect_uri=${encodeURIComponent(redirectUrl)}`;\n    return <p>{linkText ? <a href={oauthUrl}>{linkText}</a> : <StripeConnectButtonLink href={oauthUrl} />}</p>;\n  }\n}\n\nexport const DashboardNewsroomStripeConnect = withNewsroomChannel(withApollo(DashboardNewsroomStripeConnectComponent));\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardNewsroomSubmitLink.tsx",
    "content": "import * as React from \"react\";\nimport { SubmitLink } from \"../input\";\nimport gql from \"graphql-tag\";\nimport { Mutation, MutationFunc } from \"react-apollo\";\n\nconst EXTERNAL_LINK_MUTATION = gql`\n  mutation($input: PostCreateExternalLinkInput!) {\n    postsCreateExternalLink(input: $input) {\n      url\n      channelID\n    }\n  }\n`;\n\nexport interface DashboardNewsroomSubmitLinkProps {\n  channelID: string;\n}\n\nexport interface DashboardNewsroomSubmitLinkState {\n  url: string;\n  submitting: boolean;\n  success: boolean;\n  error: boolean;\n}\n\nexport class DashboardNewsroomSubmitLink extends React.Component<\n  DashboardNewsroomSubmitLinkProps,\n  DashboardNewsroomSubmitLinkState\n> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      url: \"\",\n      submitting: false,\n      success: false,\n      error: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <Mutation<any> mutation={EXTERNAL_LINK_MUTATION}>\n        {mutation => {\n          return (\n            <SubmitLink\n              name={\"storyfeed submit link\"}\n              submitting={this.state.submitting}\n              success={this.state.success}\n              error={this.state.error}\n              onChange={this.setURL}\n              onSubmit={async () => this.handleSubmit(mutation)}\n            />\n          );\n        }}\n      </Mutation>\n    );\n  }\n\n  private setURL = (name: string, value: string) => {\n    this.setState({ url: value });\n  };\n\n  private async handleSubmit(mutation: MutationFunc): Promise<void> {\n    this.setState({ submitting: true, error: false, success: false });\n    try {\n      const response = await mutation({\n        variables: {\n          input: {\n            channelID: this.props.channelID,\n            url: this.state.url,\n          },\n        },\n      });\n      if (response && response.data && response.data.postsCreateExternalLink) {\n        this.setState({ success: true });\n      } else {\n        this.setState({ error: true });\n      }\n    } catch (error) {\n      console.log(error);\n      this.setState({ error: true });\n    }\n\n    this.setState({ submitting: false });\n  }\n}\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StyledTab, TabComponentProps } from \"../Tabs\";\nimport { LoadingMessage } from \"../LoadingMessage\";\nimport { Button, InvertedButton } from \"../Button\";\nimport { Dropdown, DropdownGroup, InputBase, InputIcon, DropdownItem } from \"../input\";\nimport { colors, fonts, mediaQueries } from \"@joincivil/elements\";\n\nexport const DashboardStylesNoticeContainer = styled.div`\n  padding: 24px;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nexport const StyledUserActivity = styled.div`\n  background-color: transparent;\n  flex-grow: 1;\n  max-width: 800px;\n  padding-right: 50px;\n  ${mediaQueries.MOBILE} {\n    padding: 0;\n    max-width: 100%;\n  }\n`;\n\nexport const StyledUserActivityContent = styled.div`\n  background-color: ${colors.basic.WHITE};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-top: none;\n`;\n\nexport const StyledDashboardTabsContainer = styled.div`\n  background: ${colors.accent.CIVIL_GRAY_4};\n`;\n\nexport const StyledDashboardTab = styled.li`\n  color: ${(props: TabComponentProps) => (props.isActive ? colors.primary.CIVIL_BLUE_1 : colors.primary.CIVIL_GRAY_1)};\n  border-bottom: ${(props: TabComponentProps) =>\n    props.isActive ? \"3px solid \" + colors.primary.CIVIL_BLUE_1 : \"none\"};\n  cursor: pointer;\n  font-size: 18px;\n  font-weight: ${(props: TabComponentProps) => (props.isActive ? \"bold\" : \"normal\")};\n  line-height: 21px;\n  white-space: nowrap;\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-around;\n  align-items: center;\n  height: 62px;\n`;\n\nexport const StyledSubTabCount = styled.span`\n  display: inline-block;\n  border-radius: 31px;\n  font-size: 12px;\n  line-height: 15px;\n  margin-left: 6px;\n  padding: 3px 10px;\n`;\n\nexport const StyledDashboardSubTab = styled(StyledTab)`\n  white-space: nowrap;\n\n  & ${StyledSubTabCount} {\n    background-color: ${(props: TabComponentProps) =>\n      props.isActive ? colors.accent.CIVIL_TEAL : colors.accent.CIVIL_GRAY_3};\n  }\n`;\n\nexport interface StyledDashboardActivityDescriptionProps {\n  noBorder?: boolean;\n}\n\nexport const StyledDashboardActivityDescription = styled.div<StyledDashboardActivityDescriptionProps>`\n  ${props =>\n    props.noBorder\n      ? \"\"\n      : `\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  `} font-size: 21px;\n  font-weight: 300;\n  line-height: 28px;\n  letter-spacing: -0.14px;\n  padding: 36px 24px;\n`;\n\nexport const StyledUserInfo = styled.div`\n  width: 333px;\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const StyledUserProfile = styled.div`\n  width: 333px;\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-start;\n  margin-bottom: 22px;\n`;\n\nexport const StyledAvatarContainer = styled.div`\n  width: 76px;\n  height: 76px;\n  margin-right: 15px;\n  position: relative;\n  clip-path: circle(38px at center);\n`;\n\nexport const StyledUserAvatar = styled.img`\n  width: 76px;\n  height: 76px;\n  position: absolute;\n  z-index: 999;\n`;\n\nexport const StyledEditAvatar = styled.figure`\n  width: 76px;\n  height: 20px;\n  position: absolute;\n  top: 40px;\n  left: -40px;\n  background-color: #3e3e3e;\n  opacity: 0.5;\n  z-index: 10000;\n`;\n\nexport const StyledEditSpan = styled.span`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: space-around;\n  width: 76px;\n  height: 20px;\n  position: absolute;\n  top: 55px;\n  left: 0px;\n  font-size: 14px;\n  line-height: 17px;\n  font-family: ${fonts.SANS_SERIF_BOLD};\n  font-weight: 700;\n  letter-spacing: 0.22px;\n  color: ${colors.basic.WHITE};\n  z-index: 20000;\n  cursor: pointer;\n`;\n\nexport const StyledUserNoAvatar = styled.div`\n  display: flex;\n  justify-content: space-around;\n  width: 76px;\n  height: 76px;\n  align-items: center;\n  background-color: #ef6b4a;\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.basic.WHITE};\n  text-transform: uppercase;\n  font-size: 50px;\n`;\n\nexport const StyledUserHandleText = styled.span`\n  font-size: 19px;\n  font-weight: 600;\n  height: 23px;\n  letter-spacing: -0.04px;\n  line-height: 23px;\n  max-width: 242px;\n  text-overflow: ellipsis;\n`;\n\nexport const StyledUserEmailText = styled.span`\n  font-size: 16px;\n  font-weight: 400;\n  height: 23px;\n  letter-spacing: -0.04px;\n  line-height: 23px;\n`;\n\nexport const StyledUserSetEmailText = styled.span`\n  font-size: 12px;\n  font-weight: 300;\n  height: 23px;\n  letter-spacing: -0.04px;\n  line-height: 23px;\n  color: ${colors.accent.CIVIL_BLUE};\n  cursor: pointer;\n`;\n\nexport const StyledChangeUserEmailText = styled.span`\n  font-size: 12px;\n  font-weight: 300;\n  height: 23px;\n  letter-spacing: -0.04px;\n  line-height: 23px;\n  margin-left: 2px;\n  color: ${colors.accent.CIVIL_BLUE};\n  cursor: pointer;\n`;\n\nexport const StyledChangeUserAvatarText = styled.span`\n  font-size: 12px;\n  font-weight: 300;\n  height: 23px;\n  letter-spacing: -0.04px;\n  line-height: 23px;\n  color: ${colors.accent.CIVIL_BLUE};\n`;\n\nexport const StyledUserEmailContainer = styled.div`\n  flex-direction: row;\n`;\n\nexport const StyledUserHandleAndEmailContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  height: 76px;\n`;\n\nexport const StyledUserInfoSectionLabel = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-size: 12px;\n  font-weight: 800;\n  letter-spacing: 0.93px;\n  line-height: 15px;\n  text-transform: uppercase;\n`;\n\nexport const StyledUserInfoSectionValue = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 12px;\n  font-weight: 600;\n  line-height: 15px;\n  text-align: right;\n\n  & strong {\n    display: block;\n    font-size: 18px;\n    font-weight: bold;\n    line-height: 21px;\n  }\n`;\n\nexport const StyledUserInfoSection = styled.div`\n  display: flex;\n  margin: 24px 0;\n  min-height: 30px;\n  justify-content: space-between;\n\n  ${StyledUserInfoSectionLabel} {\n    width: 40%;\n  }\n`;\n\nexport const StyledUserInfoButtonSection = styled.div`\n  margin: 24px 0;\n\n  & ${Button}, & ${InvertedButton} {\n    margin: 0 0 19px;\n    padding: 14px 0;\n    text-align: center;\n    text-transform: none;\n    width: 100%;\n  }\n`;\n\n// '32' == 20% in hexadecimal\nexport const StyledUserAddress = styled.div`\n  border-bottom: 1px solid ${colors.basic.WHITE}32;\n  font-size: 16px;\n  font-family: ${fonts.MONOSPACE};\n  line-height: 26px;\n  padding: 0 0 24px;\n  margin: 15px 0;\n`;\n\n// Activity Items\nexport const StyledDashboardActivityItem = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  box-sizing: border-box;\n  display: flex;\n  padding: 25px 0;\n  margin: 0 25px;\n  justify-content: space-between;\n`;\n\nexport const StyledItemCheckboxContainer = styled.div`\n  margin: 0 23px 0 0;\n  padding: 15px 0 0;\n  width: 20px;\n`;\n\nexport const StyledDashboardActivityItemIcon = styled.div`\n  margin-right: 16px;\n  width: 50px;\n`;\n\nexport const StyledDashboardActivityItemDetails = styled.div`\n  flex-grow: 1;\n  font-size: 14px;\n  line-height: 22px;\n  margin-right: 30px;\n`;\n\nexport const StyledDashboardActivityItemAction = styled.div`\n  align-items: flex-end;\n  display: flex;\n  flex-direction: column;\n  padding-left: 10px;\n  text-align: right;\n  min-width: 30%;\n\n  ${InvertedButton} {\n    display: block;\n    margin: 0 0 27px;\n    white-space: nowrap;\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    font-weight: bold;\n    font-size: 14px;\n    line-height: 14px;\n    white-space: nowrap;\n  }\n`;\n\nexport const StyledDashboardActivityItemTitle = styled.h4`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-weight: 800;\n  font-size: 18px;\n  line-height: 21px;\n  margin: 0 0 10px;\n`;\n\nexport const StyledDashboardActivityItemSubTitle = styled.h4`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-weight: 800;\n  font-size: 18px;\n  line-height: 21px;\n  margin: 10px 0;\n`;\n\nexport const StyledDashbaordActvityItemSectionOuter = styled.div`\n  display: flex;\n  justify-content: space-between;\n`;\n\nexport const StyledChallengeSummarySection = styled.div`\n  flex-grow: 1;\n`;\n\nexport const StyledDashbaordActvityItemSection = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  background: ${colors.accent.CIVIL_GRAY_5};\n  box-shadow: inset 0 -1px 0 0 ${colors.accent.CIVIL_GRAY_4};\n  padding: 10px 24px 21px;\n`;\n\nexport const StyledDashbaordActvityItemHeader = styled.div`\n  font-size: 16px;\n  font-weight: 500;\n  line-height: 33px;\n  margin: 0 0 8px;\n`;\n\nexport const StyledDashbaordActvityItemSectionInner = styled.div`\n  padding-left: 23px;\n`;\n\nexport const StyledChallengeIDKicker = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 12px;\n  font-weight: 600;\n  line-height: 15px;\n  margin: 0 0 3px;\n  text-transform: uppercase;\n`;\n\nexport const StyledNewsroomName = styled.div`\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 33px;\n  margin: 0;\n`;\n\nexport const StyledNumTokensContainer = styled.div`\n  color: ${colors.accent.CIVIL_BLUE};\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 18px;\n  padding: 15px 0 0;\n  text-align: right;\n`;\n\n// Transfer Tokens\n\nexport const StyledTransferTokenTitle = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  text-align: center;\n  margin: 0 0 40px;\n  padding: 20px;\n  flex-grow: 1;\n\n  h3 {\n    font-size: 20px;\n    font-weight: bold;\n    line-height: 32px;\n    margin: 0 0 10px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 16px;\n    line-height: 26px;\n    margin: 0;\n  }\n`;\n\nexport const StyledTransferTokenForm = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-weight: 400;\n  margin: 0 auto 45px;\n  padding: 35px;\n`;\n\nexport const StyledTransferTokenFormGroup = styled.div`\n  margin: 0 auto;\n  max-width: 460px;\n\n  ${Dropdown} {\n    border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n    border-radius: 3px;\n    font-size: 15px;\n    margin-top: 5px;\n\n    & > div:nth-child(2) > div {\n      border-top: none;\n      box-shadow: none;\n      left: -1px;\n      top: -1px;\n      width: calc(100% + 2px);\n      max-width: unset;\n\n      :before,\n      :after {\n        display: none;\n      }\n    }\n\n    ${DropdownGroup} {\n      li {\n        border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n        display: flex;\n        justify-content: space-between;\n      }\n    }\n\n    ${DropdownItem} {\n      padding: 0;\n\n      button {\n        background-color: transparent;\n        border: none;\n        cursor: pointer;\n        padding: 17px 50px 17px 15px;\n        width: 100%;\n      }\n    }\n  }\n\n  ${InputBase} {\n    margin-bottom: 3px;\n    position: relative;\n\n    > input,\n    > textarea {\n      border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n      border-radius: 3px;\n      padding: 15px;\n    }\n\n    > input:focus,\n    > textarea:focus {\n      border: 1px solid ${colors.accent.CIVIL_BLUE};\n    }\n  }\n\n  label {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 14px;\n  }\n\n  ${InputIcon} {\n    background-color: ${colors.basic.WHITE};\n    left: calc(100% - 50px);\n    position: absolute;\n    top: 42px;\n    z-index: 2;\n  }\n`;\n\nexport const StyledTransferTokenFormElement = styled.div`\n  margin-bottom: 25px;\n`;\n\nexport const StyledInputLabel = styled.label`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 14px;\n`;\n\nexport const StyledTransferTokenTip = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 13px;\n  line-height: 18px;\n`;\n\nexport const StyledTransferTokenDropdown = styled.div`\n  padding: 17px 50px 17px 15px;\n  position: relative;\n`;\n\nexport const StyledTransferTokenBalance = styled.div`\n  display: flex;\n  font-size: 15px;\n  justify-content: space-between;\n  width: 100%;\n`;\n\nexport const StyledDropdownArrow = styled.div`\n  align-items: center;\n  border-left: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  display: flex;\n  justify-content: center;\n  padding: 12px 15px 12px 14px;\n  position: absolute;\n  right: 0;\n  top: calc(50% - 14px);\n`;\n\nexport const StyledFromBalance = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  border-radius: 3px;\n  margin-top: 5px;\n  padding: 17px 15px;\n`;\n\n// Newsroom tab\nexport const StyledDashboardNewsroom = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  box-sizing: border-box;\n  padding: 25px 0;\n  margin: 0 25px;\n\n  p {\n    font-size: 14px;\n    line-height: 20px;\n  }\n`;\n\nexport const StyledDashboardNewsroomName = styled.div`\n  color: ${colors.primary.BLACK};\n  font-size: 24px;\n  line-height: 29px;\n`;\n\nexport const StyledDashboardNewsroomSection = styled.div`\n  margin: 0 0 26px;\n\n  & ~ & {\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    padding: 14px 0 0;\n  }\n`;\n\nexport const StyledDashboardNewsroomHdr = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 18px;\n  line-height: 33px;\n  margin-bottom: 15px;\n`;\n\nexport const StyledDashboardNewsroomSubHdr = styled.div`\n  font-size: 16px;\n  font-weight: 700;\n  letter-spacing: 0.2px;\n  line-height: 25px;\n`;\n\nexport const StyledDashboardNewsroomTerHdr = styled.p`\n  font-size: 14px;\n  font-weight: 700;\n  line-height: 20px;\n  margin: 30px 0 10px;\n`;\n\nexport const StyledDashboardNewsroomSectionContentRow = styled.div`\n  display: flex;\n  justify-content: space-between;\n`;\n\nexport const StyledDashboardNewsroomLinks = styled.div`\n  text-align: right;\n\n  a {\n    display: block;\n    font-size: 13px;\n    letter-spacing: 0.2px;\n    line-height: 14px;\n    margin: 0 0 20px;\n  }\n`;\n\nexport const StyledDashboardNewsroomBorder = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 10px 0 20px;\n`;\n\nexport const StyledWarningText = styled.span`\n  color: ${colors.accent.CIVIL_RED};\n\n  & svg {\n    margin: 0 2px -3px 0;\n  }\n`;\n\nexport const StyledDashboardNewsroomTokensContainer = styled.div`\n  text-align: left;\n  width: 30%;\n`;\n\nexport const StyledDashboardNewsroomTokensLabel = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 14px;\n  line-height: 20px;\n  margin: 7px 0 0;\n`;\n\nexport const StyledCVLLabel = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 12px;\n  font-weight: bold;\n  letter-spacing: -0.07px;\n  line-height: 15px;\n`;\n\n// No Content\nexport const StyledDashboardNoContent = styled.div`\n  margin: 0 auto;\n  padding: 60px 0 60px;\n  text-align: center;\n  flex-grow: 1;\n  width: 740px;\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const StyledDashboardNoContentHdr = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 21px;\n  font-weight: 500;\n  letter-spacing: -0.14px;\n  line-height: 33px;\n  margin: 17px 0 2px;\n`;\n\nexport const StyledDashboardNoContentCopy = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 16px;\n  line-height: 30px;\n  margin: 0 0 24px;\n`;\n\nexport const StyledDashboardNoContentButtonContainer = styled.div`\n  ${InvertedButton} {\n    font-size: 13px;\n    font-weight: bold;\n    letter-spacing: 0.2px;\n    line-height: 14px;\n    padding: 14px 0;\n    text-transform: none;\n    width: 236px;\n  }\n`;\n\n// @ts-ignore: Looks like `React.FunctionComponent` type (which `LoadingMessage` is) doesn't play nicely with `styled` typings\nexport const StyledDashboardLoadingMessage = styled(LoadingMessage)`\n  padding-top: 0;\n  p {\n    margin-top: 18px;\n  }\n`;\n\nexport const StyledEmbedCode = styled.pre`\n  background: ${colors.accent.CIVIL_GRAY_5};\n  margin-bottom: 10px;\n  padding: 8px;\n  white-space: pre-wrap;\n  width: 100%;\n  word-break: break-word;\n`;\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { StyledTransferTokenTitle, StyledTransferTokenTip } from \"./DashboardStyledComponents\";\n\nexport const SubTabAllChallengesVotedText: React.FunctionComponent = props => <>All</>;\n\nexport const SubTabRevealVoteText: React.FunctionComponent = props => <>Reveal Vote</>;\n\nexport const SubTabClaimRewardsText: React.FunctionComponent = props => <>Claim Rewards</>;\n\nexport const SubTabRescueTokensText: React.FunctionComponent = props => <>Rescue Tokens</>;\n\nexport const SubTabReclaimTokensText: React.FunctionComponent = props => <>Transfer Voting Tokens</>;\n\nexport const SubTabChallengesCompletedText: React.FunctionComponent = props => <>Completed</>;\n\nexport const SubTabChallengesStakedText: React.FunctionComponent = props => <>Staked</>;\n\nexport const MyVotingTabText: React.FunctionComponent = props => <>Tasks</>;\n\nexport const MyNewsroomsTabText: React.FunctionComponent = props => <>Newsrooms</>;\n\nexport const MyChallengesTabText: React.FunctionComponent = props => <>Challenges</>;\n\nexport const ClaimRewardsDescriptionText: React.FunctionComponent = props => <>Claim rewards from your winning votes</>;\n\nexport const RescueTokensDescriptionText: React.FunctionComponent = props => (\n  <>Reclaim your voting tokens from votes that you did not reveal</>\n);\n\nexport const YourPublicAddressLabelText: React.FunctionComponent = props => <>Your Public Address</>;\n\nexport const BalanceLabelText: React.FunctionComponent = props => <>Available Balance</>;\n\nexport const VotingBalanceLabelText: React.FunctionComponent = props => <>Voting Tokens</>;\n\nexport const ChallengesWonLabelText: React.FunctionComponent = props => <>Challenges Won</>;\n\nexport const RewardsClaimedLabelText: React.FunctionComponent = props => <>Rewards Claimed</>;\n\nexport const NoTasks: React.FunctionComponent = props => (\n  <StyledTransferTokenTitle>\n    <h3>No Tasks</h3>\n    <p>\n      You don't have any tasks right now. Tasks represent actions you need to take (or have taken) related to Civil's\n      governance. Action items will appear here if you participate in a Newsroom Challenge.\n    </p>\n  </StyledTransferTokenTitle>\n);\n\nexport const NoVotesToReveal: React.FunctionComponent = props => (\n  <StyledTransferTokenTitle>\n    <h3>No Votes to Reveal</h3>\n    <p>You don't have any votes to reveal right now.</p>\n  </StyledTransferTokenTitle>\n);\n\nexport const NoRewardsToClaim: React.FunctionComponent = props => (\n  <StyledTransferTokenTitle>\n    <h3>No Rewards to Claim</h3>\n    <p>You don't have any rewards to claim right now.</p>\n  </StyledTransferTokenTitle>\n);\n\nexport const NoTokensToRescue: React.FunctionComponent = props => (\n  <StyledTransferTokenTitle>\n    <h3>No Tokens to Rescue</h3>\n    <p>You don't have any tokens to rescue right now.</p>\n  </StyledTransferTokenTitle>\n);\n\nexport const NoChallenges: React.FunctionComponent = props => (\n  <StyledTransferTokenTitle>\n    <h3>No Challenges</h3>\n    <p>You haven't participated in any challenges yet.</p>\n  </StyledTransferTokenTitle>\n);\n\nexport const TransferTokenText: React.FunctionComponent = props => (\n  <StyledTransferTokenTitle>\n    <h3>Transfer Tokens</h3>\n    <p>\n      Transfer tokens between your Available Balance and Voting Balance. Use tokens in your Available Balance to apply,\n      challenge, send or sell. Use tokens in your Voting Balance to vote in challenges. You may transfer any inactive\n      voting tokens to your Available Balance.\n    </p>\n  </StyledTransferTokenTitle>\n);\n\nexport const TransferTokenTipsText: React.FunctionComponent = props => (\n  <StyledTransferTokenTip>\n    <b>Tip:</b> We recommend reserving some tokens in your available balance if you plan on applying, challenging, or\n    tipping newsrooms.\n  </StyledTransferTokenTip>\n);\n\nexport const MetaMaskPopUpText: React.FunctionComponent = props => (\n  <StyledTransferTokenTip>This will pop-up MetaMask window to confirm your transactions</StyledTransferTokenTip>\n);\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardTransferTokenForm.tsx",
    "content": "import * as React from \"react\";\nimport {\n  StyledTransferTokenForm,\n  StyledTransferTokenFormGroup,\n  StyledTransferTokenFormElement,\n  StyledTransferTokenDropdown,\n  StyledDropdownArrow,\n  StyledTransferTokenBalance,\n  StyledFromBalance,\n} from \"./DashboardStyledComponents\";\nimport {\n  BalanceLabelText,\n  VotingBalanceLabelText,\n  TransferTokenText,\n  MetaMaskPopUpText,\n} from \"./DashboardTextComponents\";\nimport { Dropdown, DropdownGroup, DropdownItem } from \"../input\";\nimport { DropdownArrow } from \"../icons\";\n\nexport enum BalanceType {\n  AVAILABLE_BALANCE = 0,\n  TOKEN_VOTING_BALANCE = 1,\n}\n\nexport interface TransferTokenDropdownOptionProps {\n  label: string | JSX.Element;\n  cvl: string;\n}\n\nexport const TransferTokenBalance: React.FunctionComponent<TransferTokenDropdownOptionProps> = props => {\n  return (\n    <StyledTransferTokenBalance>\n      <span>{props.label}</span>\n      <span>{props.cvl}</span>\n    </StyledTransferTokenBalance>\n  );\n};\n\nexport interface TransferTokenDropdownSelectedProps {\n  label: string | JSX.Element;\n}\n\nexport const TransferTokenDropdownSelected: React.FunctionComponent<TransferTokenDropdownSelectedProps> = props => {\n  return (\n    <StyledTransferTokenDropdown>\n      {props.label}\n      <StyledDropdownArrow>\n        <DropdownArrow />\n      </StyledDropdownArrow>\n    </StyledTransferTokenDropdown>\n  );\n};\n\nexport interface DashboardTransferTokenFormProps {\n  cvlAvailableBalance: string;\n  cvlVotingBalance: string;\n  renderTransferBalance(value: number): void;\n}\n\nexport interface DashboardTransferTokenFormStates {\n  dropdownValue: string | JSX.Element;\n  fromValue: string | JSX.Element;\n}\n\nexport class DashboardTransferTokenForm extends React.Component<\n  DashboardTransferTokenFormProps,\n  DashboardTransferTokenFormStates\n> {\n  constructor(props: DashboardTransferTokenFormProps) {\n    super(props);\n    this.state = {\n      dropdownValue: <TransferTokenBalance cvl={this.props.cvlAvailableBalance} label={<BalanceLabelText />} />,\n      fromValue: <TransferTokenBalance cvl={this.props.cvlVotingBalance} label={<VotingBalanceLabelText />} />,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledTransferTokenForm>\n        <TransferTokenText />\n        <StyledTransferTokenFormGroup>\n          <StyledTransferTokenFormElement>\n            <label>From</label>\n            <Dropdown position=\"left\" target={<TransferTokenDropdownSelected label={this.state.dropdownValue} />}>\n              <DropdownGroup>\n                <DropdownItem>\n                  <button onClick={() => this.onClick(BalanceType.AVAILABLE_BALANCE)}>\n                    <TransferTokenBalance cvl={this.props.cvlAvailableBalance} label={<BalanceLabelText />} />\n                  </button>\n                </DropdownItem>\n                <DropdownItem>\n                  <button onClick={() => this.onClick(BalanceType.TOKEN_VOTING_BALANCE)}>\n                    <TransferTokenBalance cvl={this.props.cvlVotingBalance} label={<VotingBalanceLabelText />} />\n                  </button>\n                </DropdownItem>\n              </DropdownGroup>\n            </Dropdown>\n          </StyledTransferTokenFormElement>\n          <StyledTransferTokenFormElement>\n            <label>To</label>\n            <StyledFromBalance>{this.state.fromValue}</StyledFromBalance>\n          </StyledTransferTokenFormElement>\n          {this.props.children}\n          <MetaMaskPopUpText />\n        </StyledTransferTokenFormGroup>\n      </StyledTransferTokenForm>\n    );\n  }\n\n  private onClick = (value: number) => {\n    if (value === BalanceType.AVAILABLE_BALANCE) {\n      this.setState({\n        dropdownValue: <TransferTokenBalance cvl={this.props.cvlAvailableBalance} label={<BalanceLabelText />} />,\n        fromValue: <TransferTokenBalance cvl={this.props.cvlVotingBalance} label={<VotingBalanceLabelText />} />,\n      });\n    } else {\n      this.setState({\n        dropdownValue: <TransferTokenBalance cvl={this.props.cvlVotingBalance} label={<VotingBalanceLabelText />} />,\n        fromValue: <TransferTokenBalance cvl={this.props.cvlAvailableBalance} label={<BalanceLabelText />} />,\n      });\n    }\n    this.props.renderTransferBalance(value);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardTypes.ts",
    "content": "export interface DashboardActivityItemBaseProps {\n  viewDetailURL?: string;\n}\n\nexport interface DashboardActivityItemLogo {\n  logoUrl?: string;\n}\n\nexport interface DashboardActivityItemTitleProps {\n  title: string;\n}\n\nexport interface DashboardActivityItemCTAButtonProps {\n  listingDetailURL?: string;\n  inCommitPhase: boolean;\n  inRevealPhase: boolean;\n  canRequestAppeal: boolean;\n  canResolveChallenge: boolean;\n  isAwaitingAppealChallenge: boolean;\n  canListingAppealBeResolved: boolean;\n  isAppealChallengeInCommitStage: boolean;\n  isAppealChallengeInRevealStage: boolean;\n  canListingAppealChallengeBeResolved: boolean;\n  didUserCommit?: boolean;\n  didUserReveal?: boolean;\n  canUserCollect?: boolean;\n  canUserRescue?: boolean;\n  onClick?(): void;\n}\n\nexport interface DashboardActivityItemProposalCTAButtonProps {\n  propDetailURL?: string;\n  canUserReveal?: boolean;\n  didUserCommit?: boolean;\n  didUserReveal?: boolean;\n  canUserCollect?: boolean;\n  canUserRescue?: boolean;\n  canResolveChallenge?: boolean;\n  onClick?(): void;\n}\n\nexport interface DashboardActivityItemProps\n  extends DashboardActivityItemBaseProps,\n    DashboardActivityItemLogo,\n    DashboardActivityItemTitleProps {}\n\nexport interface DashboardActivityProposalItemProps\n  extends DashboardActivityItemBaseProps,\n    DashboardActivityItemLogo,\n    DashboardActivityItemTitleProps {}\n\nexport interface DashboardActivitySelectableItemProps\n  extends DashboardActivityItemBaseProps,\n    DashboardActivityItemTitleProps {\n  numTokens?: string;\n  challengeID?: string;\n  appealChallengeID?: string;\n  salt?: any;\n  toggleSelect?(challengeID: string, isSelected: boolean, salt: any): void;\n}\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardUserInfoSummary.tsx",
    "content": "import * as React from \"react\";\nimport {\n  StyledUserInfo,\n  StyledUserInfoSection,\n  StyledUserInfoButtonSection,\n  StyledUserInfoSectionLabel,\n  StyledUserInfoSectionValue,\n  StyledUserAddress,\n} from \"./DashboardStyledComponents\";\nimport {\n  YourPublicAddressLabelText,\n  BalanceLabelText,\n  VotingBalanceLabelText,\n  ChallengesWonLabelText,\n  RewardsClaimedLabelText,\n} from \"./DashboardTextComponents\";\nimport { Button, buttonSizes } from \"../Button\";\n\nexport interface DashboardUserInfoSummaryProps {\n  userAccount: string;\n  balance: string;\n  votingBalance: string;\n  challengesWonTotalCvl?: string;\n  rewardsEarned?: string;\n  buyCvlUrl: string;\n}\n\nexport const DashboardUserInfoSummary = (props: DashboardUserInfoSummaryProps) => {\n  const { buyCvlUrl, challengesWonTotalCvl, rewardsEarned } = props;\n\n  let buyBtnProps: any = { href: buyCvlUrl };\n  if (buyCvlUrl.charAt(0) === \"/\") {\n    buyBtnProps = { to: buyCvlUrl };\n  }\n\n  return (\n    <StyledUserInfo>\n      <StyledUserInfoSectionLabel>\n        <YourPublicAddressLabelText />\n      </StyledUserInfoSectionLabel>\n      <StyledUserAddress>{props.userAccount}</StyledUserAddress>\n\n      <StyledUserInfoSection>\n        <StyledUserInfoSectionLabel>\n          <BalanceLabelText />\n        </StyledUserInfoSectionLabel>\n        <StyledUserInfoSectionValue>\n          <strong>{props.balance}</strong>\n        </StyledUserInfoSectionValue>\n      </StyledUserInfoSection>\n\n      <StyledUserInfoSection>\n        <StyledUserInfoSectionLabel>\n          <VotingBalanceLabelText />\n        </StyledUserInfoSectionLabel>\n        <StyledUserInfoSectionValue>\n          <strong>{props.votingBalance}</strong>\n        </StyledUserInfoSectionValue>\n      </StyledUserInfoSection>\n\n      {challengesWonTotalCvl && (\n        <StyledUserInfoSection>\n          <>\n            <StyledUserInfoSectionLabel>\n              <ChallengesWonLabelText />\n            </StyledUserInfoSectionLabel>\n            <StyledUserInfoSectionValue>\n              <strong>{challengesWonTotalCvl}</strong>\n            </StyledUserInfoSectionValue>\n          </>\n        </StyledUserInfoSection>\n      )}\n\n      {rewardsEarned && (\n        <StyledUserInfoSection>\n          <>\n            <StyledUserInfoSectionLabel>\n              <RewardsClaimedLabelText />\n            </StyledUserInfoSectionLabel>\n            <StyledUserInfoSectionValue>\n              <strong>{rewardsEarned}</strong>\n            </StyledUserInfoSectionValue>\n          </>\n        </StyledUserInfoSection>\n      )}\n\n      <StyledUserInfoButtonSection>\n        <Button size={buttonSizes.MEDIUM_WIDE} {...buyBtnProps}>\n          Buy or Sell Civil Tokens\n        </Button>\n      </StyledUserInfoButtonSection>\n    </StyledUserInfo>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/DashboardUserProfileSummary.tsx",
    "content": "import * as React from \"react\";\nimport {\n  StyledUserProfile,\n  StyledUserHandleAndEmailContainer,\n  StyledUserAvatar,\n  StyledUserHandleText,\n  StyledUserEmailText,\n  StyledUserNoAvatar,\n  StyledAvatarContainer,\n} from \"./DashboardStyledComponents\";\n\nexport interface DashboardUserProfileSummaryProps {\n  userAvatarImgDataURL: string;\n  userHandle: string;\n  userEmailAddress: string;\n}\n\nexport const DashboardUserProfileSummary = (props: DashboardUserProfileSummaryProps) => {\n  const {\n    userAvatarImgDataURL,\n    userHandle,\n    userEmailAddress,\n  } = props;\n  const initial = userHandle ? userHandle.charAt(0) : \"?\";\n  return (\n    <StyledUserProfile>\n      {userAvatarImgDataURL && (\n        <StyledAvatarContainer>\n          <StyledUserAvatar src={userAvatarImgDataURL} />\n        </StyledAvatarContainer>\n      )}\n      {!userAvatarImgDataURL && (\n        <StyledAvatarContainer>\n          <StyledUserNoAvatar>{initial}</StyledUserNoAvatar>\n        </StyledAvatarContainer>\n      )}\n      <StyledUserHandleAndEmailContainer>\n        <StyledUserHandleText>{userHandle}</StyledUserHandleText>\n        {userEmailAddress && <StyledUserEmailText>{userEmailAddress}</StyledUserEmailText>}\n      </StyledUserHandleAndEmailContainer>\n    </StyledUserProfile>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/NoNewsrooms.tsx",
    "content": "import * as React from \"react\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { DashboardNewsroomApplicationIcon } from \"../icons\";\nimport { InvertedButton } from \"../Button\";\n\nimport {\n  StyledDashboardNoContent,\n  StyledDashboardNoContentHdr,\n  StyledDashboardNoContentCopy,\n  StyledDashboardNoContentButtonContainer,\n} from \"./DashboardStyledComponents\";\n\nexport interface NoNewsroomsProps {\n  hasInProgressApplication?: boolean;\n  applyToRegistryURL: string;\n}\n\nexport const NoNewsrooms: React.FunctionComponent<NoNewsroomsProps> = props => {\n  const { hasInProgressApplication, applyToRegistryURL } = props;\n\n  let hdrText = \"You don't have any Newsrooms on the Registry\";\n  let copy = (\n    <>\n      <a href={links.FAQ_APPLY_TO_REGISTRY_SECTION} target=\"_blank\">\n        Learn how to join as a Newsroom\n      </a>{\" \"}\n      or apply to our network of community-approved Newsrooms on Civil.\n    </>\n  );\n  let buttonText = \"Apply to the Registry\";\n  if (hasInProgressApplication) {\n    hdrText = \"You have an application in progress\";\n    copy = <></>;\n    buttonText = \"Continue your application\";\n  }\n\n  return (\n    <StyledDashboardNoContent>\n      <DashboardNewsroomApplicationIcon />\n      <StyledDashboardNoContentHdr>{hdrText}</StyledDashboardNoContentHdr>\n      <StyledDashboardNoContentCopy>{copy}</StyledDashboardNoContentCopy>\n      <StyledDashboardNoContentButtonContainer>\n        <InvertedButton to={applyToRegistryURL}>{buttonText}</InvertedButton>\n      </StyledDashboardNoContentButtonContainer>\n    </StyledDashboardNoContent>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/TCRUserDashboard/index.ts",
    "content": "export * from \"./Dashboard\";\nexport * from \"./DashboardUserInfoSummary\";\nexport * from \"./DashboardUserProfileSummary\";\nexport * from \"./DashboardActivity\";\nexport * from \"./DashboardActivityItem\";\nexport * from \"./DashboardActivityItemTask\";\nexport * from \"./DashboardActivityItemCTAButton\";\nexport * from \"./DashboardActivityProposalItemCTAButton\";\nexport * from \"./DashboardActivitySelectableItem\";\nexport * from \"./DashboardActivityTabTitle\";\nexport * from \"./DashboardNewsroomStripeConnect\";\nexport * from \"./DashboardStyledComponents\";\nexport * from \"./DashboardTextComponents\";\nexport * from \"./DashboardTransferTokenForm\";\nexport * from \"./DashboardNewsroom\";\nexport * from \"./NoNewsrooms\";\n"
  },
  {
    "path": "packages/components/src/Table/Table.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Table } from \"./Table\";\nimport { Tr } from \"./Tr\";\nimport { Th } from \"./TableHeader\";\nimport { Td } from \"./TableCell\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 600px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Pattern Library / Table\", module).add(\"Default\", () => {\n  return (\n    <Container>\n      <Table width=\"100%\">\n        <Tr>\n          <Th>Default Header</Th>\n          <Th align=\"right\">Right aligned</Th>\n          <Th accent colSpan={2}>\n            Accent Col spanned header\n          </Th>\n        </Tr>\n        <Tr>\n          <Td>Default cell</Td>\n          <Td align=\"right\">Default cell</Td>\n          <Td accent>Pasta</Td>\n          <Td accent>Pho</Td>\n        </Tr>\n        <Tr>\n          <Td>Pizza is delicious</Td>\n          <Td align=\"right\">Ramen is tasty too</Td>\n          <Td accent>Pasta</Td>\n          <Td accent>Pho</Td>\n        </Tr>\n      </Table>\n    </Container>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/Table/Table.tsx",
    "content": "import * as React from \"react\";\nimport { TableProps } from \"./types\";\nimport { StyledTable } from \"./styledComponents\";\n\nexport const Table: React.FunctionComponent<TableProps> = props => (\n  <StyledTable {...props}>{props.children}</StyledTable>\n);\n"
  },
  {
    "path": "packages/components/src/Table/TableCell.tsx",
    "content": "import * as React from \"react\";\nimport { TableCellProps } from \"./types\";\nimport { StyledTableCell } from \"./styledComponents\";\n\nexport const Td: React.FunctionComponent<TableCellProps> = props => {\n  const StyledTableCellComponent = props.StyledTableCellComponent || StyledTableCell;\n  return <StyledTableCellComponent {...props}>{props.children}</StyledTableCellComponent>;\n};\n"
  },
  {
    "path": "packages/components/src/Table/TableHeader.tsx",
    "content": "import * as React from \"react\";\nimport { TableCellProps } from \"./types\";\nimport { StyledTableHeader } from \"./styledComponents\";\n\nexport const Th: React.FunctionComponent<TableCellProps> = props => (\n  <StyledTableHeader {...props}>{props.children}</StyledTableHeader>\n);\n"
  },
  {
    "path": "packages/components/src/Table/Tr.tsx",
    "content": "import * as React from \"react\";\nimport { StyledTableRow } from \"./styledComponents\";\n\nexport const Tr: React.FunctionComponent = props => <StyledTableRow>{props.children}</StyledTableRow>;\n"
  },
  {
    "path": "packages/components/src/Table/__snapshots__/Table.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Table Default 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPz kimPXb\"\n    >\n      <table\n        className=\"sc-LzMFp cZKzAN\"\n        width=\"100%\"\n      >\n        <tr\n          className=\"sc-LzMFs fTiCqb\"\n        >\n          <th\n            className=\"sc-LzMFq jqKGAz\"\n          >\n            Default Header\n          </th>\n          <th\n            className=\"sc-LzMFq hnOYgC\"\n          >\n            Right aligned\n          </th>\n          <th\n            className=\"sc-LzMFq hgUNBL\"\n            colSpan={2}\n          >\n            Accent Col spanned header\n          </th>\n        </tr>\n        <tr\n          className=\"sc-LzMFs fTiCqb\"\n        >\n          <td\n            className=\"sc-LzMFo dQxyMZ\"\n          >\n            Default cell\n          </td>\n          <td\n            className=\"sc-LzMFo krNsgM\"\n          >\n            Default cell\n          </td>\n          <td\n            className=\"sc-LzMFo fuyCWz\"\n          >\n            Pasta\n          </td>\n          <td\n            className=\"sc-LzMFo fuyCWz\"\n          >\n            Pho\n          </td>\n        </tr>\n        <tr\n          className=\"sc-LzMFs fTiCqb\"\n        >\n          <td\n            className=\"sc-LzMFo dQxyMZ\"\n          >\n            Pizza is delicious\n          </td>\n          <td\n            className=\"sc-LzMFo krNsgM\"\n          >\n            Ramen is tasty too\n          </td>\n          <td\n            className=\"sc-LzMFo fuyCWz\"\n          >\n            Pasta\n          </td>\n          <td\n            className=\"sc-LzMFo fuyCWz\"\n          >\n            Pho\n          </td>\n        </tr>\n      </table>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Table\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Table\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          width\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              100%\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Tr\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Th\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Default Header\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Th\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Th\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              align\n                            </span>\n                            <span>\n                              =\n                              <span\n                                style={Object {}}\n                              >\n                                \"\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#22a\",\n                                      \"wordBreak\": \"break-word\",\n                                    }\n                                  }\n                                >\n                                  right\n                                </span>\n                                \"\n                              </span>\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Right aligned\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Th\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Th\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              accent\n                            </span>\n                          </span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              colSpan\n                            </span>\n                            <span>\n                              =\n                              <span\n                                style={Object {}}\n                              >\n                                {\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#a11\",\n                                    }\n                                  }\n                                >\n                                  2\n                                </span>\n                                }\n                              </span>\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Accent Col spanned header\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Th\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Tr\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Tr\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Default cell\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              align\n                            </span>\n                            <span>\n                              =\n                              <span\n                                style={Object {}}\n                              >\n                                \"\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#22a\",\n                                      \"wordBreak\": \"break-word\",\n                                    }\n                                  }\n                                >\n                                  right\n                                </span>\n                                \"\n                              </span>\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Default cell\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              accent\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Pasta\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              accent\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Pho\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Tr\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Tr\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span />\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Pizza is delicious\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              align\n                            </span>\n                            <span>\n                              =\n                              <span\n                                style={Object {}}\n                              >\n                                \"\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#22a\",\n                                      \"wordBreak\": \"break-word\",\n                                    }\n                                  }\n                                >\n                                  right\n                                </span>\n                                \"\n                              </span>\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Ramen is tasty too\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              accent\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Pasta\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;\n                          Td\n                        </span>\n                        <span>\n                          <span>\n                             \n                            <span\n                              style={Object {}}\n                            >\n                              accent\n                            </span>\n                            \n                          </span>\n                        </span>\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &gt;\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 78,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          Pho\n                        </span>\n                      </div>\n                      <div\n                        style={\n                          Object {\n                            \"paddingLeft\": 63,\n                            \"paddingRight\": 3,\n                          }\n                        }\n                      >\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          &lt;/\n                          Td\n                          &gt;\n                        </span>\n                      </div>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Tr\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Table\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Table\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Td\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Th\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tr\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Table/index.ts",
    "content": "export * from \"./Table\";\nexport * from \"./Tr\";\nexport * from \"./TableHeader\";\nexport * from \"./TableCell\";\nexport { StyledTableAccentText } from \"./styledComponents\";\n"
  },
  {
    "path": "packages/components/src/Table/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport {\n  StyledDurationContainer,\n  StyledCountdownLabel,\n  StyledCountdownLabelWarn,\n} from \"../PhaseCountdown/TextCountdownTimer\";\n\nimport { TableProps, TableCellProps } from \"./types\";\n\nexport const StyledTableCell = styled.td`\n  background-color: ${(props: TableCellProps) => (props.accent ? colors.accent.CIVIL_GRAY_4 + \"7D\" : \"transparent\")};\n  border: solid ${colors.accent.CIVIL_GRAY_4};\n  border-width: ${(props: TableCellProps) => props.borderWidth || \"1px 0\"};\n  padding: ${(props: TableCellProps) => (props.padding !== undefined ? props.padding : \"20px 16px\")};\n  text-align: ${(props: TableCellProps) => props.align || \"left\"};\n`;\n\nexport const StyledTable = styled.table`\n  border: solid ${colors.accent.CIVIL_GRAY_4};\n  border-width: ${(props: TableProps) => props.borderWidth || \"1px\"};\n  border-collapse: collapse;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  line-height: 19px;\n\n  & ${StyledTableCell} {\n    border-width: ${(props: TableProps) => props.borderWidth || \"1px 0\"};\n  }\n\n  ${mediaQueries.MOBILE} {\n    font-size: 14px;\n    letter-spacing: -0.09px;\n    line-height: 17px;\n  }\n`;\n\nexport const StyledTableHeader = styled.th`\n  background-color: ${(props: TableCellProps) =>\n    props.accent ? colors.accent.CIVIL_BLUE_VERY_FADED : colors.accent.CIVIL_GRAY_4};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-weight: 600;\n  letter-spacing: -0.11px;\n  padding: 20px 16px;\n  text-align: ${(props: TableCellProps) => props.align || \"left\"};\n\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport interface StyledTabAccentTextProps {\n  strong?: boolean;\n}\n\nexport const StyledTableAccentText = styled.span`\n  color: ${colors.accent.CIVIL_BLUE};\n  cursor: pointer;\n  font-weight: ${(props: StyledTabAccentTextProps) => (props.strong ? \"bold\" : \"normal\")};\n`;\n\nexport const StyledTableRow = styled.tr`\n  ${mediaQueries.HOVER} {\n    &:hover ${StyledTableCell} {\n      background-color: ${colors.accent.CIVIL_BLUE};\n      color: ${colors.basic.WHITE} !important;\n    }\n\n    // prettier-ignore\n    &:hover ${StyledTableAccentText},\n    &:hover ${StyledDurationContainer},\n    &:hover ${StyledCountdownLabel},\n    &:hover ${StyledCountdownLabelWarn} {\n      color: ${colors.basic.WHITE} !important;\n    }\n\n    &:hover svg g {\n      fill: ${colors.basic.WHITE} !important;\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Table/types.ts",
    "content": "export interface TableProps {\n  borderWidth?: string;\n  width?: string;\n}\n\nexport interface TableCellProps {\n  accent?: boolean;\n  align?: any; // not sure why `string` was causing compiler issues, but it was. TODO(nickreynolds): investigate\n  borderWidth?: string;\n  colSpan?: number;\n  padding?: number;\n  rowSpan?: number;\n  StyledTableCellComponent?: any;\n  width?: string;\n}\n"
  },
  {
    "path": "packages/components/src/Tabs/Tab.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { fonts, colors } from \"../styleConstants\";\n\nexport interface TabProps {\n  title: string | JSX.Element;\n  isActive?: boolean;\n  isResponsiveAndVisible?: boolean;\n  index?: number;\n  children: React.ReactChild;\n  TabComponent?: any;\n  badgeNum?: number;\n  onClick?(index: number): void;\n}\n\nexport interface TabComponentProps {\n  isActive?: boolean;\n  isResponsiveAndVisible?: boolean;\n  onClick?(e: any): void;\n}\n\nconst StyledLi = styled.li`\n  border-bottom: ${(props: TabComponentProps) => (props.isActive ? \"3px solid #01a0d2\" : \"none\")};\n  box-sizing: border-box;\n  font-family: ${props => props.theme.sansSerifFont};\n  font-weight: ${(props: TabComponentProps) => (props.isActive ? \"600\" : \"400\")};\n  margin-bottom: 0;\n  padding: 3px 0 18px;\n  text-align: center;\n  cursor: ${(props: TabComponentProps) => (props.isActive ? \"default\" : \"pointer\")};\n\n  & a {\n    color: inherit;\n  }\n  flex-grow: 1;\n`;\n\nStyledLi.defaultProps = {\n  theme: {\n    sansSerifFont: fonts.SANS_SERIF,\n  },\n};\n\nexport const Count = styled.span`\n  font-weight: 400;\n`;\n\nconst StyledBadge = styled.figure`\n  position: absolute;\n  top: -20px;\n  right: -60px;\n  border-radius: 10px;\n  background: ${colors.accent.CIVIL_RED_2};\n  color: white;\n  font-size: 10px;\n  font-weight: 400;\n  width: 20px;\n  height: 20px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: space-around;\n`;\n\nconst StyledTabTitle = styled.div`\n  position: relative;\n  display: inline-block;\n`;\n\nexport class Tab extends React.Component<TabProps> {\n  public render(): JSX.Element {\n    const { badgeNum } = this.props;\n    const TabComponent = this.props.TabComponent || StyledLi;\n    const displayBadge = badgeNum && badgeNum > 0;\n    let badgeCount = \"\";\n    if (displayBadge) {\n      if (badgeNum! > 99) {\n        badgeCount = \"99+\";\n      } else {\n        badgeCount = badgeNum + \"\";\n      }\n    }\n    return (\n      <TabComponent\n        isActive={this.props.isActive}\n        isResponsiveAndVisible={this.props.isResponsiveAndVisible}\n        onClick={this.onClick}\n      >\n        <StyledTabTitle>\n          {this.props.title}\n          {displayBadge && <StyledBadge>{badgeCount}</StyledBadge>}\n        </StyledTabTitle>\n      </TabComponent>\n    );\n  }\n  private onClick = () => {\n    this.props.onClick!(this.props.index!);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Tabs/TabTitles.tsx",
    "content": "import * as React from \"react\";\nimport { StyledTabCount } from \"./TabsStyled\";\nimport {\n  TabNewApplicationsText,\n  TabUnderChallengeText,\n  TabAppealToCouncilText,\n  TabChallengeCouncilAppealText,\n  TabReadyToUpdateText,\n} from \"./textComponents\";\n\nexport interface TabTitleProps {\n  count?: number;\n}\n\nconst TabTitle: React.FunctionComponent<TabTitleProps> = props => {\n  return (\n    <>\n      {props.children}\n      <StyledTabCount>{props.count || \"0\"}</StyledTabCount>\n    </>\n  );\n};\n\nexport const NewApplicationsTabTitle: React.FunctionComponent<TabTitleProps> = props => {\n  return (\n    <TabTitle count={props.count}>\n      <TabNewApplicationsText />\n    </TabTitle>\n  );\n};\n\nexport const UnderChallengeTabTitle: React.FunctionComponent<TabTitleProps> = props => {\n  return (\n    <TabTitle count={props.count}>\n      <TabUnderChallengeText />\n    </TabTitle>\n  );\n};\n\nexport const AppealToCouncilTabTitle: React.FunctionComponent<TabTitleProps> = props => {\n  return (\n    <TabTitle count={props.count}>\n      <TabAppealToCouncilText />\n    </TabTitle>\n  );\n};\n\nexport const ChallengeCouncilAppealTabTitle: React.FunctionComponent<TabTitleProps> = props => {\n  return (\n    <TabTitle count={props.count}>\n      <TabChallengeCouncilAppealText />\n    </TabTitle>\n  );\n};\n\nexport const ReadyToUpdateTabTitle: React.FunctionComponent<TabTitleProps> = props => {\n  return (\n    <TabTitle count={props.count}>\n      <TabReadyToUpdateText />\n    </TabTitle>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tabs/Tabs.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Tabs } from \"./Tabs\";\nimport { Tab } from \"./Tab\";\nimport {\n  StyledTabNav,\n  StyledTabLarge,\n  StyledSquarePillTabNav,\n  StyledSquarePillTab,\n  StyledRoundPillTabNav,\n  StyledRoundPillTab,\n  StyledTab,\n} from \"./TabsStyled\";\nimport { ApprovedNewsroomsTabText, ApplicationsInProgressTabText, RejectedNewsroomsTabText } from \"./textComponents\";\n\nstoriesOf(\"Common / Tabs\", module)\n  .add(\"Default Tabs\", () => {\n    return (\n      <Tabs>\n        <Tab title=\"Index\">\n          <p>Some Content</p>\n        </Tab>\n        <Tab title=\"Sign\">\n          <p>Some other Content</p>\n        </Tab>\n      </Tabs>\n    );\n  })\n  .add(\"Styled Large Tab\", () => {\n    return (\n      <Tabs TabsNavComponent={StyledTabNav} TabComponent={StyledTabLarge}>\n        <Tab title={<ApprovedNewsroomsTabText />}>\n          <p>Some Content</p>\n        </Tab>\n        <Tab title={<ApplicationsInProgressTabText />}>\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title={<RejectedNewsroomsTabText />}>\n          <p>Some other Content</p>\n        </Tab>\n      </Tabs>\n    );\n  })\n  .add(\"Square Pill Tab\", () => {\n    return (\n      <Tabs TabsNavComponent={StyledSquarePillTabNav} TabComponent={StyledSquarePillTab}>\n        <Tab title=\"New Applications\">\n          <p>Some Content</p>\n        </Tab>\n        <Tab title=\"Under Challenge\">\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title=\"Appeal to Council\">\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title=\"Challenge Council Appeal\">\n          <p>Some other Content</p>\n        </Tab>\n      </Tabs>\n    );\n  })\n  .add(\"Round Pill Tab\", () => {\n    return (\n      <Tabs TabsNavComponent={StyledRoundPillTabNav} TabComponent={StyledRoundPillTab}>\n        <Tab title=\"All\">\n          <p>Some Content</p>\n        </Tab>\n        <Tab title=\"Accepting Votes\">\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title=\"Verifying Votes\">\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title=\"Request Appeal\">\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title=\"Ready to Complete\">\n          <p>Some other Content</p>\n        </Tab>\n      </Tabs>\n    );\n  })\n  .add(\"Styled Tab\", () => {\n    return (\n      <Tabs TabComponent={StyledTab}>\n        <Tab title=\"About\">\n          <p>Some Content</p>\n        </Tab>\n        <Tab title=\"Discussions\">\n          <p>Some other Content</p>\n        </Tab>\n        <Tab title=\"History\">\n          <p>Some other Content</p>\n        </Tab>\n      </Tabs>\n    );\n  })\n  .add(\"Tabs with before/after elements in nav\", () => {\n    const before = <span>before!</span>;\n    const after = <span>after!</span>;\n    return (\n      <Tabs TabsNavBefore={before} TabsNavAfter={after}>\n        <Tab title=\"Index\">\n          <p>Some Content</p>\n        </Tab>\n        <Tab title=\"Sign\">\n          <p>Some other Content</p>\n        </Tab>\n      </Tabs>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Tabs/Tabs.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors } from \"../styleConstants\";\nimport { ExpandDownArrow } from \"../icons\";\n\nimport { TabProps } from \"./Tab\";\nimport { StyledTabsContainer, StyledNav, StyledResponsiveTabsToggleButton, TabContainer } from \"./TabsStyled\";\n\nexport interface TabsProps {\n  activeIndex?: number;\n  flex?: boolean;\n  children: Array<React.ReactElement<TabProps>>;\n  TabComponent?: any;\n  TabsNavComponent?: any;\n  TabsNavBefore?: React.ReactElement;\n  TabsNavAfter?: React.ReactElement;\n  /** Set to `true` to prevent tab change silently. If set to a string, on tab change attempt string will be passed to `window.confirm`: if user hits \"cancel\" tab change will be prevented. */\n  preventTabChange?: boolean | string;\n  onActiveTabChange?(activeIndex: number): void;\n}\n\nexport interface TabsState {\n  activeIndex: number;\n  isResponsiveTabsetVisible: boolean;\n}\n\nexport class Tabs extends React.Component<TabsProps, TabsState> {\n  public static getDerivedStateFromProps(nextProps: TabsProps, prevState: TabsState): TabsState {\n    return {\n      ...prevState,\n      activeIndex: typeof nextProps.activeIndex === \"number\" ? nextProps.activeIndex : prevState.activeIndex,\n    };\n  }\n\n  constructor(props: TabsProps) {\n    super(props);\n    this.state = {\n      activeIndex: props.activeIndex || 0,\n      isResponsiveTabsetVisible: false,\n    };\n  }\n\n  public renderTabs(): Array<React.ReactElement<TabProps>> {\n    return React.Children.map(this.props.children, (child, index) => {\n      return React.cloneElement(child as React.ReactElement, {\n        index,\n        isActive: this.state.activeIndex === index,\n        isResponsiveAndVisible: this.state.isResponsiveTabsetVisible,\n        onClick: this.handleClick,\n        TabComponent: this.props.TabComponent,\n      });\n    });\n  }\n\n  public renderContent(): React.ReactNode | undefined {\n    const children = this.props.children;\n    const { activeIndex } = this.state;\n    if (children[activeIndex]) {\n      return children[activeIndex].props.children;\n    }\n  }\n\n  public render(): JSX.Element {\n    const TabsNavComponent = this.props.TabsNavComponent || StyledNav;\n    const TabComponentOrnamental = styled(this.props.TabComponent || \"span\")`\n      cursor: default;\n    `;\n    const arrowColor = this.state.isResponsiveTabsetVisible ? colors.accent.CIVIL_BLUE : colors.accent.CIVIL_GRAY_2;\n\n    return (\n      <StyledTabsContainer flex={this.props.flex}>\n        <TabsNavComponent>\n          <TabContainer>\n            {this.props.TabsNavBefore && <TabComponentOrnamental>{this.props.TabsNavBefore}</TabComponentOrnamental>}\n            {this.renderTabs()}\n            {this.props.TabsNavAfter && <TabComponentOrnamental>{this.props.TabsNavAfter}</TabComponentOrnamental>}\n          </TabContainer>\n\n          <StyledResponsiveTabsToggleButton\n            isExpanded={this.state.isResponsiveTabsetVisible}\n            onClick={this.toggleResponsiveVisible}\n          >\n            <ExpandDownArrow color={arrowColor} opacity={1} />\n          </StyledResponsiveTabsToggleButton>\n        </TabsNavComponent>\n        <div>{this.renderContent()}</div>\n      </StyledTabsContainer>\n    );\n  }\n\n  private handleClick = (index: number) => {\n    if (\n      this.props.preventTabChange &&\n      (this.props.preventTabChange === true || !window.confirm(this.props.preventTabChange))\n    ) {\n      return;\n    }\n\n    this.setState({ activeIndex: index });\n    if (this.props.onActiveTabChange) {\n      this.props.onActiveTabChange(index);\n    }\n  };\n\n  private toggleResponsiveVisible = () => {\n    this.setState({ isResponsiveTabsetVisible: !this.state.isResponsiveTabsetVisible });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Tabs/TabsStyled.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { TabComponentProps } from \"./Tab\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\n\nexport interface StyledTabsContainerProps {\n  flex?: boolean;\n}\n\nexport const StyledTabsContainer = styled.span`\n  display: ${(props: StyledTabsContainerProps) => (props.flex ? \"flex\" : \"block\")};\n`;\n\nexport const StyledTabCount = styled.span`\n  display: inline-block;\n  border-radius: 31px;\n  font-size: 12px;\n  line-height: 15px;\n  margin-left: 6px;\n  padding: 3px 10px;\n`;\n\n/* Primary Tab styles used on the Registry page */\nexport const StyledTabNav = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  height: 76px;\n  margin: 0 auto 50px;\n  width: 100%;\n\n  & > ul {\n    justify-content: center;\n  }\n\n  ${mediaQueries.MOBILE} {\n    height: auto;\n    margin-bottom: 30px;\n    position: relative;\n\n    & > ul {\n      display: block;\n      justify-content: left;\n    }\n  }\n`;\n\nexport const StyledNav = styled.nav`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_3};\n`;\n\nexport interface StyledResponsiveTabsToggleButtonProps {\n  isExpanded: boolean;\n}\n\nexport const StyledResponsiveTabsToggleButton = styled.div`\n  display: none;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    position: absolute;\n    right: 16px;\n    top: 16px;\n    transform: ${(props: StyledResponsiveTabsToggleButtonProps) => (props.isExpanded ? \"rotate(180deg)\" : \"rotate(0)\")};\n    z-index: 2;\n  }\n\n  & svg {\n    ${mediaQueries.MOBILE} {\n      width: 16px;\n      height: 26px;\n    }\n  }\n`;\n\nexport const TabContainer = styled.ul`\n  display: flex;\n  list-style: none;\n  margin: 0 auto;\n  padding: 0;\n`;\n\nexport const StyledTabLarge = styled.li`\n  align-items: center;\n  border-bottom: ${(props: TabComponentProps) =>\n    props.isActive ? \"8px solid \" + colors.accent.CIVIL_BLUE : \"8px solid transparent\"};\n  color: ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_BLUE : colors.accent.CIVIL_GRAY_2)};\n  cursor: pointer;\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 19px;\n  font-weight: 800;\n  margin: 39px 40px 0 0;\n  padding: 0 0 10px;\n\n  &:last-of-type {\n    margin: 39px 0 0 0;\n  }\n\n  ${mediaQueries.HOVER} {\n    &:hover {\n      border-bottom: ${(props: TabComponentProps) =>\n        props.isActive ? \"8px solid \" + colors.accent.CIVIL_BLUE : \"8px solid \" + colors.accent.CIVIL_GRAY_2};\n    }\n  }\n\n  & a {\n    color: inherit;\n  }\n\n  & svg {\n    margin-right: 5px;\n\n    & circle {\n      stroke: ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_BLUE : colors.accent.CIVIL_GRAY_2)};\n    }\n\n    & path {\n      fill: ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_BLUE : colors.accent.CIVIL_GRAY_2)};\n    }\n  }\n\n  ${mediaQueries.MOBILE} {\n    border-bottom-width: 0;\n    display: ${(props: TabComponentProps) => (props.isActive || props.isResponsiveAndVisible ? \"block\" : \"none\")};\n    padding: 20px 16px;\n    margin: 0;\n\n    & svg {\n      ${(props: TabComponentProps) =>\n        props.isResponsiveAndVisible\n          ? \"box-shadow: inset 0 -1px 0 0 \" +\n            colors.accent.CIVIL_GRAY_3 +\n            \", inset 0 1px 0 0 \" +\n            colors.accent.CIVIL_GRAY_3 +\n            \", 0 -1px 0 0 \" +\n            colors.accent.CIVIL_GRAY_0\n          : \"\"};\n\n      &:last-of-type {\n        margin: 0;\n\n        ${(props: TabComponentProps) =>\n          props.isResponsiveAndVisible\n            ? \"box-shadow: inset 0 -3px 0 0 \" + colors.accent.CIVIL_BLUE + \", 0 -1px 0 0 \" + colors.accent.CIVIL_GRAY_0\n            : \"\"};\n      }\n    }\n  }\n`;\n\n/* Secondary Tab styles used on the Registry page */\nexport const StyledSquarePillTabNav = styled.div`\n  display: flex;\n  justify-content: center;\n  margin: 30px auto 50px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    height: auto;\n    margin: 30px 22px 20px;\n    width: auto;\n    position: relative;\n\n    & > ul {\n      display: block;\n      width: 100%;\n    }\n  }\n`;\n\n/* Secondary Tab styles used on the Registry page */\nexport const StyledSquarePillTab = styled.li`\n  background-color: ${(props: TabComponentProps) =>\n    props.isActive ? colors.accent.CIVIL_BLUE_FADED_2 : \"transparent\"};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-right: none;\n  color: ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_BLUE : colors.primary.BLACK)};\n  cursor: pointer;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 17px;\n  padding: 20px 44px;\n  white-space: nowrap;\n  &:last-of-type {\n    border-right: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  }\n\n  ${mediaQueries.HOVER} {\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n      background-color: ${colors.accent.CIVIL_BLUE_FADED_2};\n    }\n  }\n\n  & ${StyledTabCount} {\n    background-color: ${(props: TabComponentProps) =>\n      props.isActive ? colors.accent.CIVIL_TEAL : colors.accent.CIVIL_GRAY_3};\n  }\n\n  ${mediaQueries.MOBILE} {\n    border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    border-width: 1px 1px 0;\n    border-collapse: collapse;\n    display: ${(props: TabComponentProps) => (props.isActive || props.isResponsiveAndVisible ? \"block\" : \"none\")};\n    padding: 20px 16px;\n    margin: 0;\n    text-align: center;\n\n    &:last-of-type {\n      border-bottom-width: 1px;\n    }\n  }\n`;\n\nexport const StyledRoundPillTabNav = styled.div`\n  margin: 0 auto 50px;\n  max-width: 1200px;\n  width: 100%;\n`;\n\nexport const StyledRoundPillTab = styled.li`\n  background-color: ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_GRAY_4 : \"transparent\")};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 23px;\n  color: ${colors.primary.BLACK};\n  cursor: pointer;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  letter-spacing: -0.12px;\n  list-style: none;\n  margin-right: 10px;\n  padding: 8px 15px;\n\n  ${mediaQueries.HOVER} {\n    &:hover {\n      background-color: ${colors.accent.CIVIL_GRAY_4};\n    }\n  }\n`;\n\nexport const StyledTab = styled.li`\n  border-bottom: ${(props: TabComponentProps) =>\n    props.isActive ? \"2px solid \" + colors.accent.CIVIL_BLUE : \"2px solid transparent\"};\n  color: ${(props: TabComponentProps) => (props.isActive ? colors.primary.BLACK : colors.accent.CIVIL_GRAY_2)};\n  cursor: pointer;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  letter-spacing: -0.12px;\n  margin-right: 30px;\n  padding: 25px 0 15px;\n  text-align: center;\n  text-decoration: none;\n  transition: background-color 500ms, border 500ms, color 500ms;\n\n  ${mediaQueries.HOVER} {\n    &:hover {\n      border-bottom: 2px solid ${colors.accent.CIVIL_BLUE};\n      color: ${colors.primary.BLACK};\n    }\n  }\n  &.active {\n    border-bottom: 2px solid ${colors.accent.CIVIL_BLUE};\n    color: ${colors.primary.BLACK};\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Tabs/__snapshots__/Tabs.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Tabs Default Tabs 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <nav\n        className=\"sc-LzMgA dDIOFj\"\n      >\n        <ul\n          className=\"sc-LzMgC fQTicW\"\n        >\n          <li\n            className=\"sc-LzMgw gwrHPL\"\n            onClick={[Function]}\n          >\n            Index\n          </li>\n          <li\n            className=\"sc-LzMgw jiHjOI\"\n            onClick={[Function]}\n          >\n            Sign\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzMgB fJSEwD\"\n          onClick={[Function]}\n        >\n          <svg\n            height=\"12\"\n            viewBox=\"0 0 12 8\"\n            width=\"8\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n              fill=\"#7D7373\"\n              fillRule=\"evenodd\"\n              opacity=\"1\"\n            />\n          </svg>\n        </div>\n      </nav>\n      <div>\n        <p>\n          Some Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tabs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default Tabs\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Tabs\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Index\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Sign\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Tabs\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tab\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tabs\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tabs Round Pill Tab 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzMhd jaLAnI\"\n      >\n        <ul\n          className=\"sc-LzMgC fQTicW\"\n        >\n          <li\n            className=\"sc-LzMhe cvzczr\"\n            onClick={[Function]}\n          >\n            All\n          </li>\n          <li\n            className=\"sc-LzMhe exHJyI\"\n            onClick={[Function]}\n          >\n            Accepting Votes\n          </li>\n          <li\n            className=\"sc-LzMhe exHJyI\"\n            onClick={[Function]}\n          >\n            Verifying Votes\n          </li>\n          <li\n            className=\"sc-LzMhe exHJyI\"\n            onClick={[Function]}\n          >\n            Request Appeal\n          </li>\n          <li\n            className=\"sc-LzMhe exHJyI\"\n            onClick={[Function]}\n          >\n            Ready to Complete\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzMgB fJSEwD\"\n          onClick={[Function]}\n        >\n          <svg\n            height=\"12\"\n            viewBox=\"0 0 12 8\"\n            width=\"8\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n              fill=\"#7D7373\"\n              fillRule=\"evenodd\"\n              opacity=\"1\"\n            />\n          </svg>\n        </div>\n      </div>\n      <div>\n        <p>\n          Some Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tabs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Round Pill Tab\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Tabs\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabsNavComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              All\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Accepting Votes\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Verifying Votes\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Request Appeal\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Ready to Complete\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Tabs\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tab\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tabs\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tabs Square Pill Tab 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzMgE jLyoGD\"\n      >\n        <ul\n          className=\"sc-LzMgC fQTicW\"\n        >\n          <li\n            className=\"sc-LzMgF iBNsrO\"\n            onClick={[Function]}\n          >\n            New Applications\n          </li>\n          <li\n            className=\"sc-LzMgF bYxtho\"\n            onClick={[Function]}\n          >\n            Under Challenge\n          </li>\n          <li\n            className=\"sc-LzMgF bYxtho\"\n            onClick={[Function]}\n          >\n            Appeal to Council\n          </li>\n          <li\n            className=\"sc-LzMgF bYxtho\"\n            onClick={[Function]}\n          >\n            Challenge Council Appeal\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzMgB fJSEwD\"\n          onClick={[Function]}\n        >\n          <svg\n            height=\"12\"\n            viewBox=\"0 0 12 8\"\n            width=\"8\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n              fill=\"#7D7373\"\n              fillRule=\"evenodd\"\n              opacity=\"1\"\n            />\n          </svg>\n        </div>\n      </div>\n      <div>\n        <p>\n          Some Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tabs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Square Pill Tab\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Tabs\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabsNavComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              New Applications\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Under Challenge\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Appeal to Council\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Challenge Council Appeal\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Tabs\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tab\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tabs\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tabs Styled Large Tab 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-LzMgz kCIpnD\"\n      >\n        <ul\n          className=\"sc-LzMgC fQTicW\"\n        >\n          <li\n            className=\"sc-LzMgD dosLtc\"\n            onClick={[Function]}\n          >\n            <svg\n              height=\"18\"\n              viewBox=\"0 0 18 18\"\n              width=\"18\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <circle\n                cx=\"9\"\n                cy=\"9\"\n                fill=\"none\"\n                r=\"8.25\"\n                stroke=\"#7D7373\"\n              />\n              <path\n                d=\"M12.6 5l-5.13 5.17L5.4 8.09 4 9.5 7.47 13 14 6.41z\"\n                fill=\"#7D7373\"\n              />\n            </svg>\n             Approved Newsrooms\n          </li>\n          <li\n            className=\"sc-LzMgD evsnDZ\"\n            onClick={[Function]}\n          >\n            <svg\n              height=\"18\"\n              viewBox=\"0 0 19 18\"\n              width=\"19\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M9 0c3.316 0 6.253 1.8 7.768 4.547l2.18-2.179v6.158h-6.159l2.653-2.652c-1.231-2.369-3.6-3.98-6.442-3.98-3.884 0-7.105 3.222-7.105 7.106S5.115 16.105 9 16.105c3.126 0 5.684-1.99 6.726-4.737h1.99C16.674 15.158 13.168 18 9 18c-5.021 0-9-4.074-9-9s4.074-9 9-9zM7.401 4.737v4.831l4.453 2.653.758-1.232-3.79-2.273v-3.98h-1.42z\"\n                fill=\"#7D7373\"\n                opacity=\".9\"\n              />\n            </svg>\n             Newsrooms In Progress\n          </li>\n          <li\n            className=\"sc-LzMgD evsnDZ\"\n            onClick={[Function]}\n          >\n            <svg\n              height=\"18\"\n              viewBox=\"0 0 18 18\"\n              width=\"18\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M9 0C4.05 0 0 4.05 0 9s4.05 9 9 9 9-4.05 9-9-4.05-9-9-9zM1.8 9c0-3.96 3.24-7.2 7.2-7.2 1.62 0 3.15.54 4.41 1.53L3.33 13.41A7.093 7.093 0 0 1 1.8 9zM9 16.2c-1.62 0-3.15-.54-4.41-1.53L14.67 4.59A7.093 7.093 0 0 1 16.2 9c0 3.96-3.24 7.2-7.2 7.2z\"\n                fill=\"#7D7373\"\n              />\n            </svg>\n             Rejected Newsrooms\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzMgB fJSEwD\"\n          onClick={[Function]}\n        >\n          <svg\n            height=\"12\"\n            viewBox=\"0 0 12 8\"\n            width=\"8\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n              fill=\"#7D7373\"\n              fillRule=\"evenodd\"\n              opacity=\"1\"\n            />\n          </svg>\n        </div>\n      </div>\n      <div>\n        <p>\n          Some Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tabs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Styled Large Tab\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Tabs\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabsNavComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              &lt;ApprovedNewsroomsTabText /&gt;\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              &lt;ApplicationsInProgressTabText /&gt;\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              &lt;RejectedNewsroomsTabText /&gt;\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Tabs\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tab\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tabs\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tabs Styled Tab 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <nav\n        className=\"sc-LzMgA dDIOFj\"\n      >\n        <ul\n          className=\"sc-LzMgC fQTicW\"\n        >\n          <li\n            className=\"sc-LzMhf fPvmMR\"\n            onClick={[Function]}\n          >\n            About\n          </li>\n          <li\n            className=\"sc-LzMhf eAHDUo\"\n            onClick={[Function]}\n          >\n            Discussions\n          </li>\n          <li\n            className=\"sc-LzMhf eAHDUo\"\n            onClick={[Function]}\n          >\n            History\n          </li>\n        </ul>\n        <div\n          className=\"sc-LzMgB fJSEwD\"\n          onClick={[Function]}\n        >\n          <svg\n            height=\"12\"\n            viewBox=\"0 0 12 8\"\n            width=\"8\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n              fill=\"#7D7373\"\n              fillRule=\"evenodd\"\n              opacity=\"1\"\n            />\n          </svg>\n        </div>\n      </nav>\n      <div>\n        <p>\n          Some Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tabs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Styled Tab\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Tabs\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabComponent\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            {\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                $$typeof\n                              </span>\n                            </span>\n                            : \n                            <span>\n                              …\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                render\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              forwardRef\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                attrs\n                              </span>\n                            </span>\n                            : \n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              [\n                              ]\n                            </span>\n                            ,\n                            <span>\n                              <span>\n                                <br />\n                                  \n                                  \n                              </span>\n                              …\n                            </span>\n                            <span>\n                              <br />\n                                \n                            </span>\n                            }\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              About\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Discussions\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              History\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Tabs\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tab\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tabs\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tabs Tabs with before/after elements in nav 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <nav\n        className=\"sc-LzMgA dDIOFj\"\n      >\n        <ul\n          className=\"sc-LzMgC fQTicW\"\n        >\n          <span\n            className=\"sc-LzNQg dEihNu\"\n          >\n            <span>\n              before!\n            </span>\n          </span>\n          <li\n            className=\"sc-LzMgw gwrHPL\"\n            onClick={[Function]}\n          >\n            Index\n          </li>\n          <li\n            className=\"sc-LzMgw jiHjOI\"\n            onClick={[Function]}\n          >\n            Sign\n          </li>\n          <span\n            className=\"sc-LzNQg dEihNu\"\n          >\n            <span>\n              after!\n            </span>\n          </span>\n        </ul>\n        <div\n          className=\"sc-LzMgB fJSEwD\"\n          onClick={[Function]}\n        >\n          <svg\n            height=\"12\"\n            viewBox=\"0 0 12 8\"\n            width=\"8\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n              fill=\"#7D7373\"\n              fillRule=\"evenodd\"\n              opacity=\"1\"\n            />\n          </svg>\n        </div>\n      </nav>\n      <div>\n        <p>\n          Some Content\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tabs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Tabs with before/after elements in nav\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Tabs\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabsNavBefore\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            &lt;span /&gt;\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        TabsNavAfter\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            &lt;span /&gt;\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Index\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Tab\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          title\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Sign\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Some other Content\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Tab\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Tabs\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tab\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Tabs\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Tabs/index.ts",
    "content": "export * from \"./Tab\";\nexport * from \"./Tabs\";\nexport * from \"./TabsStyled\";\nexport * from \"./TabTitles\";\nexport * from \"./textComponents\";\n"
  },
  {
    "path": "packages/components/src/Tabs/textComponents.tsx",
    "content": "import * as React from \"react\";\nimport { ApplicationInProgressIcon, ApprovedNewsroomsIcon, RejectedNewsroomsIcon } from \"@joincivil/elements\";\n\n// Text for listings approved newsrooms tab\nexport const ApprovedNewsroomsTabText: React.FunctionComponent = props => {\n  return (\n    <>\n      <ApprovedNewsroomsIcon /> Approved Newsrooms\n    </>\n  );\n};\n\n// Text for listings applicaitons in progress tab\nexport const ApplicationsInProgressTabText: React.FunctionComponent = props => {\n  return (\n    <>\n      <ApplicationInProgressIcon /> Newsrooms In Progress\n    </>\n  );\n};\n\n// Text for listings rejected newsrooms tab\nexport const RejectedNewsroomsTabText: React.FunctionComponent = props => {\n  return (\n    <>\n      <RejectedNewsroomsIcon /> Rejected Newsrooms\n    </>\n  );\n};\n\nexport const TabNewApplicationsText: React.FunctionComponent = props => {\n  return <>New Applications</>;\n};\n\nexport const TabUnderChallengeText: React.FunctionComponent = props => {\n  return <>Under Challenge</>;\n};\n\nexport const TabAppealToCouncilText: React.FunctionComponent = props => {\n  return <>Under Appeal</>;\n};\n\nexport const TabChallengeCouncilAppealText: React.FunctionComponent = props => {\n  return <>Decision Challenged</>;\n};\n\nexport const TabReadyToUpdateText: React.FunctionComponent = props => {\n  return <>Ready to Update</>;\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/EthereumTransactionButton.tsx",
    "content": "import * as React from \"react\";\nimport { MetaMaskLogoButton } from \"../MetaMaskLogoButton\";\nimport { MetaMaskModal } from \"../MetaMaskModal\";\nimport { ModalHeading } from \"../ModalContent\";\nimport { CivilContext, ICivilContext } from \"../context\";\n\nexport interface EthereumTransactionInfo {\n  hash: string;\n}\n\nexport interface EthereumTransactionButtonProps {\n  disabled: boolean;\n  modalHeading: string;\n  execute(): Promise<EthereumTransactionInfo>;\n  onComplete(): any;\n}\nexport interface EthereumTransactionButtonState {\n  inProgress: boolean;\n  waiting: boolean;\n  rejected: boolean;\n  complete: boolean;\n}\nexport class EthereumTransactionButton extends React.Component<\n  EthereumTransactionButtonProps,\n  EthereumTransactionButtonState\n> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  public constructor(props: EthereumTransactionButtonProps) {\n    super(props);\n    this.state = { inProgress: false, waiting: false, rejected: false, complete: false };\n  }\n  public render(): JSX.Element {\n    return (\n      <>\n        <MetaMaskLogoButton disabled={this.props.disabled} onClick={async () => this.handleTransaction()}>\n          {this.props.children}\n        </MetaMaskLogoButton>\n        {this.state.inProgress ? (\n          <MetaMaskModal\n            waiting={this.state.waiting}\n            denied={this.state.rejected}\n            cancelTransaction={() => this.cancelTransaction()}\n          >\n            <ModalHeading>{this.props.modalHeading}</ModalHeading>\n          </MetaMaskModal>\n        ) : null}\n      </>\n    );\n  }\n\n  private async handleTransaction(): Promise<void> {\n    this.setState({ inProgress: true, waiting: true, rejected: false });\n    try {\n      const tx = await this.props.execute();\n      await this.context.waitForTx((tx as any).hash);\n      this.setState({ inProgress: false, waiting: false, rejected: false });\n      this.props.onComplete();\n    } catch (err) {\n      console.log(\"error in transaction\", err);\n      this.setState({ inProgress: true, waiting: false, rejected: true });\n    }\n  }\n\n  private cancelTransaction(): void {\n    this.setState({ inProgress: false, waiting: false, rejected: true });\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/TokenPurchaseSummary.tsx",
    "content": "import * as React from \"react\";\nimport { CurrencyCalcCVL } from \"../CurrencyConverter\";\nexport interface TokenPurchaseSummaryProps {\n  mode: \"buy\" | \"sell\";\n  currencyCode: string;\n  pricePer: number;\n  totalTokens: number;\n  totalPrice?: number;\n  zeroValue?: string;\n}\nfunction round(amount: number | undefined): number | string {\n  return amount ? Math.round(amount * 1000) / 1000 : 0;\n}\nexport const TokenPurchaseSummary = (props: TokenPurchaseSummaryProps) => {\n  const { mode, currencyCode, totalPrice, totalTokens, pricePer } = props;\n\n  return (\n    <CurrencyCalcCVL>\n      <span>You are {mode === \"buy\" ? \"buying\" : \"selling\"}</span>\n      <h4>\n        {round(totalTokens)} {currencyCode}\n      </h4>\n      {totalTokens > 0 ? (\n        <p>\n          approx. ${round(totalPrice)} @ ${round(pricePer)} per {currencyCode}\n        </p>\n      ) : null}\n    </CurrencyCalcCVL>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/Tokens.tsx",
    "content": "import * as React from \"react\";\nimport {\n  TokenAccountOuter,\n  TokenAccountInner,\n  FlexColumns,\n  FlexColumnsPrimary,\n  FlexColumnsPrimaryModule,\n  FlexColumnsSecondary,\n  TokenHeader,\n} from \"./TokensStyledComponents\";\nimport { TokenWelcomeHeaderText, TokenBuySellHeaderText } from \"./TokensTextComponents\";\nimport { UserTokenAccountSignup } from \"./TokensAccountSignup\";\nimport { UserTokenAccountBuy } from \"./TokensAccountBuy\";\nimport { UserTokenAccountHelp } from \"./TokensAccountHelp\";\nimport { UserTokenAccountProgress } from \"./TokensAccountProgress\";\nimport { UserTokenAccountFaq } from \"./TokensAccountFaq\";\nimport { getFormattedEthAddress, isBrowserCompatible } from \"@joincivil/utils\";\nimport { UserTokenAccountPaypal } from \"./TokensAccountPaypal\";\nimport { BrowserCompatible } from \"../BrowserCompatible\";\n\nexport enum TOKEN_PROGRESS {\n  ACTIVE = \"active\",\n  COMPLETED = \"completed\",\n  DISABLED = \"disabled\",\n}\n\nexport interface UserTokenAccountProps {\n  foundationAddress: string;\n  network: string;\n  user?: any;\n  addWalletPath: string;\n  signupPath: string;\n}\n\nexport class UserTokenAccount extends React.Component<UserTokenAccountProps> {\n  public render(): JSX.Element | null {\n    const { user } = this.props;\n\n    const accountSignupComplete = this.getAccountComplete(user);\n    const userAccount = this.getUserAccount(user);\n\n    const loggedInState = accountSignupComplete ? TOKEN_PROGRESS.COMPLETED : TOKEN_PROGRESS.ACTIVE;\n\n    const buyState = accountSignupComplete ? TOKEN_PROGRESS.ACTIVE : TOKEN_PROGRESS.DISABLED;\n\n    return (\n      <TokenAccountOuter>\n        <TokenAccountInner>\n          <TokenHeader>\n            {buyState === TOKEN_PROGRESS.ACTIVE ? <TokenBuySellHeaderText /> : <TokenWelcomeHeaderText />}\n          </TokenHeader>\n\n          <FlexColumns>\n            <FlexColumnsPrimary>\n              {!isBrowserCompatible()\n                ? this.renderBrowserIncompatible()\n                : this.renderTokenSteps(loggedInState, buyState)}\n\n              <UserTokenAccountFaq />\n            </FlexColumnsPrimary>\n\n            <FlexColumnsSecondary>\n              <UserTokenAccountProgress userAccount={userAccount} logInComplete={accountSignupComplete} />\n              <UserTokenAccountPaypal />\n              <UserTokenAccountHelp />\n            </FlexColumnsSecondary>\n          </FlexColumns>\n        </TokenAccountInner>\n      </TokenAccountOuter>\n    );\n  }\n\n  private renderBrowserIncompatible = () => {\n    return (\n      <FlexColumnsPrimaryModule>\n        <BrowserCompatible />\n      </FlexColumnsPrimaryModule>\n    );\n  };\n\n  private renderTokenSteps = (loggedInState: any, buyState: any) => {\n    return (\n      <>\n        <UserTokenAccountSignup\n          user={this.props.user}\n          step={loggedInState}\n          addWalletPath={this.props.addWalletPath}\n          signupPath={this.props.signupPath}\n        />\n\n        <UserTokenAccountBuy\n          step={buyState}\n          network={this.props.network}\n          foundationAddress={this.props.foundationAddress}\n        />\n      </>\n    );\n  };\n\n  private getAccountComplete = (user: any) => {\n    if (user && user.ethAddress) {\n      return true;\n    }\n\n    return false;\n  };\n\n  private getUserAccount = (user: any) => {\n    if (user && user.ethAddress) {\n      return getFormattedEthAddress(user.ethAddress);\n    }\n\n    return \"\";\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccount.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport StoryRouter from \"storybook-react-router\";\nimport * as React from \"react\";\nimport Web3HttpProvider from \"web3-providers-http\";\n\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { UserTokenAccountSignup } from \"./TokensAccountSignup\";\nimport { UserTokenAccountBuy } from \"./TokensAccountBuy\";\nimport { CivilContext, buildCivilContext } from \"../context\";\nimport Web3 from \"web3\";\n\nconst web3Provider = new Web3HttpProvider(\"http://localhost:8045\");\nconst web3 = new Web3(web3Provider);\nconst civilContext = buildCivilContext({ web3, featureFlags: [\"uniswap\"], config: { DEFAULT_ETHEREUM_NETWORK: 4 } });\n\nconst typeDefs = `\n  type Query {\n    storefrontEthPrice: Float\n    storefrontCvlPrice: Float\n    storefrontCvlQuoteUsd(usdToSpend: Float!): Float\n  }\n\n  schema {\n    query: Query\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      storefrontEthPrice: () => {\n        return 102.98;\n      },\n      storefrontCvlPrice: () => {\n        return 0.2;\n      },\n      storefrontCvlQuoteUsd: () => {\n        return 500.48635;\n      },\n    };\n  },\n};\n\nexport interface UserTokenAccountProgressProps {\n  userAccount: string;\n}\n\nstoriesOf(\"Storefront / User Token Account\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .addDecorator(StoryRouter())\n  .add(\"Signup Section\", () => {\n    return (\n      <CivilContext.Provider value={civilContext}>\n        <UserTokenAccountSignup step={\"active\"} user={{}} signupPath=\"/auth/signup\" addWalletPath=\"/auth/wallet\" />\n      </CivilContext.Provider>\n    );\n  })\n  .add(\"Buy Section\", () => {\n    return (\n      <CivilContext.Provider value={civilContext}>\n        <UserTokenAccountBuy step={\"active\"} network={\"4\"} foundationAddress={\"0x...\"} />\n      </CivilContext.Provider>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountBuy.tsx",
    "content": "import * as React from \"react\";\nimport {\n  FlexColumnsPrimaryModule,\n  TokenBtns,\n  TokenBuySection,\n  TokenBuySellTab,\n  TokenBuySellTabsNav,\n} from \"./TokensStyledComponents\";\nimport { TokenBuyTextDisabled, TokenBuyBtnDisabledText } from \"./TokensTextComponents\";\nimport { TOKEN_PROGRESS } from \"./Tokens\";\nimport { Tabs, Tab } from \"../Tabs\";\nimport { TokensTabBuy } from \"./buy/TokensTabBuy\";\nimport { TokensTabSell } from \"./sell/TokensTabSell\";\n\nexport interface TokenAccountBuyProps {\n  foundationAddress: string;\n  network: string;\n  step: string;\n}\n\nexport const UserTokenAccountBuy: React.FunctionComponent<TokenAccountBuyProps> = props => {\n  const { foundationAddress, network, step } = props;\n\n  if (step === TOKEN_PROGRESS.DISABLED) {\n    return (\n      <FlexColumnsPrimaryModule padding={true}>\n        <TokenBuySection>\n          <TokenBuyTextDisabled />\n          <TokenBtns disabled={true}>\n            <TokenBuyBtnDisabledText />\n          </TokenBtns>\n        </TokenBuySection>\n      </FlexColumnsPrimaryModule>\n    );\n  }\n\n  return (\n    <FlexColumnsPrimaryModule padding={true}>\n      <Tabs TabComponent={TokenBuySellTab} TabsNavComponent={TokenBuySellTabsNav}>\n        <Tab title=\"Buy\">\n          <TokenBuySection>\n            <TokensTabBuy foundationAddress={foundationAddress} network={network} />\n          </TokenBuySection>\n        </Tab>\n        <Tab title=\"Sell\">\n          <TokenBuySection>\n            <TokensTabSell network={network} />\n          </TokenBuySection>\n        </Tab>\n      </Tabs>\n    </FlexColumnsPrimaryModule>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountFaq.tsx",
    "content": "import * as React from \"react\";\nimport { TokenFAQCollapse, FlexColumnsPrimaryModule, TokenFAQImg } from \"./TokensStyledComponents\";\nimport {\n  TokenETHFAQQuestion1Text,\n  TokenETHFAQQuestion2Text,\n  TokenETHFAQQuestion3Text,\n  TokenETHFAQQuestion4Text,\n  TokenETHFAQQuestion5Text,\n} from \"./TokensTextComponents\";\nimport { Collapsable } from \"../Collapsable\";\nimport metamaskEthAmount from \"../images/img-metamask-eth-amount@2x.png\";\n\nexport const UserTokenAccountFaq: React.FunctionComponent = props => {\n  return (\n    <FlexColumnsPrimaryModule>\n      <TokenFAQCollapse>\n        <Collapsable header={<TokenETHFAQQuestion1Text />} open={false}>\n          <TokenFAQImg>\n            <div>\n              <p>\n                Ether (ETH) is the cryptocurrency for the Ethereum blockchain. Gas is the transaction cost of performing\n                actions like adding content, or buying Civil tokens. Gas costs are variable. Like any currency, Ether\n                (ETH) fluctuates in value with the market.\n              </p>\n              <p>\n                You will have to pay gas in Ether (ETH), which you can purchase via MetaMask and a cryptocurrency\n                exchange such as Coinbase.\n              </p>\n            </div>\n            <img src={metamaskEthAmount} />\n          </TokenFAQImg>\n        </Collapsable>\n      </TokenFAQCollapse>\n      <TokenFAQCollapse>\n        <Collapsable header={<TokenETHFAQQuestion2Text />} open={false}>\n          <p>\n            When you perform actions like buying or selling tokens, you need to pay the cost of that computing effort.\n            That payment is calculated in gas. Think about it like paying for a stamp on an envelope or paying for the\n            shipping costs of sending a package. Gas can only be paid for with ETH.\n          </p>\n          <p>ETH is used to also purchase Civil tokens (CVL) from an exchange or from Civil.</p>\n        </Collapsable>\n      </TokenFAQCollapse>\n      <TokenFAQCollapse>\n        <Collapsable header={<TokenETHFAQQuestion3Text />} open={false}>\n          <p>\n            To complete your membership contribution and receive Civil tokens (CVL), you must buy Ether (ETH). Then you\n            will be able to exchange ETH for CVL. Unfortunately at this time, you can’t use USD or local currencies to\n            directly buy Civil tokens. You must first convert local currencies into ETH using an exchange like Coinbase\n            or Gemini. You will need to have your debit card or bank account details handy, as well as your passport to{\" \"}\n            <a\n              href=\"https://support.coinbase.com/customer/en/portal/articles/1220621-identity-verification?b_id=13521\"\n              target=\"_blank\"\n            >\n              verify your identity\n            </a>\n            Don't worry, both Coinbase and Gemini are regulated and in compliance with all applicable laws in each\n            jurisdiction in which they operate. Once you fund your token wallet via{\" \"}\n            <a href=\"https://www.coinbase.com/signup\" target=\"_new\">\n              Coinbase\n            </a>{\" \"}\n            or{\" \"}\n            <a href=\"https://exchange.gemini.com/register/check-location\" target=\"_blank\">\n              Gemini{\" \"}\n            </a>{\" \"}\n            (), you can return to Civil where we will walk you through how to complete your membership contribution. We\n            know this can be confusing. For more information, read this blog post or contact us at{\" \"}\n            <a href=\"mailto:support@civil.co\">support@civil.co</a>.\n          </p>\n        </Collapsable>\n      </TokenFAQCollapse>\n      <TokenFAQCollapse>\n        <Collapsable header={<TokenETHFAQQuestion4Text />} open={false}>\n          <p>\n            If you purchase Ether (ETH) in Coinbase using your Bank Account, Coinbase uses a ACH (Automated Clearing\n            House, which is governed by the Federal Reserve) bank transfer system for U.S. customers, and it can take\n            3-5 business days for funds to transfer from your bank.\n          </p>\n          <p>Buying ETH with a debit or certain credit cards is instant, once your account is verified on Coinbase.</p>\n          <p>\n            It can possibly take up 30 days with your first transaction for the Ether (ETH) to appear in your wallet.\n          </p>\n        </Collapsable>\n      </TokenFAQCollapse>\n      <TokenFAQCollapse>\n        <Collapsable header={<TokenETHFAQQuestion5Text />} open={false}>\n          <p>\n            AirSwap is a secure decentralized, peer-to-peer token trading network built on the Ethereum blockchain. It\n            is an independent entity. Airswap does not charge any of its own fees on each trade. You only have to pay a\n            Gas fee for each transaction on Ethereum. You can learn more about Airswap{\" \"}\n            <a href=\"https://www.airswap.io/\" target=\"_blank\">\n              here\n            </a>\n            .\n          </p>\n          <p>\n            You’ll be able to purchase Civil tokens (CVL) using Ethereum (ETH) in Airswap. Airswap will open its own\n            interface to allow you to use ETH to buy CVL. You will need to use a wallet such as Metamask to connect and\n            buy those tokens. Since Airswap is based on a trading network, the prices of Civil tokens (CVL) are based on\n            the current market rate and can fluctuate.\n          </p>\n        </Collapsable>\n      </TokenFAQCollapse>\n    </FlexColumnsPrimaryModule>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountHelp.tsx",
    "content": "import * as React from \"react\";\nimport { TokenQuestionsHeaderText, TokenFAQText } from \"./TokensTextComponents\";\nimport { FlexColumnsSecondaryModule } from \"./TokensStyledComponents\";\nimport { Collapsable } from \"../Collapsable\";\n\nexport const UserTokenAccountHelp: React.FunctionComponent = props => {\n  return (\n    <FlexColumnsSecondaryModule>\n      <Collapsable header={<TokenQuestionsHeaderText />} open={true}>\n        <TokenFAQText />\n      </Collapsable>\n    </FlexColumnsSecondaryModule>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountPaypal.tsx",
    "content": "import * as React from \"react\";\nimport { TokenDonateToCivilFoundationText } from \"./TokensTextComponents\";\nimport { PaypalDonate, FlexColumnsSecondaryModule } from \"./TokensStyledComponents\";\n\nexport const UserTokenAccountPaypal: React.FunctionComponent = props => {\n  return (\n    <FlexColumnsSecondaryModule>\n      <TokenDonateToCivilFoundationText />\n      <PaypalDonate />\n    </FlexColumnsSecondaryModule>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountProgress.tsx",
    "content": "import * as React from \"react\";\nimport { FlexColumnsSecondaryModule, TokenProgressContain } from \"./TokensStyledComponents\";\nimport { TokenConnectWalletCompletedText, TokenWalletAddressText } from \"./TokensTextComponents\";\nimport { EthAddressViewer } from \"../EthAddressViewer\";\n\nexport interface UserTokenAccountProgressProps {\n  userAccount: string;\n  logInComplete: boolean;\n}\n\nexport const UserTokenAccountProgress: React.FunctionComponent<UserTokenAccountProgressProps> = props => {\n  if (props.logInComplete) {\n    return (\n      <FlexColumnsSecondaryModule>\n        <TokenProgressContain>\n          <TokenConnectWalletCompletedText />\n          <EthAddressViewer address={props.userAccount} displayName={<TokenWalletAddressText />} />\n        </TokenProgressContain>\n      </FlexColumnsSecondaryModule>\n    );\n  }\n\n  return <></>;\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountRequirement.tsx",
    "content": "import * as React from \"react\";\nimport { TokenRequirement } from \"./TokensStyledComponents\";\n\nexport interface TokenAccountRequirementProps {\n  step?: string;\n}\n\nexport const UserTokenAccountRequirement: React.FunctionComponent<TokenAccountRequirementProps> = props => {\n  return <TokenRequirement step={props.step}>{props.children}</TokenRequirement>;\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensAccountSignup.tsx",
    "content": "import * as React from \"react\";\nimport { UserTokenAccountRequirement } from \"./TokensAccountRequirement\";\nimport { FlexColumnsPrimaryModule, TokenBtns, TokenRequirementIcon } from \"./TokensStyledComponents\";\nimport { TokenConnectWalletText, TokenConnectWalletBtnText, TokenAuthText } from \"./TokensTextComponents\";\nimport { TokenWalletIcon } from \"@joincivil/elements\";\nimport { TOKEN_PROGRESS } from \"./Tokens\";\n\nexport interface TokenRequirementProps {\n  step?: string;\n  user: any;\n  addWalletPath: string;\n  signupPath: string;\n}\n\n// TODO(jorgelo) This should take into account whether the currentUser.ethAddress is same as MM address. They should have to reconnect if that is true. (Thanks Toby!)\n\nexport const UserTokenAccountSignup: React.FunctionComponent<TokenRequirementProps> = props => {\n  const { addWalletPath, step, user } = props;\n\n  const renderConnectWallet = (): JSX.Element => (\n    <>\n      <TokenRequirementIcon step={step}>\n        <TokenWalletIcon />\n      </TokenRequirementIcon>\n      <TokenConnectWalletText />\n      <TokenBtns to={addWalletPath}>\n        <TokenConnectWalletBtnText />\n      </TokenBtns>\n    </>\n  );\n\n  const renderNotLoggedIn = (): JSX.Element => (\n    <>\n      <TokenRequirementIcon step={step}>\n        <TokenWalletIcon />\n      </TokenRequirementIcon>\n      <TokenAuthText />\n    </>\n  );\n\n  const renderAuthCard = (): JSX.Element => {\n    if (!user) {\n      return renderNotLoggedIn();\n    }\n\n    return renderConnectWallet();\n  };\n\n  if (step === TOKEN_PROGRESS.ACTIVE) {\n    return (\n      <FlexColumnsPrimaryModule padding={true}>\n        <UserTokenAccountRequirement>{renderAuthCard()}</UserTokenAccountRequirement>\n      </FlexColumnsPrimaryModule>\n    );\n  }\n\n  return <></>;\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport { Button, InvertedButton } from \"../Button\";\nimport { TOKEN_PROGRESS } from \"./Tokens\";\nimport { TabComponentProps } from \"../Tabs\";\nimport { PaypalLogoIcon } from \"../icons/logos\";\n\nexport interface TokenRequirementStyleProps {\n  step?: string;\n  padding?: boolean;\n}\n\nexport const TokenAccountOuter = styled.div`\n  background-color: ${colors.accent.CIVIL_BLUE_FADED_2};\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  padding: 20px 20px 50px;\n  width: 100%;\n`;\n\nexport const TokenSection = styled.div`\n  margin-bottom: 30px;\n`;\n\nconst PAYPAL_BLUE = \"rgba(43,86,255,0.5)\";\nconst PAYPAL_BLUE_DARK = \"#2b56ff\";\n\nexport const PaypalDonateContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  border: 1px solid ${PAYPAL_BLUE};\n`;\n\nexport const PaypalDonateIconContainer = styled.div`\n  padding: 18px 12px;\n  border-right: 1px solid ${PAYPAL_BLUE};\n`;\n\nexport const PaypalDonateIconButtonContainer = styled.div`\n  flex-grow: 1;\n`;\n\nexport const PaypalLogoContainer = styled.div`\n  padding: 18px;\n`;\n\nexport const PaypalDonateIconButton = styled.input`\n  background: #fff;\n  box-shadow: 0px 0px 0px transparent;\n  border: 0px solid transparent;\n  text-shadow: 0px 0px 0px transparent;\n  color: ${PAYPAL_BLUE_DARK};\n  padding: 20px;\n  border-left: 1px solid ${PAYPAL_BLUE};\n  flex-grow: 1;\n  width: 100%;\n  height: 100%;\n  outline: none;\n  font-weight: bold;\n\n  &:hover {\n    background: ${PAYPAL_BLUE_DARK};\n    color: #fff;\n    box-shadow: 0px 0px 0px transparent;\n    border: 0px solid transparent;\n    text-shadow: 0px 0px 0px transparent;\n  }\n`;\n\nexport const PaypalDonate: React.FunctionComponent = () => (\n  <form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\" target=\"_blank\">\n    <PaypalDonateContainer>\n      <PaypalLogoContainer>\n        <PaypalLogoIcon />\n      </PaypalLogoContainer>\n      <PaypalDonateIconButtonContainer>\n        <PaypalDonateIconButton type=\"submit\" value=\"Donate\" />\n      </PaypalDonateIconButtonContainer>\n    </PaypalDonateContainer>\n    <input type=\"hidden\" name=\"cmd\" value=\"_s-xclick\" />\n    <input type=\"hidden\" name=\"hosted_button_id\" value=\"7MGFAU85AUA46\" />\n    <img src=\"https://www.paypal.com/en_US/i/scr/pixel.gif\" width=\"1\" height=\"1\" />\n  </form>\n);\n\nexport const TokenAccountInner = styled.div`\n  max-width: 1200px;\n`;\n\nexport const TokenBtns = styled(Button)`\n  border-radius: 1px;\n  font-size: 13px;\n  font-weight: 700;\n  letter-spacing: 0.3px;\n  text-transform: none;\n`;\n\nexport const TokenBtnsInverted = styled(InvertedButton)`\n  border-radius: 1px;\n  font-size: 13px;\n  font-weight: 700;\n  letter-spacing: 0.3px;\n  text-transform: none;\n`;\n\nexport const FlexColumns = styled.div`\n  display: flex;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nexport const FlexColumnsPrimary = styled.div`\n  margin-right: 30px;\n  width: calc(100% - 380px);\n\n  ${mediaQueries.MOBILE} {\n    margin-right: 0;\n    width: auto;\n  }\n`;\n\nexport const FlexColumnsPrimaryModule = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  background-color: ${colors.basic.WHITE};\n  margin-bottom: 30px;\n  ${(props: TokenRequirementStyleProps) => (props.padding ? \"padding: 30px 0\" : \"\")};\n`;\n\nexport const FlexColumnsSecondary = styled.div`\n  width: 350px;\n\n  ${mediaQueries.MOBILE} {\n    width: auto;\n  }\n`;\n\nexport const FlexColumnsSecondaryModule = styled.div`\n  background-color: ${colors.basic.WHITE};\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  margin-bottom: 30px;\n  padding: 20px 30px;\n\n  h3 {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 18px;\n    line-height: 28px;\n    margin: 0 0 25px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 16px;\n    line-height: 26px;\n\n    a {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: none;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n`;\n\nexport const TokenHeader = styled.div`\n  color: ${colors.primary.BLACK};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 30px 30px 40px;\n  text-align: center;\n\n  h2 {\n    font-size: 27px;\n    line-height: 39px;\n    margin-bottom: 25px;\n  }\n\n  p {\n    font-size: 24px;\n    line-height: 29px;\n    margin-bottom: 60px;\n  }\n`;\n\nexport const TokenAccountSectionHeader = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  margin: 0 0 30px;\n  padding: 0 25px 30px;\n  text-align: center;\n\n  h3 {\n    color: ${colors.primary.BLACK};\n    font-size: 20px;\n    font-weight: 700;\n    line-height: 32px;\n    margin: 0 0 8px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 18px;\n    letter-spacing: -0.12px;\n    line-height: 33px;\n    margin: 0;\n  }\n`;\n\nexport const TokenRequirement = styled.div`\n  margin: 0 30px 0 50px;\n  padding: ${(props: TokenRequirementStyleProps) =>\n    props.step === \"completed\" ? \"0 20px 0 35px\" : \"5px 20px 20px 35px\"};\n  position: relative;\n\n  h3 {\n    color: ${(props: TokenRequirementStyleProps) =>\n      props.step === \"completed\" ? colors.primary.BLACK : colors.accent.CIVIL_GRAY_1};\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 18px;\n    font-weight: ${(props: TokenRequirementStyleProps) => (props.step === \"completed\" ? \"400\" : \"600\")};\n    ${(props: TokenRequirementStyleProps) => (props.step === \"completed\" ? \"letter-spacing: -0.12px;\" : \"\")};\n    line-height: 33px;\n    margin: ${(props: TokenRequirementStyleProps) => (props.step === \"completed\" ? \"0\" : \"0 0 5px\")};\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 16px;\n    line-height: 26px;\n    margin: 0 0 30px;\n  }\n`;\n\nexport const TokenRequirementIcon = styled.div`\n  align-items: center;\n  background-color: ${colors.basic.WHITE};\n  border: ${(props: TokenRequirementStyleProps) =>\n    props.step === TOKEN_PROGRESS.DISABLED\n      ? \"1px solid\" + colors.accent.CIVIL_GRAY_3\n      : \"1px solid\" + colors.accent.CIVIL_BLUE};\n  border-radius: 50%;\n  display: flex;\n  height: 38px;\n  justify-content: center;\n  left: -21px;\n  position: absolute;\n  top: 0;\n  width: 38px;\n  z-index: 1;\n`;\n\nexport const TokenCheckIcon = styled.div`\n  left: -21px;\n  position: absolute;\n  top: 0;\n  z-index: 1;\n`;\n\nexport const TokenBuySection = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  padding: 0 30px 5px;\n\n  h4 {\n    font-size: 16px;\n    font-weight: 700;\n    line-height: 26px;\n    margin: 0;\n  }\n\n  h3 {\n    font-size: 20px;\n    font-weight: 700;\n    line-height: 32px;\n    margin: 0;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 16px;\n    line-height: 24px;\n    margin: 0 0 15px;\n  }\n\n  button {\n    border-radius: 1px;\n    font-size: 13px;\n    font-weight: 700;\n    letter-spacing: 0.3px;\n    text-transform: none;\n  }\n`;\n\nexport const TokenBuyIntro = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_2};\n  padding: 0 0 15px;\n  margin: 0 0 25px;\n\n  span {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    display: block;\n    font-size: 14px;\n    line-height: 24px;\n    margin: 0 0 15px;\n  }\n`;\n\nexport const TokenAirswapSection = styled.div`\n  padding: 15px 30px 0 30px;\n  text-align: center;\n  ${mediaQueries.MOBILE} {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n\n  button {\n    display: block;\n    width: 100%;\n  }\n`;\n\nexport const TokenSellSection = styled.div`\n  margin: 0 auto;\n  max-width: 450px;\n\n  button {\n    margin-top: 50px;\n  }\n`;\n\nexport const TokenOrBreak = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 50px 0;\n  position: relative;\n\n  p {\n    background-color: ${colors.basic.WHITE};\n    color: ${colors.accent.CIVIL_GRAY_3};\n    font-size: 14px;\n    left: calc(50% - 50px);\n    letter-spacing: 0.88px;\n    line-height: 1;\n    margin: 0;\n    position: absolute;\n    text-transform: uppercase;\n    top: -5px;\n    width: 100px;\n  }\n`;\n\nexport const TokenProgressContain = styled.div`\n  margin-bottom: 10px;\n\n  h3 {\n    color: ${colors.primary.BLACK};\n    font-size: 16px;\n    font-weight: bold;\n    line-height: 26px;\n    margin: 0 0 8px;\n\n    svg {\n      margin-right: 8px;\n      vertical-align: text-bottom;\n    }\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_2};\n    font-size: 13px;\n    font-weight: 500;\n    letter-spacing: -0.14px;\n    line-height: 21px;\n  }\n\n  span {\n    margin-right: 15px;\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: none;\n  }\n\n  div {\n    align-items: flex-start;\n  }\n\n  button {\n    margin: 0 0 0 10px;\n  }\n`;\n\nexport const TokenFAQCollapse = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 21px;\n  padding: 20px 30px;\n\n  h3 {\n    font-size: 14px;\n    font-weight: bold;\n    line-height: 32px;\n    margin: 0;\n  }\n\n  li {\n    margin-bottom: 15px;\n  }\n`;\n\nexport const TokenFAQImg = styled.div`\n  align-items: flex-start;\n  display: flex;\n\n  img {\n    margin-left: 50px;\n    max-width: 250px;\n    width: 50%;\n  }\n`;\n\nexport const TokenFAQLineBreak = styled.hr`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  margin: 20px 0;\n  width: 15px;\n`;\n\nexport const CloseBtn = styled(InvertedButton)`\n  border: none;\n  padding: 0;\n  height: 40px;\n  position: absolute;\n  right: 50px;\n  top: 45px;\n  width: 40px;\n\n  svg path {\n    transition: fill 0.2s ease;\n  }\n\n  &:focus,\n  &:hover {\n    background-color: transparent;\n\n    svg path {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport const TokenExchangeSection = styled.div`\n  button {\n    background-color: transparent;\n    border: 1px solid ${colors.accent.CIVIL_BLUE};\n    color: ${colors.accent.CIVIL_BLUE};\n    transition: all 0.2s ease;\n\n    &:hover,\n    &:focus {\n      background-color: ${colors.accent.CIVIL_BLUE};\n      color: ${colors.basic.WHITE};\n    }\n  }\n`;\n\nexport const TokenCalcCVL = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin: 70px 0 0;\n  text-align: center;\n\n  span {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 22px;\n  }\n\n  h4 {\n    font-size: 28px;\n    font-weight: 500;\n    letter-spacing: -0.58px;\n    line-height: 39px;\n  }\n\n  p {\n    font-size: 14px;\n    line-height: 22px;\n  }\n`;\n\nexport const TokenBuySellComplete = styled.div`\n  margin-bottom: 35px;\n  text-align: center;\n\n  & > svg {\n    margin: 0 auto 5px;\n  }\n\n  h3 {\n    font-size: 20px;\n    font-weight: bold;\n    line-height: 32px;\n    margin-bottom: 14px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 14px;\n    line-height: 20px;\n    margin-bottom: 17px;\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: none;\n\n    &:hover,\n    &:focus {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport const TokenUnlock = styled.div`\n  background-color: #fff7f8;\n  border: 1px solid ${colors.accent.CIVIL_RED_FADED};\n  border-radius: 4px;\n  padding: 20px;\n\n  h4 {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 16px;\n    font-weight: 600;\n    line-height: 26px;\n    margin-bottom: 10px;\n\n    svg {\n      margin-right: 8px;\n    }\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 14px;\n    line-height: 20px;\n\n    b {\n      font-weight: 700;\n    }\n  }\n\n  a {\n    border: 1px solid ${colors.accent.CIVIL_BLUE};\n    border-radius: 2px;\n    padding: 16px 40px;\n  }\n`;\n\nexport const TokenBuySellTab = styled.li`\n  background-color: ${(props: TabComponentProps) => (props.isActive ? \"transparent\" : colors.accent.CIVIL_GRAY_4)};\n  border-top: 1px solid ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_BLUE : \"transparent\")};\n  color: ${colors.primary.CIVIL_GRAY_1};\n  cursor: pointer;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 18px;\n  font-weight: 600;\n  letter-spacing: -0.12px;\n  line-height: 33px;\n  padding: 20px 0;\n  text-align: center;\n  text-decoration: none;\n  transition: border-color 500ms;\n  width: 50%;\n\n  ${mediaQueries.HOVER} {\n    &:hover {\n      border-color: ${(props: TabComponentProps) =>\n        props.isActive ? colors.accent.CIVIL_BLUE : colors.accent.CIVIL_GRAY_3};\n    }\n  }\n`;\n\nexport const TokenBuySellTabsNav = styled.div`\n  height: 80px;\n  margin: -31px 0 50px;\n`;\n\nexport const ComingSoon = styled.div`\n  text-align: center;\n\n  h3 {\n    margin-bottom: 10px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 14px;\n    line-height: 20px;\n\n    a {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: none;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Tokens/TokensTextComponents.tsx",
    "content": "import styled from \"styled-components\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { HollowGreenCheck, NorthEastArrow } from \"../icons\";\nimport { colors } from \"../styleConstants\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\n// Signup/Connect wallet section\n\nexport const TokenWelcomeHeaderText: React.FunctionComponent = props => (\n  <>\n    <h2>Hello, you’re about to become a Civil member</h2>\n    <p>Let’s get you set up to use, buy or sell Civil tokens</p>\n  </>\n);\n\nexport const TokenBuySellHeaderText: React.FunctionComponent = props => <h2>Buy or Sell Civil Tokens</h2>;\n\nexport const TokenConnectWalletText: React.FunctionComponent = props => (\n  <>\n    <h3>Connect your cryptocurrency wallet</h3>\n    <p>Use your wallet to safely store your cryptocurrencies like Ether (ETH) and Civil tokens (CVL)</p>\n  </>\n);\n\nexport const TokenConnectWalletCompletedText: React.FunctionComponent = props => (\n  <h3>\n    <HollowGreenCheck />\n    Wallet Connected\n  </h3>\n);\n\nexport const TokenWalletAddressText: React.FunctionComponent = props => (\n  <>\n    <span>Public Address</span>{\" \"}\n    <a href={links.FAQ_WHAT_IS_PUBLIC_WALLET_ADDRESS} target=\"_blank\">\n      What's this?\n    </a>\n  </>\n);\n\nexport const TokenMustBuyEth: React.FunctionComponent = props => (\n  <>\n    To complete your membership contribution and receive Civil tokens (CVL), you must use Ether (ETH). Then you will be\n    able to exchange ETH for CVL.{\" \"}\n    <a href=\"https://blog.joincivil.com/how-to-purchase-eth-an-explainer-725bd90cfaaa\" target=\"_blank\">\n      Learn how to buy ETH here.\n    </a>\n  </>\n);\n\n// TODO(jorgelo): Is this text okay?\nexport const TokenConnectWalletBtnText: React.FunctionComponent = props => <>Connect your wallet</>;\n\n// TODO(jorgelo): Find the real text here.\nexport const TokenAuthText: React.FunctionComponent = props => (\n  <>\n    <h3>Sign up or Log in to your Civil account</h3>\n  </>\n);\n\n// TODO(jorgelo): Is this text okay?\nexport const TokenAuthBtnText: React.FunctionComponent = props => <>Sign up or Log in</>;\n\n// Buy section\n\nexport const TokenBuyTextDisabled: React.FunctionComponent = props => (\n  <p>Sign up or Log in to use, share or buy Civil tokens.</p>\n);\n\nexport const TokenBuyBtnDisabledText: React.FunctionComponent = props => <>Buy CVL</>;\n\nexport const TokenBuyFoundationBtnText: React.FunctionComponent = props => (\n  <>Buy CVL from Civil Media Company in Airswap</>\n);\n\nexport const TokenBuyExchangeBtnText: React.FunctionComponent = props => <>Buy CVL on the open market in Airswap</>;\n\nexport const TokenBuyText: React.FunctionComponent = props => (\n  <>\n    <p>\n      To buy Civil tokens (CVL), you must have Ether (ETH). Then, you will be able to exchange ETH for CVL. If you don't\n      have enough ETH, you can buy ETH on <a href=\"https://coinbase.com\">Coinbase</a> or{\" \"}\n      <a href=\"https://gemini.com\">Gemini</a> or{\" \"}\n      <a href=\"https://blog.joincivil.com/how-to-purchase-eth-an-explainer-725bd90cfaaa\">learn how</a>. Please note, if\n      you are a first-time purchaser, it may take a few days to get ETH in your wallet.\n    </p>\n  </>\n);\n\nexport const TokenAirswapFoundationText: React.FunctionComponent = props => (\n  <>\n    <h3>Contribute to the Civil Foundation</h3>\n    <p>\n      Buy Civil tokens from The Civil Media Company and 100% of net proceeds go to the Civil Foundation for supporting\n      worthy journalism.{\" \"}\n      <a href=\"https://medium.com/@kinsleyd/5e0ccdc918cc\" target=\"_blank\">\n        Learn about our transparent pricing.\n      </a>\n    </p>\n  </>\n);\n\nexport const TokenUniswapExchangeText: React.FunctionComponent = props => (\n  <>\n    <h3>Buy Civil tokens on the open market</h3>\n    <p>\n      The Civil community can buy and sell Civil tokens between each other without a middle man, sometimes resulting in\n      a lower price than offered by The Civil Media Company. Tokens bought on the open market perform the exact same\n      utility as those purchased directly from The Civil Media Company, however none of the proceeds go to the Civil\n      Foundation. Instead, the funds go to a third-party buyer.\n    </p>\n  </>\n);\n\nexport const TokenAirswapExchangeTermsOfSaleTextContainer = styled.div`\n  margin-top: 12px;\n  font-size: 13px;\n  color: ${colors.primary.CIVIL_GRAY_2};\n`;\n\nexport const TokenAirswapExchangeTermsOfSaleText: React.FunctionComponent = props => (\n  <TokenAirswapExchangeTermsOfSaleTextContainer>\n    By clicking buy to purchase Civil tokens, you agree to the{\" \"}\n    <a href=\"https://civil.co/terms-of-sale/\" target=\"_blank\">\n      Terms of Sale.\n    </a>\n  </TokenAirswapExchangeTermsOfSaleTextContainer>\n);\n\nexport const TokenOrText: React.FunctionComponent = props => <p>or</p>;\n\nexport const TokenBuyCompleteText: React.FunctionComponent = props => (\n  <>\n    <h3>Thanks for your purchase!</h3>\n    <p>Your CVL will be deposited to your wallet address.</p>\n    <p>\n      Please check the{\" \"}\n      <Link to=\"/dashboard/tasks/transfer-voting-tokens\" target=\"_blank\">\n        Dashboard\n      </Link>{\" \"}\n      to see your purchased CVL in the Available Balance.\n      <br />\n      To learn how to add Civil tokens in your MetaMask wallet,{\" \"}\n      <a href={links.FAQ_HOME} target=\"_blank\">\n        go to our FAQ <NorthEastArrow color={colors.accent.CIVIL_BLUE} />\n      </a>\n    </p>\n  </>\n);\n\n// Sell section\n\nexport const TokenSellInstructionsText: React.FunctionComponent = props => (\n  <p>\n    To sell Civil tokens (CVL), you must first exchange them for Ether (ETH). Then, you will be able to exchange ETH for\n    USD or local currencies at an exchange like{\" \"}\n    <a href=\"https://coinbase.com\" target=\"_blank\">\n      Coinbase\n    </a>{\" \"}\n    or{\" \"}\n    <a href=\"https://gemini.com/\" target=\"_blank\">\n      Gemini\n    </a>\n  </p>\n);\n\nexport const TokenSellAirswapText: React.FunctionComponent = props => <h3>Sell Civil tokens in Airswap</h3>;\n\nexport const TokenSellCompleteText: React.FunctionComponent = props => (\n  <>\n    <h3>Your sell was successful! </h3>\n    <p>Your ETH will be deposited to your wallet address.</p>\n    <p>\n      Please check the{\" \"}\n      <Link to=\"/dashboard/tasks/transfer-voting-tokens\" target=\"_blank\">\n        Dashboard\n      </Link>{\" \"}\n      to see your CVL balance in the Available Balance. To learn how to sell ETH for USD,{\" \"}\n      <a href={links.FAQ_HOME} target=\"_blank\">\n        go to our FAQ <NorthEastArrow color={colors.accent.CIVIL_BLUE} />\n      </a>\n      .\n    </p>\n  </>\n);\n\n// FAQ section\n\nexport const TokenETHFAQQuestion1Text: React.FunctionComponent = props => <h3>What is Ethereum, ETH and gas?</h3>;\n\nexport const TokenETHFAQQuestion2Text: React.FunctionComponent = props => <h3>Why do I need ETH?</h3>;\n\nexport const TokenETHFAQQuestion3Text: React.FunctionComponent = props => <h3>How do I buy ETH?</h3>;\n\nexport const TokenETHFAQQuestion4Text: React.FunctionComponent = props => <h3>How long does it take to buy ETH?</h3>;\n\nexport const TokenETHFAQQuestion5Text: React.FunctionComponent = props => <h3>What is Airswap?</h3>;\n\nexport const TokenDonateToCivilFoundationText: React.FunctionComponent = () => (\n  <>\n    <h3>Donate to the Civil Foundation</h3>\n    <p>Want to support this project, but don’t want to buy Civil tokens? </p>\n  </>\n);\n\nexport const TokenQuestionsHeaderText: React.FunctionComponent = props => <h3>Ask Questions</h3>;\n\nexport const TokenFAQText: React.FunctionComponent = props => (\n  <>\n    <p>\n      For support inquiries, send email to <a href={\"mailto:\" + `${links.EMAIL_SUPPORT}`}>{links.EMAIL_SUPPORT}</a>\n    </p>\n    <p>\n      Read our{\" \"}\n      <a href={links.FAQ_HOME} target=\"_blank\">\n        Frequently Asked Questions (FAQ)\n      </a>{\" \"}\n      for general help\n    </p>\n  </>\n);\n\nexport const SellFeeNotice = (props: any) => (\n  <small>\n    A small transaction fee will be added for all sales. This fee does not go to the Civil Media Company. Learn more\n  </small>\n);\n\nexport const ApproveNoticeText = ({ cvlToSell }: { cvlToSell: any }) => (\n  <span>\n    Almost there! You need to authorize the exchange to sell {cvlToSell} CVL on your behalf. After you approve you can\n    complete the sale.\n  </span>\n);\n"
  },
  {
    "path": "packages/components/src/Tokens/__snapshots__/TokensAccount.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Storefront / User Token Account Buy Section 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMYS obEYX\"\n    >\n      <div>\n        <div\n          className=\"sc-LzNaj dOcwcu\"\n        >\n          <ul\n            className=\"sc-LzMgC fQTicW\"\n          >\n            <li\n              className=\"sc-LzNai hwiJTG\"\n              onClick={[Function]}\n            >\n              Buy\n            </li>\n            <li\n              className=\"sc-LzNai eQydJt\"\n              onClick={[Function]}\n            >\n              Sell\n            </li>\n          </ul>\n          <div\n            className=\"sc-LzMgB fJSEwD\"\n            onClick={[Function]}\n          >\n            <svg\n              height=\"12\"\n              viewBox=\"0 0 12 8\"\n              width=\"8\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n                fill=\"#7D7373\"\n                fillRule=\"evenodd\"\n                opacity=\"1\"\n              />\n            </svg>\n          </div>\n        </div>\n        <div>\n          <div\n            className=\"sc-LzMZa hUhdDP\"\n          >\n            <div\n              className=\"sc-LzMml gBvHnq\"\n              type={2}\n            >\n              <div\n                className=\"sc-LzMmm hiBtBT\"\n              />\n              <div\n                className=\"sc-LzMmn ctwvws\"\n              >\n                <p>\n                  To buy Civil tokens (CVL), you must have Ether (ETH). Then, you will be able to exchange ETH for CVL. If you don't have enough ETH, you can buy ETH on \n                  <a\n                    href=\"https://coinbase.com\"\n                  >\n                    Coinbase\n                  </a>\n                   or\n                   \n                  <a\n                    href=\"https://gemini.com\"\n                  >\n                    Gemini\n                  </a>\n                   or\n                   \n                  <a\n                    href=\"https://blog.joincivil.com/how-to-purchase-eth-an-explainer-725bd90cfaaa\"\n                  >\n                    learn how\n                  </a>\n                  . Please note, if you are a first-time purchaser, it may take a few days to get ETH in your wallet.\n                </p>\n              </div>\n            </div>\n            <div\n              className=\"sc-LzMZz eECaQl\"\n            >\n              <div\n                className=\"sc-LzMZz eECaQl\"\n              >\n                <h3>\n                  Contribute to the Civil Foundation\n                </h3>\n                <p>\n                  Buy Civil tokens from The Civil Media Company and 100% of net proceeds go to the Civil Foundation for supporting worthy journalism.\n                   \n                  <a\n                    href=\"https://medium.com/@kinsleyd/5e0ccdc918cc\"\n                    target=\"_blank\"\n                  >\n                    Learn about our transparent pricing.\n                  </a>\n                </p>\n                <div\n                  className=\"sc-fzXfPb kKgGlw\"\n                >\n                  <div />\n                </div>\n                <div\n                  className=\"sc-LzNrW jewfBK\"\n                >\n                  <span>\n                    You are \n                    buying\n                  </span>\n                  <h4>\n                    0\n                     \n                    CVL\n                  </h4>\n                </div>\n                <button\n                  className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n                  onClick={[Function]}\n                  theme={\n                    Object {\n                      \"primaryButtonBackground\": \"#2B56FF\",\n                      \"primaryButtonColor\": \"#FFFFFF\",\n                      \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n                      \"primaryButtonDisabledColor\": \"#FFFFFF\",\n                      \"primaryButtonFontWeight\": \"normal\",\n                      \"primaryButtonHoverBackground\": \"#4066FF\",\n                      \"primaryButtonTextTransform\": \"uppercase\",\n                      \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n                    }\n                  }\n                  type=\"button\"\n                >\n                  Buy CVL from Civil Media Company in Airswap\n                </button>\n                <div\n                  className=\"sc-LzNal dYrXUa\"\n                >\n                  By clicking buy to purchase Civil tokens, you agree to the\n                   \n                  <a\n                    href=\"https://civil.co/terms-of-sale/\"\n                    target=\"_blank\"\n                  >\n                    Terms of Sale.\n                  </a>\n                </div>\n              </div>\n              <div\n                className=\"sc-LzMZB dYPTal\"\n              >\n                <p>\n                  or\n                </p>\n              </div>\n              <div>\n                <h3>\n                  Buy Civil tokens on the open market\n                </h3>\n                <p>\n                  The Civil community can buy and sell Civil tokens between each other without a middle man, sometimes resulting in a lower price than offered by The Civil Media Company. Tokens bought on the open market perform the exact same utility as those purchased directly from The Civil Media Company, however none of the proceeds go to the Civil Foundation. Instead, the funds go to a third-party buyer.\n                </p>\n                <div />\n              </div>\n              <div\n                className=\"sc-LzNal dYrXUa\"\n              >\n                By clicking buy to purchase Civil tokens, you agree to the\n                 \n                <a\n                  href=\"https://civil.co/terms-of-sale/\"\n                  target=\"_blank\"\n                >\n                  Terms of Sale.\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / User Token Account\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Buy Section\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / User Token Account Signup Section 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMYS obEYX\"\n    >\n      <div\n        className=\"sc-LzMYX hRtmCy\"\n      >\n        <div\n          className=\"sc-LzMYY hVpGrb\"\n          step=\"active\"\n        >\n          <svg\n            height=\"21\"\n            viewBox=\"0 0 24 21\"\n            width=\"24\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"#2B56FF\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n            >\n              <path\n                d=\"M22.179 13.216L22.179 5.049C22.179 4.253 21.531 3.608 20.732 3.608L17.357 3.608 17.357 1.301C17.355 0.901 17.169 0.523 16.853 0.277 16.536 0.03 16.123-0.058 15.732 0.038L1.35 3.608C0.589 3.658-0.002 4.289 0 5.049L0 18.501C0 19.297 0.648 19.942 1.446 19.942L15.429 19.942C17.348 21.377 20.034 21.187 21.731 19.496 23.427 17.805 23.618 15.129 22.179 13.216ZM15.964 0.965C16.068 0.936 16.179 0.96 16.263 1.028 16.347 1.093 16.395 1.195 16.393 1.301L16.393 3.608 5.361 3.608 15.964 0.965ZM1.446 18.981C1.18 18.981 0.964 18.766 0.964 18.501L0.964 5.049C0.964 4.783 1.18 4.568 1.446 4.568L20.732 4.568C20.998 4.568 21.214 4.783 21.214 5.049L21.214 12.255C19.295 10.821 16.609 11.011 14.912 12.702 13.216 14.392 13.025 17.069 14.464 18.981L1.446 18.981ZM18.321 19.942C16.191 19.942 14.464 18.222 14.464 16.099 14.464 13.976 16.191 12.255 18.321 12.255 20.452 12.255 22.179 13.976 22.179 16.099 22.179 18.222 20.452 19.942 18.321 19.942ZM20.732 16.099C20.732 16.364 20.516 16.579 20.25 16.579L18.804 16.579 18.804 18.021C18.804 18.286 18.588 18.501 18.321 18.501 18.055 18.501 17.839 18.286 17.839 18.021L17.839 16.579 16.393 16.579C16.127 16.579 15.911 16.364 15.911 16.099 15.911 15.833 16.127 15.618 16.393 15.618L17.839 15.618 17.839 14.177C17.839 13.912 18.055 13.697 18.321 13.697 18.588 13.697 18.804 13.912 18.804 14.177L18.804 15.618 20.25 15.618C20.516 15.618 20.732 15.833 20.732 16.099Z\"\n              />\n            </g>\n          </svg>\n        </div>\n        <h3>\n          Connect your cryptocurrency wallet\n        </h3>\n        <p>\n          Use your wallet to safely store your cryptocurrencies like Ether (ETH) and Civil tokens (CVL)\n        </p>\n        <a\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzMYr eWSEya\"\n          href=\"/auth/wallet\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n        >\n          Connect your wallet\n        </a>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / User Token Account\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Signup Section\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / User Token Account Tutorial Verify 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMYS obEYX\"\n    >\n      <div\n        className=\"sc-LzMYW kskieS\"\n      >\n        <h3>\n          Take the Civil Tutorial\n        </h3>\n        <p>\n          Before you can use, buy or sell Civil tokens, you must complete a tutorial to ensure you understand how to use Civil tokens and how the Civil Registry works.\n        </p>\n      </div>\n      <div\n        className=\"sc-LzMYX hRtmCy\"\n        step=\"active\"\n      >\n        <div\n          className=\"sc-LzMYY hVpGrb\"\n          step=\"active\"\n        >\n          <svg\n            height=\"20\"\n            viewBox=\"0 0 20 20\"\n            width=\"20\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"none\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n            >\n              <g\n                transform=\"translate(-1.5 -1.5)\"\n              >\n                <polygon\n                  points=\"0 0 22.909 0 22.909 22.909 0 22.909\"\n                />\n                <path\n                  d=\"M14.318 3.818L14.318 10.5 4.935 10.5 4.372 11.063 3.818 11.617 3.818 3.818 14.318 3.818ZM15.273 1.909L2.864 1.909C2.339 1.909 1.909 2.339 1.909 2.864L1.909 16.227 5.727 12.409 15.273 12.409C15.798 12.409 16.227 11.98 16.227 11.455L16.227 2.864C16.227 2.339 15.798 1.909 15.273 1.909ZM20.045 5.727L18.136 5.727 18.136 14.318 5.727 14.318 5.727 16.227C5.727 16.752 6.157 17.182 6.682 17.182L17.182 17.182 21 21 21 6.682C21 6.157 20.57 5.727 20.045 5.727Z\"\n                  fill=\"#2B56FF\"\n                />\n              </g>\n            </g>\n          </svg>\n        </div>\n        <h3>\n          Civil Tutorial\n        </h3>\n        <p>\n          Complete a walkthrough and answer a series of questions about Civil and how to use Civil tokens (CVL). This is a standard procedure to help inform you of best practices with purchasing and using tokens.\n        </p>\n        <p>\n          It will take about 30 minutes to complete if you're a novice. If at any point you answer incorrectly, don’t worry. You will be able to answer the questions again.\n        </p>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzMYr eWSEya\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Start the Civil Tutorial\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / User Token Account\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Tutorial Verify\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/AirswapBuyCVL.tsx",
    "content": "import * as React from \"react\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nimport { airswapScript, getAirswapCvlAddress, getAirswapEnv } from \"@joincivil/utils\";\nimport { Button } from \"../../Button\";\n\nexport interface BuyCVLProps {\n  buyFromAddress?: string;\n  buyCVLBtnText?: string | JSX.Element;\n  network: string;\n  amount?: number;\n  onClick?(index: number): void;\n  onComplete(): void;\n}\n\nclass BuyCVLBase extends React.Component<BuyCVLProps> {\n  public render(): JSX.Element {\n    return <Button onClick={() => this.displayAirswap()}>{this.props.buyCVLBtnText || \"Buy CVL\"}</Button>;\n  }\n\n  private displayAirswap(): void {\n    const environment = getAirswapEnv(this.props.network);\n    const tokenAddress = getAirswapCvlAddress(this.props.network);\n    const buyFromAddress = this.props.buyFromAddress || \"\";\n    const amount = this.props.amount || 0;\n\n    // this is pretty hacky, would probably be better off making this a bignumber and converting to wei\n    // however, this doesn't display properly in Airswap if its more than 3 digits\n    const amountString = Math.ceil(amount).toString() + \"000000000000000000\";\n\n    console.log(\"amountString\", amountString);\n\n    // @ts-ignore\n    window.AirSwap.Trader.render(\n      {\n        mode: \"buy\",\n        env: environment,\n        token: tokenAddress,\n        address: buyFromAddress,\n        // amount: amountString,\n        onComplete: () => {\n          this.props.onComplete();\n        },\n        onCancel: () => {\n          console.info(\"Trade cancelled\");\n        },\n      },\n      \"body\",\n    );\n  }\n}\n\nexport const AirswapBuyCVL = makeAsyncScriptLoader(airswapScript)(BuyCVLBase);\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/AirswapBuySection.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { TokenBuyFoundationBtnText, TokenAirswapExchangeTermsOfSaleText } from \"../TokensTextComponents\";\nimport { AirswapBuyCVL } from \"./AirswapBuyCVL\";\nimport { TokenPurchaseSummary } from \"../TokenPurchaseSummary\";\n\nconst cvlPriceQuery = gql`\n  query($usdToSpend: Float!) {\n    storefrontEthPrice\n    storefrontCvlPrice\n    storefrontCvlQuoteUsd(usdToSpend: $usdToSpend)\n  }\n`;\n\nexport interface AirswapBuySectionProps {\n  usdToSpend: number;\n  ethToSpend: number;\n  foundationAddress: string;\n  network: string;\n  onBuyComplete(): void;\n}\nexport const AirswapBuySection = (props: AirswapBuySectionProps) => {\n  const { usdToSpend, onBuyComplete, foundationAddress, network } = props;\n  return (\n    <>\n      <Query<any> query={cvlPriceQuery} variables={{ usdToSpend }}>\n        {({ loading, error, data }) => {\n          if (error) {\n            return <div>error loading data</div>;\n          }\n          const totalTokens = data.storefrontCvlQuoteUsd;\n          const pricePer = usdToSpend / data.storefrontCvlQuoteUsd;\n          return (\n            <>\n              <TokenPurchaseSummary\n                mode={\"buy\"}\n                currencyCode=\"CVL\"\n                pricePer={pricePer}\n                totalTokens={totalTokens}\n                totalPrice={usdToSpend}\n              />\n              <AirswapBuyCVL\n                network={network}\n                buyCVLBtnText={<TokenBuyFoundationBtnText />}\n                buyFromAddress={foundationAddress}\n                onComplete={onBuyComplete}\n                amount={totalTokens}\n              />\n              <TokenAirswapExchangeTermsOfSaleText />\n            </>\n          );\n        }}\n      </Query>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/TokensTabBuy.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport StoryRouter from \"storybook-react-router\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport styled from \"styled-components\";\nimport Web3HttpProvider from \"web3-providers-http\";\n\nimport { TokensTabBuy } from \"./TokensTabBuy\";\nimport { CivilContext, buildCivilContext } from \"../../context/CivilContext\";\nimport { UniswapBuy } from \"./UniswapBuy\";\nimport { AirswapBuyCVL } from \"./AirswapBuyCVL\";\nimport { TokensTabBuyComplete } from \"./TokensTabBuyComplete\";\nimport Web3 from \"web3\";\n\nexport const Container = styled.div`\n  align-items: center;\n  display: flex;\n  height: 250px;\n  justify-content: center;\n  width: 100%;\n  max-width: 720px;\n`;\nconst typeDefs = `\n  type Query {\n    storefrontEthPrice: Float\n    storefrontCvlPrice: Float\n    storefrontCvlQuoteUsd(usdToSpend: Float!): Float\n  }\n\n  schema {\n    query: Query\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      storefrontEthPrice: () => {\n        return 102.98;\n      },\n      storefrontCvlPrice: () => {\n        return 0.2;\n      },\n      storefrontCvlQuoteUsd: () => {\n        return 500.48635;\n      },\n    };\n  },\n};\nconst web3Provider = new Web3HttpProvider(\"http://localhost:8045\");\nconst web3 = new Web3(web3Provider);\nconst civilContext = buildCivilContext({ web3, featureFlags: [\"uniswap\"], config: { DEFAULT_ETHEREUM_NETWORK: 4 } });\n\nconst foundationAddress = \"hello!\";\n\nstoriesOf(\"Storefront / Buy Tab\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .addDecorator(StoryRouter())\n  .add(\"Buy Tab\", () => {\n    return (\n      <Container>\n        <CivilContext.Provider value={civilContext}>\n          <TokensTabBuy foundationAddress={foundationAddress} network={\"4\"} />\n        </CivilContext.Provider>\n      </Container>\n    );\n  })\n  .add(\"Buy from Uniswap\", () => {\n    return (\n      <CivilContext.Provider value={civilContext}>\n        <Container>\n          <UniswapBuy\n            usdToSpend={100}\n            ethToSpend={0.746}\n            ethExchangeRate={0.00746}\n            onBuyComplete={() => alert(\"buy complete\")}\n          />\n        </Container>\n      </CivilContext.Provider>\n    );\n  })\n  .add(\"Buy from Airswap\", () => {\n    return (\n      <Container>\n        <AirswapBuyCVL network={\"4\"} buyFromAddress={\"0x0...\"} buyCVLBtnText={\"Buy from the Civil Foundation\"} />\n      </Container>\n    );\n  })\n  .add(\"Buy Complete\", () => {\n    return (\n      <CivilContext.Provider value={civilContext}>\n        <Container>\n          <TokensTabBuyComplete />\n        </Container>\n      </CivilContext.Provider>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/TokensTabBuy.tsx",
    "content": "import * as React from \"react\";\nimport * as qs from \"querystring\";\nimport { Redirect } from \"react-router-dom\";\nimport { TokensTabBuyActive } from \"./TokensTabBuyActive\";\nimport { TokensTabBuyComplete } from \"./TokensTabBuyComplete\";\n\nexport interface TokensTabBuyProps {\n  foundationAddress: string;\n  network: string;\n}\n\nexport interface TokensTabBuyStates {\n  isBuyComplete: boolean;\n}\n\nexport class TokensTabBuy extends React.Component<TokensTabBuyProps, TokensTabBuyStates> {\n  public constructor(props: TokensTabBuyProps) {\n    super(props);\n    this.state = {\n      isBuyComplete: false,\n    };\n  }\n\n  public render(): JSX.Element | null {\n    const { foundationAddress, network } = this.props;\n    const { isBuyComplete } = this.state;\n\n    if (isBuyComplete) {\n      const redirect = qs.parse(document.location.search.substr(1)).redirect as string;\n      if (redirect) {\n        return <Redirect to={redirect} />;\n      }\n      return <TokensTabBuyComplete />;\n    }\n\n    return (\n      <TokensTabBuyActive foundationAddress={foundationAddress} network={network} onBuyComplete={this.onBuyComplete} />\n    );\n  }\n\n  private onBuyComplete = () => {\n    this.setState({ isBuyComplete: true });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/TokensTabBuyActive.tsx",
    "content": "import * as React from \"react\";\nimport { TokenAirswapSection, TokenOrBreak } from \"../TokensStyledComponents\";\nimport {\n  TokenBuyText,\n  TokenOrText,\n  TokenAirswapExchangeTermsOfSaleText,\n  TokenAirswapFoundationText,\n  TokenUniswapExchangeText,\n} from \"../TokensTextComponents\";\nimport { UniswapBuySection } from \"./UniswapBuySection\";\nimport { AirswapBuySection } from \"./AirswapBuySection\";\nimport { UsdEthConverter } from \"../../CurrencyConverter/UsdEthConverter\";\nimport { FeatureFlag } from \"../../features/FeatureFlag\";\nimport { PaddedSection } from \"../../containers\";\nimport { Notice, NoticeTypes } from \"../../Notice\";\n\nexport interface TokensTabBuyActiveProps {\n  foundationAddress: string;\n  network: string;\n  onBuyComplete(): void;\n}\n\nexport class TokensTabBuyActive extends React.Component<TokensTabBuyActiveProps, any> {\n  constructor(props: TokensTabBuyActiveProps) {\n    super(props);\n    this.state = { etherToSpend: 0, usdToSpend: 0 };\n  }\n  public render(): JSX.Element {\n    const { foundationAddress, network, onBuyComplete } = this.props;\n\n    return (\n      <>\n        <Notice type={NoticeTypes.ALERT}>\n          <TokenBuyText />\n        </Notice>\n        <TokenAirswapSection>\n          <FeatureFlag feature=\"uniswap\">\n            <TokenUniswapExchangeText />\n            <PaddedSection>\n              <UsdEthConverter onConversion={(usd: number, eth: number) => this.setConvertedAmount(usd, eth)} />\n            </PaddedSection>\n            <UniswapBuySection\n              usdToSpend={this.state.usdToSpend}\n              ethToSpend={this.state.etherToSpend}\n              onBuyComplete={onBuyComplete}\n            />\n            <TokenAirswapExchangeTermsOfSaleText />\n          </FeatureFlag>\n          <FeatureFlag feature=\"airswap\">\n            <TokenOrBreak>\n              <TokenOrText />\n            </TokenOrBreak>\n            <TokenAirswapSection>\n              <TokenAirswapFoundationText />\n              <AirswapBuySection\n                foundationAddress={foundationAddress}\n                usdToSpend={this.state.usdToSpend}\n                ethToSpend={this.state.etherToSpend}\n                onBuyComplete={onBuyComplete}\n                network={network}\n              />\n            </TokenAirswapSection>\n          </FeatureFlag>\n        </TokenAirswapSection>\n      </>\n    );\n  }\n\n  private setConvertedAmount(usdToSpend: number, etherToSpend: number): void {\n    this.setState({ ...this.state, usdToSpend, etherToSpend });\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/TokensTabBuyComplete.tsx",
    "content": "import * as React from \"react\";\nimport { TokenBuySellComplete } from \"../TokensStyledComponents\";\nimport { TokenBuyCompleteText } from \"../TokensTextComponents\";\nimport { HollowGreenCheck } from \"../../icons\";\n\nexport const TokensTabBuyComplete = () => {\n  return (\n    <>\n      <TokenBuySellComplete>\n        <HollowGreenCheck width={48} height={48} />\n        <TokenBuyCompleteText />\n      </TokenBuySellComplete>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/UniswapBuy.tsx",
    "content": "import * as React from \"react\";\nimport { CurrencyConverterSection } from \"../../CurrencyConverter\";\nimport { CivilContext, ICivilContext } from \"../../context\";\nimport { TokenPurchaseSummary } from \"../TokenPurchaseSummary\";\nimport { EthereumTransactionButton } from \"../EthereumTransactionButton\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nexport interface UniswapBuyProps {\n  usdToSpend: number;\n  ethToSpend: number;\n  ethExchangeRate: number;\n  onBuyComplete(): void;\n}\n\nexport const UniswapBuy: React.FunctionComponent<UniswapBuyProps> = ({\n  ethToSpend,\n  ethExchangeRate,\n  usdToSpend,\n  onBuyComplete,\n}) => {\n  const context = React.useContext<ICivilContext>(CivilContext);\n  const uniswap = context.uniswap;\n  const [cvlToReceive, setCvlToReceive] = React.useState<BigNumber | null>(null);\n\n  React.useEffect(() => {\n    async function updatePrice(): Promise<void> {\n      await context.civil!.currentProviderEnable();\n      const weiToSpend = uniswap.parseEther(ethToSpend.toString());\n      const result = await uniswap.quoteETHToCVL(weiToSpend);\n      setCvlToReceive(result);\n    }\n\n    updatePrice().catch(err => {\n      // TODO(dankins): commenting out this error to prevent storyshots from complaining.\n      // this was silently failing before due to the way the component was set up\n      // there are definitely more components that suffer the same fate\n      // see UnhandledPromiseRejectionWarning: Error: Invalid JSON RPC response: \"\" at the end of the test run\n      // console.log(\"error updating price\", err);\n    });\n  }, [context, ethToSpend]);\n\n  async function buyCVL(): Promise<any> {\n    const weiToSpend = uniswap.parseEther(ethToSpend.toString());\n    return uniswap.executeETHToCVL(weiToSpend, cvlToReceive!);\n  }\n\n  if (!cvlToReceive) {\n    return <div>loading price...</div>;\n  }\n  const cvl = uniswap.weiToEtherNumber(cvlToReceive);\n\n  let pricePerCVL;\n  if (ethToSpend === 0) {\n    pricePerCVL = 0;\n  } else {\n    pricePerCVL = (ethExchangeRate * ethToSpend) / cvl;\n  }\n\n  return (\n    <CurrencyConverterSection>\n      <TokenPurchaseSummary\n        mode=\"buy\"\n        currencyCode=\"CVL\"\n        pricePer={pricePerCVL}\n        totalTokens={cvl}\n        totalPrice={pricePerCVL * cvl}\n      />\n      <div>\n        <EthereumTransactionButton\n          modalHeading={`Confirm in Metamask to complete your purchase of ${cvl} CVL`}\n          execute={async () => buyCVL()}\n          disabled={usdToSpend === 0}\n          onComplete={onBuyComplete}\n        >\n          Buy CVL on the open market from Uniswap\n        </EthereumTransactionButton>\n      </div>\n    </CurrencyConverterSection>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/UniswapBuySection.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { UniswapBuy } from \"../buy/UniswapBuy\";\n\nconst ethPriceQuery = gql`\n  query {\n    storefrontEthPrice\n  }\n`;\n\nexport interface UniswapBuySectionProps {\n  ethToSpend: number;\n  usdToSpend: number;\n  onBuyComplete(): void;\n}\nexport const UniswapBuySection = (props: UniswapBuySectionProps) => {\n  return (\n    <Query<any> query={ethPriceQuery}>\n      {({ loading, error, data }) => {\n        if (loading) {\n          return <div />;\n        }\n        return (\n          <>\n            <div>\n              <UniswapBuy\n                usdToSpend={props.usdToSpend}\n                ethToSpend={props.ethToSpend}\n                ethExchangeRate={data.storefrontEthPrice}\n                onBuyComplete={props.onBuyComplete}\n              />\n            </div>\n          </>\n        );\n      }}\n    </Query>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/buy/__snapshots__/TokensTabBuy.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Storefront / Buy Tab Buy Complete 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPA hccTyG\"\n    >\n      <div\n        className=\"sc-LzNag eSiBxP\"\n      >\n        <svg\n          height=\"48\"\n          viewBox=\"0 0 20 20\"\n          width=\"48\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            fill=\"none\"\n            fillRule=\"evenodd\"\n            transform=\"translate(1 1)\"\n          >\n            <circle\n              className=\"svg-stroke\"\n              cx=\"9\"\n              cy=\"9\"\n              r=\"8.25\"\n              stroke=\"#29cb42\"\n              strokeWidth=\"1.5\"\n            />\n            <path\n              className=\"svg-fill\"\n              d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n              fill=\"#29cb42\"\n              fillRule=\"nonzero\"\n            />\n          </g>\n        </svg>\n        <h3>\n          Thanks for your purchase!\n        </h3>\n        <p>\n          Your CVL will be deposited to your wallet address.\n        </p>\n        <p>\n          Please check the\n           \n          <a\n            href=\"/dashboard/tasks/transfer-voting-tokens\"\n            onClick={[Function]}\n            target=\"_blank\"\n          >\n            Dashboard\n          </a>\n           \n          to see your purchased CVL in the Available Balance.\n          <br />\n          To learn how to add Civil tokens in your MetaMask wallet,\n           \n          <a\n            href=\"https://help.civil.co\"\n            target=\"_blank\"\n          >\n            go to our FAQ \n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#2B56FF\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </a>\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Buy Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Buy Complete\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / Buy Tab Buy Tab 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPA hccTyG\"\n    >\n      <div\n        className=\"sc-LzMml gBvHnq\"\n        type={2}\n      >\n        <div\n          className=\"sc-LzMmm hiBtBT\"\n        />\n        <div\n          className=\"sc-LzMmn ctwvws\"\n        >\n          <p>\n            To buy Civil tokens (CVL), you must have Ether (ETH). Then, you will be able to exchange ETH for CVL. If you don't have enough ETH, you can buy ETH on \n            <a\n              href=\"https://coinbase.com\"\n            >\n              Coinbase\n            </a>\n             or\n             \n            <a\n              href=\"https://gemini.com\"\n            >\n              Gemini\n            </a>\n             or\n             \n            <a\n              href=\"https://blog.joincivil.com/how-to-purchase-eth-an-explainer-725bd90cfaaa\"\n            >\n              learn how\n            </a>\n            . Please note, if you are a first-time purchaser, it may take a few days to get ETH in your wallet.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMZz eECaQl\"\n      >\n        <div\n          className=\"sc-LzMZz eECaQl\"\n        >\n          <h3>\n            Contribute to the Civil Foundation\n          </h3>\n          <p>\n            Buy Civil tokens from The Civil Media Company and 100% of net proceeds go to the Civil Foundation for supporting worthy journalism.\n             \n            <a\n              href=\"https://medium.com/@kinsleyd/5e0ccdc918cc\"\n              target=\"_blank\"\n            >\n              Learn about our transparent pricing.\n            </a>\n          </p>\n          <div\n            className=\"sc-fzXfPb kKgGlw\"\n          >\n            <div />\n          </div>\n          <div\n            className=\"sc-LzNrW jewfBK\"\n          >\n            <span>\n              You are \n              buying\n            </span>\n            <h4>\n              0\n               \n              CVL\n            </h4>\n          </div>\n          <button\n            className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n            onClick={[Function]}\n            theme={\n              Object {\n                \"primaryButtonBackground\": \"#2B56FF\",\n                \"primaryButtonColor\": \"#FFFFFF\",\n                \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n                \"primaryButtonDisabledColor\": \"#FFFFFF\",\n                \"primaryButtonFontWeight\": \"normal\",\n                \"primaryButtonHoverBackground\": \"#4066FF\",\n                \"primaryButtonTextTransform\": \"uppercase\",\n                \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n              }\n            }\n            type=\"button\"\n          >\n            Buy CVL from Civil Media Company in Airswap\n          </button>\n          <div\n            className=\"sc-LzNal dYrXUa\"\n          >\n            By clicking buy to purchase Civil tokens, you agree to the\n             \n            <a\n              href=\"https://civil.co/terms-of-sale/\"\n              target=\"_blank\"\n            >\n              Terms of Sale.\n            </a>\n          </div>\n        </div>\n        <div\n          className=\"sc-LzMZB dYPTal\"\n        >\n          <p>\n            or\n          </p>\n        </div>\n        <div>\n          <h3>\n            Buy Civil tokens on the open market\n          </h3>\n          <p>\n            The Civil community can buy and sell Civil tokens between each other without a middle man, sometimes resulting in a lower price than offered by The Civil Media Company. Tokens bought on the open market perform the exact same utility as those purchased directly from The Civil Media Company, however none of the proceeds go to the Civil Foundation. Instead, the funds go to a third-party buyer.\n          </p>\n          <div />\n        </div>\n        <div\n          className=\"sc-LzNal dYrXUa\"\n        >\n          By clicking buy to purchase Civil tokens, you agree to the\n           \n          <a\n            href=\"https://civil.co/terms-of-sale/\"\n            target=\"_blank\"\n          >\n            Terms of Sale.\n          </a>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Buy Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Buy Tab\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / Buy Tab Buy from Airswap 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPA hccTyG\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n        onClick={[Function]}\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        Buy from the Civil Foundation\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Buy Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Buy from Airswap\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / Buy Tab Buy from Uniswap 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPA hccTyG\"\n    >\n      <div>\n        loading price...\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Buy Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Buy from Uniswap\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Tokens/index.ts",
    "content": "export * from \"./Tokens\";\nexport * from \"./TokensAccountHelp\";\nexport * from \"./TokensAccountRequirement\";\nexport * from \"./TokensAccountSignup\";\nexport * from \"./TokensAccountBuy\";\nexport * from \"./TokensAccountFaq\";\nexport * from \"./TokensAccountProgress\";\nexport * from \"./TokensStyledComponents\";\nexport * from \"./TokensTextComponents\";\nexport * from \"./TokensAccountPaypal\";\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/TokensTabSell.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport StoryRouter from \"storybook-react-router\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport styled from \"styled-components\";\nimport Web3HttpProvider from \"web3-providers-http\";\nimport { TokensTabSell } from \"./TokensTabSell\";\nimport { CivilContext, buildCivilContext } from \"../../context/CivilContext\";\nimport { UniswapSell } from \"./UniswapSell\";\nimport { Notice, NoticeTypes } from \"../../Notice\";\nimport Web3 from \"web3\";\n\nexport const Container = styled.div`\n  align-items: center;\n  display: flex;\n  height: 250px;\n  justify-content: center;\n  width: 100%;\n  max-width: 720px;\n`;\nconst typeDefs = `\n  type Query {\n    storefrontEthPrice: Float\n    storefrontCvlPrice: Float\n    storefrontCvlQuoteUsd(usdToSpend: Float!): Float\n  }\n\n  schema {\n    query: Query\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      storefrontEthPrice: () => {\n        return 137.23;\n      },\n      storefrontCvlPrice: () => {\n        return 0.2;\n      },\n      storefrontCvlQuoteUsd: () => {\n        return 500.48635;\n      },\n    };\n  },\n};\n\nconst web3Provider = new Web3HttpProvider(\"http://localhost:8045\");\nconst web3 = new Web3(web3Provider);\nconst civilContext = buildCivilContext({ web3, featureFlags: [\"uniswap\"], config: { DEFAULT_ETHEREUM_NETWORK: 4 } });\nconst civilContextNoUniswap = buildCivilContext({ web3, featureFlags: [], config: { DEFAULT_ETHEREUM_NETWORK: 4 } });\n\nstoriesOf(\"Storefront / Sell Tab\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .addDecorator(StoryRouter())\n  .add(\"Sell Tab\", () => {\n    return (\n      <Container>\n        <Notice type={NoticeTypes.INFO}>\n          notes for storybooks: if you are actually trying to buy you might have troubles. make sure the\n          storefrontEthPrice graphql mock gets updated to the current price.\n        </Notice>\n        <CivilContext.Provider value={civilContext}>\n          <TokensTabSell network={\"4\"} />\n        </CivilContext.Provider>\n      </Container>\n    );\n  })\n  .add(\"Coming Soon\", () => {\n    return (\n      <Container>\n        <CivilContext.Provider value={civilContextNoUniswap}>\n          <TokensTabSell network={\"4\"} />\n        </CivilContext.Provider>\n      </Container>\n    );\n  })\n  .add(\"Uniswap\", () => {\n    return (\n      <Container>\n        <div>\n          <div>ethExchangeRate: 0.5</div>\n          <div>cvlToSell: 100</div>\n          <div>etherToReceive: 50</div>\n        </div>\n        <CivilContext.Provider value={civilContextNoUniswap}>\n          <UniswapSell ethExchangeRate={0.5} cvlToSell={100} onSellComplete={() => ({})} />\n        </CivilContext.Provider>\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/TokensTabSell.tsx",
    "content": "import * as React from \"react\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { TokensTabSellActive } from \"./TokensTabSellActive\";\nimport { TokensTabSellComplete } from \"./TokensTabSellComplete\";\nimport { ICivilContext, CivilContext } from \"../../context\";\nimport { FeatureFlag } from \"../../features/FeatureFlag\";\nimport { ComingSoon } from \"../TokensStyledComponents\";\n\nexport interface TokensTabSellProps {\n  network: string;\n}\n\nexport interface TokensTabSellStates {\n  isSellComplete: boolean;\n  balance: any | null;\n}\n\nexport class TokensTabSell extends React.Component<TokensTabSellProps, TokensTabSellStates> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n  public constructor(props: TokensTabSellProps) {\n    super(props);\n    this.state = {\n      isSellComplete: false,\n      balance: null,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    await this.setTokenBalance();\n  }\n\n  public render(): JSX.Element | null {\n    const { isSellComplete, balance } = this.state;\n\n    const comingSoon = (\n      <ComingSoon>\n        <h3>Coming Soon...</h3>\n        <p>\n          We appreciate your patience while we are testing this feature.\n          <br />\n          If you need help or have questions, please contact our support team at{\" \"}\n          <a href=\"mailto:support@civil.co\">support@civil.co</a>.\n        </p>\n      </ComingSoon>\n    );\n\n    let content: JSX.Element;\n    if (balance === null) {\n      return null;\n    } else if (isSellComplete) {\n      content = <TokensTabSellComplete />;\n    } else {\n      content = (\n        <TokensTabSellActive balance={getFormattedTokenBalance(balance)} onSellComplete={this.onSellComplete} />\n      );\n    }\n\n    return (\n      <FeatureFlag feature=\"uniswap\" replacement={comingSoon}>\n        {content}\n      </FeatureFlag>\n    );\n  }\n  private async setTokenBalance(): Promise<void> {\n    const civil = this.context.civil;\n    const account = await civil.accountStream.first().toPromise();\n    if (account) {\n      const tcr = await civil.tcrSingletonTrusted();\n      const token = await tcr.getToken();\n      const balance = await token.instance.balanceOf.callAsync(account);\n      this.setState({ ...this.state, balance });\n    }\n  }\n\n  private onSellComplete = () => {\n    this.setState({ isSellComplete: true });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/TokensTabSellActive.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { TokenBuyIntro } from \"../TokensStyledComponents\";\nimport { TokenSellInstructionsText } from \"../TokensTextComponents\";\nimport { UniswapSellSection } from \"./UniswapSellSection\";\nimport { Heading } from \"../../Heading\";\nimport { FullScreenModal } from \"../../FullscreenModal\";\nimport { ModalHeading, ModalContent } from \"../../ModalContent\";\nimport { Link } from \"react-router-dom\";\n\nexport interface TokensTabSellActiveProps {\n  balance: string;\n  onSellComplete(): void;\n}\n\nconst BalanceContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  > :first-child {\n    flex-grow: 1;\n  }\n`;\n\nconst TokenInfoContainer = styled.div`\n  margin: 20px;\n  font-size: 16px;\n  align-items: start;\n  > p {\n    font-size: 16px;\n  }\n`;\n\nclass CVLBalanceHeader extends React.Component<any, any> {\n  public constructor(props: any) {\n    super(props);\n    this.state = {};\n  }\n  public render(): JSX.Element {\n    const { balance } = this.props;\n\n    return (\n      <div>\n        <BalanceContainer>\n          <Heading>Available CVL to Sell</Heading>\n          <Heading>{balance}</Heading>\n        </BalanceContainer>\n        <div>\n          <a href=\"#\" onClick={e => this.showModal(e)}>\n            Don't see all of your tokens?\n          </a>\n        </div>\n        <FullScreenModal open={this.state.showModal} dismissOnOutsideClick={true} handleClose={() => this.hideModal()}>\n          <TokenInfoContainer>\n            <ModalHeading>Don't see all of your tokens?</ModalHeading>\n            <ModalContent>Check the amount of CVL in your voting balance.</ModalContent>\n            <ModalContent>\n              If your voting tokens are not used for any challenges, or votes, transfer them to your Available Balance\n              in order to sell. You can do this within the{\" \"}\n              <Link to=\"/dashboard/tasks/transfer-voting-tokens\">Dashboard section</Link> .\n            </ModalContent>\n          </TokenInfoContainer>\n        </FullScreenModal>\n      </div>\n    );\n  }\n\n  private showModal(e: any): void {\n    e.preventDefault();\n    this.setState({ showModal: true });\n  }\n  private hideModal(): void {\n    this.setState({ showModal: false });\n  }\n}\n\nexport const TokensTabSellActive: React.FunctionComponent<TokensTabSellActiveProps> = props => {\n  const { onSellComplete, balance } = props;\n\n  return (\n    <>\n      <TokenBuyIntro>\n        <CVLBalanceHeader balance={balance} />\n      </TokenBuyIntro>\n\n      <TokenSellInstructionsText />\n      <UniswapSellSection onComplete={onSellComplete} />\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/TokensTabSellComplete.tsx",
    "content": "import * as React from \"react\";\nimport { TokenBuySellComplete } from \"../TokensStyledComponents\";\nimport { TokenSellCompleteText } from \"../TokensTextComponents\";\nimport { HollowGreenCheck } from \"../../icons\";\n\nexport const TokensTabSellComplete: React.FunctionComponent = props => {\n  return (\n    <TokenBuySellComplete>\n      <HollowGreenCheck width={48} height={48} />\n      <TokenSellCompleteText />\n    </TokenBuySellComplete>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/UniswapCvlEthConverter.tsx",
    "content": "import * as React from \"react\";\nimport { CivilContext, ICivilContext } from \"../../context/CivilContext\";\nimport { CurrencyConverter } from \"../../CurrencyConverter/CurrencyConverter\";\n\nexport interface UniswapCvlEthConverterProps {\n  onConversion(cvlValue: number, ethValue: number): void;\n}\nexport class UniswapCvlEthConverter extends React.Component<UniswapCvlEthConverterProps, any> {\n  public static contextType: React.Context<ICivilContext> = CivilContext;\n  public constructor(props: UniswapCvlEthConverterProps) {\n    super(props);\n  }\n  public render(): JSX.Element {\n    return (\n      <CurrencyConverter\n        currencyCodeFrom=\"CVL\"\n        currencyLabelFrom=\"Enter amount of CVL to sell\"\n        currencyCodeTo=\"ETH\"\n        currencyLabelTo=\"Estimated ETH from sale\"\n        doConversion={async (cvlAmount: number) => this.convertToETH(cvlAmount)}\n        onConversion={(cvlValue, ethValue) => this.props.onConversion(cvlValue, ethValue)}\n      />\n    );\n  }\n\n  private async convertToETH(cvlAmount: number): Promise<number> {\n    const uniswap = this.context.uniswap;\n    const bn = uniswap.parseEther(cvlAmount.toString());\n    const result = await uniswap.quoteCVLToETH(bn);\n\n    return uniswap.weiToEtherNumber(result);\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/UniswapSell.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { CivilContext, ICivilContext } from \"../../context/CivilContext\";\nimport { TokenPurchaseSummary } from \"../TokenPurchaseSummary\";\nimport { MetaMaskLogoButton } from \"../../MetaMaskLogoButton\";\nimport { Notice, NoticeTypes } from \"../../Notice\";\nimport { EthereumTransactionButton } from \"../EthereumTransactionButton\";\nimport { SellFeeNotice, ApproveNoticeText } from \"../TokensTextComponents\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nconst SellContainer = styled.div`\n  padding: 0;\n  > button {\n    margin-top: 25px;\n    width: 100%;\n  }\n`;\n\nconst ApproveNotice = styled(Notice)`\n  margin-top: 20px;\n  padding-bottom: 10px;\n  font-size: 14px;\n\n  > div {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n  }\n  > div > button {\n    margin: 20px;\n  }\n`;\n\nexport interface UniswapSellProps {\n  ethExchangeRate: number;\n  cvlToSell: number;\n  onSellComplete(): void;\n}\nexport interface UniswapSellState {\n  approvedTokens?: any;\n  weiToReceive?: BigNumber;\n}\nexport class UniswapSell extends React.Component<UniswapSellProps, UniswapSellState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  constructor(props: UniswapSellProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public async componentDidUpdate(prevProps: UniswapSellProps): Promise<void> {\n    if (prevProps.cvlToSell !== this.props.cvlToSell) {\n      const uniswap = this.context.uniswap;\n      const weiToReceive = await uniswap.quoteCVLToETH(uniswap.parseEther(this.props.cvlToSell.toString()));\n      this.setState({ ...this.state, weiToReceive });\n    }\n  }\n\n  public async componentDidMount(): Promise<void> {\n    const uniswap = this.context.uniswap;\n    const approvedTokens = await uniswap.getApprovedSellAmount();\n    const weiToReceive = await uniswap.quoteCVLToETH(\n      uniswap.parseEther(this.props.cvlToSell ? this.props.cvlToSell.toString() : \"0\"),\n    );\n    this.setState({ ...this.state, approvedTokens, weiToReceive });\n  }\n\n  public render(): JSX.Element {\n    if (!this.state.approvedTokens || !this.state.weiToReceive) {\n      return <div />;\n    }\n\n    const uniswap = this.context.uniswap;\n    const { ethExchangeRate } = this.props;\n    const cvlWei = uniswap.parseEther((this.props.cvlToSell || \"0\").toString());\n    const weiToReceive = this.state.weiToReceive;\n    const etherToReceive = uniswap.weiToEtherNumber(this.state.weiToReceive);\n    const usdAmount = etherToReceive * ethExchangeRate;\n    let usdPerCVL: number = 0;\n    let usdTotal: number = 0;\n\n    if (this.props.cvlToSell === 0) {\n      return (\n        <SellContainer>\n          <MetaMaskLogoButton onClick={() => null} disabled>\n            Estimate Proceeds\n          </MetaMaskLogoButton>\n        </SellContainer>\n      );\n    }\n\n    if (this.props.cvlToSell > 0) {\n      usdPerCVL = usdAmount / this.props.cvlToSell!;\n      usdTotal = this.props.cvlToSell * usdPerCVL;\n    }\n\n    const summary = (\n      <TokenPurchaseSummary\n        mode=\"sell\"\n        currencyCode=\"CVL\"\n        pricePer={usdPerCVL}\n        totalPrice={usdTotal}\n        totalTokens={this.props.cvlToSell}\n      />\n    );\n\n    if (this.state.approvedTokens.lt(cvlWei)) {\n      return (\n        <SellContainer>\n          {summary}\n          <ApproveNotice type={NoticeTypes.ATTENTION}>\n            <ApproveNoticeText cvlToSell={this.props.cvlToSell} />\n            <EthereumTransactionButton\n              modalHeading={`Confirm in Metamask to approve your sale of ${this.props.cvlToSell} CVL`}\n              execute={async () => this.approve(cvlWei)}\n              disabled={this.props.cvlToSell === 0}\n              onComplete={async () => this.updateApprovedSellAmount()}\n            >\n              Open MetaMask to approve\n            </EthereumTransactionButton>\n            <SellFeeNotice />\n          </ApproveNotice>\n        </SellContainer>\n      );\n    }\n\n    return (\n      <SellContainer>\n        {summary}\n        <EthereumTransactionButton\n          modalHeading={`Confirm in Metamask to complete your sale of ${this.props.cvlToSell} CVL`}\n          execute={async () => this.sellCVL(cvlWei, weiToReceive)}\n          disabled={this.props.cvlToSell === 0}\n          onComplete={() => this.props.onSellComplete()}\n        >\n          Complete Sale\n        </EthereumTransactionButton>\n        <SellFeeNotice />\n      </SellContainer>\n    );\n  }\n\n  private async sellCVL(cvlWei: any, weiToReceive: any): Promise<any> {\n    const uniswap = this.context.uniswap;\n    return uniswap.executeCVLToETH(cvlWei, weiToReceive);\n  }\n\n  private async approve(cvlWei: BigNumber): Promise<any> {\n    const uniswap = this.context.uniswap;\n    return uniswap.setApprovedSellAmount(cvlWei);\n  }\n\n  private async updateApprovedSellAmount(): Promise<void> {\n    const uniswap = this.context.uniswap;\n    const approvedTokens = await uniswap.getApprovedSellAmount();\n    this.setState({ ...this.state, approvedTokens });\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/UniswapSellSection.tsx",
    "content": "import * as React from \"react\";\nimport { UniswapSell } from \"./UniswapSell\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { UniswapCvlEthConverter } from \"./UniswapCvlEthConverter\";\n\nconst ethPriceQuery = gql`\n  query {\n    storefrontEthPrice\n  }\n`;\n\nexport interface UniswapSellSectionProps {\n  onComplete(): void;\n}\nexport interface UniswapSellSectionState {\n  cvlToSell: number;\n  etherToReceive: number;\n}\nexport class UniswapSellSection extends React.Component<UniswapSellSectionProps, UniswapSellSectionState> {\n  constructor(props: UniswapSellSectionProps) {\n    super(props);\n    this.state = { cvlToSell: 0, etherToReceive: 0 };\n  }\n\n  public render(): JSX.Element {\n    const updatePrice = this.updatePrice.bind(this);\n    return (\n      <Query<any> query={ethPriceQuery}>\n        {({ loading, error, data }) => {\n          if (loading) {\n            return null;\n          }\n          return (\n            <>\n              <UniswapCvlEthConverter onConversion={updatePrice} />\n              <UniswapSell\n                cvlToSell={this.state.cvlToSell}\n                ethExchangeRate={data.storefrontEthPrice}\n                onSellComplete={this.props.onComplete}\n              />\n            </>\n          );\n        }}\n      </Query>\n    );\n  }\n\n  private async updatePrice(cvlToSell: number, etherToReceive: number): Promise<void> {\n    this.setState({ cvlToSell, etherToReceive });\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Tokens/sell/__snapshots__/TokensTabSell.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Storefront / Sell Tab Coming Soon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPB vWAvn\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Sell Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Coming Soon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / Sell Tab Need to Unlock 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPB vWAvn\"\n    >\n      <p>\n        You must unlock your tokens to remove the restrictions to sell. Once your tokens are unlocked, you will be eligible to sell them here.\n      </p>\n      <div\n        className=\"sc-LzNah dOIoEu\"\n      >\n        <h4>\n          <svg\n            height=\"18\"\n            viewBox=\"0 0 14 18\"\n            width=\"14\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g\n              fill=\"#FF0C1A\"\n              fillRule=\"evenodd\"\n              stroke=\"none\"\n              strokeWidth=\"1\"\n            >\n              <path\n                d=\"M6.85714286,13.7142857 C7.8,13.7142857 8.57142857,12.9428571 8.57142857,12 C8.57142857,11.0571429 7.8,10.2857143 6.85714286,10.2857143 C5.91428571,10.2857143 5.14285714,11.0571429 5.14285714,12 C5.14285714,12.9428571 5.91428571,13.7142857 6.85714286,13.7142857 L6.85714286,13.7142857 Z M12,6 L11.1428571,6 L11.1428571,4.28571429 C11.1428571,1.88571429 9.25714286,0 6.85714286,0 C4.45714286,0 2.57142857,1.88571429 2.57142857,4.28571429 L4.2,4.28571429 C4.2,2.82857143 5.4,1.62857143 6.85714286,1.62857143 C8.31428571,1.62857143 9.51428571,2.82857143 9.51428571,4.28571429 L9.51428571,6 L1.71428571,6 C0.771428571,6 0,6.77142857 0,7.71428571 L0,16.2857143 C0,17.2285714 0.771428571,18 1.71428571,18 L12,18 C12.9428571,18 13.7142857,17.2285714 13.7142857,16.2857143 L13.7142857,7.71428571 C13.7142857,6.77142857 12.9428571,6 12,6 L12,6 Z M12,16.2857143 L1.71428571,16.2857143 L1.71428571,7.71428571 L12,7.71428571 L12,16.2857143 L12,16.2857143 Z\"\n              />\n            </g>\n          </svg>\n          Unlock Tokens\n        </h4>\n        <p>\n          All first-time token purchasers must unlock their tokens by participating in community votes and the general oversight of Civil. This is to prevent speculators from affecting the price of Civil tokens. Learn more in the FAQ below.\n        </p>\n        <p>\n          Unlocking your tokens is straightforward, and you only have to do this once. Simply\n           \n          <b>\n            transfer at least 50 percent of your purchased tokens into the voting balance\n          </b>\n          . And that’s it.\n        </p>\n        <a\n          className=\"sc-fzXfLO sc-fzXfLQ sc-LzMYs dnCyxC\"\n          href=\"/dashboard/tasks/transfer-voting-tokens\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"invertedButtonBackground\": \"#FFFFFF\",\n              \"invertedButtonColor\": \"#2B56FF\",\n            }\n          }\n        >\n          Unlock My Tokens\n        </a>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Sell Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Need to Unlock\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / Sell Tab Sell Tab 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPB vWAvn\"\n    >\n      <div\n        className=\"sc-LzMml cwOIuq\"\n        type={0}\n      >\n        <div\n          className=\"sc-LzMmm hiBtBT\"\n        />\n        <div\n          className=\"sc-LzMmn ctwvws\"\n        >\n          notes for storybooks: if you are actually trying to buy you might have troubles. make sure the storefrontEthPrice graphql mock gets updated to the current price.\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Sell Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Sell Tab\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Storefront / Sell Tab Uniswap 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPB vWAvn\"\n    >\n      <div>\n        <div>\n          ethExchangeRate: 0.5\n        </div>\n        <div>\n          cvlToSell: 100\n        </div>\n        <div>\n          etherToReceive: 50\n        </div>\n      </div>\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Storefront / Sell Tab\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Uniswap\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/ToolTip.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"./styleConstants\";\n\nexport interface ToolTipTheme {\n  toolTipDefaultWidth?: number;\n  toolTipTextAlign?: string;\n  toolTipColorEnabled?: string;\n  toolTipColorDisabled?: string;\n}\n\nexport interface ToolTipProps {\n  explainerText: React.ReactNode;\n  disabled?: boolean;\n  positionBottom?: boolean;\n  verticalOffset?: number;\n  className?: string; // for use as styled component\n  width?: number;\n  theme?: ToolTipTheme;\n  onClick?(e: React.MouseEvent): void;\n}\n\nexport interface ToolTipState {\n  open: boolean;\n}\n\nexport interface TipContainerProps {\n  top?: number;\n  left?: number;\n}\n\nconst TipContainer = styled.div<TipContainerProps>`\n  position: absolute;\n  top: ${(props: TipContainerProps) => props.top || 0}px;\n  left: ${(props: TipContainerProps) => props.left || 0}px;\n  height: 0px;\n`;\n\nconst Tip = styled.div<ToolTipProps>`\n  position: absolute;\n  ${(props: ToolTipProps) => (props.positionBottom ? \"top: 30px\" : \"bottom: 10px\")};\n  left: 7px;\n  ${(props: ToolTipProps) =>\n    props.verticalOffset ? `margin-${props.positionBottom ? \"top\" : \"bottom\"}: ${props.verticalOffset}px` : \"\"};\n  transform: translateX(-50%);\n  width: ${(props: ToolTipProps) => props.width || (props.theme && props.theme.toolTipDefaultWidth) || 260}px;\n  color: ${colors.basic.WHITE};\n  background: rgba(21, 21, 21, 0.9);\n  border-radius: 3px;\n  padding: 15px;\n  ${(props: ToolTipProps) =>\n    props.theme && props.theme.toolTipTextAlign ? `text-align: ${props.theme.toolTipTextAlign}` : \"\"};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: 400;\n  line-height: 15px;\n  text-transform: none;\n  z-index: 100001;\n  &:after {\n    content: \"\";\n    position: absolute;\n    left: calc(50% - 5px);\n    top: ${(props: ToolTipProps) => (props.positionBottom ? \"-6px\" : \"100%\")};\n    width: 0;\n    height: 0;\n    border-left: 6px solid transparent;\n    border-right: 6px solid transparent;\n    border-top: 6px solid rgba(21, 21, 21, 0.9);\n    transform: ${(props: ToolTipProps) => (props.positionBottom ? \"rotate(180deg)\" : \"rotate(0)\")};\n  }\n`;\n// z-index to compete with wp\n\nconst Wrapper = styled.div`\n  display: inline-block;\n  position: relative;\n`;\n\nconst HitBox = styled.div`\n  background-color: transparent;\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  min-width: 30px;\n  min-height: 30px;\n  top: 0;\n  left: 0;\n  z-index: 100001;\n`;\n\nexport class ToolTip extends React.Component<ToolTipProps, ToolTipState> {\n  public divEl: HTMLDivElement | null;\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  constructor(props: ToolTipProps) {\n    super(props);\n    this.divEl = null;\n    this.state = {\n      open: false,\n    };\n  }\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    this.bucket.remove();\n  }\n\n  public render(): JSX.Element {\n    let tip = null;\n    let hitBox = null;\n    if (this.state.open) {\n      tip = ReactDOM.createPortal(\n        <TipContainer left={this.getLeft()} top={this.getTop()}>\n          <Tip {...this.props}>{this.props.explainerText}</Tip>\n        </TipContainer>,\n        this.bucket,\n      );\n      hitBox = <HitBox />;\n    }\n\n    return (\n      <Wrapper\n        ref={(el: HTMLDivElement) => (this.divEl = el)}\n        onMouseLeave={this.onMouseLeave}\n        onMouseEnter={this.onMouseEnter}\n        onClick={this.props.onClick}\n        className={this.props.className}\n      >\n        {tip}\n        {hitBox}\n        {this.props.children}\n      </Wrapper>\n    );\n  }\n\n  private getLeft = (): number => {\n    const box = this.divEl!.getBoundingClientRect();\n    return box.left - 5 + box.width / 2;\n  };\n\n  private getTop = (): number => {\n    const box = this.divEl!.getBoundingClientRect();\n    const scrollDist = (document.documentElement || document.body.parentNode || document.body).scrollTop;\n    return scrollDist + box.top;\n  };\n\n  private onMouseEnter = (): void => {\n    this.setState({ open: true });\n  };\n\n  private onMouseLeave = (): void => {\n    this.setState({ open: false });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/TransactionButton.tsx",
    "content": "import * as React from \"react\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthSignedMessage, EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { Button, InvertedButton, DarkButton, buttonSizes } from \"./Button\";\nimport { CivilContext, ICivilContext } from \"./context\";\nimport { Modal } from \"./Modal\";\nimport {\n  ProgressModalContentInProgress,\n  ProgressModalContentSuccess,\n  ProgressModalContentError,\n} from \"./ProgressModalContent\";\nimport { Subscription } from \"rxjs\";\n\nexport interface TransactionButtonState {\n  name: string;\n  error: string;\n  step: number;\n  disableButton: boolean;\n  currentAccount?: EthAddress;\n  ethereumUpdates?: Subscription;\n}\n\nexport interface TransactionButtonModalFlowState {\n  modalOpen?: boolean;\n  isPreTransactionModalOpen?: boolean;\n  isWaitingTransactionModalOpen?: boolean;\n  metaMaskRejectionModal?: boolean;\n  metaMaskErrorModal?: boolean;\n  completeModalOpen?: boolean;\n  startTransaction?(): any;\n  cancelTransaction?(): any;\n}\n\nexport interface Transaction {\n  progressEventName?: string;\n  transaction(): Promise<TwoStepEthTransaction<any> | EthSignedMessage | void>;\n  preTransaction?(): any;\n  requireBeforeTransaction?(): Promise<any>;\n  postTransaction?(result: any, txHash?: TxHash): any;\n  handleTransactionError?(err: any, txHash?: TxHash): any;\n  handleTransactionHash?(txhash?: TxHash): void;\n  onTransactionError?(err: any, txHash?: TxHash): any; // function passed in here does not \"handle\" the tx error, but might do something extra with it (such as log an error)\n}\n\nexport interface TransactionButtonProps {\n  transactions: Transaction[];\n  disabled?: boolean;\n  Button?: React.FunctionComponent<TransactionButtonInnerProps>;\n  preExecuteTransactions?(): any;\n  postExecuteTransactions?(): any;\n  onMobileClick?(): any;\n}\n\nexport enum progressModalStates {\n  IN_PROGRESS = \"IN_PROGRESS\",\n  SUCCESS = \"SUCCESS\",\n  ERROR = \"ERROR\",\n}\n\nexport interface TransactionButtonModalContentComponentsProps {\n  [index: string]: JSX.Element | undefined;\n  [progressModalStates.IN_PROGRESS]?: JSX.Element | undefined;\n  [progressModalStates.SUCCESS]?: JSX.Element | undefined;\n  [progressModalStates.ERROR]?: JSX.Element | undefined;\n}\n\nexport interface TransactionButtonModalProps {\n  modalComponent?: JSX.Element;\n  modalContentComponents?: TransactionButtonModalContentComponentsProps;\n}\n\nexport interface TransitionButtonModalState {\n  isProgressModalVisible: boolean;\n  progressModalState?: string;\n}\n\nconst DEFAULT_MODAL_COMPONENTS: TransactionButtonModalContentComponentsProps = {\n  [progressModalStates.IN_PROGRESS]: <ProgressModalContentInProgress />,\n  [progressModalStates.SUCCESS]: <ProgressModalContentSuccess />,\n  [progressModalStates.ERROR]: <ProgressModalContentError />,\n};\n\nexport interface TransactionButtonInnerProps {\n  disabled?: boolean;\n  step?: number;\n  children?: React.ReactNode | React.ReactNode[];\n  onClick(event?: any): void;\n}\n\nexport const PrimaryTransactionButton: React.FunctionComponent<TransactionButtonInnerProps> = (\n  props: TransactionButtonInnerProps,\n): JSX.Element => {\n  return (\n    <Button onClick={e => props.onClick(e)} disabled={props.disabled} size={buttonSizes.MEDIUM}>\n      {props.step === 1 && \"Waiting for confirmation...\"}\n      {props.step === 2 && \"Processing...\"}\n      {props.step === 0 && props.children}\n    </Button>\n  );\n};\n\nexport const InvertedTransactionButton: React.FunctionComponent<TransactionButtonInnerProps> = (\n  props: TransactionButtonInnerProps,\n): JSX.Element => {\n  return (\n    <InvertedButton onClick={e => props.onClick(e)} disabled={props.disabled} size={buttonSizes.MEDIUM}>\n      {props.step === 1 && \"Waiting for confirmation...\"}\n      {props.step === 2 && \"Processing...\"}\n      {props.step === 0 && props.children}\n    </InvertedButton>\n  );\n};\n\nexport const DarkTransactionButton: React.FunctionComponent<TransactionButtonInnerProps> = (\n  props: TransactionButtonInnerProps,\n): JSX.Element => {\n  return (\n    <DarkButton onClick={e => props.onClick(e)} disabled={props.disabled} size={buttonSizes.MEDIUM}>\n      {props.step === 1 && \"Waiting for confirmation...\"}\n      {props.step === 2 && \"Processing...\"}\n      {props.step === 0 && props.children}\n    </DarkButton>\n  );\n};\n\nexport class TransactionButtonNoModal extends React.Component<TransactionButtonProps, TransactionButtonState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  constructor(props: TransactionButtonProps) {\n    super(props);\n    this.state = {\n      name: \"\",\n      error: \"\",\n      step: 0,\n      disableButton: !!props.disabled,\n    };\n  }\n\n  public componentDidUpdate(prevProps: TransactionButtonProps): void {\n    if (prevProps.disabled !== this.props.disabled) {\n      this.setState({ disableButton: !!this.props.disabled });\n    }\n  }\n\n  public render(): JSX.Element {\n    const ButtonComponent = this.props.Button || PrimaryTransactionButton;\n\n    // Some responsive css trickery to\n    return (\n      <>\n        {this.state.error}\n        <ButtonComponent step={this.state.step} onClick={this.onClick} disabled={this.state.disableButton}>\n          {this.props.children}\n        </ButtonComponent>\n      </>\n    );\n  }\n\n  private onClick = async () => {\n    const { civil } = this.context;\n    if (civil && civil.currentProvider) {\n      await civil.currentProviderEnable();\n\n      const currentAccount = await civil.accountStream.first().toPromise();\n      if (currentAccount) {\n        this.setState({ currentAccount });\n        if (this.props.preExecuteTransactions) {\n          setImmediate(() => this.props.preExecuteTransactions!());\n        }\n        return this.executeTransactions(this.props.transactions.slice().reverse());\n      } else {\n        this.setState({\n          error: \"No Ethereum Account Found. You may need to install MetaMask and grant account access for this app.\",\n        });\n      }\n    } else {\n      this.setState({\n        error:\n          \"No Ethereum Provider Found. You may need to install MetaMask or another Web3 wallet and grant account access for this app.\",\n      });\n    }\n  };\n\n  private executeTransactions = async (transactions: Transaction[]): Promise<any> => {\n    const currTransaction = transactions.pop();\n    if (currTransaction) {\n      if (currTransaction.preTransaction) {\n        setImmediate(() => currTransaction.preTransaction!());\n      }\n\n      let txHash: TxHash | undefined;\n      try {\n        if (currTransaction.requireBeforeTransaction) {\n          await currTransaction.requireBeforeTransaction();\n        }\n        this.setState({ step: 1, disableButton: true });\n        const pending = await currTransaction.transaction();\n        txHash = pending && \"txHash\" in pending ? pending.txHash : undefined;\n        this.setState({ step: 2 });\n\n        if (currTransaction.handleTransactionHash && pending) {\n          if (\"txHash\" in pending) {\n            currTransaction.handleTransactionHash(txHash);\n          } else {\n            currTransaction.handleTransactionHash();\n          }\n        }\n\n        if (pending) {\n          let receipt = pending;\n          if (\"awaitReceipt\" in pending) {\n            receipt = await pending.awaitReceipt();\n          }\n\n          if (!transactions.length) {\n            this.setState({ step: 0, disableButton: false });\n          }\n\n          if (currTransaction.postTransaction) {\n            currTransaction.postTransaction(receipt, txHash);\n          }\n        }\n\n        return this.executeTransactions(transactions);\n      } catch (err) {\n        console.log(\"error executing transaction\", err);\n        this.setState({ step: 0, disableButton: false });\n\n        if (currTransaction.handleTransactionError) {\n          setImmediate(() => currTransaction.handleTransactionError!(err, txHash));\n        }\n        if (currTransaction.onTransactionError) {\n          setImmediate(() => currTransaction.onTransactionError!(err, txHash));\n        }\n      }\n    } else if (this.props.postExecuteTransactions) {\n      setImmediate(() => this.props.postExecuteTransactions!());\n    }\n  };\n}\n\nexport class TransactionButton extends React.Component<\n  TransactionButtonProps & TransactionButtonModalProps,\n  TransitionButtonModalState\n> {\n  constructor(props: TransactionButtonProps & TransactionButtonModalProps) {\n    super(props);\n    this.state = {\n      isProgressModalVisible: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    const {\n      modalComponent,\n      modalContentComponents,\n      transactions,\n      preExecuteTransactions,\n      postExecuteTransactions,\n      ...other\n    } = this.props;\n    const progressModal = this.getProgressModalEl(modalComponent, modalContentComponents);\n    const extendedTransactions = this.extendTransactionsHandlers(transactions);\n    let extendedPreExecuteTransactions = this.showProgressModal;\n    let extendedPostExecuteTransactions = this.showProgressModalSuccess;\n\n    if (!!preExecuteTransactions) {\n      extendedPreExecuteTransactions = (): void => {\n        this.showProgressModal();\n        preExecuteTransactions();\n      };\n    }\n    if (!!postExecuteTransactions) {\n      extendedPostExecuteTransactions = (): void => {\n        this.showProgressModalSuccess();\n        postExecuteTransactions();\n      };\n    }\n\n    return (\n      <>\n        <TransactionButtonNoModal\n          preExecuteTransactions={extendedPreExecuteTransactions}\n          postExecuteTransactions={extendedPostExecuteTransactions}\n          transactions={extendedTransactions}\n          {...other}\n        />\n        {progressModal}\n      </>\n    );\n  }\n\n  private extendTransactionsHandlers = (transactions: Transaction[]): Transaction[] => {\n    return transactions.map(transaction => {\n      if (!transaction.handleTransactionError) {\n        transaction.handleTransactionError = this.showProgressModalError;\n      }\n      if (transaction.progressEventName) {\n        const preTransaction = transaction.preTransaction;\n        transaction.preTransaction = () => {\n          if (preTransaction) {\n            preTransaction();\n          }\n          this.showProgressModal(transaction.progressEventName);\n        };\n      }\n      return transaction;\n    });\n  };\n\n  private getProgressModalEl = (\n    modalComponent: JSX.Element | undefined,\n    modalContentComponents?: any,\n  ): JSX.Element | undefined => {\n    const modalContentSource =\n      (modalContentComponents && modalContentComponents[this.state.progressModalState!]) ||\n      DEFAULT_MODAL_COMPONENTS[this.state.progressModalState!];\n    let modalContent: JSX.Element | undefined;\n    if (modalContentSource) {\n      modalContent = React.cloneElement(modalContentSource as React.ReactElement, {\n        hideModal: this.hideProgressModal,\n      });\n    }\n    if (modalComponent) {\n      return React.cloneElement(\n        modalComponent as React.ReactElement,\n        {\n          visible: this.state.isProgressModalVisible,\n        },\n        modalContent,\n      );\n    }\n    return (\n      <Modal visible={this.state.isProgressModalVisible} textAlign=\"center\">\n        {modalContent}\n      </Modal>\n    );\n  };\n\n  private showProgressModalSuccess = (): void => {\n    this.setState({ progressModalState: progressModalStates.SUCCESS });\n  };\n\n  private showProgressModalError = (): void => {\n    this.setState({ progressModalState: progressModalStates.ERROR });\n  };\n\n  private showProgressModal = (progressModalState: string = progressModalStates.IN_PROGRESS): void => {\n    this.setState({ isProgressModalVisible: true, progressModalState });\n  };\n\n  private hideProgressModal = (): void => {\n    this.setState({ isProgressModalVisible: false });\n  };\n}\n\nexport class TransactionDarkButton extends React.Component<\n  TransactionButtonProps & TransactionButtonModalProps,\n  TransitionButtonModalState\n> {\n  public render(): JSX.Element {\n    return <TransactionButton Button={DarkTransactionButton} {...this.props} />;\n  }\n}\n\nexport class TransactionInvertedButton extends React.Component<\n  TransactionButtonProps & TransactionButtonModalProps,\n  TransitionButtonModalState\n> {\n  public render(): JSX.Element {\n    return <TransactionButton Button={InvertedTransactionButton} {...this.props} />;\n  }\n}\n"
  },
  {
    "path": "packages/components/src/Tutorial/Tutorial.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { TutorialInfo } from \"./TutorialInfo\";\nimport { TutorialQuestion } from \"./TutorialQuestion\";\nimport { TutorialTopicIntro } from \"./TutorialTopicIntro\";\nimport { TutorialTopicCompleted } from \"./TutorialTopicCompleted\";\n\nconst TopicTutorial: React.FunctionComponent = props => (\n  <>\n    <h2>What is Civil?</h2>\n    <p>\n      Civil is a decentralized network for trustworthy and sustainable journalism. It is founded on the principle that a\n      free press is essential to a fair and just society.\n    </p>\n    <p>\n      Our community-run model providing members a say and share in the project’s operations and long-term evolution.\n    </p>\n    <p>\n      More than 125 journalists representing 18 independent newsrooms, from Chicago to Singapore, are already part of\n      the Civil community. And we’re just getting started!\n    </p>\n  </>\n);\n\nconst TopicIntro: React.FunctionComponent = props => (\n  <>\n    <p>\n      <b>You’ll learn</b>\n    </p>\n    <p>What is Civil, and what makes us different?</p>\n    <p>How does a Newsroom join the Civil network?</p>\n    <p>What are Civil tokens (CVL)?</p>\n    <p>What is the Civil Registry?</p>\n  </>\n);\n\nconst onClickFunc = () => {\n  console.log(\"clicked!\");\n};\n\nconst tutorial = {\n  tutorialTopicIntroHeader: \"Topic 1: How to use Civil tokens\",\n  tutorialTopicIntroInfo: <TopicIntro />,\n  tutorialContent: <TopicTutorial />,\n  quizName: \"Quiz: Considerations before buying tokens\",\n  question: \"Which of the following is important to you when purchasing a token?\",\n  options: [{ text: \"Option 1\" }, { text: \"Option 2\" }, { text: \"Option 3\" }],\n  answer: \"Option 1\",\n  completedHeader: \"Nice! You’ve completed Topic 1\",\n  completedText:\n    \"Buying tokens, like any financial decision, is a risk. The price of tokens can fluctuate depending on various factors. It’ a good rule of thumb to look at the team behind the token – the founders, the advisors – as well as the token design and its supply.  It’s also important to diversify your portfolio across many investment vehicles – crypto assets and non-crypto assets.\",\n  continueBtnText: \"Continue to topic 2\",\n};\n\nstoriesOf(\"Common / Tutorial\", module)\n  .add(\"Tutorial Topic Intro\", () => {\n    return (\n      <TutorialTopicIntro\n        headerText={tutorial.tutorialTopicIntroHeader}\n        infoText={tutorial.tutorialTopicIntroInfo}\n        activeSlide={0}\n        totalSlides={0}\n        onClickNext={onClickFunc}\n        onClickSkipTutorial={onClickFunc}\n      />\n    );\n  })\n  .add(\"Tutorial Info\", () => {\n    return (\n      <TutorialInfo\n        content={tutorial.tutorialContent}\n        activeSlide={1}\n        totalSlides={3}\n        onClickPrev={onClickFunc}\n        onClickNext={onClickFunc}\n      />\n    );\n  })\n  .add(\"Tutorial Question\", () => {\n    return (\n      <TutorialQuestion\n        quizId={\"topic1\"}\n        quizName={tutorial.quizName}\n        question={tutorial.question}\n        answer={tutorial.answer}\n        options={tutorial.options}\n        activeSlide={1}\n        totalSlides={3}\n        onClickPrev={onClickFunc}\n        onClickNext={onClickFunc}\n      />\n    );\n  })\n  .add(\"Tutorial Topic Completed\", () => {\n    return (\n      <TutorialTopicCompleted\n        completedHeader={tutorial.completedHeader}\n        completedText={tutorial.completedText}\n        continueBtnText={tutorial.continueBtnText}\n        lastTopic={false}\n        onClickNextTopic={onClickFunc}\n        handleClose={onClickFunc}\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialFooter.tsx",
    "content": "import * as React from \"react\";\nimport { TutorialFooterFull, TutorialFooterWrap } from \"./TutorialStyledComponents\";\n\nexport interface TutorialFooterProps {\n  questionResult?: string;\n  floatRight?: boolean;\n}\n\nexport const TutorialFooter: React.FunctionComponent<TutorialFooterProps> = props => {\n  return (\n    <TutorialFooterFull questionResult={props.questionResult}>\n      <TutorialFooterWrap floatRight={props.floatRight}>{props.children}</TutorialFooterWrap>\n    </TutorialFooterFull>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialInfo.tsx",
    "content": "import * as React from \"react\";\nimport {\n  TutorialContentWrap,\n  TutorialSlideContent,\n  TutorialInvertedBtn,\n  TutorialBtn,\n} from \"./TutorialStyledComponents\";\nimport { TutorialFooter } from \"./TutorialFooter\";\nimport { TutorialProgress } from \"./TutorialProgress\";\n\nexport interface TutorialInfoProps {\n  activeSlide: number;\n  totalSlides: number;\n  content: string | JSX.Element;\n  onClickPrev(e: any): void;\n  onClickNext(e: any): void;\n}\n\nexport const TutorialInfo: React.FunctionComponent<TutorialInfoProps> = props => {\n  return (\n    <>\n      <TutorialProgress activeSlide={props.activeSlide} totalSlides={props.totalSlides} />\n      <TutorialContentWrap>\n        <TutorialSlideContent>{props.content}</TutorialSlideContent>\n      </TutorialContentWrap>\n      <TutorialFooter>\n        <TutorialInvertedBtn onClick={props.onClickPrev}>Back</TutorialInvertedBtn>\n        <TutorialBtn onClick={props.onClickNext}>Continue</TutorialBtn>\n      </TutorialFooter>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialProgress.tsx",
    "content": "import * as React from \"react\";\nimport {\n  TutorialProgressContain,\n  TutorialProgressBar,\n  TutorialProgressBarActive,\n  TutorialProgressBarSlideCount,\n} from \"./TutorialStyledComponents\";\n\nexport interface TutorialProgressProps {\n  activeSlide: number;\n  totalSlides: number;\n  showSlideCount?: boolean;\n}\n\nexport const TutorialProgress: React.FunctionComponent<TutorialProgressProps> = props => {\n  return (\n    <>\n      <TutorialProgressContain>\n        <TutorialProgressBar>\n          {props.showSlideCount && (\n            <TutorialProgressBarSlideCount activeSlide={props.activeSlide} totalSlides={props.totalSlides}>\n              {props.activeSlide} of {props.totalSlides}\n            </TutorialProgressBarSlideCount>\n          )}\n          <TutorialProgressBarActive activeSlide={props.activeSlide} totalSlides={props.totalSlides} />\n        </TutorialProgressBar>\n      </TutorialProgressContain>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialQuestion.tsx",
    "content": "import * as React from \"react\";\nimport {\n  TutorialQuizName,\n  TutorialQuizQuestion,\n  TutorialContentWrap,\n  TutorialInvertedBtn,\n  TutorialBtn,\n  TutorialFooterLeft,\n} from \"./TutorialStyledComponents\";\nimport { IncorrectText, SelectCorrectText, CorrectText } from \"./TutorialTextComponents\";\nimport { TutorialFooter } from \"./TutorialFooter\";\nimport { TutorialProgress } from \"./TutorialProgress\";\nimport { TutorialRadio } from \"./TutorialRadio\";\nimport { RadioInput } from \"../input\";\nimport { HollowGreenCheck, HollowRedNoGood } from \"@joincivil/elements\";\n\nexport interface Options {\n  text: string;\n}\n\nexport interface TutorialQuestionProps {\n  activeSlide: number;\n  totalSlides: number;\n  quizName: string | JSX.Element;\n  quizId: string;\n  question: string;\n  options: Options[];\n  answer: string;\n  onClickPrev(e: any): void;\n  onClickNext(e: any): void;\n}\n\nexport interface TutorialQuestionStates {\n  checkAnswerDisabled: boolean;\n  usersAnswerValue: string;\n  usersAnswerResult: string;\n  resetQuestion: boolean;\n}\n\nexport class TutorialQuestion extends React.Component<TutorialQuestionProps, TutorialQuestionStates> {\n  public static getDerivedStateFromProps(\n    props: TutorialQuestionProps,\n    state: TutorialQuestionStates,\n  ): TutorialQuestionStates {\n    if (state.resetQuestion) {\n      return {\n        checkAnswerDisabled: true,\n        usersAnswerValue: \"\",\n        usersAnswerResult: \"\",\n        resetQuestion: false,\n      };\n    }\n\n    return {\n      ...state,\n    };\n  }\n\n  public constructor(props: any) {\n    super(props);\n    this.state = {\n      checkAnswerDisabled: true,\n      usersAnswerValue: \"\",\n      usersAnswerResult: \"\",\n      resetQuestion: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <TutorialProgress\n          activeSlide={this.props.activeSlide}\n          totalSlides={this.props.totalSlides}\n          showSlideCount={true}\n        />\n        <TutorialContentWrap>\n          <TutorialQuizName>Quiz: {this.props.quizName}</TutorialQuizName>\n          <TutorialQuizQuestion>\n            <span>{this.props.activeSlide}.</span>\n            {this.props.question}\n          </TutorialQuizQuestion>\n          <div>\n            <RadioInput\n              name={this.props.quizId + \"-\" + this.props.activeSlide}\n              label=\"\"\n              onChange={this.enableCheckAnswerBtn}\n            >\n              {this.props.options.map((option, idx) => (\n                <TutorialRadio value={option.text} key={idx}>\n                  {option.text}\n                </TutorialRadio>\n              ))}\n            </RadioInput>\n          </div>\n        </TutorialContentWrap>\n        <TutorialFooter questionResult={this.state.usersAnswerResult}>\n          {this.state.usersAnswerResult === \"correct\" ? (\n            <>\n              <TutorialFooterLeft>\n                <HollowGreenCheck width={50} height={50} />\n                <h3>\n                  <CorrectText />\n                </h3>\n              </TutorialFooterLeft>\n              <TutorialBtn onClick={this.resetQuestion}>Continue</TutorialBtn>\n            </>\n          ) : this.state.usersAnswerResult === \"incorrect\" ? (\n            <>\n              <TutorialFooterLeft>\n                <HollowRedNoGood width={50} height={50} />\n                <div>\n                  <h3>\n                    <IncorrectText />\n                  </h3>\n                  <p>{this.props.answer}</p>\n                  <span>\n                    <SelectCorrectText />\n                  </span>\n                </div>\n              </TutorialFooterLeft>\n              <TutorialBtn disabled={this.state.checkAnswerDisabled} onClick={() => this.checkAnswer()}>\n                Check\n              </TutorialBtn>\n            </>\n          ) : (\n            <>\n              <TutorialInvertedBtn onClick={this.props.onClickPrev}>Back to Tutorial</TutorialInvertedBtn>\n              <TutorialBtn disabled={this.state.checkAnswerDisabled} onClick={() => this.checkAnswer()}>\n                Check\n              </TutorialBtn>\n            </>\n          )}\n        </TutorialFooter>\n      </>\n    );\n  }\n\n  private enableCheckAnswerBtn = (name: string, value: any) => {\n    this.setState({ checkAnswerDisabled: false, usersAnswerValue: value });\n  };\n\n  private checkAnswer = () => {\n    if (this.state.usersAnswerValue === this.props.answer) {\n      this.setState({ usersAnswerResult: \"correct\" });\n    } else {\n      this.setState({ usersAnswerResult: \"incorrect\", checkAnswerDisabled: true });\n    }\n  };\n\n  private resetQuestion = (event: any) => {\n    const radioButtons = Array.from(document.querySelectorAll(\"input[type=radio]\"));\n    radioButtons.forEach(radio => {\n      const radioInput = radio as HTMLInputElement;\n      radioInput.checked = false;\n    });\n\n    this.props.onClickNext(event);\n    this.setState({ resetQuestion: true });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialRadio.tsx",
    "content": "import * as React from \"react\";\nimport { TutorialRadioBtnCircle, TutorialRadioBtnContain, TutorialRadioBtn } from \"./TutorialStyledComponents\";\n\nexport interface TutorialOptionProps {\n  onChange?: any;\n  value: any;\n  name?: string;\n}\n\nexport const TutorialRadio: React.FunctionComponent<TutorialOptionProps> = props => {\n  let input: any;\n  const { onChange, children, value, name } = props;\n  const clickHandler = () => {\n    input.checked = true;\n    if (onChange) {\n      onChange(name, input.value);\n    }\n  };\n\n  return (\n    <TutorialRadioBtnContain>\n      <input type=\"radio\" value={value} onChange={onChange} name={name} ref={ref => (input = ref)} />\n      <TutorialRadioBtn onClick={clickHandler}>\n        <TutorialRadioBtnCircle />\n        {children}\n      </TutorialRadioBtn>\n    </TutorialRadioBtnContain>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"../styleConstants\";\nimport { Button, InvertedButton, SecondaryButton } from \"../Button\";\n\nexport interface TutorialProgressBarProps {\n  activeSlide: number;\n  totalSlides: number;\n}\n\nexport const TutorialProgressContain = styled.div`\n  padding: 20px 0 50px;\n  width: 100%;\n`;\n\nexport const TutorialProgressBar = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 3px;\n  height: 6px;\n  margin: 0 auto;\n  max-width: 900px;\n  position: relative;\n  width: 100%;\n`;\n\nexport const TutorialProgressBarActive = styled.div`\n  background-color: ${colors.accent.CIVIL_BLUE};\n  border-radius: 3px;\n  height: 6px;\n  width: ${(props: TutorialProgressBarProps) => ((props.activeSlide / props.totalSlides) * 100).toString()}%;\n`;\n\nexport const TutorialProgressBarSlideCount = styled.div`\n  color: ${colors.accent.CIVIL_BLUE};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: bold;\n  left: ${(props: TutorialProgressBarProps) =>\n    \"calc(\" + ((props.activeSlide / props.totalSlides) * 100).toString() + \"% - 25px)\"};\n  position: absolute;\n  text-align: center;\n  top: -20px;\n  width: 50px;\n`;\n\nexport interface TutorialStyleProps {\n  centerContent?: boolean;\n}\n\nexport const TutorialContentWrap = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  margin: 0 auto 50px;\n  max-width: 710px;\n  min-height: 500px;\n  position: relative;\n  text-align: ${(props: TutorialStyleProps) => (props.centerContent ? \"center\" : \"left\")};\n\n  svg {\n    display: block;\n    margin: 0 auto;\n  }\n\n  button {\n    padding: 14px 30px;\n    width: auto;\n  }\n`;\n\nexport const TutorialSlideContent = styled.div`\n  margin: 0 auto;\n  max-width: 540px;\n\n  h2 {\n    font-size: 24px;\n    line-height: 29px;\n  }\n\n  p,\n  li {\n    font-size: 18px;\n    line-height: 33px;\n  }\n`;\n\nexport const TutorialTopicTitle = styled.div`\n  font-size: 32px;\n  font-weight: 300;\n  letter-spacing: -0.87px;\n  line-height: 39px;\n  margin-bottom: 50px;\n\n  b {\n    font-weight: 800;\n  }\n`;\n\nexport const TutorialTopicInfo = styled.div`\n  font-size: 21px;\n  font-weight: 300;\n  letter-spacing: -0.11px;\n  line-height: 31px;\n  margin-bottom: 30px;\n`;\n\nexport interface TutorialFooterFullProps {\n  questionResult?: string;\n  floatRight?: boolean;\n}\n\nexport const TutorialFooterFull = styled.div`\n  background-color: ${(props: TutorialFooterFullProps) =>\n    props.questionResult === \"correct\"\n      ? \"rgba(41,203,66,0.2)\"\n      : props.questionResult === \"incorrect\"\n      ? \"#FFE6E8\"\n      : colors.accent.CIVIL_GRAY_4};\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  padding: 40px 20px 50px;\n  position: fixed;\n  width: 100%;\n`;\n\nexport const TutorialFooterWrap = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: ${(props: TutorialFooterFullProps) => (props.floatRight ? \"flex-end\" : \"space-between\")};\n  max-width: 900px;\n  width: 100%;\n`;\n\nexport const TutorialFooterLeft = styled.div`\n  align-items: flex-start;\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n\n  svg {\n    margin-right: 15px;\n  }\n\n  h3 {\n    font-size: 18px;\n    font-weight: 700;\n    line-height: 28px;\n    margin: 0 0 5px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 14px;\n    line-height: 22px;\n    margin: 0 0 25px;\n  }\n\n  span {\n    color: ${colors.accent.CIVIL_RED};\n    display: block;\n    font-size: 14px;\n    font-weight: 500;\n    line-height: 17px;\n  }\n`;\n\nexport const TutorialBtn = styled(Button)`\n  border-radius: 1px;\n  font-size: 14px;\n  font-weight: 700;\n  letter-spacing: 0;\n  padding: 14px;\n  text-transform: none;\n  width: 160px;\n`;\n\nexport const TutorialInvertedBtn = styled(InvertedButton)`\n  background-color: transparent;\n  border-radius: 1px;\n  font-size: 14px;\n  font-weight: 700;\n  letter-spacing: 0;\n  padding: 12px;\n  text-transform: none;\n  width: 160px;\n`;\n\nexport const TutorialTextBtn = styled(InvertedButton)`\n  background-color: transparent;\n  border: none;\n  font-size: 13px;\n  font-weight: bold;\n  letter-spacing: 0.3px;\n  line-height: 14px;\n  padding: 12px;\n  text-transform: none;\n  width: 160px;\n\n  &:hover,\n  &:focus {\n    background-color: transparent;\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: underline;\n  }\n`;\n\nexport const TutorialQuizName = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 27px;\n  font-weight: 300;\n  letter-spacing: -0.14px;\n  line-height: 30px;\n  margin: 10px 0 40px -65px;\n`;\n\nexport const TutorialQuizQuestion = styled.h3`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 24px;\n  font-weight: bold;\n  line-height: 29px;\n  position: relative;\n\n  span {\n    font-size: 18px;\n    left: -20px;\n    line-height: 28px;\n    position: absolute;\n    text-align: right;\n    top: 0;\n  }\n`;\n\nexport const TutorialCompletedHeader = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 28px;\n  font-weight: 700;\n  letter-spacing: -0.58px;\n  line-height: 39px;\n  margin: 30px 0;\n  text-align: center;\n`;\n\nexport const TutorialCompletedP = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 18px;\n  letter-spacing: -0.12px;\n  line-height: 33px;\n  margin: 30px 0 70px;\n`;\n\nexport const TutorialRadioBtnCircle = styled.div`\n  background-color: ${colors.basic.WHITE};\n  border: 1px solid ${colors.basic.WHITE};\n  border-radius: 50%;\n  box-shadow: 0 0 0 1px ${colors.accent.CIVIL_GRAY_2};\n  height: 16px;\n  left: 22px;\n  position: absolute;\n  top: 16px;\n  width: 16px;\n`;\n\nexport const TutorialRadioBtnContain = styled.div`\n  width: 100%;\n\n  input {\n    display: none;\n  }\n\n  input:checked + button {\n    background-color: ${colors.basic.WHITE};\n    border: 1px solid ${colors.accent.CIVIL_BLUE};\n    color: ${colors.accent.CIVIL_GRAY_0};\n\n    ${TutorialRadioBtnCircle} {\n      background-color: ${colors.accent.CIVIL_BLUE};\n      border: 1px solid ${colors.basic.WHITE};\n      box-shadow: 0 0 0 1px ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport const TutorialRadioBtn = styled(SecondaryButton)`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 3px;\n  color: ${colors.accent.CIVIL_GRAY_0};\n  cursor: pointer;\n  display: block;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  letter-spacing: 0;\n  line-height: 26px;\n  margin-bottom: 15px;\n  padding: 12px 15px 12px 55px !important;\n  position: relative;\n  text-align: left;\n  text-transform: none;\n  transition: border-color 0.2s ease;\n  width: 100% !important;\n\n  &:hover {\n    background-color: ${colors.basic.WHITE};\n    border-color: ${colors.accent.CIVIL_BLUE};\n    color: ${colors.accent.CIVIL_GRAY_0};\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialTextComponents.tsx",
    "content": "import * as React from \"react\";\n\nexport const SkipToQuizBtnText: React.FunctionComponent = props => <>Skip to the quiz</>;\n\nexport const LetsGoBtnText: React.FunctionComponent = props => <>Let’s go</>;\n\nexport const IncorrectText: React.FunctionComponent = props => <>Sorry, the correct answer is</>;\n\nexport const SelectCorrectText: React.FunctionComponent = props => <>Select the correct answer to continue</>;\n\nexport const CorrectText: React.FunctionComponent = props => <>You are correct</>;\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialTopicCompleted.tsx",
    "content": "import * as React from \"react\";\nimport {\n  TutorialCompletedHeader,\n  TutorialCompletedP,\n  TutorialContentWrap,\n  TutorialBtn,\n} from \"./TutorialStyledComponents\";\nimport { HollowGreenCheck } from \"@joincivil/elements\";\n\nexport interface TutorialTopicCompletedProps {\n  completedHeader: string | JSX.Element;\n  completedText: string | JSX.Element;\n  continueBtnText: string;\n  lastTopic: boolean;\n  onClickNextTopic(e: any): void;\n  handleClose(): void;\n}\n\nexport const TutorialTopicCompleted: React.FunctionComponent<TutorialTopicCompletedProps> = props => {\n  const buttonNext = props.lastTopic ? (\n    <TutorialBtn onClick={props.handleClose}>{props.continueBtnText}</TutorialBtn>\n  ) : (\n    <TutorialBtn onClick={props.onClickNextTopic}>{props.continueBtnText}</TutorialBtn>\n  );\n\n  return (\n    <TutorialContentWrap centerContent={true}>\n      <HollowGreenCheck width={50} height={50} />\n      <TutorialCompletedHeader>{props.completedHeader}</TutorialCompletedHeader>\n      <TutorialCompletedP>{props.completedText}</TutorialCompletedP>\n      {buttonNext}\n    </TutorialContentWrap>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tutorial/TutorialTopicIntro.tsx",
    "content": "import * as React from \"react\";\nimport {\n  TutorialTopicTitle,\n  TutorialTopicInfo,\n  TutorialBtn,\n  TutorialTextBtn,\n  TutorialContentWrap,\n} from \"./TutorialStyledComponents\";\nimport { SkipToQuizBtnText } from \"./TutorialTextComponents\";\nimport { TutorialFooter } from \"./TutorialFooter\";\nimport { TutorialProgress } from \"./TutorialProgress\";\n\nexport interface TutorialTopicIntroProps {\n  activeSlide: number;\n  totalSlides: number;\n  headerText: string | JSX.Element;\n  infoText: string | JSX.Element;\n  onClickNext(e: any): void;\n  onClickSkipTutorial(e: any): void;\n}\n\nexport const TutorialTopicIntro: React.FunctionComponent<TutorialTopicIntroProps> = props => {\n  return (\n    <>\n      <TutorialProgress activeSlide={props.activeSlide} totalSlides={props.totalSlides} />\n      <TutorialContentWrap>\n        <TutorialTopicTitle>{props.headerText}</TutorialTopicTitle>\n        <TutorialTopicInfo>{props.infoText}</TutorialTopicInfo>\n      </TutorialContentWrap>\n      <TutorialFooter floatRight={true}>\n        <div>\n          <TutorialTextBtn onClick={props.onClickSkipTutorial}>\n            <SkipToQuizBtnText />\n          </TutorialTextBtn>\n          <TutorialBtn onClick={props.onClickNext}>Let’s go</TutorialBtn>\n        </div>\n      </TutorialFooter>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/Tutorial/__snapshots__/Tutorial.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Tutorial Tutorial Info 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNbw kYSMrT\"\n    >\n      <div\n        className=\"sc-LzNbx fMCEXq\"\n      >\n        <div\n          className=\"sc-LzNby iiqiIX\"\n        />\n      </div>\n    </div>\n    <div\n      className=\"sc-LzNbA jztJpG\"\n    >\n      <div\n        className=\"sc-LzNbB fknzuk\"\n      >\n        <h2>\n          What is Civil?\n        </h2>\n        <p>\n          Civil is a decentralized network for trustworthy and sustainable journalism. It is founded on the principle that a free press is essential to a fair and just society.\n        </p>\n        <p>\n          Our community-run model providing members a say and share in the project’s operations and long-term evolution.\n        </p>\n        <p>\n          More than 125 journalists representing 18 independent newsrooms, from Chicago to Singapore, are already part of the Civil community. And we’re just getting started!\n        </p>\n      </div>\n    </div>\n    <div\n      className=\"sc-LzNcb hPHVMw\"\n    >\n      <div\n        className=\"sc-LzNcc cZNhdr\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLQ sc-LzNcf bCvrDM\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"invertedButtonBackground\": \"#FFFFFF\",\n              \"invertedButtonColor\": \"#2B56FF\",\n            }\n          }\n          type=\"button\"\n        >\n          Back\n        </button>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzNce byqdGh\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Continue\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tutorial\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Tutorial Info\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  TutorialInfo\n                </span>\n                <span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      content\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#666\",\n                            }\n                          }\n                        >\n                          &lt;TopicTutorial /&gt;\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      activeSlide\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          1\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      totalSlides\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          3\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickPrev\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickNext\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                    <br />\n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TutorialInfo\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tutorial Tutorial Question 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNbw kYSMrT\"\n    >\n      <div\n        className=\"sc-LzNbx fMCEXq\"\n      >\n        <div\n          className=\"sc-LzNbz iPCiXT\"\n        >\n          1\n           of \n          3\n        </div>\n        <div\n          className=\"sc-LzNby iiqiIX\"\n        />\n      </div>\n    </div>\n    <div\n      className=\"sc-LzNbA jztJpG\"\n    >\n      <h2\n        className=\"sc-LzNch bpqrqN\"\n      >\n        Quiz: \n        Quiz: Considerations before buying tokens\n      </h2>\n      <h3\n        className=\"sc-LzNci ePnhHc\"\n      >\n        <span>\n          1\n          .\n        </span>\n        Which of the following is important to you when purchasing a token?\n      </h3>\n      <div>\n        <div\n          className=\"sc-fzXfNj brJHhZ\"\n        >\n          <div>\n            <div\n              className=\"sc-LzNro kpnazi\"\n            >\n              <input\n                name=\"topic1-1\"\n                onChange={[Function]}\n                type=\"radio\"\n                value=\"Option 1\"\n              />\n              <button\n                className=\"sc-fzXfLO sc-fzXfLR sc-LzNrp bmlJkO\"\n                onClick={[Function]}\n                theme={\n                  Object {\n                    \"secondaryButtonBackground\": \"#FFFFFF\",\n                    \"secondaryButtonBorder\": \"#C4C2C0\",\n                    \"secondaryButtonColor\": \"#7D7373\",\n                    \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                    \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                  }\n                }\n                type=\"button\"\n              >\n                <div\n                  className=\"sc-LzNrn haBcXY\"\n                />\n                Option 1\n              </button>\n            </div>\n            <div\n              className=\"sc-LzNro kpnazi\"\n            >\n              <input\n                name=\"topic1-1\"\n                onChange={[Function]}\n                type=\"radio\"\n                value=\"Option 2\"\n              />\n              <button\n                className=\"sc-fzXfLO sc-fzXfLR sc-LzNrp bmlJkO\"\n                onClick={[Function]}\n                theme={\n                  Object {\n                    \"secondaryButtonBackground\": \"#FFFFFF\",\n                    \"secondaryButtonBorder\": \"#C4C2C0\",\n                    \"secondaryButtonColor\": \"#7D7373\",\n                    \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                    \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                  }\n                }\n                type=\"button\"\n              >\n                <div\n                  className=\"sc-LzNrn haBcXY\"\n                />\n                Option 2\n              </button>\n            </div>\n            <div\n              className=\"sc-LzNro kpnazi\"\n            >\n              <input\n                name=\"topic1-1\"\n                onChange={[Function]}\n                type=\"radio\"\n                value=\"Option 3\"\n              />\n              <button\n                className=\"sc-fzXfLO sc-fzXfLR sc-LzNrp bmlJkO\"\n                onClick={[Function]}\n                theme={\n                  Object {\n                    \"secondaryButtonBackground\": \"#FFFFFF\",\n                    \"secondaryButtonBorder\": \"#C4C2C0\",\n                    \"secondaryButtonColor\": \"#7D7373\",\n                    \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                    \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                  }\n                }\n                type=\"button\"\n              >\n                <div\n                  className=\"sc-LzNrn haBcXY\"\n                />\n                Option 3\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div\n      className=\"sc-LzNcb hPHVMw\"\n    >\n      <div\n        className=\"sc-LzNcc cZNhdr\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLQ sc-LzNcf bCvrDM\"\n          onClick={[Function]}\n          theme={\n            Object {\n              \"invertedButtonBackground\": \"#FFFFFF\",\n              \"invertedButtonColor\": \"#2B56FF\",\n            }\n          }\n          type=\"button\"\n        >\n          Back to Tutorial\n        </button>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzNce byqdGh disabled\"\n          disabled={true}\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Check\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tutorial\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Tutorial Question\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  TutorialQuestion\n                </span>\n                <span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      quizId\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          topic1\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      quizName\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Quiz: Considerations before buying tokens\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      question\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Which of the following is important to you when pu…\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      answer\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Option 1\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      options\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#666\",\n                            }\n                          }\n                        >\n                          [\n                          <span>\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  text\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                'Option 1'\n                              </span>\n                              }\n                            </span>\n                          </span>\n                          ,\n                          <span>\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  text\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                'Option 2'\n                              </span>\n                              }\n                            </span>\n                          </span>\n                          ,\n                          <span>\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  text\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                'Option 3'\n                              </span>\n                              }\n                            </span>\n                          </span>\n                          ]\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      activeSlide\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          1\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      totalSlides\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          3\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickPrev\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickNext\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                    <br />\n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TutorialQuestion\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tutorial Tutorial Topic Completed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNbA heZcuc\"\n    >\n      <svg\n        height=\"50\"\n        viewBox=\"0 0 20 20\"\n        width=\"50\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <circle\n            className=\"svg-stroke\"\n            cx=\"9\"\n            cy=\"9\"\n            r=\"8.25\"\n            stroke=\"#29cb42\"\n            strokeWidth=\"1.5\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n            fill=\"#29cb42\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n      <p\n        className=\"sc-LzNcj kruqqf\"\n      >\n        Nice! You’ve completed Topic 1\n      </p>\n      <p\n        className=\"sc-LzNck bjXkmJ\"\n      >\n        Buying tokens, like any financial decision, is a risk. The price of tokens can fluctuate depending on various factors. It’ a good rule of thumb to look at the team behind the token – the founders, the advisors – as well as the token design and its supply.  It’s also important to diversify your portfolio across many investment vehicles – crypto assets and non-crypto assets.\n      </p>\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP sc-LzNce byqdGh\"\n        onClick={[Function]}\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        Continue to topic 2\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tutorial\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Tutorial Topic Completed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  TutorialTopicCompleted\n                </span>\n                <span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      completedHeader\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Nice! You’ve completed Topic 1\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      completedText\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Buying tokens, like any financial decision, is a r…\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      continueBtnText\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Continue to topic 2\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      lastTopic\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          false\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickNextTopic\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      handleClose\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                    <br />\n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TutorialTopicCompleted\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Tutorial Tutorial Topic Intro 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNbw kYSMrT\"\n    >\n      <div\n        className=\"sc-LzNbx fMCEXq\"\n      >\n        <div\n          className=\"sc-LzNby hgLIfu\"\n        />\n      </div>\n    </div>\n    <div\n      className=\"sc-LzNbA jztJpG\"\n    >\n      <div\n        className=\"sc-LzNbC ddWdzR\"\n      >\n        Topic 1: How to use Civil tokens\n      </div>\n      <div\n        className=\"sc-LzNbD jyYyrO\"\n      >\n        <p>\n          <b>\n            You’ll learn\n          </b>\n        </p>\n        <p>\n          What is Civil, and what makes us different?\n        </p>\n        <p>\n          How does a Newsroom join the Civil network?\n        </p>\n        <p>\n          What are Civil tokens (CVL)?\n        </p>\n        <p>\n          What is the Civil Registry?\n        </p>\n      </div>\n    </div>\n    <div\n      className=\"sc-LzNcb hPHVMw\"\n    >\n      <div\n        className=\"sc-LzNcc hMvnJb\"\n      >\n        <div>\n          <button\n            className=\"sc-fzXfLO sc-fzXfLQ sc-LzNcg bOQgUY\"\n            onClick={[Function]}\n            theme={\n              Object {\n                \"invertedButtonBackground\": \"#FFFFFF\",\n                \"invertedButtonColor\": \"#2B56FF\",\n              }\n            }\n            type=\"button\"\n          >\n            Skip to the quiz\n          </button>\n          <button\n            className=\"sc-fzXfLO sc-fzXfLP sc-LzNce byqdGh\"\n            onClick={[Function]}\n            theme={\n              Object {\n                \"primaryButtonBackground\": \"#2B56FF\",\n                \"primaryButtonColor\": \"#FFFFFF\",\n                \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n                \"primaryButtonDisabledColor\": \"#FFFFFF\",\n                \"primaryButtonFontWeight\": \"normal\",\n                \"primaryButtonHoverBackground\": \"#4066FF\",\n                \"primaryButtonTextTransform\": \"uppercase\",\n                \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n              }\n            }\n            type=\"button\"\n          >\n            Let’s go\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Tutorial\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Tutorial Topic Intro\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  TutorialTopicIntro\n                </span>\n                <span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      headerText\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Topic 1: How to use Civil tokens\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      infoText\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#666\",\n                            }\n                          }\n                        >\n                          &lt;TopicIntro /&gt;\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      activeSlide\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          0\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      totalSlides\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#a11\",\n                            }\n                          }\n                        >\n                          0\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickNext\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                    <span>\n                      <br />\n                        \n                    </span>\n                    <span\n                      style={Object {}}\n                    >\n                      onClickSkipTutorial\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onClickFunc\n                        </span>\n                        }\n                      </span>\n                    </span>\n                    <br />\n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TutorialTopicIntro\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/Tutorial/index.ts",
    "content": "export * from \"./TutorialFooter\";\nexport * from \"./TutorialInfo\";\nexport * from \"./TutorialQuestion\";\nexport * from \"./TutorialStyledComponents\";\nexport * from \"./TutorialTextComponents\";\nexport * from \"./TutorialTopicCompleted\";\nexport * from \"./TutorialTopicIntro\";\nexport * from \"./TutorialProgress\";\nexport * from \"./TutorialRadio\";\n"
  },
  {
    "path": "packages/components/src/UserStatement/RequestAppealStatement.tsx",
    "content": "import * as React from \"react\";\nimport RichTextEditor from \"react-rte\";\nimport { TextareaInput } from \"../input\";\nimport { buttonSizes, CancelButton } from \"../Button\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { MetaMaskLogoButton } from \"../\";\nimport {\n  StyledErrorMessage,\n  StyledUserStatementHeaderOuter,\n  StyledUserStatementHeader,\n  StatementHeaderHeading,\n  StatementHeaderNewsroomName,\n  StyledUserStatementBodyOuter,\n  StyledUserStatementBody,\n  CopyLarge,\n  StyledLi,\n  StyledLiContent,\n  StyledOl,\n  CopySmall,\n  StyledLink,\n  BodyHeader,\n  BodyCopyHelper,\n  SectionForm,\n  SectionFormHeader,\n  SectionFormCopyHelper,\n  StyledTextareaContainer,\n  SectionDeposit,\n  StyledDepositLabel,\n  StyledDepositAmount,\n  SectionActions,\n} from \"./styledComponents\";\n\nexport interface RequestAppealStatementProps {\n  constitutionURI: string;\n  governanceGuideURI: string;\n  listingURI: string;\n  appealFee: string;\n  judgeAppealLen: string;\n  newsroomName: string;\n  transactions: any[];\n  modalContentComponents?: { [index: string]: JSX.Element };\n  updateStatementValue(key: string, value: any): void;\n  postExecuteTransactions?(): void;\n}\n\nexport interface RequestAppealStatementState {\n  summaryValue: string;\n  detailsValue: any;\n}\n\nconst SUMMARY_MAX_LENGTH = 120;\n\nexport class RequestAppealStatement extends React.Component<RequestAppealStatementProps, RequestAppealStatementState> {\n  constructor(props: RequestAppealStatementProps) {\n    super(props);\n    this.state = {\n      summaryValue: \"\",\n      detailsValue: RichTextEditor.createEmptyValue(),\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StyledUserStatementHeaderOuter>\n          <StyledUserStatementHeader>\n            <StatementHeaderHeading>Request Appeal</StatementHeaderHeading>\n            <StatementHeaderNewsroomName>{this.props.newsroomName}</StatementHeaderNewsroomName>\n            <CopyLarge>\n              A deposit of <strong>{this.props.appealFee} tokens</strong> is required to request an appeal. Read our{\" \"}\n              <StyledLink href={this.props.governanceGuideURI}>governance guide</StyledLink> before you begin.\n            </CopyLarge>\n            <StyledOl>\n              <StyledLi>\n                <StyledLiContent>State reasons for your request to appeal</StyledLiContent>\n              </StyledLi>\n              <StyledLi>\n                <StyledLiContent>Deposit CVL tokens to request to appeal</StyledLiContent>\n              </StyledLi>\n            </StyledOl>\n            <CopySmall>\n              After a request is submitted, the Civil Council will have {this.props.judgeAppealLen} to rule on the\n              appeal.\n            </CopySmall>\n          </StyledUserStatementHeader>\n        </StyledUserStatementHeaderOuter>\n        <StyledUserStatementBodyOuter>\n          <StyledUserStatementBody>\n            <BodyHeader>State reasons for your appeal request</BodyHeader>\n            <BodyCopyHelper>Enter a summary of the reasons for your appeal request (Max 120 characters)</BodyCopyHelper>\n\n            <SectionForm>\n              <SectionFormHeader>\n                Write 1-2 sentences about why you’re appealing this challenge (required)\n              </SectionFormHeader>\n              <SectionFormCopyHelper>Max character limit: {SUMMARY_MAX_LENGTH.toString()}</SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <TextareaInput\n                  name=\"request_appeal_statement_summary\"\n                  value={this.state.summaryValue}\n                  onChange={this.handleSummaryValueChange}\n                  maxLength={SUMMARY_MAX_LENGTH.toString()}\n                />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionForm>\n              <SectionFormHeader>Add details and evidence to support your statements. (required) </SectionFormHeader>\n              <SectionFormCopyHelper>\n                Help the Civil Council consider your request by providing as much information as possible to support\n                your case\n              </SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <RichTextEditor value={this.state.detailsValue} onChange={this.handleDetailsValueChange} />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionDeposit>\n              <StyledDepositLabel>Total Token Deposit</StyledDepositLabel>\n              <StyledDepositAmount>{this.props.appealFee}</StyledDepositAmount>\n            </SectionDeposit>\n\n            <SectionActions>\n              <div>\n                <TransactionButtonNoModal\n                  Button={MetaMaskLogoButton}\n                  transactions={this.props.transactions}\n                  postExecuteTransactions={this.props.postExecuteTransactions}\n                  disabled={this.isFormInvalid()}\n                >\n                  Confirm and Deposit CVL\n                </TransactionButtonNoModal>\n\n                <SectionFormCopyHelper>{this.renderHelperMessage()}</SectionFormCopyHelper>\n              </div>\n\n              <div>\n                <CancelButton size={buttonSizes.MEDIUM} to={this.props.listingURI}>\n                  Cancel\n                </CancelButton>\n              </div>\n            </SectionActions>\n          </StyledUserStatementBody>\n        </StyledUserStatementBodyOuter>\n      </>\n    );\n  }\n\n  private isFormInvalid = (): boolean => {\n    const { summaryValue, detailsValue } = this.state;\n    const details = document.createElement(\"div\");\n    details.innerHTML = detailsValue.toString(\"html\");\n    return !summaryValue || !summaryValue.length || !details.innerText.length;\n  };\n\n  private renderHelperMessage = (): JSX.Element => {\n    if (this.isFormInvalid()) {\n      return <StyledErrorMessage>Please check that all fields have been filled out</StyledErrorMessage>;\n    }\n\n    return <>This will pop up a separate MetaMask window to confirm your transactions.</>;\n  };\n  private handleSummaryValueChange = (name: string, summaryValue: string) => {\n    this.setState({ summaryValue });\n    this.props.updateStatementValue(\"summary\", summaryValue);\n  };\n\n  private handleDetailsValueChange = (detailsValue: any) => {\n    this.setState({ detailsValue });\n    this.props.updateStatementValue(\"details\", detailsValue);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/UserStatement/SubmitAppealChallengeStatement.tsx",
    "content": "import * as React from \"react\";\nimport RichTextEditor from \"react-rte\";\nimport { TextareaInput } from \"../input\";\nimport { buttonSizes, CancelButton } from \"../Button\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { MetaMaskLogoButton } from \"../\";\nimport {\n  StyledUserStatementHeaderOuter,\n  StyledUserStatementHeader,\n  StatementHeaderHeading,\n  StatementHeaderNewsroomName,\n  StyledUserStatementBodyOuter,\n  StyledUserStatementBody,\n  CopyLarge,\n  StyledLi,\n  StyledLiContent,\n  StyledOl,\n  CopySmall,\n  StyledLink,\n  BodyHeader,\n  BodyCopyHelper,\n  SectionForm,\n  SectionFormHeader,\n  SectionFormCopyHelper,\n  StyledTextareaContainer,\n  SectionDeposit,\n  StyledDepositLabel,\n  StyledDepositAmount,\n  SectionActions,\n} from \"./styledComponents\";\n\nexport interface SubmitAppealChallengeStatementProps {\n  constitutionURI?: string;\n  governanceGuideURI?: string;\n  listingURI?: string;\n  appealFee?: string;\n  challengeAppealCommitLen?: string;\n  challengeAppealRevealLen?: string;\n  appealVotePercentage?: string;\n  newsroomName?: string;\n  transactions: any[];\n  modalContentComponents?: { [index: string]: JSX.Element };\n  updateStatementValue(key: string, value: any): void;\n  postExecuteTransactions?(): void;\n}\n\nexport interface SubmitAppealChallengeStatementState {\n  summaryValue: string;\n  detailsValue: any;\n}\n\nconst SUMMARY_MAX_LENGTH = 120;\n\nexport class SubmitAppealChallengeStatement extends React.Component<\n  SubmitAppealChallengeStatementProps,\n  SubmitAppealChallengeStatementState\n> {\n  constructor(props: SubmitAppealChallengeStatementProps) {\n    super(props);\n    this.state = {\n      summaryValue: \"\",\n      detailsValue: RichTextEditor.createEmptyValue(),\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StyledUserStatementHeaderOuter>\n          <StyledUserStatementHeader>\n            <StatementHeaderHeading>Challenge Granted Appeal</StatementHeaderHeading>\n            <StatementHeaderNewsroomName>{this.props.newsroomName}</StatementHeaderNewsroomName>\n            <CopyLarge>\n              A deposit of <strong>{this.props.appealFee} tokens</strong> is required to challenge a granted appeal.\n              Read our <StyledLink href={this.props.governanceGuideURI}>governance guide</StyledLink> before you begin.\n            </CopyLarge>\n            <StyledOl>\n              <StyledLi>\n                <StyledLiContent>State reasons for your challenge of the granted appeal</StyledLiContent>\n              </StyledLi>\n              <StyledLi>\n                <StyledLiContent>Deposit CVL tokens to challenge</StyledLiContent>\n              </StyledLi>\n            </StyledOl>\n            <CopySmall>\n              After a challenge is submitted, the CVL token-holding community will have have{\" \"}\n              <strong>{this.props.challengeAppealCommitLen} to commit their votes</strong>, followed by{\" \"}\n              <strong>{this.props.challengeAppealRevealLen} to confirm their votes.</strong> Only a supermajority (\n              {this.props.appealVotePercentage}) from the community can overturn the Civil Council's decision.\n            </CopySmall>\n          </StyledUserStatementHeader>\n        </StyledUserStatementHeaderOuter>\n        <StyledUserStatementBodyOuter>\n          <StyledUserStatementBody>\n            <BodyHeader>State reasons for your challenge</BodyHeader>\n            <BodyCopyHelper>Enter a summary of the reasons for your challenge (Max 120 characters)</BodyCopyHelper>\n\n            <SectionForm>\n              <SectionFormHeader>\n                Write 1-2 sentences about why you’re challenging this granted appeal (required)\n              </SectionFormHeader>\n              <SectionFormCopyHelper>Max character limit: {SUMMARY_MAX_LENGTH.toString()}</SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <TextareaInput\n                  name=\"appeal_challenge_statement_summary\"\n                  value={this.state.summaryValue}\n                  onChange={this.handleSummaryValueChange}\n                  maxLength={SUMMARY_MAX_LENGTH.toString()}\n                />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionForm>\n              <SectionFormHeader>Add details and evidence to support your statements. (required) </SectionFormHeader>\n              <SectionFormCopyHelper>\n                Help inform the Civil community to vote accordingly by providing as much information as possible to\n                support your case.\n              </SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <RichTextEditor value={this.state.detailsValue} onChange={this.handleDetailsValueChange} />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionDeposit>\n              <StyledDepositLabel>Total Token Deposit</StyledDepositLabel>\n              <StyledDepositAmount>{this.props.appealFee}</StyledDepositAmount>\n            </SectionDeposit>\n\n            <SectionActions>\n              <div>\n                <TransactionButtonNoModal\n                  Button={MetaMaskLogoButton}\n                  transactions={this.props.transactions}\n                  postExecuteTransactions={this.props.postExecuteTransactions}\n                  disabled={this.isFormInvalid()}\n                >\n                  Confirm and Deposit CVL\n                </TransactionButtonNoModal>\n\n                <SectionFormCopyHelper>\n                  This will pop up a separate MetaMask window to confirm your transactions.\n                </SectionFormCopyHelper>\n              </div>\n\n              <div>\n                <CancelButton size={buttonSizes.MEDIUM} to={this.props.listingURI}>\n                  Cancel\n                </CancelButton>\n              </div>\n            </SectionActions>\n          </StyledUserStatementBody>\n        </StyledUserStatementBodyOuter>\n      </>\n    );\n  }\n\n  private isFormInvalid = (): boolean => {\n    const { summaryValue, detailsValue } = this.state;\n    const details = document.createElement(\"div\");\n    details.innerHTML = detailsValue.toString(\"html\");\n    return !summaryValue || !summaryValue.length || !details.innerText.length;\n  };\n\n  private handleSummaryValueChange = (name: string, summaryValue: string) => {\n    this.setState({ summaryValue });\n    this.props.updateStatementValue(\"summary\", summaryValue);\n  };\n\n  private handleDetailsValueChange = (detailsValue: any) => {\n    this.setState({ detailsValue });\n    this.props.updateStatementValue(\"details\", detailsValue);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/UserStatement/SubmitChallengeStatement.tsx",
    "content": "import * as React from \"react\";\nimport RichTextEditor from \"react-rte\";\nimport { TextareaInput } from \"../input\";\nimport { buttonSizes, CancelButton } from \"../Button\";\nimport { TransactionButtonNoModal } from \"../TransactionButton\";\nimport { MetaMaskLogoButton } from \"../\";\nimport { Checkbox, CheckboxSizes } from \"../input/Checkbox\";\nimport {\n  StyledErrorMessage,\n  StyledUserStatementHeaderOuter,\n  StyledUserStatementHeader,\n  StatementHeaderHeading,\n  StatementHeaderNewsroomName,\n  StyledUserStatementBodyOuter,\n  StyledUserStatementBody,\n  CopyLarge,\n  StyledLi,\n  StyledLiContent,\n  StyledOl,\n  CopySmall,\n  StyledLink,\n  BodyHeader,\n  BodyCopyHelper,\n  SectionForm,\n  SectionFormHeader,\n  SectionFormCopyHelper,\n  SectionConfirmChallenge,\n  StyledTextareaContainer,\n  SectionDeposit,\n  StyledDepositLabel,\n  StyledDepositAmount,\n  SectionActions,\n} from \"./styledComponents\";\n\nexport interface SubmitChallengeStatementProps {\n  constitutionURI?: string;\n  governanceGuideURI?: string;\n  listingURI?: string;\n  minDeposit?: string;\n  commitStageLen?: string;\n  revealStageLen?: string;\n  newsroomName?: string;\n  transactions: any[];\n  modalContentComponents?: { [index: string]: JSX.Element };\n  updateStatementValue(key: string, value: any): void;\n  postExecuteTransactions?(): void;\n}\n\nexport interface SubmitChallengeStatementState {\n  summaryValue: string;\n  citeConstitutionValue: any;\n  detailsValue: any;\n  didConfirmChallenge: boolean;\n}\n\nconst SUMMARY_MAX_LENGTH = 120;\n\nexport class SubmitChallengeStatement extends React.Component<\n  SubmitChallengeStatementProps,\n  SubmitChallengeStatementState\n> {\n  public state = {\n    summaryValue: \"\",\n    citeConstitutionValue: RichTextEditor.createEmptyValue(),\n    detailsValue: RichTextEditor.createEmptyValue(),\n    didConfirmChallenge: false,\n  };\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StyledUserStatementHeaderOuter>\n          <StyledUserStatementHeader>\n            <StatementHeaderHeading>Challenge Newsroom</StatementHeaderHeading>\n            <StatementHeaderNewsroomName>{this.props.newsroomName}</StatementHeaderNewsroomName>\n            <CopyLarge>\n              A deposit of <strong>{this.props.minDeposit} tokens</strong> is required to challenge a newsroom. Read our{\" \"}\n              <StyledLink href={this.props.governanceGuideURI}>governance guide</StyledLink> before you begin.\n            </CopyLarge>\n            <StyledOl>\n              <StyledLi>\n                <StyledLiContent>State reasons for your challenge</StyledLiContent>\n              </StyledLi>\n              <StyledLi>\n                <StyledLiContent>Deposit CVL tokens to challenge</StyledLiContent>\n              </StyledLi>\n            </StyledOl>\n            <CopySmall>\n              After a challenge is submitted, the CVL token-holding community will have have{\" \"}\n              <strong>{this.props.commitStageLen} to commit their votes</strong>, followed by{\" \"}\n              <strong>{this.props.revealStageLen} to confirm their votes.</strong>\n            </CopySmall>\n          </StyledUserStatementHeader>\n        </StyledUserStatementHeaderOuter>\n        <StyledUserStatementBodyOuter>\n          <StyledUserStatementBody>\n            <BodyHeader>State reasons for your challenge</BodyHeader>\n            <BodyCopyHelper>Enter a summary of the reasons for your challenge (Max 120 characters)</BodyCopyHelper>\n\n            <SectionForm>\n              <SectionFormHeader>\n                Write 1-2 sentences about why you’re challenging this newsroom (required)\n              </SectionFormHeader>\n              <SectionFormCopyHelper>Max character limit: {SUMMARY_MAX_LENGTH.toString()}</SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <TextareaInput\n                  name=\"challenge_statement_summary\"\n                  value={this.state.summaryValue}\n                  onChange={this.handleSummaryValueChange}\n                  maxLength={SUMMARY_MAX_LENGTH.toString()}\n                />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionForm>\n              <SectionFormHeader>\n                Please cite the section or principles of the Civil Constitution that you believe the Newsroom has\n                violated. (required)\n              </SectionFormHeader>\n              <SectionFormCopyHelper>\n                <StyledLink href={this.props.constitutionURI} target=\"_blank\">\n                  See Civil Constitution\n                </StyledLink>\n              </SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <RichTextEditor\n                  value={this.state.citeConstitutionValue}\n                  onChange={this.handleCiteConstitutionValueChange}\n                />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionForm>\n              <SectionFormHeader>Add details and evidence to support your statements. (required) </SectionFormHeader>\n              <SectionFormCopyHelper>\n                Help inform the Civil community to vote accordingly by providing as much information as possible to\n                support your case.\n              </SectionFormCopyHelper>\n\n              <StyledTextareaContainer>\n                <RichTextEditor value={this.state.detailsValue} onChange={this.handleDetailsValueChange} />\n              </StyledTextareaContainer>\n            </SectionForm>\n\n            <SectionDeposit>\n              <StyledDepositLabel>Total Token Deposit</StyledDepositLabel>\n              <StyledDepositAmount>{this.props.minDeposit}</StyledDepositAmount>\n            </SectionDeposit>\n\n            <SectionConfirmChallenge>\n              <div>\n                <Checkbox\n                  size={CheckboxSizes.SMALL}\n                  checked={this.state.didConfirmChallenge}\n                  onClick={this.toggleDidConfirmChallenge}\n                />\n              </div>\n              <div>\n                I understand that once I confirm this challenge, I can not withdraw it, and that I communicated my\n                concerns with Newsroom.\n              </div>\n            </SectionConfirmChallenge>\n\n            <SectionActions>\n              <div>\n                <TransactionButtonNoModal\n                  transactions={this.props.transactions}\n                  postExecuteTransactions={this.props.postExecuteTransactions}\n                  Button={MetaMaskLogoButton}\n                  disabled={this.isFormInvalid()}\n                >\n                  Confirm and Deposit CVL\n                </TransactionButtonNoModal>\n\n                <SectionFormCopyHelper>{this.renderHelperMessage()}</SectionFormCopyHelper>\n              </div>\n\n              <div>\n                <CancelButton size={buttonSizes.MEDIUM} to={this.props.listingURI}>\n                  Cancel\n                </CancelButton>\n              </div>\n            </SectionActions>\n          </StyledUserStatementBody>\n        </StyledUserStatementBodyOuter>\n      </>\n    );\n  }\n\n  private isFormInvalid = (): boolean => {\n    const { summaryValue, citeConstitutionValue, detailsValue, didConfirmChallenge } = this.state;\n    const citeConstitution = document.createElement(\"div\");\n    citeConstitution.innerHTML = citeConstitutionValue.toString(\"html\");\n    const details = document.createElement(\"div\");\n    details.innerHTML = detailsValue.toString(\"html\");\n    return (\n      !summaryValue ||\n      !summaryValue.length ||\n      !citeConstitution.innerText.length ||\n      !details.innerText.length ||\n      !didConfirmChallenge\n    );\n  };\n\n  private renderHelperMessage = (): JSX.Element => {\n    if (this.isFormInvalid()) {\n      return <StyledErrorMessage>Please check that all fields have been filled out</StyledErrorMessage>;\n    }\n\n    return <>This will pop up a separate MetaMask window to confirm your transactions.</>;\n  };\n\n  private handleSummaryValueChange = (name: string, summaryValue: string) => {\n    this.setState({ summaryValue });\n    this.props.updateStatementValue(\"summary\", summaryValue);\n  };\n\n  private handleCiteConstitutionValueChange = (citeConstitutionValue: any) => {\n    this.setState({ citeConstitutionValue });\n    this.props.updateStatementValue(\"citeConstitution\", citeConstitutionValue);\n  };\n\n  private handleDetailsValueChange = (detailsValue: any) => {\n    this.setState({ detailsValue });\n    this.props.updateStatementValue(\"details\", detailsValue);\n  };\n\n  private toggleDidConfirmChallenge = (): void => {\n    this.setState({ didConfirmChallenge: !this.state.didConfirmChallenge });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/UserStatement/UserStatement.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport StoryRouter from \"storybook-react-router\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { SubmitChallengeStatement, SubmitChallengeStatementProps } from \"./SubmitChallengeStatement\";\nimport { RequestAppealStatement, RequestAppealStatementProps } from \"./RequestAppealStatement\";\nimport { SubmitAppealChallengeStatement, SubmitAppealChallengeStatementProps } from \"./SubmitAppealChallengeStatement\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  width: 100vh;\n  height: 100vw;\n  background-color: #fff;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => (\n  <StyledDiv>\n    <div>{children}</div>\n  </StyledDiv>\n);\n\nstoriesOf(\"Registry / User Statement Forms\", module)\n  .addDecorator(StoryRouter())\n  .add(\"Submit Challenge Statement\", () => {\n    const updateStatementValue = (name: string, value: any) => {\n      console.log(\"update statement\", name, value);\n    };\n    const props: SubmitChallengeStatementProps = {\n      constitutionURI: \"https://civil.co\",\n      governanceGuideURI: \"https://civil.co\",\n      listingURI: \"https://civil.co\",\n      newsroomName: \"The Sleeper Reporters\",\n      minDeposit: \"100,000 CVL\",\n      commitStageLen: \"10 days\",\n      revealStageLen: \"7 days\",\n      transactions: [],\n      updateStatementValue,\n    };\n\n    return <Container>{process.env.NODE_ENV !== \"test\" && <SubmitChallengeStatement {...props} />}</Container>;\n  })\n  .add(\"Submit Appeal Statement\", () => {\n    const updateStatementValue = (name: string, value: any) => {\n      console.log(\"update statement\", name, value);\n    };\n    const props: RequestAppealStatementProps = {\n      constitutionURI: \"https://civil.co\",\n      governanceGuideURI: \"https://civil.co\",\n      listingURI: \"https://civil.co\",\n      newsroomName: \"The Sleeper Reporters\",\n      appealFee: \"100,000 CVL\",\n      judgeAppealLen: \"5 days\",\n      transactions: [],\n      updateStatementValue,\n    };\n\n    return <Container>{process.env.NODE_ENV !== \"test\" && <RequestAppealStatement {...props} />}</Container>;\n  })\n  .add(\"Submit Appeal Challenge Statement\", () => {\n    const updateStatementValue = (name: string, value: any) => {\n      console.log(\"update statement\", name, value);\n    };\n    const props: SubmitAppealChallengeStatementProps = {\n      constitutionURI: \"https://civil.co\",\n      governanceGuideURI: \"https://civil.co\",\n      listingURI: \"https://civil.co\",\n      newsroomName: \"The Sleeper Reporters\",\n      appealFee: \"100,000 CVL\",\n      appealVotePercentage: \"60%\",\n      challengeAppealCommitLen: \"10 days\",\n      challengeAppealRevealLen: \"7 days\",\n      transactions: [],\n      updateStatementValue,\n    };\n\n    return <Container>{process.env.NODE_ENV !== \"test\" && <SubmitAppealChallengeStatement {...props} />}</Container>;\n  });\n"
  },
  {
    "path": "packages/components/src/UserStatement/__snapshots__/UserStatement.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / User Statement Forms Submit Appeal Challenge Statement 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPC pTMvn\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / User Statement Forms\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Submit Appeal Challenge Statement\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / User Statement Forms Submit Appeal Statement 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPC pTMvn\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / User Statement Forms\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Submit Appeal Statement\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Registry / User Statement Forms Submit Challenge Statement 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPC pTMvn\"\n    >\n      <div />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / User Statement Forms\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Submit Challenge Statement\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/UserStatement/index.ts",
    "content": "export * from \"./SubmitChallengeStatement\";\nexport * from \"./SubmitAppealChallengeStatement\";\nexport * from \"./RequestAppealStatement\";\n"
  },
  {
    "path": "packages/components/src/UserStatement/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { CancelButton } from \"../Button\";\n\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\n\nexport const StyledUserStatementHeaderOuter = styled.div`\n  background: ${colors.primary.BLACK};\n  display: flex;\n  justify-content: center;\n  padding: 67px 0 0;\n  margin: 0 0 52px;\n  width: 100%;\n`;\n\nexport const StyledUserStatementHeader = styled.div`\n  background: ${colors.accent.CIVIL_YELLOW};\n  box-sizing: content-box;\n  font-family: ${fonts.SANS_SERIF};\n  padding: 36px 123px;\n  max-width: 675px;\n  ${mediaQueries.MOBILE} {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n`;\n\nexport const StatementHeaderHeading = styled.h2`\n  color: ${colors.primary.BLACK};\n  font-family: ${fonts.SERIF};\n  font-size: 32px;\n  line-height: 40px;\n  margin: 0 0 23px;\n`;\n\nexport const StatementHeaderNewsroomName = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 24px;\n  line-height: 29px;\n  margin: 0 0 11px;\n`;\n\nexport const CopyLarge = styled.p`\n  font: normal 18px/33px ${fonts.SANS_SERIF};\n  margin: 0 0 24px;\n`;\n\nexport const StyledLi = styled.li`\n  font-size: 21px;\n  line-height: 25px;\n  padding: 0;\n  margin: 0 0 17px;\n`;\n\nexport const StyledLiContent = styled.span`\n  font-size: 18px;\n  line-height: 33px;\n`;\n\nexport const StyledOl = styled.ol`\n  margin: 13px 0 21px;\n  padding: 0 0 0 39px;\n`;\n\nexport const CopySmall = styled.p`\n  font-size: 14px;\n  line-height: 20px;\n  margin: 0 0 30px;\n`;\n\nexport const StyledLink = styled.a`\n  border-bottom: 1px solid transparent;\n  color: ${colors.accent.CIVIL_BLUE};\n  text-decoration: none;\n\n  &:hover {\n    border-bottom-color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nexport const StyledUserStatementBodyOuter = styled.div`\n  display: flex;\n  justify-content: center;\n  ${mediaQueries.MOBILE} {\n    margin-right: 10px;\n    margin-left: 10px;\n  }\n`;\n\nexport const StyledUserStatementBody = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  width: 675px;\n`;\n\nexport const BodyHeader = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 24px;\n  font-weight: bold;\n  letter-spacing: -0.12px;\n  margin: 0 0 9px;\n  line-height: 33px;\n`;\n\nexport const BodyCopyHelper = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 14px;\n  margin: 0 0 9px;\n  line-height: 20px;\n`;\n\nexport const SectionForm = styled.div`\n  margin: 32px 0;\n`;\n\nexport const SectionFormHeader = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 18px;\n  letter-spacing: -0.1px;\n  line-height: 21px;\n  margin: 0 0 12px;\n`;\n\nexport const SectionFormCopyHelper = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 14px;\n  letter-spacing: -0.1px;\n  line-height: 17px;\n  margin: 0 0 5px;\n`;\n\nexport const StyledTextareaContainer = styled.div`\n  min-height: 110px;\n\n  & textarea,\n  & .public-DraftEditor-content {\n    min-height: 110px;\n  }\n`;\n\nexport const SectionDeposit = styled.div`\n  box-shadow: inset 0 -1px 0 0 ${colors.accent.CIVIL_GRAY_4};\n  display: flex;\n  justify-content: space-between;\n  padding: 26px;\n`;\n\nexport const StyledDepositLabel = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 18px;\n  font-weight: bold;\n  letter-spacing: -0.1px;\n  line-height: 21px;\n`;\n\nexport const StyledDepositAmount = styled(StyledDepositLabel)`\n  text-align: right;\n`;\n\nexport const SectionActions = styled.div`\n  display: flex;\n  flex-direction: row-reverse;\n  justify-content: flex-start;\n  padding: 50px 0 120px;\n\n  ${CancelButton} {\n    font-size: 13px;\n    line-height: 14px;\n    margin: 6px 27px 0 0;\n    text-transform: none;\n  }\n\n  & ${SectionFormCopyHelper} {\n    margin-top: 18px;\n    max-width: 305px;\n    text-align: left;\n  }\n`;\n\nexport const SectionConfirmChallenge = styled.div`\n  display: flex;\n  font-size: 15px;\n  letter-spacing: -0.1px;\n  line-height: 26px;\n  padding: 32px 0 0;\n  margin: 0 0 56px;\n\n  & > div + div {\n    margin: -8px 0 0 12px;\n  }\n  ${mediaQueries.MOBILE} {\n    padding-right: 10px;\n    padding-left: 10px;\n  }\n`;\n\nexport const StyledErrorMessage = styled.span`\n  color: ${colors.accent.CIVIL_RED};\n`;\n\nexport const PullRight = styled.div`\n  text-align: right;\n`;\n"
  },
  {
    "path": "packages/components/src/ViewTransactionLink.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { ViewTransactionLink } from \"./ViewTransactionLink\";\n\nstoriesOf(\"Common / Ethereum / viewTransactionLink\", module).add(\"link\", () => {\n  return (\n    <ViewTransactionLink\n      txHash=\"0x90cf2411cac2a4d4873332bcf60bed49e62d7d4021120c3de0749eba8f6168af\"\n      network=\"rinkeby\"\n    />\n  );\n});\n"
  },
  {
    "path": "packages/components/src/ViewTransactionLink.tsx",
    "content": "import * as React from \"react\";\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport styled from \"styled-components\";\nimport { colors, fonts } from \"./styleConstants\";\nimport { NorthEastArrow } from \"./icons\";\n\nexport interface ViewTransactionLinkProps {\n  txHash: TxHash;\n  network: string;\n  text?: string;\n}\n\nexport interface LinkTheme {\n  linkColorHover: string;\n  linkColor: string;\n}\n\nconst defaultProps = {\n  theme: {\n    linkColor: colors.accent.CIVIL_BLUE,\n    linkColorHover: colors.accent.CIVIL_BLUE_FADED,\n    sansSerifFont: fonts.SANS_SERIF,\n  },\n};\n\nconst StyledLink = styled.a`\n  text-decoration: none;\n  font-family: ${props => props.theme.sansSerifFont};\n  color: ${props => props.theme.linkColor};\n  &:hover {\n    color: ${props => props.theme.linkColorHover};\n  }\n  & path {\n    fill: ${props => props.theme.linkColor};\n  }\n  &:hover path {\n    fill: ${props => props.theme.linkColorHover};\n  }\n`;\n\nStyledLink.defaultProps = defaultProps;\n\nexport const ViewTransactionLink = (props: ViewTransactionLinkProps) => {\n  const baseUrl = props.network === \"rinkeby\" ? \"https://rinkeby.etherscan.io/tx/\" : \"https://etherscan.io/tx/\";\n  return (\n    <StyledLink target=\"_blank\" href={`${baseUrl}${props.txHash}`}>\n      {props.text || \"view transaction\"} <NorthEastArrow />\n    </StyledLink>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/WalletOnboarding.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { EthSignedMessage } from \"@joincivil/typescript-types\";\nimport { WalletOnboarding } from \".\";\n\nconst typeDefs = `\n  type User {\n    ethAddress: String\n  }\n\n  type Query {\n    currentUser: User\n  }\n\n  input UserSignatureInput {\n    message: String!\n    messageHash: String!\n    signature: String!\n    signer: String!\n    r: String!\n    s: String!\n    v: String!\n  }\n\n  type Mutation {\n    userSetEthAddress(\n      input: UserSignatureInput!\n    ): String\n  }\n\n  schema {\n    query: Query\n    mutation: Mutation\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      currentUser: () => {\n        return \"ok\";\n      },\n    };\n  },\n  Mutation: () => {\n    return {\n      userSetEthAddress: (sig: EthSignedMessage) => {\n        return \"ok\";\n      },\n    };\n  },\n};\n\nstoriesOf(\"Common / Wallet Onboarding\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .add(\"No Provider\", () => {\n    return <WalletOnboarding enable={() => undefined} noProvider={true} />;\n  })\n  .add(\"Not Enabled\", () => {\n    return <WalletOnboarding enable={() => undefined} notEnabled={true} />;\n  })\n  .add(\"Locked\", () => {\n    return <WalletOnboarding enable={() => undefined} walletLocked={true} />;\n  })\n  .add(\"Wrong Network\", () => {\n    return (\n      <WalletOnboarding enable={() => undefined} wrongNetwork={true} requiredNetworkNiceName=\"Main Ethereum Network\" />\n    );\n  })\n  .add(\"Save address to CMS profile\", () => {\n    return (\n      <WalletOnboarding\n        enable={() => undefined}\n        metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n        saveAddressToProfile={async () => undefined}\n      />\n    );\n  })\n  .add(\"CMS profile vs. MetaMask address mismatch\", () => {\n    return (\n      <WalletOnboarding\n        enable={() => undefined}\n        metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n        profileWalletAddress=\"0x123abc00000000000000000000000000000x123abc\"\n        saveAddressToProfile={async () => undefined}\n      />\n    );\n  })\n  .add(\"Connected\", () => {\n    return (\n      <WalletOnboarding enable={() => undefined} metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\" />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/WalletOnboarding.tsx",
    "content": "import * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  AddressWithMetaMaskIcon,\n  NorthEastArrow,\n  Button,\n  buttonSizes,\n  MetaMaskSideIcon,\n  fonts,\n  ManagerSectionHeading,\n} from \"./\";\nimport styled from \"styled-components\";\nimport metaMaskNetworkSwitchUrl from \"./images/img-metamask-networkswitch@2x.png\";\nimport metaMaskLoginUrl from \"./images/img-metamask-login@2x.png\";\n\nexport interface WalletOnboardingProps {\n  civil?: Civil;\n  noProvider?: boolean;\n  walletLocked?: boolean;\n  wrongNetwork?: boolean;\n  requiredNetworkNiceName?: string;\n  metamaskWalletAddress?: EthAddress;\n  profileWalletAddress?: EthAddress;\n  profileUrl?: string;\n  profileAddressSaving?: boolean;\n  helpUrl?: string;\n  helpUrlBase?: string;\n  notEnabled?: boolean;\n  enable(): void;\n  saveAddressToProfile?(): Promise<void>;\n  onContinue?(): void;\n}\n\nexport interface WalletOnboardingState {\n  justSaved?: boolean;\n}\n\nconst Wrapper = styled.div`\n  margin: 32px 0;\n  padding: 6px 24px 12px;\n  background: white;\n  border: solid 1px #e5e5e5;\n  color: #5f5f5f;\n\n  &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n`;\n\nconst LargeishButton = styled(Button)`\n  box-sizing: border-box;\n  height: 42px;\n`;\n\nconst WalletAddress = styled(AddressWithMetaMaskIcon)`\n  margin-bottom: 28px;\n`;\nconst ProfileWalletAddress = styled.span`\n  font-family: ${fonts.MONOSPACE};\n`;\n\nconst ArrowWrap = styled.span`\n  margin-left: 1px;\n  path {\n    fill: white;\n  }\n`;\n\nconst WalletAction = styled.div`\n  display: inline-block;\n  margin-left: 12px;\n  padding-left: 15px;\n  border-left: 1px solid #dddddd;\n`;\n\nconst WalletLabel = styled.p`\n  font-weight: bold;\n  margin-bottom: 10px;\n`;\n\nconst MetaMaskIcon = styled(MetaMaskSideIcon)`\n  position: relative;\n  top: 3px;\n`;\n\nconst MetaMaskMockImage = styled.img`\n  float: right;\n  max-width: 255px;\n  margin-bottom: -12px;\n`;\n\nexport class WalletOnboarding extends React.Component<WalletOnboardingProps, WalletOnboardingState> {\n  constructor(props: WalletOnboardingProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public render(): JSX.Element | null {\n    if (this.props.noProvider) {\n      return (\n        <Wrapper>\n          <ManagerSectionHeading>It looks like you aren’t logged in to your wallet</ManagerSectionHeading>\n          <p>\n            New to using a digital wallet? Having a wallet is mandatory and we recommend{\" \"}\n            <a href=\"https://metamask.io/\" target=\"_blank\">\n              MetaMask\n            </a>{\" \"}\n            <MetaMaskIcon /> to manage your transactions.{\" \"}\n            <a href={this.props.helpUrl} target=\"_blank\">\n              Read this FAQ\n            </a>\n            .\n          </p>\n          <p>\n            <Button size={buttonSizes.MEDIUM_WIDE} href=\"https://metamask.io/\" target=\"_blank\">\n              Open MetaMask.io{\" \"}\n              <ArrowWrap>\n                <NorthEastArrow />\n              </ArrowWrap>\n            </Button>\n            <span style={{ fontSize: 13, marginLeft: 16 }}>\n              Once the extension is installed,{\" \"}\n              <a href=\"javascript:void(0)\" onClick={() => window.location.reload()}>\n                refresh this page\n              </a>\n              .\n            </span>\n          </p>\n          <p>\n            After you've set up MetaMask, you'll receive a wallet address and you'll be able to buy ETH with your bank\n            or credit card. We recommend purchasing USD$50 of ETH to start. Note: Processing times can vary, and it can\n            take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p>\n            You will use your MetaMask wallet to set up and manage your smart contract, as well as sign, index, and\n            archive posts to the Ethereum blockchain. Make sure you've saved your{\" \"}\n            <a\n              href={\n                this.props.helpUrlBase +\n                \"articles/360017414652-What-is-a-recovery-phrase-seed-and-why-is-it-important-to-secure-it-\"\n              }\n              target=\"_blank\"\n            >\n              seed phrase\n            </a>{\" \"}\n            from MetaMask in a safe place.\n          </p>\n\n          <p style={{ fontSize: 13 }}>\n            <span style={{ color: \"#23282d\", fontWeight: 600 }}>Already have a wallet?</span>\n            <span style={{ color: \"#72777c\", marginLeft: 12 }}>\n              Make sure it's unlocked and connected to the {this.props.requiredNetworkNiceName}, and then{\" \"}\n              <a href=\"javascript:void(0)\" onClick={() => window.location.reload()}>\n                refresh this page\n              </a>\n              .\n            </span>\n          </p>\n        </Wrapper>\n      );\n    } else if (this.props.notEnabled) {\n      return (\n        <Wrapper>\n          <ManagerSectionHeading>MetaMask not enabled</ManagerSectionHeading>\n          <p>Press this button to enable MetaMask for this domain.</p>\n          <p>\n            <LargeishButton size={buttonSizes.MEDIUM_WIDE} onClick={() => this.props.enable()}>\n              Enable\n            </LargeishButton>\n          </p>\n          <p>\n            If you do not see the MetaMask popup, please click the <MetaMaskIcon /> icon in your browser address bar.\n          </p>\n        </Wrapper>\n      );\n    } else if (this.props.walletLocked) {\n      return (\n        <Wrapper>\n          <MetaMaskMockImage src={metaMaskLoginUrl} />\n          <ManagerSectionHeading>Not logged in to wallet</ManagerSectionHeading>\n          <p>\n            Please open the MetaMask extension and follow the instructions to log in to your wallet. After you are\n            logged in, you can continue with your newsroom smart contract.{\" \"}\n            <a href={this.props.helpUrl} target=\"_blank\">\n              Need help?\n            </a>\n          </p>\n          <p>Once you are on logged in, refresh this page.</p>\n          <p>\n            <LargeishButton size={buttonSizes.MEDIUM_WIDE} onClick={() => window.location.reload()}>\n              Refresh\n            </LargeishButton>\n          </p>\n        </Wrapper>\n      );\n    } else if (this.props.wrongNetwork) {\n      return (\n        <Wrapper>\n          <MetaMaskMockImage src={metaMaskNetworkSwitchUrl} />\n          <ManagerSectionHeading>Change your network</ManagerSectionHeading>\n          <p>\n            Looks like you’re using an unsupported Ethereum network. Make sure you're using the{\" \"}\n            {this.props.requiredNetworkNiceName}.{\" \"}\n            <a\n              href={this.props.helpUrlBase + \"articles/360017414812-How-do-I-switch-networks-in-MetaMask-\"}\n              target=\"_blank\"\n            >\n              Read this tutorial\n            </a>{\" \"}\n            to switch networks in MetaMask <MetaMaskIcon />\n          </p>\n          <p>Once you are on the correct network, refresh this page.</p>\n          <p>\n            <LargeishButton size={buttonSizes.MEDIUM_WIDE} onClick={() => window.location.reload()}>\n              Refresh\n            </LargeishButton>\n          </p>\n        </Wrapper>\n      );\n    } else if (this.props.metamaskWalletAddress) {\n      if (this.props.saveAddressToProfile && !this.props.profileWalletAddress) {\n        return (\n          <Wrapper>\n            <ManagerSectionHeading>Wallet Connected</ManagerSectionHeading>\n            <p>Your wallet is connected. Now you can add your public wallet address to your WordPress user profile.</p>\n            <WalletLabel>Your wallet address</WalletLabel>\n            <WalletAddress address={this.props.metamaskWalletAddress} />{\" \"}\n            <WalletAction>\n              <Button\n                size={buttonSizes.MEDIUM_WIDE}\n                onClick={this.saveAddress}\n                disabled={this.props.profileAddressSaving}\n              >\n                Save to Your Profile\n              </Button>\n            </WalletAction>\n          </Wrapper>\n        );\n      } else if (\n        this.props.saveAddressToProfile &&\n        this.props.metamaskWalletAddress !== this.props.profileWalletAddress\n      ) {\n        return (\n          <Wrapper>\n            <ManagerSectionHeading>Wallet Connected</ManagerSectionHeading>\n            <p style={{ color: \"#f2524a\" }}>\n              Your WordPress user profile wallet address does not match your MetaMask wallet address\n            </p>\n            <WalletLabel>Profile wallet address</WalletLabel>\n            <ProfileWalletAddress>{this.props.profileWalletAddress}</ProfileWalletAddress>{\" \"}\n            <WalletLabel>Connected wallet address</WalletLabel>\n            <WalletAddress address={this.props.metamaskWalletAddress} />{\" \"}\n            <WalletAction>\n              <Button\n                size={buttonSizes.MEDIUM_WIDE}\n                onClick={this.saveAddress}\n                disabled={this.props.profileAddressSaving}\n              >\n                Update Profile Address\n              </Button>\n            </WalletAction>\n          </Wrapper>\n        );\n      } else {\n        return (\n          <Wrapper>\n            <ManagerSectionHeading>Wallet Connected</ManagerSectionHeading>\n            <WalletLabel>Your wallet address</WalletLabel>\n            <WalletAddress address={this.props.metamaskWalletAddress} />{\" \"}\n            {this.props.onContinue && (\n              <div>\n                <Button size={buttonSizes.MEDIUM_WIDE} onClick={this.props.onContinue}>\n                  Continue\n                </Button>\n              </div>\n            )}\n          </Wrapper>\n        );\n      }\n    } else {\n      return null;\n    }\n  }\n\n  private saveAddress = async () => {\n    if (!this.props.saveAddressToProfile) {\n      return;\n    }\n    await this.props.saveAddressToProfile();\n    this.setState({ justSaved: true });\n  };\n}\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.connected.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { WalletOnboardingV2 } from \".\";\n\nlet civil: Civil | undefined;\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nstoriesOf(\"Common / Wallet Onboarding V2/Connected\", module).add(\"Connected\", () => {\n  return (\n    <WalletOnboardingV2\n      metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n      profileWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n      civil={civil}\n    />\n  );\n});\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.decorator.stories.tsx",
    "content": "import apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { EthSignedMessage } from \"@joincivil/typescript-types\";\n\nconst typeDefs = `\n  type User {\n    ethAddress: String\n  }\n\n  type Query {\n    currentUser: User\n  }\n\n  input UserSignatureInput {\n    message: String!\n    messageHash: String!\n    signature: String!\n    signer: String!\n    r: String!\n    s: String!\n    v: String!\n  }\n\n  type Mutation {\n    userSetEthAddress(\n      input: UserSignatureInput!\n    ): String\n  }\n\n  schema {\n    query: Query\n    mutation: Mutation\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      currentUser: () => {\n        return \"ok\";\n      },\n    };\n  },\n  Mutation: () => {\n    return {\n      userSetEthAddress: (sig: EthSignedMessage) => {\n        return \"ok\";\n      },\n    };\n  },\n};\n\nexport const apolloDecorator = apolloStorybookDecorator({\n  typeDefs,\n  mocks,\n});\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.disabled.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { WalletOnboardingV2 } from \".\";\n\nlet civil: Civil | undefined;\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nstoriesOf(\"Common / Wallet Onboarding V2/Not Enabled\", module).add(\"Not Enabled\", () => {\n  return (\n    <WalletOnboardingV2\n      metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n      profileWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n      civil={civil}\n    >\n      <b>NOTE:</b> To see this state you must view this story with metamask from a browser where you haven't enabled\n      MetaMask for this domain, or if you already have, you can go into MetaMask settings, enable privacy mode, and hit\n      Clear Privacy Data and refresh.\n    </WalletOnboardingV2>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.locked.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { WalletOnboardingV2 } from \".\";\n\nlet civil: Civil | undefined;\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nstoriesOf(\"Common / Wallet Onboarding V2/Locked\", module).add(\"Locked\", () => {\n  return <WalletOnboardingV2 civil={civil} />;\n});\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.mismatch.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { WalletOnboardingV2 } from \".\";\nimport { apolloDecorator } from \"./WalletOnboardingV2.decorator.stories\";\n\nlet civil: Civil | undefined;\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nstoriesOf(\"Common / Wallet Onboarding V2/Mismatch\", module)\n  .addDecorator(apolloDecorator)\n  .add(\"Civil account vs. MetaMask address mismatch\", () => {\n    return (\n      <WalletOnboardingV2\n        metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n        profileWalletAddress=\"0x123abc00000000000000000000000000000x123abc\"\n        civil={civil}\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.network.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { WalletOnboardingV2 } from \".\";\n\nstoriesOf(\"Common / Wallet Onboarding V2/ Wrong Network\", module).add(\"Wrong Network\", () => {\n  return <WalletOnboardingV2 wrongNetwork={true} requiredNetworkNiceName=\"Main Ethereum Network\" />;\n});\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.provider.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { WalletOnboardingV2 } from \".\";\n\nlet civil: Civil | undefined;\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nstoriesOf(\"Common / Wallet Onboarding V2/No Provider\", module).add(\"No Provider\", () => {\n  return (\n    <WalletOnboardingV2\n      metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n      profileWalletAddress=\"0xabc1230000000000000000000000000000abc123\"\n      civil={civil}\n    >\n      <b>NOTE:</b> To see this state you must view this story with MetaMask disabled or from a browser without it\n      installed.\n    </WalletOnboardingV2>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.save.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Civil } from \"@joincivil/core\";\nimport { WalletOnboardingV2 } from \".\";\nimport { apolloDecorator } from \"./WalletOnboardingV2.decorator.stories\";\n\nlet civil: Civil | undefined;\ntry {\n  civil = new Civil();\n} catch (error) {\n  civil = undefined;\n}\n\nstoriesOf(\"Common / Wallet Onboarding V2 / Save Address\", module)\n  .addDecorator(apolloDecorator)\n  .add(\"Save address to Civil account\", () => {\n    return <WalletOnboardingV2 metamaskWalletAddress=\"0xabc1230000000000000000000000000000abc123\" civil={civil} />;\n  });\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/WalletOnboardingV2.tsx",
    "content": "import * as React from \"react\";\nimport gql from \"graphql-tag\";\nimport styled from \"styled-components\";\nimport { hasInjectedProvider } from \"@joincivil/ethapi\";\nimport { isWalletOnboarded, getApolloClient, isBrowserCompatible, urlConstants as links } from \"@joincivil/utils\";\nimport { Civil } from \"@joincivil/core\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  colors,\n  AddressWithMetaMaskIcon,\n  NorthEastArrow,\n  Button,\n  buttonSizes,\n  MetaMaskSideIcon,\n  MetaMaskLogoButton,\n  fonts,\n  metaMaskNetworkSwitchImgUrl,\n  metaMaskLoginImgUrl,\n  metaMaskFrontLargeImgUrl,\n  metaMaskConnectImgUrl,\n  metaMaskSignImgUrl,\n  HollowGreenCheck,\n  OBSectionTitle,\n  OBSectionDescription,\n  OBSmallParagraph,\n  OBSmallestParagraph,\n  OBBorderedSection,\n  OBBorderedSectionActive,\n  OBCollapsableHeader,\n  OBCollapsable,\n  OBNoteContainer,\n  OBNoteHeading,\n  OBNoteText,\n  AuthApplicationEnum,\n} from \"../\";\nimport { AccountEthAuth } from \"../Account/\";\nimport { BrowserCompatible } from \"../BrowserCompatible\";\n\nexport interface WalletOnboardingV2Props {\n  civil?: Civil;\n  wrongNetwork?: boolean;\n  requiredNetworkNiceName?: string;\n  metamaskWalletAddress?: EthAddress;\n  profileWalletAddress?: EthAddress;\n  authApplicationType?: AuthApplicationEnum;\n  onOnboardingComplete?(): void;\n}\n\nexport interface WalletOnboardingV2State {\n  metamaskEnabled?: boolean;\n  showWalletConnected?: boolean;\n  onboarded?: boolean;\n}\n\nconst sendNewsroomWelcomeEmailMutation = gql`\n  mutation sendNewsroomWelcomeMutation {\n    nrsignupSendWelcomeEmail\n  }\n`;\n\nconst Wrapper = styled.div`\n  text-align: center;\n  margin: 63px 0 32px;\n  padding: 6px 24px 12px;\n  background: white;\n  color: #5f5f5f;\n\n  &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nconst WalletAddress = styled(AddressWithMetaMaskIcon)`\n  margin-bottom: 28px;\n`;\nconst ProfileWalletAddress = styled.div`\n  font-family: ${fonts.MONOSPACE};\n  margin-bottom: 12px;\n`;\n\nconst ArrowWrap = styled.span`\n  margin-left: 1px;\n  path {\n    fill: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nconst WalletLabel = styled.p`\n  font-weight: bold;\n  font-size: 14px;\n  line-height: 24px;\n  margin-bottom: 10px;\n`;\n\nconst MetaMaskIcon = styled(MetaMaskSideIcon)`\n  position: relative;\n  top: 3px;\n`;\n\nconst IntroText = styled(OBSectionDescription)`\n  max-width: 600px;\n  margin-left: auto;\n  margin-right: auto;\n`;\n\nconst InstructionsWrapper = styled(OBBorderedSection)`\n  display: flex;\n  justify-content: space-between;\n  margin: 32px auto 18px;\n  max-width: 550px;\n  padding: 24px 12px 0 24px;\n`;\nconst InstructionsText = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 15px;\n  line-height: 18px;\n  margin-top: 20px;\n  text-align: left;\n`;\nconst InstructionsImage = styled.img`\n  height: 240px;\n  width: auto;\n`;\nconst InstructionsButtonWrap = styled.div`\n  margin-top: 24px;\n`;\n\nconst GetMetaMaskBox = styled(OBBorderedSectionActive)`\n  margin: 24px auto 12px;\n  max-width: 550px;\n  padding: 24px;\n`;\nconst GetMetaMaskImg = styled.img`\n  width: 85px;\n  height: auto;\n  margin-bottom: 16px;\n`;\nconst GetMetaMaskText = styled.div`\n  color: ${colors.accent.CIVIL_BLUE};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 17px;\n  font-weight: bold;\n  line-height: 22px;\n`;\nconst GetMetaMaskMoreHelp = styled(OBSmallParagraph)`\n  text-align: left;\n`;\n\nconst ContinueButtonWrap = styled.div`\n  margin-top: 48px;\n  margin-bottom: 80px;\n`;\n\nconst ConnectedCheck = styled(HollowGreenCheck)`\n  margin-right: 5px;\n  vertical-align: bottom;\n`;\nconst ConnectedWalletAddressWrap = styled.div`\n  display: inline-block;\n  margin: 24px auto 12px;\n  text-align: left;\n`;\nconst ConnectedWalletAddress = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_6};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 3px;\n  font-family: ${fonts.MONOSPACE};\n  font-size: 18px;\n  line-height: 24px;\n  margin-bottom: 12px;\n  padding: 16px;\n`;\nconst WarningWrap = styled.p`\n  background-color: ${colors.accent.CIVIL_RED_ULTRA_FADED};\n  border: 1px solid ${colors.accent.CIVIL_RED_FADED};\n  border-radius: 4px;\n  padding: 12px;\n\n  ${OBNoteText} {\n    display: inline-block;\n    max-width: 520px;\n  }\n`;\n\nexport class WalletOnboardingV2 extends React.Component<WalletOnboardingV2Props, WalletOnboardingV2State> {\n  public static getDerivedStateFromProps(\n    props: WalletOnboardingV2Props,\n    state: WalletOnboardingV2State,\n  ): WalletOnboardingV2State {\n    return {\n      ...state,\n      onboarded: isWalletOnboarded(\n        !!props.civil,\n        props.metamaskWalletAddress,\n        props.profileWalletAddress,\n        props.wrongNetwork,\n      ),\n    };\n  }\n\n  constructor(props: WalletOnboardingV2Props) {\n    super(props);\n    this.state = {};\n  }\n\n  public async componentDidMount(): Promise<void> {\n    await this.enableEthereum();\n  }\n\n  public render(): JSX.Element | null {\n    if (this.state.onboarded) {\n      if (this.state.showWalletConnected || !this.props.children) {\n        return this.renderConnected();\n      } else {\n        return <>{this.props.children}</>;\n      }\n    }\n    if (!isBrowserCompatible()) {\n      return this.renderBrowserIncompatible();\n    } else if (!hasInjectedProvider()) {\n      return this.renderNoProvider();\n    } else if (!this.state.metamaskEnabled) {\n      return this.renderNotEnabled();\n    } else if (this.props.civil && this.state.metamaskEnabled && !this.props.metamaskWalletAddress) {\n      return this.renderLocked();\n    } else if (this.props.wrongNetwork) {\n      return this.renderWrongNetwork();\n    } else if (this.props.metamaskWalletAddress) {\n      if (!this.props.profileWalletAddress) {\n        return this.renderSaveAddress();\n      } else if (this.props.metamaskWalletAddress.toLowerCase() !== this.props.profileWalletAddress.toLowerCase()) {\n        return this.renderAddressMismatch();\n      }\n    }\n\n    return null;\n  }\n\n  private renderBrowserIncompatible(): JSX.Element {\n    return (\n      <Wrapper>\n        <BrowserCompatible />\n      </Wrapper>\n    );\n  }\n\n  private renderNoProvider(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>Connect your crypto wallet</OBSectionTitle>\n        <IntroText>\n          To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using\n          MetaMask.\n        </IntroText>\n        <GetMetaMaskBox>\n          <a href=\"https://metamask.io/\" target=\"_blank\">\n            <GetMetaMaskImg src={metaMaskFrontLargeImgUrl} />\n            <GetMetaMaskText>Get the MetaMask Browser Extension</GetMetaMaskText>\n          </a>\n        </GetMetaMaskBox>\n\n        <OBSmallestParagraph>\n          Once the extension is installed,{\" \"}\n          <a href=\"javascript:void(0)\" onClick={() => window.location.reload()}>\n            refresh this page\n          </a>\n          .\n        </OBSmallestParagraph>\n\n        {this.renderFaqEtc()}\n      </Wrapper>\n    );\n  }\n\n  private renderNotEnabled(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>Connect your crypto wallet</OBSectionTitle>\n        <IntroText>\n          Civil uses MetaMask to view your public wallet address and prompt you with Ethereum transactions, but first we\n          need to connect with MetaMask. Please grant permission to Civil to view your wallet address.\n        </IntroText>\n\n        <InstructionsWrapper>\n          <InstructionsText>\n            <p>MetaMask will open a new window, and will ask you connect Civil to MetaMask to grant access.</p>\n            <InstructionsButtonWrap>\n              <MetaMaskLogoButton onClick={this.enableEthereum}>Open MetaMask</MetaMaskLogoButton>\n            </InstructionsButtonWrap>\n          </InstructionsText>\n          <InstructionsImage src={metaMaskConnectImgUrl} />\n        </InstructionsWrapper>\n\n        <OBSmallestParagraph>\n          If you do not see the MetaMask popup, please click the <MetaMaskIcon /> icon in your browser address bar.\n        </OBSmallestParagraph>\n\n        {this.renderFaqEtc()}\n      </Wrapper>\n    );\n  }\n\n  private renderLocked(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>Log in to your crypto wallet</OBSectionTitle>\n        <IntroText>\n          Please open the MetaMask extension and follow the instructions to log in to your crypto wallet. After you are\n          logged in, you can continue.\n        </IntroText>\n        <InstructionsWrapper>\n          <InstructionsText>\n            <p>\n              Open the MetaMask extension in your browser and follow the instructions to unlock and log into your\n              wallet.\n            </p>\n          </InstructionsText>\n          <InstructionsImage src={metaMaskLoginImgUrl} />\n        </InstructionsWrapper>\n\n        {this.renderFaqEtc()}\n      </Wrapper>\n    );\n  }\n\n  private renderWrongNetwork(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>Log in to your crypto wallet</OBSectionTitle>\n        <IntroText>\n          Please open the MetaMask extension and follow the instructions to log in to your crypto wallet. After you are\n          logged in, you can continue.\n        </IntroText>\n\n        <InstructionsWrapper>\n          <InstructionsText>\n            <p>\n              Looks like you’re using an unsupported Ethereum network. Make sure you have the{\" \"}\n              <strong>{this.props.requiredNetworkNiceName}</strong> selected.\n            </p>\n          </InstructionsText>\n          <InstructionsImage src={metaMaskNetworkSwitchImgUrl} />\n        </InstructionsWrapper>\n\n        {this.renderFaqEtc()}\n      </Wrapper>\n    );\n  }\n\n  private renderSaveAddress(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>Log in to Civil with your crypto wallet</OBSectionTitle>\n        <IntroText>\n          Almost there! To set up your Civil account, you need to authenticate your account with a signature. This is\n          similar to signing in with a password. It verifies your account with your crypto wallet.\n        </IntroText>\n\n        <InstructionsWrapper>\n          <InstructionsText>\n            <p>MetaMask will open a new window, and will require you to sign a message.</p>\n            <InstructionsButtonWrap>\n              <AccountEthAuth onAuthenticated={async () => this.ethAddressSaved(true)} buttonOnly={true} />\n            </InstructionsButtonWrap>\n          </InstructionsText>\n          <InstructionsImage src={metaMaskSignImgUrl} />\n        </InstructionsWrapper>\n\n        {this.renderFaqEtc()}\n      </Wrapper>\n    );\n  }\n\n  private renderAddressMismatch(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>Log in to Civil with your crypto wallet</OBSectionTitle>\n        <IntroText>\n          The wallet address saved in your profile does not match your current MetaMask wallet address. Please update\n          your profile, or switch MetaMask to use the wallet that is saved to your profile.\n        </IntroText>\n        <WalletLabel>Profile wallet address</WalletLabel>\n        <ProfileWalletAddress>{this.props.profileWalletAddress}</ProfileWalletAddress>{\" \"}\n        <WalletLabel>Connected MetaMask wallet address</WalletLabel>\n        <WalletAddress address={this.props.metamaskWalletAddress} />{\" \"}\n        <InstructionsWrapper>\n          <InstructionsText>\n            <p>Open MetaMask to sign a message to authenticate your MetaMask address and save it to your profile.</p>\n            <InstructionsButtonWrap>\n              <AccountEthAuth\n                onAuthenticated={async () => this.ethAddressSaved()}\n                buttonOnly={true}\n                buttonText={\"Update Profile\"}\n              />\n            </InstructionsButtonWrap>\n          </InstructionsText>\n          <InstructionsImage src={metaMaskSignImgUrl} />\n        </InstructionsWrapper>\n        {this.renderFaqEtc()}\n      </Wrapper>\n    );\n  }\n\n  private renderConnected(): JSX.Element {\n    return (\n      <Wrapper>\n        <OBSectionTitle>\n          <ConnectedCheck width={32} height={32} />\n          Wallet Connected\n        </OBSectionTitle>\n        <IntroText>\n          Your crypto wallet is connected. Your public wallet address will be linked to your email address on the Civil\n          network so you can log in using your wallet.\n        </IntroText>\n\n        <ConnectedWalletAddressWrap>\n          <WalletLabel>Public Wallet Address</WalletLabel>\n          <ConnectedWalletAddress>{this.props.metamaskWalletAddress}</ConnectedWalletAddress>\n        </ConnectedWalletAddressWrap>\n\n        <WarningWrap>\n          <OBNoteText>\n            Make sure you've backed up and saved your MetaMask login and account details, such as your seed phrase,\n            username and password in a safe place. We can’t help you restore or regain access if you lose it.\n          </OBNoteText>\n        </WarningWrap>\n\n        <ContinueButtonWrap>\n          <Button width={220} size={buttonSizes.MEDIUM_WIDE} onClick={this.onboardingComplete}>\n            Continue\n          </Button>\n        </ContinueButtonWrap>\n\n        {this.renderFaqEtc(false)}\n      </Wrapper>\n    );\n  }\n\n  private renderFaqEtc = (showDisabledButton = true): JSX.Element => {\n    return (\n      <>\n        {showDisabledButton && (\n          <ContinueButtonWrap>\n            <Button width={220} size={buttonSizes.MEDIUM_WIDE} disabled={true}>\n              Continue\n            </Button>\n          </ContinueButtonWrap>\n        )}\n\n        <OBNoteContainer>\n          <OBNoteHeading>Using a different wallet?</OBNoteHeading>\n          <OBNoteText>\n            Make sure it's unlocked\n            {this.props.requiredNetworkNiceName && \" and connected to the \" + this.props.requiredNetworkNiceName}. You\n            may need to refresh.\n          </OBNoteText>\n        </OBNoteContainer>\n\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader> What is a cryptocurrency wallet?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of\n            the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide\n            access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using\n            your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as\n            your identity on the Ethereum blockchain.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL\n            tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader> Why do I need a cryptocurrency wallet?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            Having a wallet is required. We recommend{\" \"}\n            <a href=\"https://metamask.io/\" target=\"_blank\">\n              MetaMask\n            </a>{\" \"}\n            to log in and manage your transactions.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your\n            tokens, as well as sign and index posts to the Ethereum blockchain.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with\n            ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.{\" \"}\n            <strong>Note:</strong> Processing times can vary, and it can take up to 7 days for the ETH to be deposited\n            in your wallet.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you\n            regain access if you lose it.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader> Need help setting up your wallet?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            Head over to our{\" \"}\n            <a href={links.FAQ_HOW_TO_SETUP_METAMASK} target=\"_blank\">\n              FAQ guide\n            </a>{\" \"}\n            on how to install a MetaMask wallet.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <GetMetaMaskMoreHelp>\n          Need more info before you start using a crypto wallet?{\" \"}\n          <a href={links.FAQ_WALLETS} target=\"_blank\">\n            Learn more in our support area{\" \"}\n            <ArrowWrap>\n              <NorthEastArrow />\n            </ArrowWrap>\n          </a>\n        </GetMetaMaskMoreHelp>\n      </>\n    );\n  };\n\n  private ethAddressSaved = async (firstAddressSave?: boolean) => {\n    this.setState({ showWalletConnected: true });\n\n    if (firstAddressSave && this.props.authApplicationType === AuthApplicationEnum.NEWSROOM) {\n      const client = getApolloClient();\n\n      const { error } = await client.mutate({\n        mutation: sendNewsroomWelcomeEmailMutation,\n      });\n\n      if (error) {\n        console.error(\"Failed to send welcome email:\", error);\n      }\n    }\n  };\n\n  private enableEthereum = async (): Promise<void> => {\n    const { civil } = this.props;\n    let isEthereumEnabled = false;\n    if (civil && civil.currentProvider) {\n      isEthereumEnabled = !!(await civil.currentProviderEnable());\n    }\n    this.setState({ metamaskEnabled: isEthereumEnabled });\n  };\n\n  private onboardingComplete = () => {\n    this.setState({ showWalletConnected: false });\n    if (this.props.onOnboardingComplete) {\n      this.props.onOnboardingComplete();\n    }\n  };\n}\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.connected.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2/Connected Connected 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2/Connected\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Connected\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  WalletOnboardingV2\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      metamaskWalletAddress\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          0xabc1230000000000000000000000000000abc123\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      profileWalletAddress\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          0xabc1230000000000000000000000000000abc123\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      civil\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.disabled.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2/Not Enabled Not Enabled 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2/Not Enabled\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Not Enabled\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboardingV2\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        profileWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        civil\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#444\",\n                              }\n                            }\n                          >\n                            null\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      b\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      NOTE:\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      b\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     To see this state you must view this story with metamask from a browser where you haven't enabled MetaMask for this domain, or if you already have, you can go into MetaMask settings, enable privacy mode, and hit Clear Privacy Data and refresh.\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    WalletOnboardingV2\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.locked.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2/Locked Locked 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2/Locked\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Locked\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  WalletOnboardingV2\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      civil\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.mismatch.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2/Mismatch Civil account vs. MetaMask address mismatch 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2/Mismatch\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Civil account vs. MetaMask address mismatch\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboardingV2\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        profileWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x123abc00000000000000000000000000000x123abc\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        civil\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#444\",\n                              }\n                            }\n                          >\n                            null\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.network.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2/ Wrong Network Wrong Network 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n           and connected to the Main Ethereum Network\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2/ Wrong Network\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Wrong Network\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  WalletOnboardingV2\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      wrongNetwork\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      requiredNetworkNiceName\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          Main Ethereum Network\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.provider.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2/No Provider No Provider 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2/No Provider\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            No Provider\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboardingV2\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        profileWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        civil\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#444\",\n                              }\n                            }\n                          >\n                            null\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      b\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      NOTE:\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      b\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     To see this state you must view this story with MetaMask disabled or from a browser without it installed.\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    WalletOnboardingV2\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/__snapshots__/WalletOnboardingV2.save.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding V2 / Save Address Save address to Civil account 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMEa gSsVVI\"\n    >\n      <h2\n        className=\"sc-LzMCh kxsSdp\"\n      >\n        Connect your crypto wallet\n      </h2>\n      <p\n        className=\"sc-LzMCj sc-LzMED cWsBwG\"\n      >\n        To log in to your Civil account and continue, you’ll need to use a secure crypto wallet. We recommend using MetaMask.\n      </p>\n      <div\n        className=\"sc-LzMCM sc-LzMCN sc-LzMEI jqKGOB\"\n      >\n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          <img\n            className=\"sc-LzMEJ cYZQxl\"\n            src=\"test-file-stub\"\n          />\n          <div\n            className=\"sc-LzMEK hTdROX\"\n          >\n            Get the MetaMask Browser Extension\n          </div>\n        </a>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMCJ eMPHCW\"\n      >\n        Once the extension is installed,\n         \n        <a\n          href=\"javascript:void(0)\"\n          onClick={[Function]}\n        >\n          refresh this page\n        </a>\n        .\n      </p>\n      <div\n        className=\"sc-LzMFj eHidcT\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP hzqbnP disabled\"\n          disabled={true}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n          width={220}\n        >\n          Continue\n        </button>\n      </div>\n      <div\n        className=\"sc-LzMCM sc-LzMCO iumhhl\"\n      >\n        <span\n          className=\"sc-LzMCP fQLSdS\"\n        >\n          Using a different wallet?\n        </span>\n        <span\n          className=\"sc-LzMCQ kWddcK\"\n        >\n          Make sure it's unlocked\n          . You may need to refresh.\n        </span>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             What is a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            A cryptocurrency wallet is where you will store your CVL tokens and other crypto assets. It is also one of the main tools you'll need to log in to the Civil Registry and use the Civil plugin.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Cryptocurrency wallets don’t store any actual money – they store the Public and Private Keys that provide access to those assets. You keep your cryptocurrency including ETH and CVL tokens in a wallet. When using your wallet on Civil, you use your wallet to pay for fees or transactions. Your wallet address also acts as your identity on the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Consider it like your passport to the Civil economy. With your MetaMask wallet you will be able to store CVL tokens, apply, vote, engage on the Registry, and sign, index, archive content using the Publisher plugin.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Why do I need a cryptocurrency wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Having a wallet is required. We recommend\n             \n            <a\n              href=\"https://metamask.io/\"\n              target=\"_blank\"\n            >\n              MetaMask\n            </a>\n             \n            to log in and manage your transactions.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            You will also use your MetaMask wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as sign and index posts to the Ethereum blockchain.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            After you've set up MetaMask, you'll receive a public wallet address. You'll need to fund your wallet with ETH. You can buy ETH with your bank or credit card on a variety of cryptocurrency exchanges.\n             \n            <strong>\n              Note:\n            </strong>\n             Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n          </p>\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Make sure you've backed up and saved your MetaMask login and seed phrase in a safe place. We can’t help you regain access if you lose it.\n          </p>\n        </div>\n      </div>\n      <div\n        className=\"sc-LzMCK bvgaPI\"\n      >\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h4\n            className=\"sc-LzMCL ceOxrL\"\n          >\n             Need help setting up your wallet?\n          </h4>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p\n            className=\"sc-LzMCH hOripb\"\n          >\n            Head over to our\n             \n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\"\n              target=\"_blank\"\n            >\n              FAQ guide\n            </a>\n             \n            on how to install a MetaMask wallet.\n          </p>\n        </div>\n      </div>\n      <p\n        className=\"sc-LzMCH sc-LzMEL lfGUYr\"\n      >\n        Need more info before you start using a crypto wallet?\n         \n        <a\n          href=\"https://help.civil.co/hc/en-us/sections/360003838452-Wallets\"\n          target=\"_blank\"\n        >\n          Learn more in our support area\n           \n          <span\n            className=\"sc-LzMEd fQpDQe\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding V2 / Save Address\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Save address to Civil account\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboardingV2\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        civil\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#444\",\n                              }\n                            }\n                          >\n                            null\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboardingV2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/WalletOnboardingV2/index.ts",
    "content": "export * from \"./WalletOnboardingV2\";\n"
  },
  {
    "path": "packages/components/src/WithNewsroomChannelHOC.tsx",
    "content": "import * as React from \"react\";\nimport { Query, Mutation } from \"react-apollo\";\nimport gql from \"graphql-tag\";\n\nimport { ErrorIcon } from \"./icons\";\nimport { LoadingMessage } from \"./LoadingMessage\";\n\nexport interface NewsroomChannelData {\n  id: string;\n  currentUserIsAdmin: boolean;\n  isStripeConnected: boolean;\n  newsroom: {\n    multisigAddress: string;\n    charter: {\n      name: string;\n      tagline: string;\n      logoUrl: string;\n      newsroomUrl: string;\n    };\n  };\n}\n\nexport interface WithNewsroomChannelOuterProps {\n  newsroomAddress?: string;\n  newsroomContractAddress?: string;\n}\nexport interface WithNewsroomChannelState {\n  newsroomAddress: string;\n}\n\nexport interface NewsroomChannelInjectedProps {\n  channelData: NewsroomChannelData;\n}\n\nexport const CHANNEL_BY_NEWSROOM_QUERY = gql`\n  query Channel($contractAddress: String!) {\n    channelsGetByNewsroomAddress(contractAddress: $contractAddress) {\n      id\n      currentUserIsAdmin\n      isStripeConnected\n      newsroom {\n        multisigAddress\n        charter {\n          name\n          tagline\n          logoUrl\n          newsroomUrl\n        }\n      }\n    }\n  }\n`;\nexport const CREATE_NEWSROOM_CHANNEL_MUTATION = gql`\n  mutation($newsroomContractAddress: String!) {\n    channelsCreateNewsroomChannel(newsroomContractAddress: $newsroomContractAddress) {\n      id\n      currentUserIsAdmin\n    }\n  }\n`;\n\nexport const NRSIGNUP_DELETE = gql`\n  mutation {\n    nrsignupDelete\n  }\n`;\n\n/** Usage: The component returned by this HOC will require the `newsroomAddress` or `newsroomContractAddress` prop and will pass `channelData` to the wrapped component, or instead will show loading or error states as necessary. If the newsroom channel does not yet exist, it will attempt to create it. */\nexport const withNewsroomChannel = <TProps extends NewsroomChannelInjectedProps>(\n  WrappedComponent: React.ComponentType<TProps>,\n) => {\n  type TOriginalProps = Omit<TProps, keyof NewsroomChannelInjectedProps>;\n  return class ComponentWithNewsroomChannel extends React.Component<\n    WithNewsroomChannelOuterProps & TOriginalProps,\n    WithNewsroomChannelState\n  > {\n    constructor(props: WithNewsroomChannelOuterProps & TOriginalProps) {\n      super(props);\n      const newsroomAddress = this.props.newsroomAddress || this.props.newsroomContractAddress;\n      if (!newsroomAddress || typeof newsroomAddress !== \"string\") {\n        throw Error(\"Must supply `newsroomAddress` or `newsroomContractAddress` prop.\");\n      }\n      this.state = {\n        newsroomAddress,\n      };\n    }\n    public render(): JSX.Element {\n      return (\n        <Query<any> query={CHANNEL_BY_NEWSROOM_QUERY} variables={{ contractAddress: this.state.newsroomAddress }}>\n          {({ loading, error, data }) => {\n            if (loading) {\n              return <LoadingMessage>Loading</LoadingMessage>;\n            } else if (error && error.message.indexOf(\"record not found\") !== -1) {\n              return this.renderNoChannel();\n            } else if (error || !data || !data.channelsGetByNewsroomAddress) {\n              console.error(\n                \"error loading channel data for\",\n                this.state.newsroomAddress,\n                \" error:\",\n                error,\n                \"data:\",\n                data,\n              );\n              return this.renderError(\n                \"Sorry, there was an error loading your newsroom information. Please try again later.\",\n              );\n            }\n\n            return <WrappedComponent {...(this.props as TProps)} channelData={data.channelsGetByNewsroomAddress} />;\n          }}\n        </Query>\n      );\n    }\n\n    public renderNoChannel(): JSX.Element {\n      return (\n        <Mutation<any>\n          mutation={CREATE_NEWSROOM_CHANNEL_MUTATION}\n          variables={{ newsroomContractAddress: this.state.newsroomAddress }}\n          refetchQueries={[\n            { query: CHANNEL_BY_NEWSROOM_QUERY, variables: { contractAddress: this.state.newsroomAddress } },\n          ]}\n        >\n          {(createChannel, { data, error, called }) => {\n            if (!called && !error) {\n              console.warn(\"Channel doesn't exist for newsroom\", this.state.newsroomAddress, \"attempting to create...\");\n              createChannel().catch(() => {});\n            }\n            if (error || !data || !data.channelsCreateNewsroomChannel) {\n              console.error(\"Error creating new channel for newsroom with channelsCreateNewsroomChannel\", error, data);\n              return this.renderError(\n                \"Sorry, there was an error initializing your newsroom information. Please try again later.\",\n              );\n            }\n            if (!data.channelsCreateNewsroomChannel.currentUserIsAdmin) {\n              console.error(\n                \"Error using channelsCreateNewsroomChannel, created channel doesn't have user as admin\",\n                data,\n              );\n              return this.renderError(\n                \"Sorry, there was an error assigning admin rights to your newsroom. Please try again later.\",\n              );\n            }\n\n            return <LoadingMessage>Loading</LoadingMessage>;\n          }}\n        </Mutation>\n      );\n    }\n\n    public renderError(message: string): JSX.Element {\n      return (\n        <>\n          <ErrorIcon width={16} height={16} /> {message}\n        </>\n      );\n    }\n  };\n};\n"
  },
  {
    "path": "packages/components/src/__mocks__/fileMock.js",
    "content": "module.exports = 'test-file-stub';\n"
  },
  {
    "path": "packages/components/src/__snapshots__/ApplicationPhaseStatusLabels.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Registry / Application Status Labels Labels 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNF cvCuBr\"\n    >\n      <div\n        className=\"sc-LzLtO sc-LzLtP ibnlJL\"\n      >\n        Awaiting Approval\n      </div>\n      <br />\n      <div\n        className=\"sc-LzLtO sc-LzLtP ibnlJL\"\n      >\n        Awaiting Request to Appeal\n      </div>\n      <br />\n      <div\n        className=\"sc-LzLtO sc-LzLtP ibnlJL\"\n      >\n        Awaiting Council Decision\n      </div>\n      <br />\n      <div\n        className=\"sc-LzLtO sc-LzLtQ fadZhw\"\n      >\n        Challenge Council Decision\n      </div>\n      <br />\n      <div\n        className=\"sc-LzLtO sc-LzLtR kkjMom\"\n      >\n        Submit Vote\n      </div>\n      <br />\n      <div\n        className=\"sc-LzLtO sc-LzLtS eHMaAk\"\n      >\n        Confirm Vote\n      </div>\n      <br />\n      <div\n        className=\"sc-LzLtO sc-LzLtT ljaAnS\"\n      >\n        Ready To Update\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Registry / Application Status Labels\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Labels\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    AwaitingApprovalStatusLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    br\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    AwaitingAppealRequestLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    br\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    AwaitingDecisionStatusLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    br\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    AwaitingAppealChallengeStatusLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    br\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CommitVoteStatusLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    br\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RevealVoteStatusLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    br\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ReadyToCompleteStatusLabel\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AwaitingAppealChallengeStatusLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AwaitingAppealRequestLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AwaitingApprovalStatusLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AwaitingDecisionStatusLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CommitVoteStatusLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ReadyToCompleteStatusLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RevealVoteStatusLabel\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/Button.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Buttons Button 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        Standard Button\n      </button>\n      <br />\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP ewtwbh disabled\"\n        disabled={true}\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        Disabled\n      </button>\n      <br />\n      <a\n        className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n        href=\"/home\"\n        onClick={[Function]}\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n      >\n        Link Button\n      </a>\n      <br />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Button\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Buttons CardTransactionButton 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <p>\n        This is a Transaction Button styled as a Card, and can contain any markup\n      </p>\n      <div\n        className=\"sc-fzXfQS sc-fzXfQT yHlOo\"\n        onClick={[Function]}\n      >\n        Transaction\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CardTransactionButton\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Buttons DarkButton 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLS csfxOo\"\n        theme={\n          Object {\n            \"darkButtonBackground\": \"#000000\",\n            \"darkButtonColor\": \"#FFFFFF\",\n            \"darkButtonHoverBackground\": \"#5A5653\",\n            \"darkButtonHoverColor\": \"#FFFFFF\",\n            \"darkButtonTextTransform\": \"none\",\n          }\n        }\n        type=\"button\"\n      >\n        Dark Button\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DarkButton\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Buttons InvertedButton 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLQ fGYMln\"\n        theme={\n          Object {\n            \"invertedButtonBackground\": \"#FFFFFF\",\n            \"invertedButtonColor\": \"#2B56FF\",\n          }\n        }\n        type=\"button\"\n      >\n        Inverted Button\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            InvertedButton\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Buttons MetaMaskLogoButton 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP sc-LzMWy enKBQk\"\n        onClick={[Function]}\n        size=\"MEDIUM_WIDE\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        <div\n          className=\"sc-LzMWz faUiuu\"\n        >\n          <img\n            className=\"sc-AykKH jXAxor\"\n            src=\"test-file-stub\"\n          />\n        </div>\n        MetaMaskLogo Transaction Button\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskLogoButton\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Buttons SecondaryButton 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLR dLItEB\"\n        theme={\n          Object {\n            \"secondaryButtonBackground\": \"#FFFFFF\",\n            \"secondaryButtonBorder\": \"#C4C2C0\",\n            \"secondaryButtonColor\": \"#7D7373\",\n            \"secondaryButtonHoverBackground\": \"#2B56FF\",\n            \"secondaryButtonHoverColor\": \"#FFFFFF\",\n          }\n        }\n        type=\"button\"\n      >\n        Secondary Button\n      </button>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SecondaryButton\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Buttons sizes 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNNG hjIasM\"\n    >\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n        size=\"LARGE\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        large\n      </button>\n      <br />\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP jAeDBr\"\n        size=\"MEDIUM\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        medium\n      </button>\n      <br />\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP gPnInO\"\n        size=\"MEDIUM_WIDE\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        medium wide\n      </button>\n      <br />\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP JmPHO\"\n        size=\"SMALL\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        small\n      </button>\n      <br />\n      <button\n        className=\"sc-fzXfLO sc-fzXfLP fAtGHn\"\n        size=\"SMALL_WIDE\"\n        theme={\n          Object {\n            \"primaryButtonBackground\": \"#2B56FF\",\n            \"primaryButtonColor\": \"#FFFFFF\",\n            \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n            \"primaryButtonDisabledColor\": \"#FFFFFF\",\n            \"primaryButtonFontWeight\": \"normal\",\n            \"primaryButtonHoverBackground\": \"#4066FF\",\n            \"primaryButtonTextTransform\": \"uppercase\",\n            \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n          }\n        }\n        type=\"button\"\n      >\n        small wide\n      </button>\n      <br />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Buttons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            sizes\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  StoryRouter\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      story\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          anonymous\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      links\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      routerProps\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#444\",\n                            }\n                          }\n                        >\n                          null\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StoryRouter\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    story\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    yes\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    links\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    routerProps\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      other\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/ChevronAnchor.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Typography / Chevron Anchor Civil Themed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOg hLDyWa\"\n    >\n      <a\n        href=\"#\"\n      >\n        Check this out\n        <svg\n          height={14}\n          version=\"1.1\"\n          viewBox=\"0 0 14 14\"\n          width={14}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            fill=\"none\"\n            fillRule=\"evenodd\"\n            stroke=\"none\"\n            strokeWidth=\"1\"\n          >\n            <polygon\n              points=\"0 0 18 0 18 18 0 18\"\n            />\n            <polygon\n              fill=\"#2B56FF\"\n              fillRule=\"nonzero\"\n              points=\"7.5 4.5 6.4425 5.5575 9.8775 9 6.4425 12.4425 7.5 13.5 12 9\"\n            />\n          </g>\n        </svg>\n      </a>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Typography / Chevron Anchor\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Civil Themed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      ChevronAnchor\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          href\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              #\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Check this out\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      ChevronAnchor\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ChevronAnchor\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Typography / Chevron Anchor Civil Themed, Left 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOg hLDyWa\"\n    >\n      <a\n        href=\"#\"\n      >\n        <svg\n          className=\"sc-fzXfQU dsXWWq\"\n          height={14}\n          version=\"1.1\"\n          viewBox=\"0 0 14 14\"\n          width={14}\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <g\n            fill=\"none\"\n            fillRule=\"evenodd\"\n            stroke=\"none\"\n            strokeWidth=\"1\"\n          >\n            <polygon\n              points=\"0 0 18 0 18 18 0 18\"\n            />\n            <polygon\n              fill=\"#2B56FF\"\n              fillRule=\"nonzero\"\n              points=\"7.5 4.5 6.4425 5.5575 9.8775 9 6.4425 12.4425 7.5 13.5 12 9\"\n            />\n          </g>\n        </svg>\n        Go back to that thing\n      </a>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Typography / Chevron Anchor\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Civil Themed, Left\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      ChevronAnchorLeft\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          href\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              #\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Go back to that thing\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      ChevronAnchorLeft\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ChevronAnchorLeft\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Typography / Chevron Anchor Default 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <a\n      href=\"#\"\n    >\n      Check this out\n      <svg\n        height={14}\n        version=\"1.1\"\n        viewBox=\"0 0 14 14\"\n        width={14}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"0 0 18 0 18 18 0 18\"\n          />\n          <polygon\n            fill=\"#2B56FF\"\n            fillRule=\"nonzero\"\n            points=\"7.5 4.5 6.4425 5.5575 9.8775 9 6.4425 12.4425 7.5 13.5 12 9\"\n          />\n        </g>\n      </svg>\n    </a>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Typography / Chevron Anchor\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ChevronAnchor\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        href\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            #\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    Check this out\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ChevronAnchor\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ChevronAnchor\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/ClipLoader.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Loading / Clip Loader Default Size (32px x 32px) 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNMW cqoINV\"\n    >\n      <div>\n        <div\n          className=\"sc-fzXfOY cVApfB\"\n          size={35}\n        />\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Clip Loader\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default Size (32px x 32px)\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    size\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      35\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          clipLoaderColor\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '#7D7373'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Loading / Clip Loader Prop-defined size (100px x 100px) 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNMW cqoINV\"\n    >\n      <div>\n        <div\n          className=\"sc-fzXfOY gaxWbT\"\n          size={100}\n        />\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Clip Loader\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Prop-defined size (100px x 100px)\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        size\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            100\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    size\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      35\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          clipLoaderColor\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '#7D7373'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/Collapsable.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Collapsable closed 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOh fhUHCg\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h3>\n            Hello\n          </h3>\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p>\n             Some Content \n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Collapsable\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            closed\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Collapsable\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          header\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              &lt;h3 /&gt;\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          open\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              false\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                         Some Content \n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Collapsable\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Collapsable\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Collapsable disabled 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOh fhUHCg\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h3>\n            Hello\n          </h3>\n           \n          <div\n            className=\"sc-LzLtk knbufL\"\n            disabled={true}\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p>\n             Some Content \n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Collapsable\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            disabled\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Collapsable\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          disabled\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          header\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              &lt;h3 /&gt;\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          open\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              false\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                         Some Content \n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Collapsable\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Collapsable\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Collapsable open 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOh fhUHCg\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          <h3>\n            Hello\n          </h3>\n           \n          <div\n            className=\"sc-LzLtk kkesqG\"\n            open={true}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj iEqsVj\"\n          height={null}\n          open={true}\n        >\n          <p>\n             Some Content \n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Collapsable\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            open\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Collapsable\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          header\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              &lt;h3 /&gt;\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          open\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                         Some Content \n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Collapsable\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Collapsable\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Collapsable with custom arrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOh fhUHCg\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          Hello\n           \n          <div\n            className=\"sc-LzNQa kFloWs\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p>\n             Some Content \n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Collapsable\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            with custom arrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Collapsable\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          header\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Hello\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          ArrowComponent\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#666\",\n                                }\n                              }\n                            >\n                              {\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  $$typeof\n                                </span>\n                              </span>\n                              : \n                              <span>\n                                …\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  render\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#170\",\n                                  }\n                                }\n                              >\n                                forwardRef\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                <span\n                                  style={\n                                    Object {\n                                      \"color\": \"#666\",\n                                    }\n                                  }\n                                >\n                                  attrs\n                                </span>\n                              </span>\n                              : \n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#666\",\n                                  }\n                                }\n                              >\n                                [\n                                ]\n                              </span>\n                              ,\n                              <span>\n                                <span>\n                                  <br />\n                                    \n                                    \n                                </span>\n                                …\n                              </span>\n                              <span>\n                                <br />\n                                  \n                              </span>\n                              }\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          open\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              false\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                         Some Content \n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Collapsable\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Collapsable\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Collapsable with open text 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOh fhUHCg\"\n    >\n      <div>\n        <div\n          className=\"sc-LzLtl bXcOvE\"\n          onClick={[Function]}\n        >\n          Hello\n           \n          <div\n            className=\"sc-LzLtk gxTJrz\"\n            open={false}\n          />\n        </div>\n        <div\n          className=\"sc-LzLtj gVHCno\"\n          height={null}\n          open={false}\n        >\n          <p>\n             Some Content \n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Collapsable\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            with open text\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Collapsable\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          header\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Hello\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          headerOpen\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              goodbye\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          open\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#a11\",\n                                }\n                              }\n                            >\n                              false\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        p\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                         Some Content \n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        p\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Collapsable\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Collapsable\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/DetailTransactionButton.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Ethereum / DetailTransactionButton detail transaction button 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOl fzSKhE\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / DetailTransactionButton\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            detail transaction button\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  styled.div\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Ethereum / DetailTransactionButton detail transaction button with visible progress modal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOl fzSKhE\"\n    />\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / DetailTransactionButton\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            detail transaction button with visible progress modal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  styled.div\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/Heading.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Typography / Headings Headings 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOo erlGmH\"\n    >\n      <div>\n        <h1\n          className=\"sc-fzXfOq dHbONx\"\n        >\n          Heading\n        </h1>\n        <h2\n          className=\"sc-fzXfOs dMHUrV\"\n        >\n          Sub Heading\n        </h2>\n        <h1\n          className=\"sc-fzXfOr iONHTd\"\n        >\n          Section Heading\n        </h1>\n        <h3\n          className=\"sc-fzXfOt dHhoQG\"\n        >\n          Block Heading\n        </h3>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Typography / Headings\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Headings\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.h1\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Heading\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.h1\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.h2\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Sub Heading\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.h2\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.h1\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Section Heading\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.h1\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.h3\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Block Heading\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.h3\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.h1\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          sansSerifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Libre Franklin\", sans-serif'\n                      </span>\n                      ,\n                      <span>\n                        <span>\n                          serifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Spectral\", serif'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.h1\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          sansSerifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Libre Franklin\", sans-serif'\n                      </span>\n                      ,\n                      <span>\n                        <span>\n                          serifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Spectral\", serif'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.h2\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          sansSerifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Libre Franklin\", sans-serif'\n                      </span>\n                      ,\n                      <span>\n                        <span>\n                          serifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Spectral\", serif'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.h3\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          sansSerifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Libre Franklin\", sans-serif'\n                      </span>\n                      ,\n                      <span>\n                        <span>\n                          serifFont\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '\"Spectral\", serif'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/LoadingIndicator.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Loading / Loading Indicator Default Size (32px x 32px) 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ ffmIPd\"\n    >\n      <div>\n        <svg\n          fill=\"#30E8BD\"\n          height=\"32\"\n          style={\n            Object {\n              \"verticalAlign\": undefined,\n            }\n          }\n          viewBox=\"0 0 32 32\"\n          width=\"32\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(8 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(16 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.3\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(24 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.6\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n        </svg>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Loading Indicator\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default Size (32px x 32px)\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LoadingIndicator\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LoadingIndicator\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Loading / Loading Indicator Prop-defined size (100px x 100px) 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ ffmIPd\"\n    >\n      <div>\n        <svg\n          fill=\"#30E8BD\"\n          height=\"100\"\n          style={\n            Object {\n              \"verticalAlign\": undefined,\n            }\n          }\n          viewBox=\"0 0 100 100\"\n          width=\"100\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle\n            cx=\"0\"\n            cy=\"50\"\n            r=\"0\"\n            transform=\"translate(25 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 12; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"50\"\n            r=\"0\"\n            transform=\"translate(50 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.3\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 12; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"50\"\n            r=\"0\"\n            transform=\"translate(75 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.6\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 12; 0; 0\"\n            />\n          </circle>\n        </svg>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Loading Indicator\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Prop-defined size (100px x 100px)\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LoadingIndicator\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        height\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            100\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LoadingIndicator\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/LoadingMessage.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Loading / Loading Message Default size (32px x 32px), custom text 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOR frxuHK\"\n    >\n      <div\n        className=\"sc-fzXfQZ hIMhVq\"\n      >\n        <svg\n          fill=\"#30E8BD\"\n          height=\"32\"\n          style={\n            Object {\n              \"verticalAlign\": undefined,\n            }\n          }\n          viewBox=\"0 0 32 32\"\n          width=\"32\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(8 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(16 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.3\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(24 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.6\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n        </svg>\n        <p\n          className=\"sc-fzXfRa hirghE\"\n        >\n          Please wait while we load all the stuff.\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Loading Message\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default size (32px x 32px), custom text\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      LoadingMessage\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Please wait while we load all the stuff.\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      LoadingMessage\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LoadingMessage\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Loading / Loading Message Default size (32px x 32px), default text 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOR frxuHK\"\n    >\n      <div\n        className=\"sc-fzXfQZ hIMhVq\"\n      >\n        <svg\n          fill=\"#30E8BD\"\n          height=\"32\"\n          style={\n            Object {\n              \"verticalAlign\": undefined,\n            }\n          }\n          viewBox=\"0 0 32 32\"\n          width=\"32\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(8 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(16 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.3\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"16\"\n            r=\"0\"\n            transform=\"translate(24 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.6\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 4; 0; 0\"\n            />\n          </circle>\n        </svg>\n        <p\n          className=\"sc-fzXfRa hirghE\"\n        >\n          Loading\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Loading Message\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Default size (32px x 32px), default text\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LoadingMessage\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LoadingMessage\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Loading / Loading Message Prop-defined size (100px x 100px), default text 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOR frxuHK\"\n    >\n      <div\n        className=\"sc-fzXfQZ hIMhVq\"\n      >\n        <svg\n          fill=\"#30E8BD\"\n          height=\"100\"\n          style={\n            Object {\n              \"verticalAlign\": undefined,\n            }\n          }\n          viewBox=\"0 0 100 100\"\n          width=\"100\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <circle\n            cx=\"0\"\n            cy=\"50\"\n            r=\"0\"\n            transform=\"translate(25 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 12; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"50\"\n            r=\"0\"\n            transform=\"translate(50 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.3\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 12; 0; 0\"\n            />\n          </circle>\n          <circle\n            cx=\"0\"\n            cy=\"50\"\n            r=\"0\"\n            transform=\"translate(75 0)\"\n          >\n            <animate\n              attributeName=\"r\"\n              begin=\"0.6\"\n              calcMode=\"spline\"\n              dur=\"1.2s\"\n              keySplines=\"0.2 0.2 0.4 0.8;0.2 0.6 0.4 0.8;0.2 0.6 0.4 0.8\"\n              keyTimes=\"0;0.2;0.7;1\"\n              repeatCount=\"indefinite\"\n              values=\"0; 12; 0; 0\"\n            />\n          </circle>\n        </svg>\n        <p\n          className=\"sc-fzXfRa hirghE\"\n        >\n          Loading\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Loading / Loading Message\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Prop-defined size (100px x 100px), default text\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LoadingMessage\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        height\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            100\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LoadingMessage\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/Message.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Notices / Messages (deprecate this?) Info Message 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOS fDIgAr\"\n    >\n      <div>\n        <div\n          className=\"sc-fzXfQX sc-fzXfQY hBSPId\"\n        >\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Notices / Messages (deprecate this?)\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Info Message\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Styled(Styled(MessageBase))\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Styled(Styled(MessageBase))\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(Styled(MessageBase))\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/MetaMaskModal.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Ethereum / MetaMaskModal SignatureMetaMaskModal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n       test \n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / MetaMaskModal\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SignatureMetaMaskModal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     test \n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Ethereum / MetaMaskModal SignatureMetaMaskModal waiting 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n       test \n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / MetaMaskModal\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SignatureMetaMaskModal waiting\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     test \n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Ethereum / MetaMaskModal deniedMetaMaskModal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n       test \n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / MetaMaskModal\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            deniedMetaMaskModal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     test \n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Ethereum / MetaMaskModal preMetaMaskModal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n       test \n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / MetaMaskModal\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            preMetaMaskModal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     test \n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Ethereum / MetaMaskModal waitingMetaMaskModal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n       test \n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / MetaMaskModal\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            waitingMetaMaskModal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                     test \n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/Modal.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Modals Fullscreen Modal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOT fLuZOr\"\n    >\n      <div>\n        <p>\n          Some good stuff was already on the page which is pretty exciting\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Modals\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Fullscreen Modal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      p\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Some good stuff was already on the page which is pretty exciting\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      p\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  />\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Modals Modal 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOT fLuZOr\"\n    >\n      <div>\n        <p>\n          Some good stuff was already on the page which is pretty exciting\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Modals\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Modal\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      p\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      Some good stuff was already on the page which is pretty exciting\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      p\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  />\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/ModalContent.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Modals content 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOU kPCvdY\"\n    >\n      <div>\n        <h2\n          className=\"sc-fzXfRb cPaMuz\"\n        >\n          I'm a Heading\n        </h2>\n        <p\n          className=\"sc-LzLqC hhpOod\"\n        >\n          I'm a paragraph of some sorts\n        </p>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Modals\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            content\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.h2\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      I'm a Heading\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.h2\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.p\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      I'm a paragraph of some sorts\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.p\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.h2\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.p\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/QuestionToolTip.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Tooltips / QuestionToolTip tooltip 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNPw hTkTev\"\n    >\n      <div\n        className=\"sc-LzLsx fYnKWV\"\n      >\n        <div\n          className=\"sc-LzLrY cSYXGl\"\n          onMouseEnter={[Function]}\n          onMouseLeave={[Function]}\n        >\n          <div\n            className=\"sc-LzLsy bfMGyE\"\n          >\n            <svg\n              height=\"18\"\n              viewBox=\"0 0 18 18\"\n              width=\"18\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <g\n                fill=\"none\"\n                fillRule=\"evenodd\"\n                opacity=\".56\"\n              >\n                <path\n                  d=\"m0 0h18v18h-18z\"\n                  stroke=\"#000000\"\n                  strokeOpacity=\".008\"\n                  strokeWidth=\".5\"\n                />\n                <path\n                  d=\"m8.25 13.5h1.5v-1.5h-1.5zm.75-12c-4.13999999 0-7.5 3.36000001-7.5 7.5 0 4.1400003 3.36000001 7.5 7.5 7.5 4.1400003 0 7.5-3.3599997 7.5-7.5 0-4.14000035-3.3599997-7.5-7.5-7.5zm0 13.5c-3.30749989 0-6-2.6925002-6-6 0-3.30749989 2.69250011-6 6-6 3.3074998 0 6 2.69250011 6 6 0 3.3074998-2.6925002 6-6 6zm0-10.5c-1.65750003 0-3 1.34249997-3 3h1.5c0-.82500029.6749997-1.5 1.5-1.5.82500023 0 1.5.67499971 1.5 1.5 0 1.5-2.25 1.3125-2.25 3.75h1.5c0-1.6875 2.25-1.875 2.25-3.75 0-1.65750003-1.3425-3-3-3z\"\n                  fill=\"#000000\"\n                />\n              </g>\n            </svg>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Tooltips / QuestionToolTip\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            tooltip\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    QuestionToolTip\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        explainerText\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            this is a tool tip\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    styled.div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              QuestionToolTip\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/ViewTransactionLink.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Ethereum / viewTransactionLink link 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <a\n      className=\"sc-LzLRr fpufFK\"\n      href=\"https://rinkeby.etherscan.io/tx/0x90cf2411cac2a4d4873332bcf60bed49e62d7d4021120c3de0749eba8f6168af\"\n      target=\"_blank\"\n    >\n      view transaction\n       \n      <svg\n        height=\"11\"\n        viewBox=\"0 0 11 11\"\n        width=\"11\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n          fill=\"#23282d\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </a>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Ethereum / viewTransactionLink\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            link\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  ViewTransactionLink\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      txHash\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          0x90cf2411cac2a4d4873332bcf60bed49e62d7d4021120c3d…\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      network\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          rinkeby\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ViewTransactionLink\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__snapshots__/WalletOnboarding.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Wallet Onboarding CMS profile vs. MetaMask address mismatch 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        Wallet Connected\n      </h4>\n      <p\n        style={\n          Object {\n            \"color\": \"#f2524a\",\n          }\n        }\n      >\n        Your WordPress user profile wallet address does not match your MetaMask wallet address\n      </p>\n      <p\n        className=\"sc-LzMDu fdaYkA\"\n      >\n        Profile wallet address\n      </p>\n      <span\n        className=\"sc-LzMDr bNdvYT\"\n      >\n        0x123abc00000000000000000000000000000x123abc\n      </span>\n       \n      <p\n        className=\"sc-LzMDu fdaYkA\"\n      >\n        Connected wallet address\n      </p>\n      <div\n        className=\"sc-LzLtM hgknBJ\"\n      >\n        <div\n          className=\"sc-LzLtN hdjTcs\"\n        >\n          <img\n            className=\"sc-AykKH jXAxor\"\n            src=\"test-file-stub\"\n          />\n          0xabc1230000000000000000000000000000abc123\n        </div>\n      </div>\n       \n      <div\n        className=\"sc-LzMDt dagpWP\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP gPnInO\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Update Profile Address\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CMS profile vs. MetaMask address mismatch\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        profileWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0x123abc00000000000000000000000000000x123abc\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                      <span>\n                        <br />\n                          \n                      </span>\n                      <span\n                        style={Object {}}\n                      >\n                        saveAddressToProfile\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            saveAddressToProfile\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      <br />\n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Wallet Onboarding Connected 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        Wallet Connected\n      </h4>\n      <p\n        className=\"sc-LzMDu fdaYkA\"\n      >\n        Your wallet address\n      </p>\n      <div\n        className=\"sc-LzLtM hgknBJ\"\n      >\n        <div\n          className=\"sc-LzLtN hdjTcs\"\n        >\n          <img\n            className=\"sc-AykKH jXAxor\"\n            src=\"test-file-stub\"\n          />\n          0xabc1230000000000000000000000000000abc123\n        </div>\n      </div>\n       \n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Connected\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Wallet Onboarding Locked 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <img\n        className=\"sc-LzMDw fxBjky\"\n        src=\"test-file-stub\"\n      />\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        Not logged in to wallet\n      </h4>\n      <p>\n        Please open the MetaMask extension and follow the instructions to log in to your wallet. After you are logged in, you can continue with your newsroom smart contract.\n         \n        <a\n          target=\"_blank\"\n        >\n          Need help?\n        </a>\n      </p>\n      <p>\n        Once you are on logged in, refresh this page.\n      </p>\n      <p>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzMDp bvRqgx\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Refresh\n        </button>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Locked\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        walletLocked\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Wallet Onboarding No Provider 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        It looks like you aren’t logged in to your wallet\n      </h4>\n      <p>\n        New to using a digital wallet? Having a wallet is mandatory and we recommend\n         \n        <a\n          href=\"https://metamask.io/\"\n          target=\"_blank\"\n        >\n          MetaMask\n        </a>\n         \n        <img\n          className=\"sc-AykKH jXAxor sc-LzMDv gIWCha\"\n          src=\"test-file-stub\"\n        />\n         to manage your transactions.\n         \n        <a\n          target=\"_blank\"\n        >\n          Read this FAQ\n        </a>\n        .\n      </p>\n      <p>\n        <a\n          className=\"sc-fzXfLO sc-fzXfLP gPnInO\"\n          href=\"https://metamask.io/\"\n          size=\"MEDIUM_WIDE\"\n          target=\"_blank\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n        >\n          Open MetaMask.io\n           \n          <span\n            className=\"sc-LzMDs dfjWwI\"\n          >\n            <svg\n              height=\"11\"\n              viewBox=\"0 0 11 11\"\n              width=\"11\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n                fill=\"#23282d\"\n                fillRule=\"evenodd\"\n              />\n            </svg>\n          </span>\n        </a>\n        <span\n          style={\n            Object {\n              \"fontSize\": 13,\n              \"marginLeft\": 16,\n            }\n          }\n        >\n          Once the extension is installed,\n           \n          <a\n            href=\"javascript:void(0)\"\n            onClick={[Function]}\n          >\n            refresh this page\n          </a>\n          .\n        </span>\n      </p>\n      <p>\n        After you've set up MetaMask, you'll receive a wallet address and you'll be able to buy ETH with your bank or credit card. We recommend purchasing USD$50 of ETH to start. Note: Processing times can vary, and it can take up to 7 days for the ETH to be deposited in your wallet.\n      </p>\n      <p>\n        You will use your MetaMask wallet to set up and manage your smart contract, as well as sign, index, and archive posts to the Ethereum blockchain. Make sure you've saved your\n         \n        <a\n          href=\"undefinedarticles/360017414652-What-is-a-recovery-phrase-seed-and-why-is-it-important-to-secure-it-\"\n          target=\"_blank\"\n        >\n          seed phrase\n        </a>\n         \n        from MetaMask in a safe place.\n      </p>\n      <p\n        style={\n          Object {\n            \"fontSize\": 13,\n          }\n        }\n      >\n        <span\n          style={\n            Object {\n              \"color\": \"#23282d\",\n              \"fontWeight\": 600,\n            }\n          }\n        >\n          Already have a wallet?\n        </span>\n        <span\n          style={\n            Object {\n              \"color\": \"#72777c\",\n              \"marginLeft\": 12,\n            }\n          }\n        >\n          Make sure it's unlocked and connected to the \n          , and then\n           \n          <a\n            href=\"javascript:void(0)\"\n            onClick={[Function]}\n          >\n            refresh this page\n          </a>\n          .\n        </span>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            No Provider\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        noProvider\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Wallet Onboarding Not Enabled 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        MetaMask not enabled\n      </h4>\n      <p>\n        Press this button to enable MetaMask for this domain.\n      </p>\n      <p>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzMDp bvRqgx\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Enable\n        </button>\n      </p>\n      <p>\n        If you do not see the MetaMask popup, please click the \n        <img\n          className=\"sc-AykKH jXAxor sc-LzMDv gIWCha\"\n          src=\"test-file-stub\"\n        />\n         icon in your browser address bar.\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Not Enabled\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        notEnabled\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Wallet Onboarding Save address to CMS profile 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        Wallet Connected\n      </h4>\n      <p>\n        Your wallet is connected. Now you can add your public wallet address to your WordPress user profile.\n      </p>\n      <p\n        className=\"sc-LzMDu fdaYkA\"\n      >\n        Your wallet address\n      </p>\n      <div\n        className=\"sc-LzLtM hgknBJ\"\n      >\n        <div\n          className=\"sc-LzLtN hdjTcs\"\n        >\n          <img\n            className=\"sc-AykKH jXAxor\"\n            src=\"test-file-stub\"\n          />\n          0xabc1230000000000000000000000000000abc123\n        </div>\n      </div>\n       \n      <div\n        className=\"sc-LzMDt dagpWP\"\n      >\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP gPnInO\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Save to Your Profile\n        </button>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Save address to CMS profile\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        metamaskWalletAddress\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            0xabc1230000000000000000000000000000abc123\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        saveAddressToProfile\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            saveAddressToProfile\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Common / Wallet Onboarding Wrong Network 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzMDo jHDMfv\"\n    >\n      <img\n        className=\"sc-LzMDw fxBjky\"\n        src=\"test-file-stub\"\n      />\n      <h4\n        className=\"sc-fzXfOv hdqyBT\"\n      >\n        Change your network\n      </h4>\n      <p>\n        Looks like you’re using an unsupported Ethereum network. Make sure you're using the\n         \n        Main Ethereum Network\n        .\n         \n        <a\n          href=\"undefinedarticles/360017414812-How-do-I-switch-networks-in-MetaMask-\"\n          target=\"_blank\"\n        >\n          Read this tutorial\n        </a>\n         \n        to switch networks in MetaMask \n        <img\n          className=\"sc-AykKH jXAxor sc-LzMDv gIWCha\"\n          src=\"test-file-stub\"\n        />\n      </p>\n      <p>\n        Once you are on the correct network, refresh this page.\n      </p>\n      <p>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP sc-LzMDp bvRqgx\"\n          onClick={[Function]}\n          size=\"MEDIUM_WIDE\"\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"button\"\n        >\n          Refresh\n        </button>\n      </p>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Wallet Onboarding\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Wrong Network\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    StorybookProvider\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WalletOnboarding\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        enable\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#170\",\n                              }\n                            }\n                          >\n                            enable\n                          </span>\n                          }\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        wrongNetwork\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        requiredNetworkNiceName\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            Main Ethereum Network\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    StorybookProvider\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              StorybookProvider\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WalletOnboarding\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/__test__/setupTests.ts",
    "content": "import * as Enzyme from \"enzyme\";\n// @ts-ignore\nimport Adapter from \"enzyme-adapter-react-16\";\nEnzyme.configure({ adapter: new Adapter() });\n"
  },
  {
    "path": "packages/components/src/__test__/storyshot.test.ts",
    "content": "import initStoryshots, { renderOnly } from \"@storybook/addon-storyshots\";\n\ninitStoryshots({\n  test: renderOnly,\n});\n"
  },
  {
    "path": "packages/components/src/containers/ButtonActions.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nexport const ButtonActions = styled.div`\n  margin: 20px;\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n`;\n"
  },
  {
    "path": "packages/components/src/containers/PaddedSection.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nexport const PaddedSection = styled.div`\n  padding: 20px;\n`;\n"
  },
  {
    "path": "packages/components/src/containers/index.tsx",
    "content": "export * from \"./ButtonActions\";\nexport * from \"./PaddedSection\";\n"
  },
  {
    "path": "packages/components/src/context/AuthService.ts",
    "content": "import ApolloClient from \"apollo-client\";\nimport {\n  clearApolloSession,\n  setApolloSession,\n  getCurrentUserQuery,\n  getApolloSession,\n  AuthLoginResponse,\n} from \"@joincivil/utils\";\nimport gql from \"graphql-tag\";\n\nconst authLoginEthMutation = gql`\n  mutation($input: UserSignatureInput!) {\n    authWeb3: authLoginEth(input: $input) {\n      token\n      refreshToken\n      uid\n    }\n  }\n`;\n\nconst authSignupEthMutation = gql`\n  mutation($input: UserSignatureInput!) {\n    authWeb3: authSignupEth(input: $input) {\n      token\n      refreshToken\n      uid\n    }\n  }\n`;\n\nexport interface AuthServiceOptions {\n  apolloClient: ApolloClient<any>;\n  onAuthChange(currentUser: any): void;\n}\n\nexport class AuthService {\n  public currentUser?: any;\n  public loading = false;\n  private apolloClient: ApolloClient<any>;\n  private onAuthChange: (currentUser?: any) => void;\n\n  constructor(opts: AuthServiceOptions) {\n    this.apolloClient = opts.apolloClient;\n    this.onAuthChange = opts.onAuthChange;\n\n    setImmediate(() => this.handleInitialState());\n  }\n\n  public async handleInitialState(): Promise<void> {\n    const existingSession = getApolloSession();\n    if (existingSession && this.apolloClient) {\n      this.currentUser = await this.fetchCurrentUser();\n      if (this.onAuthChange) {\n        this.onAuthChange(this.currentUser);\n      }\n    }\n  }\n\n  public getSession(): AuthLoginResponse | null {\n    return getApolloSession();\n  }\n\n  public logout(): void {\n    console.log(\"AuthService logout\");\n    clearApolloSession();\n    delete this.currentUser;\n    if (this.onAuthChange) {\n      this.onAuthChange();\n    }\n  }\n\n  public async authenticate(signature: any): Promise<any> {\n    console.log(\"sending authenticate mutation\", signature);\n    return this.graphqlLoginSignup(authLoginEthMutation, signature);\n  }\n  public async signup(signature: any): Promise<any> {\n    console.log(\"sending signup mutation\", signature);\n    return this.graphqlLoginSignup(authSignupEthMutation, signature);\n  }\n\n  public async loginUser(session: any): Promise<void> {\n    setApolloSession(session);\n    this.currentUser = await this.fetchCurrentUser();\n    if (this.onAuthChange) {\n      this.onAuthChange(this.currentUser);\n    }\n  }\n\n  public async fetchCurrentUser(): Promise<void> {\n    this.loading = true;\n    const result = await this.apolloClient.query({ query: getCurrentUserQuery, fetchPolicy: \"no-cache\" });\n    this.loading = false;\n\n    if (result.errors) {\n      throw new Error(\"error fetching user\");\n    }\n    return result.data.currentUser;\n  }\n\n  public async showWeb3Login(): Promise<void> {\n    console.error(\"web3 auth not yet initialized\");\n  }\n  public async showWeb3Signup(): Promise<void> {\n    console.error(\"web3 auth not yet initialized\");\n  }\n  /** If user is logged in, but web3 not enabled, enable it. */\n  public ensureLoggedInUserEnabled(): void {\n    console.error(\"web3 auth not yet initialized\");\n  }\n  public setShowWeb3Login(func: () => Promise<void>): void {\n    this.showWeb3Login = func;\n  }\n  public setShowWeb3Signup(func: () => Promise<void>): void {\n    this.showWeb3Signup = func;\n  }\n  public setEnsureLoggedInUserEnabled(func: () => void): void {\n    this.ensureLoggedInUserEnabled = func;\n  }\n\n  private async graphqlLoginSignup(mutation: any, signature: any): Promise<any> {\n    // TODO(dankins): graphql API requires messageHash, r,s,v but they aren't actually used\n    const signatureWithHack = { ...signature, messageHash: \"n/a\", r: \"n/a\", s: \"n/a\", v: \"n/a\" };\n    const res = await this.apolloClient.mutate({\n      mutation,\n      variables: { input: signatureWithHack },\n    });\n    if (res && res.data && res.data.authWeb3) {\n      await this.loginUser(res.data.authWeb3);\n    } else {\n      console.error(\"Failed to validate and log in with ETH address. Response:\", res);\n      throw Error(\"Failed to validate and log in with ETH address\");\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/context/CivilContext.ts",
    "content": "import * as React from \"react\";\nimport { Civil, UniswapService, FeatureFlagService, EthersProviderResult, makeEthersProvider } from \"@joincivil/core\";\nimport { AuthService } from \"./AuthService\";\nimport ApolloClient from \"apollo-client\";\n\nexport enum RENDER_CONTEXT {\n  DAPP,\n  EMBED,\n}\n\nexport interface ICivilContext {\n  // services\n  civil?: Civil;\n  uniswap: UniswapService;\n  features: FeatureFlagService;\n  auth: AuthService;\n\n  // web3\n  web3Provider: any;\n  network: number;\n\n  // fields that should trigger context re-renders\n  currentUser: any;\n\n  renderContext: RENDER_CONTEXT;\n\n  /** See `packages/dapp/src/helpers/config.ts` */\n  config: any;\n  // other things that should probably be put into a service\n  waitForTx(txHash: string): Promise<any>;\n  fireAnalyticsEvent(category: string, event: string, label: string, value: number): void;\n  setAnalyticsEvent(fire: any): void;\n}\n\nexport interface CivilContextOptions {\n  web3: any;\n  featureFlags: string[];\n  config: any;\n  renderContext?: RENDER_CONTEXT;\n  apolloClient?: ApolloClient<any>;\n  onAuthChange?(nextUser: any): void;\n}\n\nexport function buildCivilContext(opts: CivilContextOptions): ICivilContext {\n  const { web3, apolloClient, config, featureFlags, onAuthChange } = opts;\n\n  if (!web3) {\n    throw new Error(\"expecting web3 to be initialized\");\n  }\n\n  console.log(\"building new context\");\n  const civil = new Civil({ web3Provider: opts.web3.currentProvider });\n  const web3Provider = web3.currentProvider;\n  const network = web3.currentProvider.networkVersion || config.DEFAULT_ETHEREUM_NETWORK;\n\n  const auth = new AuthService({ apolloClient: apolloClient!, onAuthChange: onAuthChange! });\n  const features = new FeatureFlagService(featureFlags);\n\n  const { provider, signer }: EthersProviderResult = makeEthersProvider(web3Provider, network);\n  const uniswap = new UniswapService(provider, signer, network);\n\n  const ctx: ICivilContext = {\n    // services\n    civil,\n    auth,\n    features,\n    uniswap,\n\n    // web3\n    web3Provider: web3.currentProvider,\n    // fields that should trigger context re-renders\n    currentUser: auth.currentUser,\n    network,\n\n    renderContext: opts.renderContext || RENDER_CONTEXT.DAPP,\n\n    // other things that should probably be put into a service\n    config,\n    fireAnalyticsEvent: (category: string, event: string, label: string, value: number) => undefined,\n    setAnalyticsEvent: (fire: any): void => {\n      ctx.fireAnalyticsEvent = fire;\n    },\n    waitForTx: async (txHash: string) => provider.waitForTransaction(txHash),\n  };\n\n  return ctx;\n}\n\n// @ts-ignore ignore default value typescript error\nexport const CivilContext = React.createContext<ICivilContext>(null);\n"
  },
  {
    "path": "packages/components/src/context/CivilProvider.tsx",
    "content": "import * as React from \"react\";\nimport { CivilContext, buildCivilContext } from \"./CivilContext\";\nimport { KirbyEthereum, KirbyEthereumProvider, KirbyEthereumContext } from \"@kirby-web3/ethereum-react\";\n\nimport { ApolloConsumer } from \"react-apollo\";\nimport ApolloClient from \"apollo-client\";\n\nimport { IdentityParentPlugin } from \"./IdentityParentPlugin\";\n\nexport interface CivilInnerProviderProps {\n  config: any;\n  featureFlags: string[];\n  apolloClient?: ApolloClient<any>;\n}\n\nconst CivilInnerProvider: React.FunctionComponent<CivilInnerProviderProps> = ({\n  children,\n  featureFlags,\n  config,\n  apolloClient,\n}) => {\n  // context\n  const kirbyCtx = React.useContext<KirbyEthereum>(KirbyEthereumContext);\n  const web3 = kirbyCtx.web3;\n\n  if (kirbyCtx === null) {\n    return <div></div>;\n  }\n  const [currentUser, setCurrentUser] = React.useState(null);\n\n  const baseContext = React.useMemo(() => {\n    function onAuthChange(nextUser: any): void {\n      console.log(\"auth change\", nextUser);\n      setCurrentUser(nextUser);\n    }\n\n    const ctx = buildCivilContext({ web3, apolloClient: apolloClient!, featureFlags, config, onAuthChange });\n\n    return ctx;\n  }, []);\n\n  // state\n  const civilContext = React.useMemo(() => {\n    return { ...baseContext, currentUser };\n  }, [baseContext, currentUser]);\n\n  // render\n  return <CivilContext.Provider value={civilContext}>{children}</CivilContext.Provider>;\n};\n\nexport interface CivilProviderProps extends CivilInnerProviderProps {\n  plugins?: any[];\n  pluginConfig: any;\n}\n\nexport const CivilProvider: React.FunctionComponent<CivilProviderProps> = ({\n  children,\n  featureFlags,\n  pluginConfig,\n  config,\n}) => {\n  const plugins = React.useMemo(() => {\n    return [new IdentityParentPlugin()];\n  }, []);\n\n  return (\n    <ApolloConsumer>\n      {client => (\n        <KirbyEthereumProvider config={pluginConfig} plugins={plugins}>\n          <CivilInnerProvider featureFlags={featureFlags} config={config} apolloClient={client}>\n            {children}\n          </CivilInnerProvider>\n        </KirbyEthereumProvider>\n      )}\n    </ApolloConsumer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/context/IdentityParentPlugin.ts",
    "content": "import { ParentPlugin, DMZ } from \"@kirby-web3/parent-core\";\nimport { EthereumParentPlugin } from \"@kirby-web3/plugin-ethereum\";\n\nexport const IDENTITY_LOGIN_REQUEST = \"IDENTITY_LOGIN_REQUEST\";\nexport const IDENTITY_LOGIN_RESPONSE = \"IDENTITY_LOGIN_RESPONSE\";\nexport const IDENTITY_SIGNUP_REQUEST = \"IDENTITY_SIGNUP_REQUEST\";\n\nexport interface LoginRequest {\n  service: string;\n  challenge: string;\n}\n\nexport interface LoginResponse {\n  did: string;\n}\n\nexport type IdentityPluginState = any;\n\nexport interface IdentityLoginRequestAction {\n  type: typeof IDENTITY_LOGIN_REQUEST;\n  payload: LoginRequest;\n}\n\nexport type IdentityPluginActions = IdentityLoginRequestAction;\n\nexport interface Config {\n  readOnlyNodeURI: string;\n}\n\nexport interface ParentDependencies {\n  ethereum: EthereumParentPlugin;\n  dmz: DMZ;\n}\n\nexport class IdentityParentPlugin extends ParentPlugin<Config, ParentDependencies, IdentityPluginActions> {\n  public name = \"identity\";\n  public dependsOn = [\"ethereum\", \"dmz\"];\n  public web3: any;\n  public provider: any;\n\n  public reducer(state: IdentityPluginState = {}, action: any): any {\n    return state;\n  }\n\n  public async login(service: string): Promise<void> {\n    this.logger(\"starting DID login\");\n    const response = await this.dependencies.dmz.send({ type: IDENTITY_LOGIN_REQUEST, payload: { service } });\n    this.logger(\"DID login response\", response);\n    return response;\n  }\n  public async signup(service: string): Promise<void> {\n    this.logger(\"starting DID signup\");\n    const response = await this.dependencies.dmz.send({ type: IDENTITY_SIGNUP_REQUEST, payload: { service } });\n    this.logger(\"DID signup response\", response);\n    return response;\n  }\n}\n"
  },
  {
    "path": "packages/components/src/context/index.ts",
    "content": "export * from \"./CivilContext\";\nexport * from \"./CivilProvider\";\n"
  },
  {
    "path": "packages/components/src/features/FeatureFlag.tsx",
    "content": "import * as React from \"react\";\nimport { CivilContext, ICivilContext } from \"../context\";\n\nexport interface FeatureFlagProps {\n  feature: string;\n  replacement?: JSX.Element;\n  replacementComponent?: React.ComponentType;\n  children: any;\n}\nexport class FeatureFlag extends React.Component<FeatureFlagProps> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  public render(): JSX.Element {\n    const { feature, children, replacement, replacementComponent } = this.props;\n\n    if (this.context.features.featureEnabled(feature)) {\n      return <>{children}</>;\n    } else if (replacementComponent) {\n      const Replacement = replacementComponent;\n      return <Replacement />;\n    } else {\n      return <>{replacement}</>;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/components/src/features/index.ts",
    "content": "export * from \"./FeatureFlag\";\n"
  },
  {
    "path": "packages/components/src/hooks/useAsyncEffect.ts",
    "content": "import * as React from \"react\";\n\nexport function useAsyncEffect(fn: () => Promise<void>, watcher: any[]): void {\n  React.useEffect(() => {\n    fn(); // tslint:disable-line\n  }, watcher);\n}\n"
  },
  {
    "path": "packages/components/src/hooks/useIntervalEffect.ts",
    "content": "import * as React from \"react\";\nimport { useAsyncEffect } from \"./useAsyncEffect\";\nconst { useEffect, useState } = React;\n\nexport function useIntervalEffect(fn: () => Promise<void>, intervalMS: number): void {\n  const [ticker, setTicker] = useState(0);\n  useEffect(() => {\n    const interval = setInterval(() => setTicker(ticker + 1), intervalMS);\n\n    return function cleanup(): void {\n      clearInterval(interval);\n    };\n  });\n\n  useAsyncEffect(fn, [ticker]);\n}\n"
  },
  {
    "path": "packages/components/src/hooks/useStateWithLocalStorage.ts",
    "content": "import * as React from \"react\";\nimport {\n  fetchItem,\n  setItem,\n  removeItem,\n  startLocalStorageUpdateBroadcast,\n  CIVIL_LOCAL_STORAGE_EVENTS,\n} from \"@joincivil/utils\";\n\nconst storageKeys: any = {};\n\nwindow.addEventListener(\n  CIVIL_LOCAL_STORAGE_EVENTS.SET_ITEM,\n  ev => {\n    const { key: updatedKey, value: updatedValue } = (ev as any).detail;\n    const handler = storageKeys[`${updatedKey}::${CIVIL_LOCAL_STORAGE_EVENTS.SET_ITEM}`];\n    if (handler) {\n      handler(updatedValue);\n    }\n    ev.stopPropagation();\n  },\n  false,\n);\n\nwindow.addEventListener(\n  CIVIL_LOCAL_STORAGE_EVENTS.UPDATE_ITEM,\n  ev => {\n    const { key: updatedKey, value: updatedValue } = (ev as any).detail;\n    const handler = storageKeys[`${updatedKey}::${CIVIL_LOCAL_STORAGE_EVENTS.UPDATE_ITEM}`];\n    if (typeof handler === \"function\") {\n      handler(updatedValue);\n    }\n    ev.stopPropagation();\n  },\n  false,\n);\n\nstartLocalStorageUpdateBroadcast();\n\nfunction areValuesEqual(prevValue: any, newValue: any): boolean {\n  if (typeof prevValue === \"object\" && typeof newValue === \"object\") {\n    let isEqual = prevValue === newValue;\n\n    if (!isEqual) {\n      const prevValueKeys = Object.keys(prevValue);\n      const newValueKeys = Object.keys(newValue);\n\n      if (prevValueKeys.length !== newValueKeys.length) {\n        isEqual = false;\n      } else {\n        isEqual = true;\n        for (const k of prevValueKeys) {\n          if (prevValue[k] !== newValue[k]) {\n            isEqual = false;\n            break;\n          }\n        }\n      }\n\n      return isEqual;\n    }\n  }\n\n  return prevValue === newValue;\n}\n\nexport default function useStateWithLocalStorage(key: string, defaultValue?: any): [any, React.Dispatch<any>] {\n  const [value, setStateValue] = React.useState(() => {\n    try {\n      const item = fetchItem(key);\n      return item;\n    } catch (err) {\n      return defaultValue;\n    }\n  });\n\n  const setValue = (newValue: any, skipLocalStorageUpdate?: boolean): void => {\n    setStateValue(newValue);\n    if (!skipLocalStorageUpdate) {\n      if (typeof value === \"undefined\" || value === null) {\n        removeItem(key);\n      } else {\n        setItem(key, newValue);\n      }\n    }\n  };\n\n  const refreshValueFromLocalStorage = (): void => {\n    try {\n      const item = fetchItem(key);\n      setStateValue(item);\n    } catch (err) {\n      throw new Error(`Error refreshing state value from localStorage, key=${key}`);\n    }\n  };\n\n  storageKeys[`${key}::${CIVIL_LOCAL_STORAGE_EVENTS.SET_ITEM}`] = (updatedValue: any): void => {\n    if (!areValuesEqual(value, updatedValue)) {\n      setStateValue(updatedValue);\n    }\n  };\n\n  storageKeys[`${key}::${CIVIL_LOCAL_STORAGE_EVENTS.UPDATE_ITEM}`] = (updatedValue: any): void => {\n    refreshValueFromLocalStorage();\n  };\n\n  return [value, setValue];\n}\n"
  },
  {
    "path": "packages/components/src/icons/__snapshots__/icon.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ApplicationInProgressIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 19 18\"\n        width=\"19\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M9 0c3.316 0 6.253 1.8 7.768 4.547l2.18-2.179v6.158h-6.159l2.653-2.652c-1.231-2.369-3.6-3.98-6.442-3.98-3.884 0-7.105 3.222-7.105 7.106S5.115 16.105 9 16.105c3.126 0 5.684-1.99 6.726-4.737h1.99C16.674 15.158 13.168 18 9 18c-5.021 0-9-4.074-9-9s4.074-9 9-9zM7.401 4.737v4.831l4.453 2.653.758-1.232-3.79-2.273v-3.98h-1.42z\"\n          fill=\"#7D7373\"\n          opacity=\".9\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ApplicationInProgressIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ApplicationInProgressIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ApplicationInProgressIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ApprovedNewsroomsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"9\"\n          cy=\"9\"\n          fill=\"none\"\n          r=\"8.25\"\n          stroke=\"#7D7373\"\n        />\n        <path\n          d=\"M12.6 5l-5.13 5.17L5.4 8.09 4 9.5 7.47 13 14 6.41z\"\n          fill=\"#7D7373\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ApprovedNewsroomsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ApprovedNewsroomsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ApprovedNewsroomsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleIndexIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height={24}\n        viewBox=\"0 0 24 24\"\n        width={24}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h24v24h-24z\"\n            opacity=\".3\"\n          />\n          <path\n            d=\"m10.0732422 0 5.9267578 6.11658537v10.88536583c0 1.0989268-.9 1.9980488-2 1.9980488h-12.01c-1.1 0-1.99-.899122-1.99-1.9980488l.08324219-15.00390242c0-1.09892683.89-1.99804878 1.99-1.99804878zm-8.0732422 17.0019512h12v-10.98926827h-5v-3.89512195h-7zm2.5-6.0126829 3.5-3.99609757 3.5 3.99609757h-2.23125v3.9780488h-2.5375v-3.9780488z\"\n            fill=\"#444\"\n            fillRule=\"nonzero\"\n            transform=\"translate(4 3)\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleIndexIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleIndexIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleIndexIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleIndexPanelIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h18v18h-18z\"\n            opacity=\".3\"\n          />\n          <g\n            fill=\"#000000\"\n            fillOpacity=\".5\"\n            fillRule=\"nonzero\"\n          >\n            <path\n              d=\"m12 9.07439826-1.5 1.43373974v-5.17480467h-3.75v-2.97061012h-5.25v11.35156249h3.52038574l1.49697153 1.5238095h-5.02485727c-.825 0-1.4925-.6857142-1.4925-1.5238095l.06243164-11.44270832c0-.83809524.6675-1.52380952 1.4925-1.52380952h6l4.44506836 4.66480654z\"\n              transform=\"translate(3 1)\"\n            />\n            <path\n              d=\"m15.52 11.5-3.591 3.877-1.449-1.559-.98 1.057 2.429 2.625 4.571-4.943z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleIndexPanelIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleIndexPanelIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleIndexPanelIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleSignIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"0 0 24 0 24 24 0 24\"\n          />\n          <g\n            fill=\"#444\"\n            fillRule=\"nonzero\"\n            transform=\"translate(3 4)\"\n          >\n            <path\n              d=\"M8 8C10.21 8 12 6.21 12 4 12 1.79 10.21 0 8 0 5.79 0 4 1.79 4 4 4 6.21 5.79 8 8 8ZM8 2C9.1 2 10 2.9 10 4 10 5.1 9.1 6 8 6 6.9 6 6 5.1 6 4 6 2.9 6.9 2 8 2Z\"\n            />\n            <path\n              d=\"M2 14C2.2 13.37 4.57 12.32 6.96 12.06L9 10.06C8.61 10.02 8.32 10 8 10 5.33 10 0 11.34 0 14L0 16 9 16 7 14 2 14Z\"\n            />\n            <polygon\n              points=\"17.6 8.5 12.47 13.67 10.4 11.59 9 13 12.47 16.5 19 9.91\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleSignIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleSignIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleSignIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleSignPanelIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          opacity=\".3\"\n        >\n          <path\n            d=\"m0 0h20v20h-20z\"\n          />\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(1.667 1.667)\"\n          >\n            <path\n              d=\"m8.33333333 0c-4.6 0-8.33333333 3.73333333-8.33333333 8.33333333 0 4.59999997 3.73333333 8.33333337 8.33333333 8.33333337 4.59999997 0 8.33333337-3.7333334 8.33333337-8.33333337 0-4.6-3.7333334-8.33333333-8.33333337-8.33333333zm-4.10833333 13.5666667c.35833333-.75 2.54166667-1.4833334 4.10833333-1.4833334 1.56666667 0 3.75833337.7333334 4.10833337 1.4833334-1.1333334.9-2.55833337 1.4333333-4.10833337 1.4333333s-2.975-.5333333-4.10833333-1.4333333zm9.4083333-1.2083334c-1.1916666-1.45-4.0833333-1.9416666-5.29999997-1.9416666-1.21666666 0-4.10833333.4916666-5.3 1.9416666-.85-1.1166666-1.36666666-2.5083333-1.36666666-4.02499997 0-3.675 2.99166666-6.66666666 6.66666666-6.66666666 3.67499997 0 6.66666667 2.99166666 6.66666667 6.66666666 0 1.51666667-.5166667 2.90833337-1.3666667 4.02499997z\"\n            />\n            <path\n              d=\"m8.33333333 3.33333333c-1.61666666 0-2.91666666 1.3-2.91666666 2.91666667s1.3 2.91666667 2.91666666 2.91666667c1.61666667 0 2.91666667-1.3 2.91666667-2.91666667s-1.3-2.91666667-2.91666667-2.91666667zm0 4.16666667c-.69166666 0-1.25-.55833333-1.25-1.25s.55833334-1.25 1.25-1.25c.69166667 0 1.25.55833333 1.25 1.25s-.55833333 1.25-1.25 1.25z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleSignPanelIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleSignPanelIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleSignPanelIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BellIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 21 24\"\n        width=\"21\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M10.065 24C11.342 24 12.387 22.955 12.387 21.677L7.742 21.677C7.742 22.955 8.787 24 10.065 24L10.065 24ZM17.761 16.577L17.761 10.065C17.761 6.394 15.274 3.434 11.841 2.605L11.841 1.776C11.841 0.829 11.012 0 10.065 0 9.117 0 8.288 0.829 8.288 1.776L8.288 2.605C4.855 3.434 2.368 6.394 2.368 10.065L2.368 16.577 0 18.945 0 20.129 20.129 20.129 20.129 18.945 17.761 16.577 17.761 16.577Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BellIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BellIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BellIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BookreaderIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"70\"\n        viewBox=\"0 0 70 70\"\n        width=\"70\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M35 29.67C40.992 29.67 45.867 24.795 45.867 18.803 45.867 12.812 40.992 7.936 35 7.936 29.008 7.936 24.133 12.811 24.133 18.803 24.133 24.795 29.008 29.67 35 29.67ZM35 9.157C40.319 9.157 44.646 13.484 44.646 18.803 44.646 24.122 40.319 28.449 35 28.449 29.681 28.449 25.354 24.122 25.354 18.803 25.354 13.484 29.681 9.157 35 9.157Z\"\n          />\n          <path\n            d=\"M8.088 43.479C8.088 45.694 8.408 51.05 11.371 52.947 12.002 53.351 12.703 53.57 13.471 53.606L13.471 55.818 34.39 61.911 34.39 62.267 35 62.089 35.61 62.267 35.61 61.911 56.53 55.818 56.53 53.607C57.297 53.571 57.999 53.351 58.63 52.948 61.593 51.05 61.913 45.694 61.913 43.48 61.913 39.771 58.642 38.08 56.531 37.594L56.531 25.879 35 32.986 13.47 25.88 13.47 37.594C11.359 38.079 8.088 39.77 8.088 43.479ZM56.502 39.242L56.529 38.865C57.876 39.251 60.69 40.423 60.69 43.479 60.69 45.05 60.494 50.302 57.971 51.919 56.92 52.591 55.53 52.537 53.838 51.759 52.035 50.929 51.041 50.008 50.885 49.024 50.643 47.501 52.376 45.898 53.522 44.837L55.301 43.164 53.332 43.486C52.672 43.595 51.168 43.649 50.73 43.126 50.568 42.932 50.565 42.607 50.722 42.159 51.076 41.155 51.85 41.083 53.188 41.041 54.431 41.003 55.976 40.954 56.502 39.242ZM35.61 34.07L55.309 27.569 55.309 38.964C55.048 39.689 54.464 39.78 53.151 39.821 51.914 39.859 50.218 39.912 49.571 41.754 49.184 42.855 49.48 43.535 49.796 43.911 50.275 44.482 51.086 44.695 51.833 44.758 50.643 45.94 49.405 47.483 49.68 49.216 49.908 50.648 51.101 51.843 53.329 52.869 54.024 53.189 54.685 53.406 55.309 53.519L55.309 54.903 35.61 60.64 35.61 34.07ZM14.691 27.569L34.39 34.07 34.39 60.64 14.691 54.902 14.691 53.518C15.316 53.404 15.977 53.188 16.671 52.868 18.899 51.842 20.092 50.647 20.32 49.215 20.595 47.482 19.358 45.939 18.167 44.758 18.914 44.695 19.725 44.481 20.204 43.91 20.52 43.534 20.815 42.855 20.429 41.753 19.782 39.911 18.086 39.858 16.849 39.82 15.536 39.78 14.951 39.688 14.691 38.963L14.691 27.569ZM13.47 38.86L13.47 39.062 13.497 39.242C14.024 40.955 15.569 41.004 16.811 41.042 18.15 41.083 18.924 41.156 19.277 42.16 19.434 42.608 19.432 42.933 19.27 43.127 18.832 43.65 17.327 43.596 16.667 43.487L14.698 43.165 16.477 44.838C17.623 45.899 19.356 47.502 19.114 49.024 18.958 50.009 17.964 50.93 16.161 51.76 14.468 52.539 13.078 52.592 12.029 51.92 9.505 50.303 9.309 45.051 9.309 43.48 9.309 40.388 12.12 39.236 13.47 38.86Z\"\n          />\n          <path\n            d=\"M18.874 66.134C17.868 66.134 17.049 66.953 17.049 67.959 17.049 68.965 17.868 69.783 18.874 69.783 19.88 69.783 20.699 68.965 20.699 67.959 20.699 66.953 19.881 66.134 18.874 66.134ZM18.874 69.377C18.093 69.377 17.456 68.74 17.456 67.959 17.456 67.177 18.093 66.541 18.874 66.541 19.655 66.541 20.292 67.177 20.292 67.959 20.292 68.74 19.656 69.377 18.874 69.377Z\"\n          />\n          <path\n            d=\"M1.213 23.533L2.826 22.685 4.439 23.533 4.132 21.737 5.437 20.464 3.633 20.202 2.826 18.568 2.019 20.202 0.216 20.464 1.521 21.737 1.213 23.533ZM1.09 20.748L2.29 20.574 2.826 19.488 3.362 20.574 4.562 20.748 3.695 21.595 3.899 22.79 2.826 22.227 1.753 22.79 1.958 21.595 1.09 20.748Z\"\n          />\n          <path\n            d=\"M17.812 4.908L18.925 4.323 20.039 4.908 19.826 3.668 20.727 2.79 19.482 2.609 18.925 1.481 18.368 2.609 17.123 2.79 18.024 3.668 17.812 4.908ZM17.998 3.073L18.64 2.981 18.926 2.4 19.213 2.981 19.854 3.073 19.39 3.526 19.499 4.164 18.926 3.863 18.353 4.164 18.462 3.526 17.998 3.073Z\"\n          />\n          <path\n            d=\"M64.98 51.334L65.881 52.212 65.669 53.452 66.782 52.866 67.896 53.452 67.683 52.212 68.585 51.334 67.339 51.152 66.782 50.024 66.226 51.152 64.98 51.334ZM66.782 50.944L67.069 51.524 67.71 51.617 67.246 52.069 67.355 52.708 66.782 52.406 66.209 52.708 66.318 52.069 65.855 51.617 66.496 51.524 66.782 50.944Z\"\n          />\n          <path\n            d=\"M66.782 7.435L66.048 9.696 63.672 9.696 65.594 11.093 64.86 13.353 66.782 11.956 68.705 13.353 67.971 11.093 69.893 9.696 67.517 9.696 66.782 7.435ZM67.492 10.938L67.931 12.287 66.782 11.453 65.634 12.287 66.073 10.938 64.924 10.103 66.345 10.103 66.783 8.752 67.222 10.103 68.642 10.103 67.492 10.938Z\"\n          />\n          <path\n            d=\"M60.307 3.867C61.313 3.867 62.132 3.048 62.132 2.042 62.132 1.036 61.313 0.217 60.307 0.217 59.301 0.217 58.482 1.036 58.482 2.042 58.482 3.048 59.3 3.867 60.307 3.867ZM60.307 0.624C61.088 0.624 61.725 1.261 61.725 2.042 61.725 2.824 61.088 3.46 60.307 3.46 59.525 3.46 58.889 2.824 58.889 2.042 58.889 1.261 59.524 0.624 60.307 0.624Z\"\n          />\n          <path\n            d=\"M66.579 35.803C66.579 36.604 67.231 37.256 68.033 37.256 68.834 37.256 69.486 36.604 69.486 35.803 69.486 35.001 68.834 34.349 68.033 34.349 67.231 34.349 66.579 35.001 66.579 35.803ZM68.033 34.756C68.61 34.756 69.079 35.225 69.079 35.803 69.079 36.38 68.61 36.849 68.033 36.849 67.456 36.849 66.986 36.38 66.986 35.803 66.986 35.225 67.456 34.756 68.033 34.756Z\"\n          />\n          <path\n            d=\"M8.073 11.815C9.133 11.815 9.995 10.953 9.995 9.894 9.995 8.834 9.133 7.972 8.073 7.972 7.013 7.972 6.151 8.834 6.151 9.894 6.151 10.953 7.013 11.815 8.073 11.815ZM8.073 8.379C8.908 8.379 9.588 9.058 9.588 9.894 9.588 10.729 8.908 11.408 8.073 11.408 7.238 11.408 6.558 10.729 6.558 9.894 6.558 9.058 7.238 8.379 8.073 8.379Z\"\n          />\n          <path\n            d=\"M13.89 67.582L13.791 67.976C14.056 68.043 14.324 68.103 14.595 68.157L14.676 67.758C14.411 67.706 14.149 67.647 13.89 67.582Z\"\n          />\n          <path\n            d=\"M6.995 63.886C6.606 63.532 6.231 63.155 5.88 62.766L5.578 63.039C5.937 63.438 6.322 63.824 6.721 64.187L6.995 63.886Z\"\n          />\n          <path\n            d=\"M9.526 65.77C9.077 65.5 8.636 65.204 8.214 64.89L7.97 65.216C8.403 65.539 8.856 65.842 9.316 66.118L9.526 65.77Z\"\n          />\n          <path\n            d=\"M10.918 66.516L10.744 66.884C11.23 67.115 11.734 67.324 12.24 67.505L12.378 67.122C11.884 66.945 11.393 66.742 10.918 66.516Z\"\n          />\n          <path\n            d=\"M3.655 60.438C3.931 60.9 4.233 61.353 4.553 61.786L4.88 61.544C4.569 61.121 4.273 60.679 4.004 60.229L3.655 60.438Z\"\n          />\n          <path\n            d=\"M2.196 55.868C2.068 55.359 1.964 54.838 1.888 54.321L1.485 54.38C1.564 54.912 1.67 55.446 1.8 55.967L2.196 55.868Z\"\n          />\n          <path\n            d=\"M2.272 57.516C2.452 58.02 2.661 58.523 2.891 59.012L3.259 58.837C3.034 58.361 2.83 57.87 2.654 57.379L2.272 57.516Z\"\n          />\n          <path\n            d=\"M1.307 51.973C1.307 52.24 1.314 52.506 1.327 52.77L1.733 52.751C1.721 52.493 1.714 52.233 1.714 51.973 1.714 51.706 1.721 51.439 1.734 51.171L1.328 51.151C1.314 51.426 1.307 51.7 1.307 51.973Z\"\n          />\n          <path\n            d=\"M2.03 48.796L1.631 48.716C1.577 48.987 1.529 49.257 1.49 49.528L1.892 49.588C1.931 49.324 1.977 49.059 2.03 48.796Z\"\n          />\n          <path\n            d=\"M68.939 57.8L68.532 57.792C68.527 58.06 68.512 58.326 68.488 58.59L68.893 58.627C68.918 58.354 68.934 58.079 68.939 57.8Z\"\n          />\n          <path\n            d=\"M66.054 65.168C66.455 64.716 66.822 64.23 67.146 63.724L66.804 63.505C66.491 63.992 66.137 64.461 65.75 64.897L66.054 65.168Z\"\n          />\n          <path\n            d=\"M61.485 67.862C60.942 68.072 60.38 68.239 59.813 68.361L59.897 68.759C60.486 68.633 61.068 68.459 61.632 68.241L61.485 67.862Z\"\n          />\n          <path\n            d=\"M67.624 61.965L67.998 62.127C68.238 61.574 68.436 60.998 68.585 60.414L68.191 60.313C68.047 60.876 67.856 61.432 67.624 61.965Z\"\n          />\n          <path\n            d=\"M64.49 66.107C64.04 66.476 63.558 66.811 63.057 67.104L63.262 67.456C63.782 67.152 64.282 66.804 64.748 66.422L64.49 66.107Z\"\n          />\n          <path\n            d=\"M58.076 68.588C57.812 68.601 57.547 68.607 57.276 68.6L57.268 69.007C57.346 69.009 57.424 69.009 57.503 69.009 57.702 69.009 57.9 69.005 58.097 68.994L58.076 68.588Z\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"19.028\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"28.795\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"22.284\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"25.539\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BookreaderIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BookreaderIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BookreaderIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BrainIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"74\"\n        viewBox=\"0 0 74 74\"\n        width=\"74\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M15.655 32.216C14.873 34.266 15.594 36.476 15.871 37.188 14.916 40.662 17.583 42.734 19.452 43.493 19.57 44.285 19.944 44.946 20.569 45.46 22.338 46.914 25.706 46.726 27.107 46.573 27.918 50.057 30.993 50.102 33.271 50.135 34.108 50.148 34.898 50.158 35.482 50.318 37.083 50.755 40.307 56.437 41.961 59.916L42.188 60.39 47.399 59.122 47.369 58.586C47.361 58.443 47.19 55.685 45.725 53.361 46.699 53.487 47.865 53.472 48.793 52.961 49.456 52.596 49.918 52.037 50.171 51.297 51.265 51.131 54.034 50.525 55.289 48.576 55.946 47.557 56.09 46.351 55.723 44.983 56.199 44.681 56.56 44.306 56.802 43.86 57.319 42.906 57.134 41.905 56.959 41.354 57.584 40.581 57.877 39.694 57.834 38.713 57.726 36.304 55.557 34.056 54.835 33.371 54.833 28.189 49.386 26.433 48.05 26.081 46.661 23.753 44.955 22.368 42.978 21.963 40.789 21.513 38.903 22.409 38.079 22.9 36.451 21.568 34.715 20.962 32.929 21.106 30.21 21.321 28.172 23.195 27.43 23.978 25.518 23.399 23.78 23.513 22.26 24.317 19.714 25.662 18.592 28.522 18.284 29.456 16.998 30.087 16.115 31.014 15.655 32.216ZM54.206 47.875C53.002 49.75 49.64 50.067 49.607 50.07L49.13 50.113 49.032 50.58C48.906 51.171 48.625 51.58 48.172 51.83 47.003 52.473 44.933 51.948 44.236 51.691L41.122 50.542 43.578 52.774C45.328 54.364 45.868 57.008 46.023 58.13L42.899 58.89C42.086 57.223 40.013 53.167 38.007 50.806 41.392 50.783 43.768 48.553 44.686 47.526 45.934 48.373 47.249 48.716 48.598 48.547 50.984 48.249 52.73 46.425 53.277 45.784 53.733 45.721 54.149 45.631 54.525 45.516 54.736 46.439 54.63 47.215 54.206 47.875ZM19.076 30.511L19.359 30.386 19.44 30.087C19.448 30.054 20.353 26.783 22.863 25.458 24.163 24.772 25.696 24.729 27.417 25.332L27.846 25.482 28.131 25.13C28.152 25.105 30.201 22.617 33.03 22.394 34.598 22.262 36.132 22.874 37.595 24.186L37.99 24.541 38.415 24.221C38.434 24.206 40.396 22.753 42.718 23.227 44.385 23.569 45.848 24.826 47.07 26.964L47.216 27.219 47.503 27.277C47.758 27.328 53.74 28.599 53.539 33.624L53.526 33.934 53.76 34.137C53.786 34.16 56.444 36.497 56.544 38.774 56.576 39.532 56.317 40.186 55.752 40.772L55.441 41.1 55.639 41.506C55.644 41.516 56.095 42.467 55.663 43.252 55.293 43.925 54.326 44.368 52.868 44.533L52.593 44.564 52.426 44.785C52.41 44.807 50.748 46.976 48.439 47.265 47.261 47.413 46.099 47.033 44.982 46.139L44.456 45.718 44.058 46.263C44.027 46.304 40.969 50.393 36.403 49.331 36.204 49.212 36.01 49.124 35.822 49.072 35.08 48.87 34.21 48.857 33.291 48.843 30.512 48.803 28.66 48.567 28.27 45.763L28.179 45.106 27.525 45.215C26.317 45.418 22.861 45.674 21.391 44.463 20.945 44.096 20.722 43.62 20.705 43.01L20.692 42.555 20.259 42.415C20.085 42.358 16.02 40.989 17.17 37.346L17.244 37.11 17.142 36.885C17.132 36.862 16.125 34.593 16.864 32.668 17.227 31.722 17.972 30.996 19.076 30.511Z\"\n          />\n          <path\n            d=\"M29.103 36.516L29.169 36.132C29.326 35.223 30.033 32.72 31.407 32.063 31.984 31.786 32.643 31.863 33.418 32.293 34.401 32.839 35.259 33.31 36.047 33.713 36.049 33.714 36.05 33.716 36.053 33.717L36.053 33.716C37.17 34.287 38.142 34.717 39.096 35.005 38.329 35.417 37.347 35.889 36.374 36.198 36.114 36.282 35.42 36.502 35.283 37.117 35.145 37.734 35.634 38.186 36.152 38.664 36.746 39.216 37.422 39.839 37.381 40.654 37.366 40.964 37.266 41.08 37.192 41.14 36.726 41.518 35.367 41.301 34.275 41.126 33.587 41.016 32.938 40.912 32.375 40.911L32.373 42.202C32.834 42.202 33.434 42.298 34.071 42.399 34.808 42.518 35.559 42.638 36.239 42.638 36.929 42.638 37.546 42.514 38.006 42.141 38.417 41.807 38.64 41.329 38.67 40.717 38.74 39.3 37.71 38.347 37.028 37.717 36.936 37.631 36.827 37.53 36.733 37.438 36.744 37.435 36.754 37.431 36.765 37.428 38.612 36.841 40.432 35.754 41.018 35.387 41.65 35.45 42.312 35.461 43.039 35.412 45.929 35.232 46.626 36.628 47.245 38.486 47.817 40.203 48.936 41.642 50.027 42.067 50.276 42.165 50.502 42.202 50.702 42.202 51.015 42.202 51.266 42.11 51.445 42.01L50.818 40.882C50.791 40.897 50.705 40.944 50.494 40.863 49.883 40.626 48.966 39.568 48.468 38.076 47.916 36.422 47.119 34.686 44.825 34.222 45.601 32.809 47.098 32.908 47.118 32.914L47.494 31.68C47.109 31.548 46.152 31.587 45.236 32.074 44.65 32.384 43.901 32.986 43.459 34.107 43.294 34.109 43.13 34.111 42.954 34.123 40.617 34.271 39.029 33.785 36.621 32.555 36.333 32.097 37.26 29.716 38.577 27.541L37.473 26.872C37.114 27.466 35.591 30.068 35.34 31.876 34.933 31.655 34.506 31.419 34.045 31.163 32.891 30.522 31.817 30.433 30.849 30.896 29.551 31.518 28.787 33.031 28.358 34.236 27.23 32.707 25.459 32.08 24.678 31.81 24.559 31.768 24.467 31.738 24.414 31.714L23.839 32.87C23.917 32.909 24.061 32.962 24.255 33.03 25.082 33.316 26.897 33.959 27.681 35.617L21.328 37.668 21.725 38.896 29.103 36.516Z\"\n          />\n          <polygon\n            points=\"56.163 20.173 57.454 20.173 57.454 26.615 56.163 26.615\"\n            transform=\"translate(56.81 23.39)rotate(29.4)translate(-56.81 -23.39)\"\n          />\n          <rect\n            height=\"5.027\"\n            width=\"1.291\"\n            x=\"43.272\"\n            y=\"13.95\"\n          />\n          <polygon\n            points=\"23.129 16.328 28.376 16.328 28.376 17.618 23.129 17.618\"\n            transform=\"translate(25.75 16.97)rotate(51.75)translate(-25.75 -16.97)\"\n          />\n          <polygon\n            points=\"11.465 24.798 16.075 24.798 16.075 26.089 11.465 26.089\"\n            transform=\"translate(13.77 25.44)rotate(-160.74)translate(-13.77 -25.44)\"\n          />\n          <polygon\n            points=\"9.55 46.375 15.545 46.375 15.545 47.666 9.55 47.666\"\n            transform=\"translate(12.55 47.02)rotate(-44.14)translate(-12.55 -47.02)\"\n          />\n          <polygon\n            points=\"18.316 53.554 24.093 53.554 24.093 54.845 18.316 54.845\"\n            transform=\"translate(21.2 54.2)rotate(-68.13)translate(-21.2 -54.2)\"\n          />\n          <polygon\n            points=\"32.029 54.895 33.32 54.895 33.32 60.068 32.029 60.068\"\n            transform=\"translate(32.67 57.48)rotate(-173.42)translate(-32.67 -57.48)\"\n          />\n          <polygon\n            points=\"54.441 54.818 60.545 54.818 60.545 56.109 54.441 56.109\"\n            transform=\"translate(57.493145 55.46)rotate(-137.92)translate(-57.49 -55.46)\"\n          />\n          <rect\n            height=\"1.291\"\n            width=\"5.208\"\n            x=\"59.758\"\n            y=\"42.34\"\n          />\n          <rect\n            height=\"1.291\"\n            width=\"3.511\"\n            x=\"9.035\"\n            y=\"35.377\"\n          />\n          <polygon\n            points=\"61.145 30.206 62.437 30.206 62.437 35.209 61.145 35.209\"\n            transform=\"translate(61.79 32.71)rotate(-125.47)translate(-61.79 -32.71)\"\n          />\n          <path\n            d=\"M21.745 71.842C21.745 70.778 20.879 69.913 19.816 69.913 18.752 69.913 17.886 70.778 17.886 71.842 17.886 72.905 18.752 73.771 19.816 73.771 20.879 73.771 21.745 72.906 21.745 71.842ZM18.316 71.842C18.316 71.015 18.988 70.343 19.815 70.343 20.642 70.343 21.314 71.015 21.314 71.842 21.314 72.669 20.642 73.341 19.815 73.341 18.988 73.341 18.316 72.669 18.316 71.842Z\"\n          />\n          <path\n            d=\"M2.85 19.63L1.998 21.358 0.089 21.634 1.471 22.979 1.144 24.878 2.849 23.981 4.554 24.878 4.229 22.978 5.609 21.633 3.703 21.357 2.85 19.63ZM3.768 22.828L3.984 24.091 2.85 23.496 1.717 24.091 1.933 22.828 1.015 21.934 2.284 21.75 2.85 20.6 3.418 21.75 4.685 21.934 3.768 22.828Z\"\n          />\n          <path\n            d=\"M20.458 2.758L19.868 1.565 19.28 2.758 17.964 2.949 18.916 3.877 18.691 5.188 19.867 4.569 21.045 5.187 20.82 3.877 21.772 2.949 20.458 2.758ZM20.476 4.402L19.869 4.084 19.264 4.401 19.379 3.728 18.89 3.249 19.567 3.151 19.87 2.537 20.174 3.151 20.852 3.249 20.361 3.728 20.476 4.402Z\"\n          />\n          <path\n            d=\"M68.556 54.266L69.508 55.195 69.283 56.506 70.46 55.886 71.637 56.506 71.413 55.195 72.364 54.266 71.049 54.074 70.459 52.882 69.87 54.074 68.556 54.266ZM70.461 53.855L70.765 54.468 71.442 54.567 70.952 55.046 71.068 55.72 70.462 55.402 69.856 55.72 69.971 55.046 69.482 54.567 70.159 54.468 70.461 53.855Z\"\n          />\n          <path\n            d=\"M70.461 7.86L69.685 10.25 67.173 10.25 69.204 11.727 68.428 14.115 70.461 12.639 72.492 14.115 71.717 11.727 73.748 10.25 71.236 10.25 70.461 7.86ZM71.211 11.563L71.674 12.99 70.461 12.108 69.247 12.99 69.71 11.563 68.496 10.681 69.997 10.681 70.461 9.254 70.924 10.681 72.425 10.681 71.211 11.563Z\"\n          />\n          <path\n            d=\"M63.615 0.23C62.552 0.23 61.686 1.095 61.686 2.159 61.686 3.222 62.552 4.088 63.615 4.088 64.679 4.088 65.544 3.222 65.544 2.159 65.544 1.095 64.679 0.23 63.615 0.23ZM63.615 3.658C62.788 3.658 62.116 2.986 62.116 2.159 62.116 1.332 62.788 0.66 63.615 0.66 64.442 0.66 65.114 1.332 65.114 2.159 65.114 2.986 64.442 3.658 63.615 3.658Z\"\n          />\n          <path\n            d=\"M70.246 37.848C70.246 38.696 70.935 39.385 71.783 39.385 72.63 39.385 73.319 38.696 73.319 37.848 73.319 37.001 72.63 36.312 71.783 36.312 70.935 36.312 70.246 37.001 70.246 37.848ZM71.783 36.742C72.393 36.742 72.889 37.238 72.889 37.848 72.889 38.458 72.393 38.955 71.783 38.955 71.173 38.955 70.676 38.458 70.676 37.848 70.676 37.238 71.173 36.742 71.783 36.742Z\"\n          />\n          <path\n            d=\"M8.396 8.427C7.276 8.427 6.366 9.339 6.366 10.458 6.366 11.578 7.277 12.49 8.396 12.49 9.516 12.49 10.427 11.578 10.427 10.458 10.427 9.339 9.517 8.427 8.396 8.427ZM8.396 12.06C7.514 12.06 6.796 11.342 6.796 10.459 6.796 9.577 7.514 8.858 8.396 8.858 9.278 8.858 9.997 9.577 9.997 10.459 9.997 11.342 9.278 12.06 8.396 12.06Z\"\n          />\n          <path\n            d=\"M15.377 71.631C15.097 71.575 14.821 71.512 14.547 71.444L14.441 71.86C14.721 71.931 15.004 71.994 15.29 72.053L15.377 71.631Z\"\n          />\n          <path\n            d=\"M8.288 68.943C8.741 69.282 9.22 69.603 9.71 69.896L9.932 69.528C9.454 69.241 8.987 68.928 8.545 68.598L8.288 68.943Z\"\n          />\n          <path\n            d=\"M6.968 67.853L7.257 67.535C6.846 67.16 6.45 66.763 6.079 66.351L5.76 66.64C6.14 67.062 6.546 67.469 6.968 67.853Z\"\n          />\n          <path\n            d=\"M1.243 54.943C1.243 55.225 1.25 55.505 1.263 55.786L1.693 55.766C1.68 55.493 1.674 55.219 1.674 54.944 1.674 54.662 1.68 54.379 1.694 54.097L1.264 54.075C1.25 54.364 1.243 54.654 1.243 54.943Z\"\n          />\n          <path\n            d=\"M12.803 71.363L12.947 70.957C12.427 70.771 11.907 70.555 11.405 70.317L11.22 70.705C11.736 70.95 12.268 71.171 12.803 71.363Z\"\n          />\n          <path\n            d=\"M1.431 57.488C1.515 58.052 1.628 58.617 1.766 59.165L2.182 59.061C2.048 58.526 1.939 57.976 1.856 57.424L1.431 57.488Z\"\n          />\n          <path\n            d=\"M3.308 62.199C3.072 61.698 2.857 61.179 2.669 60.657L2.264 60.801C2.457 61.337 2.676 61.869 2.92 62.382L3.308 62.199Z\"\n          />\n          <path\n            d=\"M4.095 63.671L3.725 63.891C4.016 64.377 4.335 64.857 4.675 65.315L5.021 65.06C4.69 64.612 4.378 64.145 4.095 63.671Z\"\n          />\n          <path\n            d=\"M1.437 52.358L1.862 52.421C1.904 52.142 1.952 51.864 2.008 51.585L1.587 51.499C1.528 51.786 1.479 52.072 1.437 52.358Z\"\n          />\n          <path\n            d=\"M72.74 61.102L72.31 61.095C72.305 61.378 72.289 61.66 72.264 61.939L72.692 61.978C72.719 61.688 72.735 61.397 72.74 61.102Z\"\n          />\n          <path\n            d=\"M69.689 68.891C70.113 68.415 70.502 67.902 70.845 67.367L70.482 67.134C70.152 67.651 69.778 68.146 69.368 68.606L69.689 68.891Z\"\n          />\n          <path\n            d=\"M63.092 72.267L63.181 72.687C63.804 72.555 64.421 72.37 65.016 72.14L64.859 71.738C64.287 71.962 63.692 72.139 63.092 72.267Z\"\n          />\n          <path\n            d=\"M68.31 70.217L68.038 69.884C67.564 70.272 67.053 70.627 66.523 70.938L66.739 71.31C67.29 70.987 67.818 70.619 68.31 70.217Z\"\n          />\n          <path\n            d=\"M71.35 65.505L71.745 65.677C71.999 65.091 72.208 64.482 72.366 63.866L71.95 63.759C71.796 64.353 71.595 64.941 71.35 65.505Z\"\n          />\n          <path\n            d=\"M60.412 72.52L60.403 72.95C60.484 72.952 60.565 72.953 60.645 72.953 60.857 72.953 61.068 72.947 61.279 72.936L61.257 72.506C60.978 72.52 60.698 72.528 60.412 72.52Z\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"23.557\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"30.441\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"20.115\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"28.056\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BrainIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BrainIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BrainIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CVLToken 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"33\"\n        viewBox=\"0 0 32 33\"\n        width=\"32\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <ellipse\n            cx=\"17\"\n            cy=\"15.5\"\n            rx=\"13\"\n            ry=\"15.5\"\n            stroke=\"#FFFFFF\"\n          />\n          <path\n            d=\"M15 .172A11.117 11.117 0 0 0 13.051 0C5.864 0 0 6.921 0 15.5S5.864 31 13.051 31c.658 0 1.309-.058 1.949-.172C8.558 29.71 3.642 23.26 3.642 15.5 3.642 7.74 8.558 1.29 15 .172z\"\n            stroke=\"#FFFFFF\"\n          />\n          <text\n            fill=\"#FFFFFF\"\n            fontFamily=\"LibreFranklin-Bold, Libre Franklin\"\n            fontSize=\"9\"\n          >\n            <tspan\n              x=\"8\"\n              y=\"18\"\n            >\n              CVL\n            </tspan>\n          </text>\n          <path\n            d=\"M8 1h3v1.227H8zM3.813 3.864H8V5.09H3.812zM2.125 6.727H5.5v1.227H2.125zM0 12.455h3.813v1.227H0zM0 15.318h3.813v1.227H0zM0 18.182h3.813v1.227H0zM1 21.046h3.938v1.227H1zM2.969 23.909h3.094v1.227H2.969zM5.063 26.773h3.812V28H5.062zM1 9.59h3.375v1.228H1z\"\n            fill=\"#FFFFFF\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CVLToken\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CvlToken\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CvlToken\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons Chevron 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height={14}\n        version=\"1.1\"\n        viewBox=\"0 0 14 14\"\n        width={14}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"0 0 18 0 18 18 0 18\"\n          />\n          <polygon\n            fill=\"#2B56FF\"\n            fillRule=\"nonzero\"\n            points=\"7.5 4.5 6.4425 5.5575 9.8775 9 6.4425 12.4425 7.5 13.5 12 9\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Chevron\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Chevron\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Chevron\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CivilTutorialIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-1.5 -1.5)\"\n          >\n            <polygon\n              points=\"0 0 22.909 0 22.909 22.909 0 22.909\"\n            />\n            <path\n              d=\"M14.318 3.818L14.318 10.5 4.935 10.5 4.372 11.063 3.818 11.617 3.818 3.818 14.318 3.818ZM15.273 1.909L2.864 1.909C2.339 1.909 1.909 2.339 1.909 2.864L1.909 16.227 5.727 12.409 15.273 12.409C15.798 12.409 16.227 11.98 16.227 11.455L16.227 2.864C16.227 2.339 15.798 1.909 15.273 1.909ZM20.045 5.727L18.136 5.727 18.136 14.318 5.727 14.318 5.727 16.227C5.727 16.752 6.157 17.182 6.682 17.182L17.182 17.182 21 21 21 6.682C21 6.157 20.57 5.727 20.045 5.727Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CivilTutorialIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CivilTutorialIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CivilTutorialIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ClockIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#8B8581\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M9 0C4.05 0 0 4.05 0 9 0 13.95 4.05 18 9 18 13.95 18 18 13.95 18 9 18 4.05 13.95 0 9 0L9 0ZM9 16.2C5.04 16.2 1.8 12.96 1.8 9 1.8 5.04 5.04 1.8 9 1.8 12.96 1.8 16.2 5.04 16.2 9 16.2 12.96 12.96 16.2 9 16.2L9 16.2Z\"\n          />\n          <polygon\n            points=\"9.45 4.5 8.1 4.5 8.1 9.9 12.78 12.78 13.5 11.61 9.45 9.18\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ClockIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ClockIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ClockIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CloseXIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"42\"\n        viewBox=\"0 0 42 42\"\n        width=\"42\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M20.571 18.657l6.01-6.01 1.415 1.414-6.01 6.01 6.01 6.01-1.415 1.415-6.01-6.01-6.01 6.01-1.415-1.415 6.01-6.01-6.01-6.01 1.415-1.415 6.01 6.01z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CloseXIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CloseXIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CloseXIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CommitVoteSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <path\n            d=\"M76.965 58.739C76.832 58.365 76.478 58.115 76.081 58.116L68.863 58.116 68.863 47.561C68.86 45.671 67.328 44.14 65.438 44.136L64.193 44.136 64.193 40.736C64.191 39.426 63.698 38.163 62.81 37.199L44.826 18.611C43.049 16.776 40.214 16.472 38.088 17.889L29.489 23.624C28.003 24.605 27.209 26.349 27.446 28.114L29.121 40.923C29.148 42.637 29.774 44.287 30.89 45.587L33.941 49.137 33.941 58.098 27.919 58.098C27.522 58.096 27.168 58.346 27.035 58.72L22.053 73.709C21.952 73.996 21.997 74.314 22.172 74.561 22.348 74.809 22.634 74.956 22.938 74.955L81.062 74.955C81.366 74.956 81.652 74.809 81.828 74.561 82.003 74.314 82.048 73.996 81.947 73.709L76.965 58.739ZM30.989 40.855C30.992 40.817 30.992 40.78 30.989 40.742L29.308 27.877C29.169 26.813 29.654 25.764 30.554 25.181L39.122 19.445C40.498 18.529 42.331 18.725 43.481 19.912L61.459 38.476C62.024 39.093 62.337 39.9 62.337 40.736L62.337 44.111 45.057 44.111 43.811 41.695C43.579 41.234 43.017 41.049 42.556 41.281 42.096 41.513 41.91 42.075 42.142 42.536L49.167 56.441C49.792 57.684 49.587 59.184 48.651 60.214 47.715 61.244 46.242 61.591 44.945 61.087L44.739 61.006C44.031 60.73 43.436 60.223 43.052 59.567L38.412 51.584C38.253 51.311 38.07 51.052 37.864 50.812L32.31 44.373C31.468 43.393 31 42.146 30.989 40.855ZM36.438 52.063C36.572 52.218 36.69 52.385 36.793 52.562L41.414 60.508C42.01 61.529 42.934 62.319 44.035 62.749L44.241 62.83C44.85 63.068 45.499 63.191 46.153 63.191 47.966 63.184 49.647 62.239 50.596 60.693 51.545 59.147 51.626 57.221 50.811 55.601L45.997 45.98 65.438 45.98C66.298 45.98 66.995 46.677 66.995 47.536L66.995 67.196 35.809 67.196 35.809 51.31 36.438 52.063ZM24.233 73.093L28.592 59.972 33.941 59.972 33.941 67.196 31.207 67.196C30.692 67.196 30.273 67.614 30.273 68.13 30.273 68.646 30.692 69.064 31.207 69.064L71.46 69.064C71.976 69.064 72.394 68.646 72.394 68.13 72.394 67.614 71.976 67.196 71.46 67.196L68.863 67.196 68.863 59.966 75.402 59.966 79.761 73.086 24.233 73.093Z\"\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n          />\n          <path\n            d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71Z\"\n            fill=\"#FFFFFF\"\n            stroke=\"#FFFFFF\"\n            strokeWidth=\"3\"\n          />\n          <path\n            d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71ZM83.6 89L77.6 83 79.28 81.32 83.6 85.64 92.72 76.52 94.4 78.2 83.6 89 83.6 89Z\"\n            fill=\"#2B56FF\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CommitVoteSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CommitVoteSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CommitVoteSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DashboardNewsroomApplicationIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"34\"\n        version=\"1.1\"\n        viewBox=\"0 0 34 34\"\n        width=\"34\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <defs>\n          <rect\n            height=\"875\"\n            width=\"760\"\n            x=\"518\"\n            y=\"148\"\n          />\n          <filter\n            filterUnits=\"objectBoundingBox\"\n            height=\"101.4%\"\n            width=\"101.6%\"\n            x=\"-0.8%\"\n            y=\"-0.7%\"\n          >\n            <feOffset\n              dx=\"0\"\n              dy=\"0\"\n              in=\"SourceAlpha\"\n              result=\"shadowOffsetOuter1\"\n            />\n            <feGaussianBlur\n              in=\"shadowOffsetOuter1\"\n              result=\"shadowBlurOuter1\"\n              stdDeviation=\"2\"\n            />\n            <feComposite\n              in=\"shadowBlurOuter1\"\n              in2=\"SourceAlpha\"\n              operator=\"out\"\n              result=\"shadowBlurOuter1\"\n            />\n            <feColorMatrix\n              in=\"shadowBlurOuter1\"\n              type=\"matrix\"\n              values=\"0 0 0 0 0.768627451   0 0 0 0 0.760784314   0 0 0 0 0.752941176  0 0 0 1 0\"\n            />\n          </filter>\n        </defs>\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-887.000000, -288.000000)\"\n          >\n            <rect\n              fill=\"#FFFFFF\"\n              height=\"1352\"\n              width=\"1440\"\n              x=\"0\"\n              y=\"0\"\n            />\n            <polygon\n              fill=\"#2B56FF\"\n              fillOpacity=\"0.06\"\n              points=\"0 67 1440 67 1440 664 0 664\"\n            />\n            <g>\n              <use\n                fill=\"black\"\n                fillOpacity=\"1\"\n                filter=\"url(#filter-2)\"\n              />\n              <rect\n                fillRule=\"evenodd\"\n                height=\"874\"\n                stroke=\"#E9E9EA\"\n                width=\"759\"\n                x=\"518.5\"\n                y=\"148.5\"\n              />\n            </g>\n            <g\n              transform=\"translate(662.000000, 281.000000)\"\n            >\n              <g\n                transform=\"translate(225.000000, 7.000000)\"\n              >\n                <path\n                  d=\"M0,0 L26,0 L26,27 L0,27 L0,0 Z M3,3 L3,24 L23,24 L23,3 L3,3 Z\"\n                  fill=\"#2B56FF\"\n                />\n                <path\n                  d=\"M6,6 L20,6 L20,13 L6,13 L6,6 Z M8,8 L8,11 L18,11 L18,8 L8,8 Z\"\n                  fill=\"#2B56FF\"\n                />\n                <polygon\n                  fill=\"#2B56FF\"\n                  points=\"6 14.95 20 14.95 20 16.95 6 16.95\"\n                />\n                <polygon\n                  fill=\"#2B56FF\"\n                  points=\"6 18.85 20 18.85 20 20.85 6 20.85\"\n                />\n                <g\n                  transform=\"translate(16.000000, 15.950000)\"\n                >\n                  <circle\n                    cx=\"9.2607145\"\n                    cy=\"9.2607145\"\n                    fill=\"#2B56FF\"\n                    fillRule=\"nonzero\"\n                    r=\"8.2607145\"\n                  />\n                  <path\n                    d=\"M9.9,4.5 L8.1,4.5 L8.1,8.1 L4.5,8.1 L4.5,9.9 L8.1,9.9 L8.1,13.5 L9.9,13.5 L9.9,9.9 L13.5,9.9 L13.5,8.1 L9.9,8.1 L9.9,4.5 L9.9,4.5 Z M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M9,16.2 C5.04,16.2 1.8,12.96 1.8,9 C1.8,5.04 5.04,1.8 9,1.8 C12.96,1.8 16.2,5.04 16.2,9 C16.2,12.96 12.96,16.2 9,16.2 L9,16.2 Z\"\n                    fill=\"#FFFFFF\"\n                  />\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DashboardNewsroomApplicationIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DashboardNewsroomApplicationIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DashboardNewsroomApplicationIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DisclosureArrowIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"12\"\n        viewBox=\"0 0 8 12\"\n        width=\"8\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-693, -56)\"\n          >\n            <polygon\n              points=\"694.4 56 693 57.4 697.6 62 693 66.6 694.4 68 700.4 62\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DisclosureArrowIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DisclosureArrowIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DisclosureArrowIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DropdownArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"5\"\n        viewBox=\"0 0 10 5\"\n        width=\"10\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <polygon\n          fill=\"#3F3C39\"\n          points=\"0,0 10,0 5,5\"\n          stroke=\"none\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DropdownArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DropdownArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DropdownArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons EmbedIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"32px\"\n        version=\"1.1\"\n        viewBox=\"0 0 32 32\"\n        width=\"32px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"4 4 28 4 28 28 4 28\"\n          />\n          <path\n            d=\"M9.42130253,10.2684345 C10.3266052,9.36313187 11.7034439,10.7399706 10.7981413,11.6452732 L6.35806996,16.0849552 L10.7981413,20.5250265 C11.7034439,21.4303291 10.3266052,22.8071678 9.42130253,21.9018652 L4.29281186,16.7733745 C3.91277945,16.3933421 3.91277945,15.7765682 4.29281186,15.3965358 L9.42130253,10.2684345 Z M17.0772424,7.74721537 C17.4074345,6.51211003 19.2857914,7.01401759 18.9555993,8.2495123 L14.6222174,24.4234737 C14.2920253,25.658579 12.4136684,25.1566715 12.7438605,23.9211768 L17.0772424,7.74721537 Z M20.9017079,11.6452732 C19.9964053,10.7399706 21.373244,9.36313187 22.2785466,10.2684345 L27.4070373,15.3965358 C27.7870697,15.7765682 27.7870697,16.3933421 27.4070373,16.7733745 L22.2785466,21.9018652 C21.373244,22.8071678 19.9964053,21.4303291 20.9017079,20.5250265 L25.3417792,16.0849552 L20.9017079,11.6452732 Z\"\n            fill=\"#191919\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            EmbedIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    EmbedIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              EmbedIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ErrorIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h28v28h-28z\"\n          />\n          <path\n            d=\"m12.8333333 17.5h2.3333334v2.3333333h-2.3333334zm0-9.33333333h2.3333334v7.00000003h-2.3333334zm1.155-5.83333334c-6.43999997 0-11.65499997 5.22666667-11.65499997 11.66666667s5.215 11.6666667 11.65499997 11.6666667c6.4516667 0 11.6783334-5.2266667 11.6783334-11.6666667s-5.2266667-11.66666667-11.6783334-11.66666667zm.0116667 20.99999997c-5.15666667 0-9.33333333-4.1766666-9.33333333-9.3333333 0-5.15666667 4.17666666-9.33333333 9.33333333-9.33333333 5.1566667 0 9.3333333 4.17666666 9.3333333 9.33333333 0 5.1566667-4.1766666 9.3333333-9.3333333 9.3333333z\"\n            fill=\"#f2524a\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ErrorIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ErrorIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ErrorIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExamIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"70\"\n        viewBox=\"0 0 70 70\"\n        width=\"70\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M13.683 62.064L56.317 62.064 56.317 20.618 49.735 12.209 46.574 8.17 46.39 7.936 13.683 7.936 13.683 62.064ZM46.704 10.317L48.929 13.161 54.453 20.219 46.704 20.219 46.704 10.317ZM14.903 9.157L45.483 9.157 45.483 21.44 55.097 21.44 55.097 60.843 14.903 60.843 14.903 9.157Z\"\n          />\n          <path\n            d=\"M47.632 31.191L43.315 27.832 27.587 48.063 27.517 48.153 25.328 55.424 26.593 54.663 31.156 53.733 32.58 55.747 34.976 53.067 36.437 54.891 43.809 50.257 43.16 49.223 36.708 53.277 35.027 51.178 32.692 53.789 31.693 52.379 29.723 52.779 31.837 51.507 47.632 31.191ZM27.408 52.747L28.396 49.466 30.346 50.98 27.408 52.747ZM28.925 48.33L43.529 29.546 45.919 31.406 31.316 50.188 28.925 48.33Z\"\n          />\n          <rect\n            height=\"1.221\"\n            width=\"12.216\"\n            x=\"32.635\"\n            y=\"22.613\"\n          />\n          <rect\n            height=\"1.221\"\n            width=\"3.936\"\n            x=\"32.635\"\n            y=\"33.31\"\n          />\n          <path\n            d=\"M27.145 26.747C29.087 26.747 30.668 25.167 30.668 23.224 30.668 21.281 29.087 19.701 27.145 19.701 25.202 19.701 23.622 21.281 23.622 23.224 23.622 25.167 25.202 26.747 27.145 26.747ZM27.145 20.922C28.414 20.922 29.447 21.955 29.447 23.224 29.447 24.493 28.414 25.526 27.145 25.526 25.875 25.526 24.843 24.493 24.843 23.224 24.843 21.955 25.876 20.922 27.145 20.922Z\"\n          />\n          <path\n            d=\"M30.668 33.921C30.668 31.978 29.087 30.398 27.145 30.398 25.202 30.398 23.622 31.978 23.622 33.921 23.622 35.864 25.202 37.443 27.145 37.443 29.087 37.443 30.668 35.864 30.668 33.921ZM24.843 33.921C24.843 32.651 25.876 31.619 27.145 31.619 28.413 31.619 29.447 32.652 29.447 33.921 29.447 35.19 28.414 36.223 27.145 36.223 25.875 36.223 24.843 35.19 24.843 33.921Z\"\n          />\n          <path\n            d=\"M20.635 67.959C20.635 66.953 19.816 66.134 18.81 66.134 17.804 66.134 16.985 66.953 16.985 67.959 16.985 68.965 17.804 69.783 18.81 69.783 19.816 69.783 20.635 68.965 20.635 67.959ZM17.391 67.959C17.391 67.176 18.027 66.541 18.809 66.541 19.59 66.541 20.227 67.176 20.227 67.959 20.227 68.741 19.59 69.377 18.809 69.377 18.027 69.377 17.391 68.741 17.391 67.959Z\"\n          />\n          <path\n            d=\"M2.761 18.569L1.954 20.202 0.151 20.464 1.456 21.736 1.148 23.533 2.761 22.685 4.374 23.533 4.067 21.736 5.372 20.464 3.568 20.202 2.761 18.569ZM3.629 21.594L3.833 22.789 2.76 22.226 1.687 22.789 1.892 21.594 1.026 20.748 2.225 20.574 2.761 19.487 3.297 20.574 4.496 20.748 3.629 21.594Z\"\n          />\n          <path\n            d=\"M19.417 2.609L18.86 1.481 18.303 2.609 17.058 2.789 17.959 3.668 17.747 4.907 18.86 4.322 19.974 4.907 19.761 3.668 20.662 2.789 19.417 2.609ZM19.433 4.163L18.86 3.863 18.287 4.163 18.396 3.526 17.932 3.073 18.574 2.981 18.86 2.4 19.147 2.981 19.788 3.073 19.324 3.526 19.433 4.163Z\"\n          />\n          <path\n            d=\"M64.915 51.333L65.816 52.211 65.604 53.452 66.717 52.865 67.831 53.452 67.618 52.211 68.519 51.333 67.274 51.151 66.717 50.024 66.161 51.151 64.915 51.333ZM66.717 50.944L67.004 51.524 67.645 51.618 67.181 52.07 67.29 52.708 66.717 52.407 66.144 52.708 66.253 52.07 65.789 51.618 66.431 51.524 66.717 50.944Z\"\n          />\n          <path\n            d=\"M66.717 7.435L65.983 9.696 63.607 9.696 65.529 11.093 64.795 13.352 66.717 11.955 68.64 13.352 67.906 11.093 69.827 9.696 67.452 9.696 66.717 7.435ZM67.427 10.938L67.866 12.287 66.717 11.454 65.569 12.287 66.008 10.938 64.859 10.104 66.279 10.104 66.718 8.754 67.157 10.104 68.577 10.104 67.427 10.938Z\"\n          />\n          <path\n            d=\"M60.242 0.217C59.235 0.217 58.417 1.036 58.417 2.042 58.417 3.048 59.235 3.867 60.242 3.867 61.248 3.867 62.066 3.048 62.066 2.042 62.066 1.036 61.248 0.217 60.242 0.217ZM60.242 3.46C59.46 3.46 58.824 2.824 58.824 2.042 58.824 1.26 59.46 0.624 60.242 0.624 61.023 0.624 61.659 1.26 61.659 2.042 61.659 2.824 61.023 3.46 60.242 3.46Z\"\n          />\n          <path\n            d=\"M66.514 35.803C66.514 36.604 67.166 37.256 67.968 37.256 68.769 37.256 69.421 36.604 69.421 35.803 69.421 35.001 68.769 34.349 67.968 34.349 67.166 34.349 66.514 35.001 66.514 35.803ZM67.968 34.756C68.545 34.756 69.014 35.225 69.014 35.803 69.014 36.38 68.545 36.849 67.968 36.849 67.39 36.849 66.921 36.38 66.921 35.803 66.921 35.225 67.39 34.756 67.968 34.756Z\"\n          />\n          <path\n            d=\"M6.086 9.893C6.086 10.953 6.948 11.815 8.008 11.815 9.067 11.815 9.929 10.952 9.929 9.893 9.929 8.834 9.067 7.972 8.008 7.972 6.948 7.972 6.086 8.834 6.086 9.893ZM8.008 8.379C8.843 8.379 9.522 9.058 9.522 9.893 9.522 10.728 8.843 11.408 8.008 11.408 7.173 11.408 6.493 10.728 6.493 9.893 6.493 9.058 7.173 8.379 8.008 8.379Z\"\n          />\n          <path\n            d=\"M14.53 68.158L14.61 67.759C14.346 67.706 14.085 67.647 13.826 67.582L13.727 67.976C13.991 68.043 14.26 68.103 14.53 68.158Z\"\n          />\n          <path\n            d=\"M12.175 67.505L12.313 67.122C11.819 66.945 11.329 66.742 10.853 66.517L10.679 66.884C11.167 67.115 11.67 67.324 12.175 67.505Z\"\n          />\n          <path\n            d=\"M6.93 63.885C6.541 63.53 6.166 63.154 5.815 62.765L5.513 63.038C5.872 63.436 6.257 63.822 6.656 64.185L6.93 63.885Z\"\n          />\n          <path\n            d=\"M9.461 65.771C9.01 65.5 8.568 65.204 8.148 64.891L7.905 65.216C8.335 65.538 8.787 65.842 9.251 66.118L9.461 65.771Z\"\n          />\n          <path\n            d=\"M3.938 60.228L3.59 60.438C3.867 60.902 4.169 61.355 4.488 61.785L4.815 61.543C4.504 61.124 4.209 60.682 3.938 60.228Z\"\n          />\n          <path\n            d=\"M1.42 54.379C1.498 54.909 1.605 55.444 1.736 55.967L2.131 55.868C2.002 55.357 1.899 54.836 1.822 54.32L1.42 54.379Z\"\n          />\n          <path\n            d=\"M1.242 51.973C1.242 52.239 1.249 52.504 1.262 52.769L1.668 52.751C1.656 52.493 1.649 52.233 1.649 51.973 1.649 51.707 1.656 51.439 1.669 51.172L1.262 51.151C1.249 51.426 1.242 51.7 1.242 51.973Z\"\n          />\n          <path\n            d=\"M3.194 58.836C2.968 58.36 2.765 57.87 2.589 57.378L2.206 57.515C2.387 58.019 2.595 58.522 2.826 59.011L3.194 58.836Z\"\n          />\n          <path\n            d=\"M1.424 49.527L1.827 49.588C1.866 49.324 1.912 49.06 1.965 48.796L1.566 48.716C1.512 48.987 1.464 49.257 1.424 49.527Z\"\n          />\n          <path\n            d=\"M68.874 57.8L68.467 57.792C68.462 58.06 68.447 58.327 68.423 58.591L68.828 58.627C68.853 58.354 68.869 58.078 68.874 57.8Z\"\n          />\n          <path\n            d=\"M61.419 67.861C60.877 68.072 60.315 68.239 59.747 68.361L59.831 68.758C60.421 68.633 61.003 68.458 61.566 68.24L61.419 67.861Z\"\n          />\n          <path\n            d=\"M65.989 65.168C66.389 64.717 66.757 64.232 67.081 63.725L66.738 63.505C66.426 63.995 66.072 64.463 65.684 64.897L65.989 65.168Z\"\n          />\n          <path\n            d=\"M67.559 61.965L67.933 62.127C68.173 61.574 68.37 60.998 68.519 60.414L68.125 60.312C67.981 60.876 67.791 61.432 67.559 61.965Z\"\n          />\n          <path\n            d=\"M64.683 66.422L64.425 66.107C63.978 66.474 63.495 66.809 62.992 67.104L63.198 67.456C63.719 67.15 64.218 66.802 64.683 66.422Z\"\n          />\n          <path\n            d=\"M58.011 68.588C57.747 68.602 57.481 68.607 57.211 68.601L57.203 69.008C57.28 69.009 57.356 69.01 57.433 69.01 57.634 69.01 57.833 69.005 58.032 68.995L58.011 68.588Z\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"25.539\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"19.028\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"28.795\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"22.284\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExamIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExamIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExamIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExchangeArrowsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"14\"\n        viewBox=\"0 0 18 14\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#8B8581\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-336 -216)\"\n          >\n            <path\n              d=\"M349,228 L349,221 L347,221 L347,228 L344,228 L348,232 L352,228 L349,228 L349,228 Z M342,214 L338,218 L341,218 L341,225 L343,225 L343,218 L346,218 L342,214 L342,214 Z\"\n              transform=\"translate(345 223) rotate(90) translate(-345 -223)\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExchangeArrowsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExchangeArrowsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExchangeArrowsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExpandDownArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"12\"\n        viewBox=\"0 0 12 8\"\n        width=\"8\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n          opacity=\"0.86\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExpandDownArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExpandDownArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExpandDownArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons FacebookIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        className=\"sc-fzXfPg gPhfZV\"\n        height={23}\n        viewBox=\"0 0 22 23\"\n        width={23}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m63 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-1 1.99137931v2.98706897h-2c-.6 0-1 .39827586-1 .99568965v1.99137931h3v2.98706896h-3v6.9698276h-3v-6.9698276h-2v-2.98706896h2v-2.48922414c0-1.89181034 1.6-3.48491379 3.5-3.48491379z\"\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(-44 .457)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            FacebookIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(_FacebookIcon)\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(_FacebookIcon)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons GrantSubmitIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"82\"\n        viewBox=\"0 0 82 82\"\n        width=\"82\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <circle\n            cx=\"41\"\n            cy=\"41\"\n            fill=\"#90E8D3\"\n            r=\"41\"\n          />\n          <g\n            fill=\"#000\"\n            transform=\"translate(11 10)\"\n          >\n            <path\n              d=\"M2.86742813,19.5094459 L57.2076375,19.5094459 C57.6222497,19.5093254 57.9875374,19.238741 58.1058429,18.8441062 C58.2241484,18.4494714 58.0673687,18.0245305 57.7203375,17.7992193 L30.5502281,0.151842414 C30.238919,-0.050912319 29.8361467,-0.050912319 29.5248375,0.151842414 L2.3547375,17.7992193 C2.00770626,18.0245305 1.85092658,18.4494714 1.9692321,18.8441062 C2.08753763,19.238741 2.45282526,19.5093254 2.8674375,19.5094459 L2.86742813,19.5094459 Z M30.0375,2.0434531 L54.0609375,17.6473769 L6.0140625,17.6473769 L30.0375,2.0434531 Z\"\n              fillRule=\"nonzero\"\n            />\n            <path\n              d=\"M30.0375,8.31748034 C28.0624928,8.31785569 26.4616926,9.90808967 26.4619032,11.8694761 C26.4621137,13.8308626 28.0632553,15.4207576 30.0382625,15.4207148 C32.0132697,15.4206719 33.6143413,13.8307075 33.6144656,11.869321 C33.6124137,9.90836017 32.0120789,8.31926622 30.0375,8.31748034 L30.0375,8.31748034 Z M30.0375,13.5586366 C29.097967,13.5582612 28.3366081,12.8016113 28.3369032,11.8685578 C28.3371983,10.9355043 29.0990356,10.1793294 30.0385687,10.1795402 C30.9781017,10.1797509 31.739595,10.9362675 31.7394656,11.869321 C31.7385708,12.8022952 30.9769535,13.55826 30.0375,13.5586552 L30.0375,13.5586366 Z\"\n              fillRule=\"nonzero\"\n            />\n            <path\n              d=\"M7.99712813 22.8371679L7.99712813 48.8102369C7.99712813 49.324433 8.41686117 49.7412714 8.93462813 49.7412714 9.45239508 49.7412714 9.87212813 49.324433 9.87212813 48.8102369L9.87212813 22.8371679C9.87212813 22.3229718 9.45239508 21.9061334 8.93462813 21.9061334 8.41686117 21.9061334 7.99712813 22.3229718 7.99712813 22.8371679zM22.4322469 22.8371679L22.4322469 48.8102369C22.4322469 49.324433 22.8519799 49.7412714 23.3697469 49.7412714 23.8875138 49.7412714 24.3072469 49.324433 24.3072469 48.8102369L24.3072469 22.8371679C24.3072469 22.3229718 23.8875138 21.9061334 23.3697469 21.9061334 22.8519799 21.9061334 22.4322469 22.3229718 22.4322469 22.8371679zM36.8664563 22.8371679L36.8664563 48.8102369C36.8664563 49.324433 37.2861893 49.7412714 37.8039563 49.7412714 38.3217232 49.7412714 38.7414563 49.324433 38.7414563 48.8102369L38.7414563 22.8371679C38.7414563 22.3229718 38.3217232 21.9061334 37.8039563 21.9061334 37.2861893 21.9061334 36.8664563 22.3229718 36.8664563 22.8371679zM51.301575 22.8371679L51.301575 48.8102369C51.301575 49.324433 51.721308 49.7412714 52.239075 49.7412714 52.756842 49.7412714 53.176575 49.324433 53.176575 48.8102369L53.176575 22.8371679C53.176575 22.3229718 52.756842 21.9061334 52.239075 21.9061334 51.721308 21.9061334 51.301575 22.3229718 51.301575 22.8371679zM1.50695625 54L58.4930437 54C59.0108107 54 59.4305437 53.5831617 59.4305437 53.0689655 59.4305437 52.5547694 59.0108107 52.137931 58.4930437 52.137931L1.50695625 52.137931C.989189297 52.137931.56945625 52.5547694.56945625 53.0689655.56945625 53.5831617.989189297 54 1.50695625 54z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            GrantSubmitIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    GrantSubmitIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              GrantSubmitIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons GreenCheckMark 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"26\"\n        viewBox=\"0 0 26 26\"\n        width=\"26\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"12\"\n          cy=\"12\"\n          fill=\"#30E8BD\"\n          r=\"12\"\n        />\n        <path\n          d=\"m9.464 17.092-3.466-3.415-1.156 1.138 4.622 4.553 9.904-9.756-1.155-1.138z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 -1)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            GreenCheckMark\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    GreenCheckMark\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              GreenCheckMark\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HamburgerIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"42\"\n        viewBox=\"0 0 42 42\"\n        width=\"42\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M12 26h18v-2H12v2zm0-8h18v-2H12v2z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HamburgerIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HamburgerIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HamburgerIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HollowGreenCheck 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <circle\n            className=\"svg-stroke\"\n            cx=\"9\"\n            cy=\"9\"\n            r=\"8.25\"\n            stroke=\"#29cb42\"\n            strokeWidth=\"1.5\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n            fill=\"#29cb42\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HollowGreenCheck\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HollowGreenCheck\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HollowGreenCheck\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HollowRedNoGood 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <path\n            d=\"m0 0h18v18h-18z\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m9 0c-4.968 0-9 4.032-9 9s4.032 9 9 9 9-4.032 9-9-4.032-9-9-9zm0 16.2c-3.978 0-7.2-3.222-7.2-7.2 0-1.665.567-3.195 1.521-4.41l10.089 10.089c-1.215.954-2.745 1.521-4.41 1.521zm5.679-2.79-10.089-10.089c1.215-.954 2.745-1.521 4.41-1.521 3.978 0 7.2 3.222 7.2 7.2 0 1.665-.567 3.195-1.521 4.41z\"\n            fill=\"#f2524a\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HollowRedNoGood\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HollowRedNoGood\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HollowRedNoGood\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons InfoNotification 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n          transform=\"translate(-2, -2)\"\n        >\n          <polygon\n            points=\"0 0 32 0 32 32 0 32\"\n          />\n          <path\n            d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n            fill=\"#F2524A\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            InfoNotification\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    InfoNotification\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              InfoNotification\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons LockOpenIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 14 18\"\n        width=\"14\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#FF0C1A\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M6.85714286,13.7142857 C7.8,13.7142857 8.57142857,12.9428571 8.57142857,12 C8.57142857,11.0571429 7.8,10.2857143 6.85714286,10.2857143 C5.91428571,10.2857143 5.14285714,11.0571429 5.14285714,12 C5.14285714,12.9428571 5.91428571,13.7142857 6.85714286,13.7142857 L6.85714286,13.7142857 Z M12,6 L11.1428571,6 L11.1428571,4.28571429 C11.1428571,1.88571429 9.25714286,0 6.85714286,0 C4.45714286,0 2.57142857,1.88571429 2.57142857,4.28571429 L4.2,4.28571429 C4.2,2.82857143 5.4,1.62857143 6.85714286,1.62857143 C8.31428571,1.62857143 9.51428571,2.82857143 9.51428571,4.28571429 L9.51428571,6 L1.71428571,6 C0.771428571,6 0,6.77142857 0,7.71428571 L0,16.2857143 C0,17.2285714 0.771428571,18 1.71428571,18 L12,18 C12.9428571,18 13.7142857,17.2285714 13.7142857,16.2857143 L13.7142857,7.71428571 C13.7142857,6.77142857 12.9428571,6 12,6 L12,6 Z M12,16.2857143 L1.71428571,16.2857143 L1.71428571,7.71428571 L12,7.71428571 L12,16.2857143 L12,16.2857143 Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            LockOpenIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LockOpenIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LockOpenIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons MetaMaskFrontIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <img\n        className=\"sc-fzXfPG qFkjc\"\n        src=\"test-file-stub\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskFrontIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    MetaMaskFrontIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              MetaMaskFrontIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons MetaMaskSideIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <img\n        className=\"sc-fzXfPG qFkjc\"\n        src=\"test-file-stub\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskSideIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    MetaMaskSideIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              MetaMaskSideIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons NetworkIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"44\"\n        viewBox=\"0 0 48 44\"\n        width=\"48\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n        >\n          <path\n            d=\"M13.091 0C10.694 0 8.727 1.98 8.727 4.394 8.727 6.807 10.694 8.788 13.091 8.788 13.579 8.788 14.049 8.699 14.489 8.547L18.614 15.79C17.896 16.426 17.286 17.189 16.824 18.039L8.71 15.155C8.718 15.047 8.727 14.94 8.727 14.829 8.727 12.416 6.761 10.435 4.364 10.435 1.967 10.435 0 12.416 0 14.829 0 17.243 1.967 19.223 4.364 19.223 5.889 19.223 7.231 18.419 8.011 17.215L16.057 20.081C15.914 20.688 15.818 21.319 15.818 21.969 15.818 23.706 16.35 25.324 17.267 26.655L10.415 33.555C9.773 33.179 9.041 32.954 8.25 32.954 5.853 32.954 3.886 34.934 3.886 37.348 3.886 39.761 5.853 41.742 8.25 41.742 10.647 41.742 12.614 39.761 12.614 37.348 12.614 36.519 12.367 35.746 11.966 35.082L18.733 28.268C20.157 29.477 21.998 30.208 24 30.208 25.281 30.208 26.482 29.899 27.563 29.367L31.67 36.627C30.977 37.405 30.545 38.424 30.545 39.545 30.545 41.958 32.512 43.938 34.909 43.938 37.306 43.938 39.273 41.958 39.273 39.545 39.273 37.131 37.306 35.151 34.909 35.151 34.421 35.151 33.951 35.24 33.511 35.391L29.386 28.148C30.104 27.513 30.714 26.749 31.176 25.9L39.29 28.783C39.282 28.891 39.273 28.999 39.273 29.109 39.273 31.523 41.239 33.503 43.636 33.503 46.033 33.503 48 31.523 48 29.109 48 26.696 46.033 24.715 43.636 24.715 42.111 24.715 40.769 25.519 39.989 26.724L31.943 23.857C32.086 23.25 32.182 22.619 32.182 21.969 32.182 20.232 31.65 18.614 30.733 17.284L37.585 10.384C38.227 10.76 38.959 10.985 39.75 10.985 42.147 10.985 44.114 9.004 44.114 6.591 44.114 4.177 42.147 2.197 39.75 2.197 37.353 2.197 35.386 4.177 35.386 6.591 35.386 7.419 35.633 8.193 36.034 8.856L29.267 15.67C27.843 14.461 26.002 13.731 24 13.731 22.719 13.731 21.518 14.04 20.438 14.572L16.33 7.312C17.023 6.533 17.455 5.514 17.455 4.394 17.455 1.98 15.488 0 13.091 0ZM13.091 2.197C14.309 2.197 15.273 3.168 15.273 4.394 15.273 5.62 14.309 6.591 13.091 6.591 11.873 6.591 10.909 5.62 10.909 4.394 10.909 3.168 11.873 2.197 13.091 2.197ZM39.75 4.394C40.968 4.394 41.932 5.364 41.932 6.591 41.932 7.817 40.968 8.788 39.75 8.788 38.532 8.788 37.568 7.817 37.568 6.591 37.568 5.364 38.532 4.394 39.75 4.394ZM4.364 12.632C5.582 12.632 6.545 13.603 6.545 14.829 6.545 16.056 5.582 17.026 4.364 17.026 3.146 17.026 2.182 16.056 2.182 14.829 2.182 13.603 3.146 12.632 4.364 12.632ZM24 15.928C27.327 15.928 30 18.62 30 21.969 30 25.319 27.327 28.011 24 28.011 20.673 28.011 18 25.319 18 21.969 18 18.62 20.673 15.928 24 15.928ZM43.636 26.912C44.854 26.912 45.818 27.883 45.818 29.109 45.818 30.336 44.854 31.306 43.636 31.306 42.418 31.306 41.455 30.336 41.455 29.109 41.455 27.883 42.418 26.912 43.636 26.912ZM8.25 35.151C9.468 35.151 10.432 36.121 10.432 37.348 10.432 38.574 9.468 39.545 8.25 39.545 7.032 39.545 6.068 38.574 6.068 37.348 6.068 36.121 7.032 35.151 8.25 35.151ZM34.909 37.348C36.127 37.348 37.091 38.318 37.091 39.545 37.091 40.771 36.127 41.742 34.909 41.742 33.691 41.742 32.727 40.771 32.727 39.545 32.727 38.318 33.691 37.348 34.909 37.348Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            NetworkIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    NetworkIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              NetworkIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons NorthEastArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"11\"\n        viewBox=\"0 0 11 11\"\n        width=\"11\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n          fill=\"#23282d\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            NorthEastArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    NorthEastArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              NorthEastArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons OctopusErrorIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"73\"\n        viewBox=\"0 0 74 73\"\n        width=\"74\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M36.6071788,31.1685393 C28.5453734,31.1685393 26.4957867,37.147811 26.4135683,37.4026464 C26.2127625,37.9018048 26.3116918,38.469053 26.6702452,38.8744006 C27.0287986,39.2797481 27.5874732,39.4559263 28.1197545,39.3315036 C28.6520359,39.207081 29.0695902,38.802706 29.2031204,38.2823321 C29.2178022,38.2405795 30.6566238,34.0480345 36.6013061,34.0480345 C42.4652381,34.0480345 43.9422325,38.1196407 43.9994917,38.2823321 C44.1941275,38.8783044 44.759054,39.2827362 45.3972041,39.2829567 C45.5496697,39.2824376 45.7011641,39.2591341 45.8464688,39.2138488 C46.2174281,39.0972914 46.5259471,38.8409479 46.7041069,38.501251 C46.8822667,38.1615541 46.9154619,37.766352 46.7963847,37.4026464 C46.7185709,37.1420521 44.6704524,31.1685393 36.6071788,31.1685393 Z\"\n        />\n        <path\n          d=\"M31.2444444,25.4269663 C31.2444444,23.6149759 29.9560194,22.1460674 28.3666667,22.1460674 C26.7773139,22.1460674 25.4888889,23.6149759 25.4888889,25.4269663 C25.4888889,27.2389567 26.7773139,28.7078652 28.3666667,28.7078652 C29.9550629,28.705235 31.2421374,27.2378661 31.2444444,25.4269663 Z\"\n        />\n        <ellipse\n          cx=\"44.8111111\"\n          cy=\"25.4269663\"\n          rx=\"2.87777778\"\n          ry=\"3.28089888\"\n        />\n        <path\n          d=\"M73.1941581,46.7305242 C73.6415006,45.8824671 74.070023,44.5994339 73.6357098,43.2156849 C73.2013966,41.8319358 72.2256397,40.9561453 71.5162615,40.4715412 C71.4091309,39.7125227 71.1413044,38.6002687 70.4797007,37.6660921 C69.6110743,36.4429046 68.29221,35.8590443 67.6754852,35.6415563 C66.5173167,34.7584675 65.4300861,34.4665373 64.4774925,34.7993377 C61.9425512,35.6824265 62.1293059,38.5491809 62.2798678,40.85251 C62.4608316,43.6258468 62.4564885,45.359912 60.8640068,46.0021584 C60.232805,46.2561377 59.3902374,46.0357304 58.5476699,45.3964033 C57.1318089,44.3221002 56.7134205,42.2537749 57.576256,40.5795553 C59.9447106,36.0152269 62.8850108,30.3225884 62.8850108,24.8707923 C62.8850108,18.0950928 60.0836908,11.7704254 54.9978834,7.0630512 C44.8181279,-2.3543504 29.1846579,-2.3543504 19.0049023,7.0630512 C13.919095,11.7748043 11.1177749,18.0994717 11.1177749,24.8707923 C11.1177749,30.3255077 14.0580752,36.0152269 16.4207389,40.5853939 C17.2893653,42.2537749 16.8651861,44.3221002 15.4493251,45.4022419 C14.6082052,46.041569 13.7641899,46.2605166 13.1329881,46.007997 C12.0703685,45.5788597 11.4449575,45.0183537 11.7171271,40.8583486 C11.8618982,38.5550195 12.0544437,35.6882651 9.51950243,34.8051763 C8.56690885,34.4723759 7.47388734,34.7643061 6.3215097,35.6473949 C5.70478498,35.8648829 4.38447291,36.4487433 3.51729426,37.6719307 C2.85569051,38.6061073 2.58786405,39.715442 2.48073346,40.4773798 C1.77135526,40.9619839 0.792702893,41.8450727 0.361285132,43.2215235 C-0.0701326292,44.5979743 0.361285132,45.8883057 0.802836867,46.7363628 C0.281661048,47.5785814 -0.253991876,48.8878883 0.131099145,50.3562971 C0.479997401,51.694797 1.38481653,52.555991 2.1448646,53.0668688 C1.98345364,54.4846143 2.46541985,55.9000659 3.45649041,56.9188876 C4.275907,57.792625 5.4071807,58.3006693 6.59947014,58.33037 C6.95500819,59.4060167 7.79150739,60.2504964 8.85789869,60.6103447 C9.36136629,60.7935038 9.89199517,60.889252 10.427217,60.893517 C8.30197781,62.1429782 6.40113379,63.4026569 6.40113379,65.9935372 C6.40113379,67.7451183 7.30595291,69.2456395 8.94620903,70.2002512 C9.24910149,70.3751082 9.56406597,70.5277917 9.88866864,70.6571219 C10.7292229,72.1184613 12.2827475,73.012795 13.9581832,72.9998616 C15.2484557,73.007886 16.5037052,72.5769332 17.520999,71.7766741 C18.7492812,72.2909628 20.0962206,72.4467463 21.4081019,72.2262466 C22.868343,71.9912533 24.2075437,71.2672828 25.20979,70.1710581 C26.320184,70.5447288 28.0530936,70.7549185 30.0147415,69.6587207 C31.6738179,68.728923 32.4845358,67.5203321 32.8739699,66.6708153 C32.9116104,66.5890748 32.9449078,66.508794 32.9767574,66.4314325 C34.262376,66.4487806 35.520016,66.0525266 36.5670797,65.3002031 C36.7213993,65.1900695 36.8666427,65.0675469 37.0013929,64.9338307 C37.1361431,65.0675469 37.2813865,65.1900695 37.4357061,65.3002031 C38.4835133,66.0529155 39.7425098,66.4482543 41.0289238,66.4285132 C41.0607734,66.5058747 41.0940708,66.5861555 41.1317113,66.667896 C41.5211454,67.5174128 42.3318633,68.7260037 43.9909397,69.6558014 C45.9525876,70.7549185 47.6840495,70.5418095 48.7958912,70.1681388 C49.796857,71.2675949 51.136203,71.9947293 52.5975793,72.2320852 C53.9090626,72.4501841 55.2549384,72.2923844 56.4817868,71.7766741 C57.4998387,72.5748428 58.7550173,73.0037144 60.0446026,72.994023 C61.7175125,73.007409 63.2693395,72.1162016 64.1112217,70.6585815 C64.319692,70.5724621 64.5194761,70.4819638 64.7120216,70.3841672 C66.5752252,69.4353941 67.6074428,67.8735676 67.6074428,65.9891583 C67.6074428,63.3982779 65.7065988,62.1327606 63.5828073,60.889138 C64.1185132,60.8850098 64.6496406,60.78926 65.1535734,60.6059658 C66.2156735,60.2447007 67.0484195,59.402385 67.4033156,58.33037 C68.594934,58.2979858 69.7245601,57.787878 70.5419522,56.913049 C71.5330228,55.8942273 72.014989,54.4787757 71.853578,53.0610302 C72.6136261,52.5501524 73.5169975,51.6889584 73.8673435,50.3504585 C74.2553299,48.8820497 73.719677,47.5727428 73.1941581,46.7305242 Z M64.7018876,65.9979162 C64.7018876,66.5219309 64.5571166,67.2006685 63.3989481,67.7874482 C62.3377762,68.327519 60.7452946,68.6136106 58.7966761,68.6136106 C58.2697094,68.6136106 57.7268179,68.5917159 57.1723448,68.5508456 C57.0995822,68.5268568 57.0250269,68.5087965 56.9493973,68.4968386 C56.8150941,68.4756597 56.6783417,68.4756597 56.5440384,68.4968386 C54.2633408,68.2600266 52.0154729,67.7705217 49.8411383,67.0371876 C49.7448733,66.9924144 49.644506,66.9572161 49.5414622,66.9320928 L49.5211942,66.9320928 C47.1947233,66.1249058 44.9782783,65.0535221 43.1512675,63.7704889 C43.0953692,63.7121042 43.0348479,63.6584062 42.9703037,63.6099273 C42.8981177,63.557679 42.8210194,63.5127008 42.7401177,63.4756394 C40.1646406,61.5591178 38.4491035,59.2047009 38.4491035,56.5846275 C38.4491035,55.7784846 37.8009414,55.1249766 37.0013929,55.1249766 C36.2018444,55.1249766 35.5536823,55.7784846 35.5536823,56.5846275 C35.5536823,58.0559556 34.9413007,60.7533905 31.2206844,63.4960745 C31.1640625,63.524978 31.1094113,63.5576491 31.0570931,63.5938712 C30.9966583,63.6376326 30.9399963,63.6864611 30.887711,63.7398362 C30.4258913,64.0638788 29.922088,64.3893809 29.3661671,64.7119638 C27.8446115,65.5898568 26.2452127,66.3228523 24.5887221,66.9014401 C24.5474067,66.9056225 24.5063334,66.9119561 24.4656667,66.9204156 C24.3168539,66.9512512 24.1743705,67.0075299 24.044383,67.0868158 C21.9121016,67.7981015 19.7091286,68.2723825 17.4746722,68.5012175 C17.3308828,68.4771791 17.1841485,68.4771791 17.040359,68.5012175 C16.959958,68.5133863 16.8809252,68.5334297 16.8043822,68.5610632 C14.0537321,68.7566564 11.7200226,68.457428 10.3881288,67.6852726 C9.41671498,67.1189281 9.29076416,66.4912782 9.29076416,66.0066741 C9.29076416,65.024329 10.1130638,64.4536055 12.2889728,63.1880882 C15.159783,61.5182476 19.0932127,59.2309746 21.6324971,53.3544201 C21.9523165,52.615187 21.6172166,51.754517 20.8840307,51.4320598 C20.1508447,51.1096027 19.2972152,51.4474663 18.9773958,52.1866993 C17.9639984,54.5323583 16.6958039,56.2007393 15.3581193,57.4720953 C14.6911555,57.4347376 14.0275146,57.3513421 13.3718604,57.222495 C13.3106507,57.2054274 13.2482077,57.1932262 13.1851057,57.1860037 C12.3441091,57.0162291 11.5185046,56.7765134 10.7167591,56.4693151 C10.0949708,56.2257211 9.49284927,55.9338896 8.91580711,55.5964438 C8.87120152,55.5464946 8.82279753,55.5001316 8.77103605,55.457777 C8.64048192,55.3573653 8.4934886,55.2807923 8.33672287,55.2315311 C7.01215431,54.3714299 5.92496543,53.187401 5.17637061,51.7896743 C5.16623664,51.7604813 5.15610266,51.7298286 5.14307327,51.6991759 C5.10945196,51.6215766 5.0687405,51.5473007 5.02146558,51.477309 C4.33352148,50.0684834 3.99142674,48.513607 4.02399297,46.9436333 C4.02977763,46.8707672 4.02977763,46.7975517 4.02399297,46.7246856 C4.13112355,43.6827731 5.49197152,41.2130438 6.02617674,40.3562287 C7.17855438,38.5243668 8.2599942,37.766808 8.65956233,37.612085 C9.00556517,37.9536433 8.90133,39.5680172 8.82894447,40.6612958 C8.74063413,42.0158518 8.64074209,43.5528642 8.95344759,44.9482905 C9.3645974,46.7801524 10.4083967,48.0471294 12.0602345,48.7141898 C13.6527162,49.3549766 15.5217106,48.9973621 17.1909209,47.7303851 C19.7244145,45.8065652 20.497492,42.1559783 18.9889775,39.2381361 C16.7725326,34.9496818 14.0131962,29.6117384 14.0131962,24.8722519 C14.0131962,18.9241745 16.4815427,13.3614449 20.9622071,9.21019769 C30.0340585,0.81797143 43.9658318,0.81797143 53.0376833,9.21019769 C57.5255862,13.3614449 59.9866942,18.9241745 59.9866942,24.8722519 C59.9866942,29.6117384 57.2273578,34.9438432 55.0109128,39.2381361 C53.5023984,42.1574379 54.2754759,45.8065652 56.8089694,47.7303851 C58.4781797,48.9973621 60.3486219,49.3549766 61.9396558,48.7141898 C63.5900459,48.048589 64.635293,46.781612 65.0464428,44.9497501 C65.3591483,43.5543239 65.2592562,42.0173115 65.1709459,40.6627554 C65.0985604,39.5694769 64.9943252,37.955103 65.340328,37.6135447 C65.7398962,37.7595098 66.8271268,38.5258265 67.9708182,40.3576884 C68.5050234,41.2130438 69.8644237,43.6813135 69.973002,46.7203067 C69.9672,46.794634 69.9672,46.869306 69.973002,46.9436333 C70.0063391,48.5317657 69.6560595,50.1042428 68.952366,51.5254775 C68.9205164,51.5794845 68.8901144,51.6349513 68.8626079,51.6918777 L68.8336537,51.7663199 C68.0863624,53.1739497 66.9963482,54.3668816 65.6660629,55.2329908 C65.5091196,55.2811184 65.3620168,55.357254 65.2317497,55.457777 C65.1764872,55.499708 65.1246829,55.5460818 65.0768447,55.5964438 C64.4981881,55.9303683 63.8945948,56.2183052 63.2715496,56.4576379 C61.7833012,57.0255083 60.2185472,57.3635782 58.6301894,57.460418 C57.2939525,56.1890621 56.0243103,54.5206811 55.0109128,52.1750221 C54.6910934,51.4357891 53.8374639,51.0979255 53.104278,51.4203827 C52.3710921,51.7428399 52.0359923,52.6035098 52.3558116,53.3427428 C54.895096,59.2192974 58.8285257,61.5065704 61.6993358,63.176411 C63.8839312,64.4404687 64.7062308,65.0111922 64.7062308,65.9935372 L64.7018876,65.9979162 Z\"\n          fillRule=\"nonzero\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            OctopusErrorIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    OctopusErrorIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              OctopusErrorIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RegistryEmptyIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"155\"\n        viewBox=\"0 0 350 155\"\n        width=\"350\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <rect\n            fill=\"#E9E9EA\"\n            height=\"3\"\n            width=\"350\"\n            y=\"140\"\n          />\n          <rect\n            fill=\"#FFFFFF\"\n            height=\"152\"\n            stroke=\"#C4C2C0\"\n            strokeWidth=\"3\"\n            width=\"193\"\n            x=\"78.5\"\n            y=\"1.5\"\n          />\n          <rect\n            fill=\"#FFFFFF\"\n            height=\"54\"\n            stroke=\"#C4C2C0\"\n            strokeWidth=\"2\"\n            width=\"158\"\n            x=\"96\"\n            y=\"19\"\n          />\n          <path\n            d=\"M178.889 38C181.644 38 183.778 40.133 183.778 42.889 183.778 46.178 180.667 48.933 176.133 53.111L174.889 54.267 173.644 53.111C169.022 49.022 166 46.267 166 42.889 166 40.133 168.133 38 170.889 38 172.4 38 173.911 38.711 174.889 39.867 175.867 38.711 177.378 38 178.889 38Z\"\n            fill=\"#C4C2C0\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 82 255 82 255 92 95 92\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 100 255 100 255 110 95 110\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 118 255 118 255 128 95 128\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RegistryEmptyIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RegistryEmptyIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RegistryEmptyIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RejectedNewsroomsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M9 0C4.05 0 0 4.05 0 9s4.05 9 9 9 9-4.05 9-9-4.05-9-9-9zM1.8 9c0-3.96 3.24-7.2 7.2-7.2 1.62 0 3.15.54 4.41 1.53L3.33 13.41A7.093 7.093 0 0 1 1.8 9zM9 16.2c-1.62 0-3.15-.54-4.41-1.53L14.67 4.59A7.093 7.093 0 0 1 16.2 9c0 3.96-3.24 7.2-7.2 7.2z\"\n          fill=\"#7D7373\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RejectedNewsroomsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RejectedNewsroomsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RejectedNewsroomsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RequestAppealSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <g\n            transform=\"translate(74 71)\"\n          >\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(27 29)\"\n          >\n            <path\n              d=\"M1,0 L39,0 C39.5522847,-4.02567223e-15 40,0.44771525 40,1 L40,52 C40,52.5522847 39.5522847,53 39,53 L1,53 C0.44771525,53 6.76353751e-17,52.5522847 0,52 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 Z M1.73913043,1.63076923 L1.73913043,51.3692308 L38.2608696,51.3692308 L38.2608696,1.63076923 L1.73913043,1.63076923 Z\"\n            />\n            <rect\n              height=\"2\"\n              width=\"11\"\n              x=\"6\"\n              y=\"13\"\n            />\n            <rect\n              height=\"2\"\n              width=\"14\"\n              x=\"6\"\n              y=\"19\"\n            />\n            <rect\n              height=\"2\"\n              width=\"21\"\n              x=\"6\"\n              y=\"25\"\n            />\n            <polygon\n              points=\"6 31 33 31 33 33 6 33\"\n            />\n            <polygon\n              points=\"6 37 33 37 33 39 6 39\"\n            />\n            <polygon\n              points=\"6 43 33 43 33 45 6 45\"\n            />\n            <rect\n              height=\"2\"\n              width=\"10\"\n              x=\"6\"\n              y=\"7\"\n            />\n          </g>\n          <g\n            fillRule=\"nonzero\"\n            transform=\"translate(45 19)\"\n          >\n            <ellipse\n              cx=\"16.5\"\n              cy=\"16.5\"\n              fill=\"#30E8BD\"\n              rx=\"15.5\"\n              ry=\"16.5\"\n            />\n            <path\n              d=\"M33.0555556,16.0657183 C32.5338444,16.0657183 32.1111111,16.4882122 32.1111111,17.0096279 C32.1111111,25.3371756 25.3322667,32.1121809 17,32.1121809 C8.66773333,32.1121809 1.88888889,25.3371756 1.88888889,17.0096279 C1.88888889,8.68208015 8.66773333,1.90707488 17,1.90707488 C20.4664889,1.90707488 23.7531556,3.06883877 26.4206444,5.20320707 L23.5472667,5.97268215 C23.0433111,6.10747243 22.7444889,6.62549 22.8793556,7.12878258 C22.9923111,7.55052137 23.3742444,7.82878591 23.7913111,7.82878591 C23.8721556,7.82878591 23.9545111,7.81821412 24.0361111,7.79669299 L28.5974,6.57527401 C29.0008667,6.46729076 29.2974222,6.0806654 29.2974222,5.66345737 L29.2974222,0.943909562 C29.2974222,0.42249392 28.8746889,0 28.3529778,0 C27.8312667,0 27.4085333,0.42249392 27.4085333,0.943909562 L27.4085333,3.57968262 C24.4422222,1.27314522 20.8185778,0.0192557551 17,0.0192557551 C7.6262,0.0192557551 0,7.64113669 0,17.0096279 C0,26.3781191 7.6262,34 17,34 C26.3738,34 34,26.3781191 34,17.0096279 C34,16.4882122 33.5772667,16.0657183 33.0555556,16.0657183 Z\"\n              fill=\"#000000\"\n            />\n            <path\n              d=\"M16.5,10 C8.49669997,10 5.219556,16.8303439 5.0842382,17.1211935 C4.9719206,17.3621514 4.9719206,17.6378486 5.0842382,17.8788065 C5.21993933,18.1696561 8.49669997,25 16.5,25 C24.5033,25 27.780444,18.1696561 27.9157618,17.8788065 C28.0280794,17.6378486 28.0280794,17.3621514 27.9157618,17.1211935 C27.780444,16.8303439 24.5033,10 16.5,10 Z M16.5,23.1521632 C10.6736681,23.1521632 7.78484404,18.8330295 7.0319711,17.5003696 C7.78599405,16.1651227 10.6752015,11.8478368 16.5,11.8478368 C22.3244152,11.8478368 25.2136226,16.1647531 25.9680289,17.5 C25.2136226,18.8352469 22.3244152,23.1521632 16.5,23.1521632 Z\"\n              fill=\"#000000\"\n            />\n            <path\n              d=\"M17,13 C14.7944,13 13,14.7944 13,17 C13,19.2056 14.7944,21 17,21 C19.2056,21 21,19.2056 21,17 C21,14.7944 19.2056,13 17,13 Z\"\n              fill=\"#000000\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RequestAppealSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RequestAppealSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RequestAppealSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RevealVoteSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <path\n            d=\"M36.1579784,25.0003289 C29.2622189,25.0003289 23.6579844,30.6044707 23.6579844,37.5002566 C23.6579844,43.2558457 27.5658711,48.0813036 32.8685065,49.527316 L32.8685065,57.8948774 L30.8537049,57.8948774 C30.4693893,57.8948774 30.2124158,58.0287589 29.9285409,58.2032983 C29.2893044,58.6018507 28.7716073,59.1042189 28.2632457,59.5807318 L28.2632457,58.5527718 C28.2632128,58.2082983 27.9498117,57.8949432 27.6053514,57.8948774 C26.2543777,57.8948774 24.8753324,57.8948774 23.5346294,57.8948774 C23.2330506,57.9527721 22.9946823,58.2457983 23.0000902,58.5527718 L23.0000902,74.3421056 C23.0001231,74.6865791 23.3135243,74.9999342 23.6579844,75 L27.6053514,75 C27.9498117,74.9999342 28.2632128,74.6865791 28.2632457,74.3421056 L28.2632457,73.7253296 C28.787502,74.1209215 29.3736794,74.4307898 29.9285409,74.7121712 C30.2529947,74.8626974 30.5105077,75 30.8948233,75 L40.6604432,75 C40.7305813,75 40.8002852,74.9835526 40.8660352,74.9592105 C42.6559421,74.4187503 43.1320405,72.2165146 42.1407055,70.5800681 C42.8738367,70.114542 43.4143167,69.4866476 43.4976127,68.7298717 C43.5758298,68.0190826 43.2879286,67.3311225 42.8808367,66.6944781 C43.823981,66.2577678 44.5357174,65.6386891 44.7106055,64.8441501 C44.8805857,64.0719136 44.5824477,63.3335588 44.1349479,62.6648749 C44.8515989,62.1901383 45.3684999,61.554415 45.3684999,60.7734285 C45.3684999,59.743758 44.7248226,58.7410612 43.6209679,57.9979695 C43.511389,57.9281669 43.3807773,57.8919169 43.2509023,57.8952064 L39.4474504,57.8952064 L39.4474504,49.527645 C44.7500858,48.0816326 48.6579719,43.2561746 48.6579719,37.5005855 C48.6579719,30.6047997 43.053738,25.0006579 36.1579784,25.0006579 L36.1579784,25.0003289 Z M63.7895428,25.0003289 C56.8937833,25.0003289 51.2895494,30.6044707 51.2895494,37.5002566 C51.2895494,43.2558457 55.1974355,48.0813036 60.5000709,49.527316 L60.5000709,57.8948774 C59.1976966,57.8948116 57.864342,57.8948774 56.5732637,57.8948774 C56.4851717,57.9119827 56.4006322,57.9468511 56.3265533,57.9976405 C55.2226987,58.7406665 54.5790214,59.7434291 54.5790214,60.7730996 C54.5790214,61.554086 55.0959224,62.1898094 55.8125733,62.664546 C55.3650736,63.3332298 55.0669356,64.0715847 55.2369158,64.8438211 C55.4118038,65.6383602 56.1235403,66.2574388 57.0666845,66.6941491 C56.6595926,67.3307935 56.3716915,68.0186879 56.4499085,68.7295428 C56.5332045,69.4863187 57.0736845,70.1142131 57.8068157,70.5797392 C56.8154807,72.2161199 57.2915791,74.4184214 59.0814861,74.9588816 C59.1472098,74.9832237 59.21694,74.9976974 59.2870781,74.9996711 L69.052698,74.9996711 C69.4370135,74.9996711 69.6945266,74.8623685 70.0189803,74.7118423 C70.6431248,74.4286845 71.163664,74.0846057 71.6842755,73.7250007 L71.6842755,74.3417767 C71.6843084,74.6862502 71.9977096,74.9996053 72.3421699,74.9996711 L76.2895363,74.9996711 C76.6339966,74.9996053 76.9473978,74.6862502 76.9474306,74.3417767 L76.9474306,58.5524429 C76.9473978,58.2079694 76.6339966,57.8946143 76.2895363,57.8945485 C74.9391159,57.8945485 73.5579653,57.8945485 72.2188147,57.8945485 C71.9172359,57.9524432 71.6788676,58.2454693 71.6842755,58.5524429 L71.6842755,59.5804029 C71.1677626,59.0492189 70.5887564,58.6046139 70.0189803,58.2029694 C69.7351055,58.0284958 69.4781319,57.8945485 69.0938164,57.8945485 L67.0790148,57.8945485 L67.0790148,49.5269871 C72.3816502,48.0809747 76.2895363,43.2555167 76.2895363,37.4999276 C76.2895363,30.6041418 70.6853024,25 63.7895428,25 L63.7895428,25.0003289 Z M36.1584342,27.2955914 C41.7903658,27.2955914 46.3430947,31.8669463 46.3430947,37.4988839 C46.3430947,43.1307615 41.7903658,47.6835084 36.1584342,47.6835084 C30.5265027,47.6835084 25.9737731,43.1307615 25.9737731,37.4988839 C25.9737731,31.8669463 30.5265027,27.2955914 36.1584342,27.2955914 Z M69.6840202,29.175057 L55.0826314,42.7910724 C54.1450237,41.2495946 53.6053382,39.4384284 53.6053382,37.4993408 C53.6053382,31.867151 58.158271,27.2955914 63.7904548,27.2955914 C65.9880761,27.2955914 68.0213834,27.991603 69.6840202,29.175057 Z M72.0100878,31.4712452 C73.2461614,33.1606005 73.9755714,35.2450107 73.9755714,37.4993408 C73.9755714,43.1314706 69.4226385,47.6844214 63.7904548,47.6844214 C61.2784716,47.6844214 58.9811738,46.7787456 57.2067449,45.2755857 L72.0100878,31.4712452 Z M34.1842953,49.8152106 C34.8307357,49.9183685 35.4828735,49.9796842 36.1579784,49.9796842 C36.8330833,49.9796842 37.4852212,49.9185 38.1316616,49.8152106 L38.1316616,57.8948774 L34.1842953,57.8948774 L34.1842953,49.8152106 Z M61.8158597,49.8152106 C62.4623001,49.9183685 63.1144379,49.9796842 63.7895428,49.9796842 C64.4646477,49.9796842 65.1167856,49.9185 65.763226,49.8152106 L65.763226,57.8948774 L61.8158597,57.8948774 L61.8158597,49.8152106 Z M24.3158787,59.2106662 L26.9474563,59.2106662 L26.9474563,73.6842112 L24.3158787,73.6842112 L24.3158787,59.2106662 Z M30.8537049,59.2106662 L43.0041919,59.2106662 C43.7298363,59.752837 44.0527111,60.3536261 44.0527111,60.7730996 C44.0527111,61.2140862 43.8154744,61.577836 43.0658695,61.842178 C42.0448766,61.8421122 40.9915154,61.842178 39.9819896,61.842178 C39.6375161,61.8744148 39.3534767,62.2173094 39.3857728,62.5617171 C39.4180754,62.9061906 39.7608713,63.1902694 40.1053448,63.1579668 L42.9425143,63.1579668 C43.342126,63.6473744 43.5043496,64.1723741 43.4153759,64.5765186 C43.3160602,65.0278342 42.9319749,65.4972418 41.8323175,65.7895443 C41.0034101,65.7894785 40.14145,65.7895443 39.3240952,65.7895443 C38.9796217,65.8217811 38.6955824,66.1646757 38.7278784,66.5090834 C38.760181,66.8535569 39.1029769,67.1376357 39.4474504,67.1053331 L41.6472848,67.1053331 C42.0538109,67.6012539 42.23012,68.1467799 42.1818239,68.5855955 C42.1282056,69.0728979 41.8634886,69.4711871 41.1127456,69.7369107 C40.3044105,69.7368449 39.4629833,69.7369107 38.6662008,69.7369107 C38.3217273,69.7691475 38.037688,70.1119763 38.069984,70.456384 C38.1022866,70.8008575 38.4450825,71.0849363 38.789556,71.0526337 L40.9893904,71.0526337 C41.7495018,72.0425673 41.3919494,73.3884219 40.4959696,73.6842112 L30.8948233,73.6842112 C29.9038896,73.2977641 29.0834887,72.7031591 28.2632457,72.0394752 L28.2632457,61.4515203 C29.1161203,60.6001392 29.8298239,59.8241527 30.8537049,59.2106662 Z M56.9433293,59.2106662 L69.0938164,59.2106662 C70.1051448,59.7821791 70.9706509,60.7325733 71.6842755,61.4515203 L71.6842755,72.0394752 C70.8497694,72.7608564 70.0753224,73.2284878 69.052698,73.6842112 L59.4515517,73.6842112 C58.5555719,73.3884219 58.1980195,72.0425673 58.9581309,71.0526337 L61.1579653,71.0526337 C61.5055375,71.0592126 61.8252281,70.7423707 61.8252281,70.3947393 C61.8252281,70.0471079 61.5055375,69.7319765 61.1579653,69.7369107 L58.8347757,69.7369107 C58.0840327,69.4711871 57.8193289,69.0728979 57.7656973,68.5855955 C57.7179342,68.1515168 57.8828025,67.5971092 58.2796773,67.1053331 L60.5000709,67.1053331 C60.8476431,67.111912 61.1673337,66.7950701 61.1673337,66.4474387 C61.1673337,66.0998073 60.8476431,65.7846101 60.5000709,65.7895443 L58.1152037,65.7895443 C57.0155464,65.4972418 56.6314611,65.0278342 56.5321453,64.5765186 C56.4431717,64.1723741 56.6053953,63.6473744 57.0050069,63.1579668 L59.8421765,63.1579668 C60.1897487,63.1645457 60.5094393,62.8477038 60.5094393,62.5000724 C60.5094393,62.152441 60.1897487,61.8372438 59.8421765,61.842178 L56.8816517,61.842178 C56.1320469,61.578165 55.8948101,61.2140862 55.8948101,60.7730996 C55.8948101,60.3536261 56.217685,59.752837 56.9433293,59.2106662 Z M73.0000643,59.2106662 L75.6316419,59.2106662 L75.6316419,73.6842112 L73.0000643,73.6842112 L73.0000643,59.2106662 Z\"\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n          />\n          <polygon\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            points=\"41.9 33 34.205 40.10875 31.1 37.24875 29 39.1875 34.205 44 44 34.93875\"\n          />\n          <g\n            transform=\"translate(70 79)\"\n          >\n            <path\n              d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M7.2,13.5 L2.7,9 L3.96,7.74 L7.2,10.98 L14.04,4.14 L15.3,5.4 L7.2,13.5 L7.2,13.5 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RevealVoteSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RevealVoteSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RevealVoteSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ReviewIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h24v24h-24z\"\n          />\n          <path\n            d=\"m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm1 15h-2v-2h2zm0-4h-2v-6h2z\"\n            fill=\"#4066ff\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ReviewIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ReviewIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ReviewIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons SubmitChallengeSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(9 18)\"\n          >\n            <path\n              d=\"M63.9166667,0 L20.5833333,0 C19.9850249,0 19.5,0.485024854 19.5,1.08333333 L19.5,19.5 L15.0583333,19.5 C12.0553912,19.4961409 9.20687238,20.8304533 7.28758333,23.14 C5.78142836,24.9516447 3.54762911,25.9996685 1.19166667,26 L0,26 L0,28.1666667 L1.19166667,28.1666667 C4.1946088,28.1705258 7.04312762,26.8362134 8.96241667,24.5266667 C10.4697831,22.7135642 12.7058924,21.6653879 15.06375,21.6666667 L19.3580833,21.6666667 L33.1391667,25.3424167 C33.8947918,25.545412 34.4699891,26.1592647 34.6234779,26.9264789 C34.7769667,27.693693 34.4822032,28.4815899 33.8628333,28.9596667 C33.3576061,29.3523327 32.6972125,29.4847324 32.0796667,29.3171667 L19.7795,26.0368333 C19.2824492,25.9038387 18.7604234,26.1388182 18.5304167,26.5990833 L17.6301667,28.3995833 C16.3813874,30.9195041 13.8081904,32.5098944 10.9958333,32.5 L8.66666667,32.5 L8.66666667,34.6666667 L10.9958333,34.6666667 C14.5796362,34.6769393 17.8658559,32.6746478 19.5,29.4850833 L19.5,49.8333333 L16.575,49.8333333 C14.0013255,49.8303564 11.5866343,48.5879276 10.088,46.4955833 C8.18378094,43.8344506 5.1139231,42.2539497 1.84166667,42.25 L0,42.25 L0,44.4166667 L1.84166667,44.4166667 C4.41534112,44.4196436 6.83003238,45.6620724 8.32866667,47.7544167 C10.2328857,50.4155494 13.3027436,51.9960503 16.575,52 L19.5,52 L19.5,63.9166667 C19.5,64.5149751 19.9850249,65 20.5833333,65 L63.9166667,65 C64.5149751,65 65,64.5149751 65,63.9166667 L65,1.08333333 C65,0.485024854 64.5149751,0 63.9166667,0 Z M62.8333333,62.8333333 L21.6666667,62.8333333 L21.6666667,28.782 L31.525,31.4101667 C32.792326,31.746362 34.143918,31.4751216 35.1834041,30.6759901 C36.2228902,29.8768586 36.8324541,28.6404105 36.8333333,27.32925 C36.8328336,25.4159862 35.5466831,23.7418572 33.6981667,23.2483333 L21.6666667,20.0416667 L21.6666667,2.16666667 L62.8333333,2.16666667 L62.8333333,62.8333333 Z\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"31\"\n              y=\"5\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"31\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"12\"\n              x=\"40\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"11\"\n              x=\"38\"\n              y=\"24\"\n            />\n            <rect\n              height=\"2\"\n              width=\"20\"\n              x=\"38\"\n              y=\"29\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"35\"\n            />\n            <rect\n              height=\"2\"\n              width=\"3\"\n              x=\"54\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"51\"\n              y=\"24\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"27\"\n              y=\"40\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"46\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"27\"\n              y=\"51\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"36\"\n              y=\"51\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"51\"\n              y=\"40\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"13\"\n            />\n          </g>\n          <g\n            transform=\"translate(74 71)\"\n          >\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SubmitChallengeSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    SubmitChallengeSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              SubmitChallengeSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TokenWalletIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"21\"\n        viewBox=\"0 0 24 21\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M22.179 13.216L22.179 5.049C22.179 4.253 21.531 3.608 20.732 3.608L17.357 3.608 17.357 1.301C17.355 0.901 17.169 0.523 16.853 0.277 16.536 0.03 16.123-0.058 15.732 0.038L1.35 3.608C0.589 3.658-0.002 4.289 0 5.049L0 18.501C0 19.297 0.648 19.942 1.446 19.942L15.429 19.942C17.348 21.377 20.034 21.187 21.731 19.496 23.427 17.805 23.618 15.129 22.179 13.216ZM15.964 0.965C16.068 0.936 16.179 0.96 16.263 1.028 16.347 1.093 16.395 1.195 16.393 1.301L16.393 3.608 5.361 3.608 15.964 0.965ZM1.446 18.981C1.18 18.981 0.964 18.766 0.964 18.501L0.964 5.049C0.964 4.783 1.18 4.568 1.446 4.568L20.732 4.568C20.998 4.568 21.214 4.783 21.214 5.049L21.214 12.255C19.295 10.821 16.609 11.011 14.912 12.702 13.216 14.392 13.025 17.069 14.464 18.981L1.446 18.981ZM18.321 19.942C16.191 19.942 14.464 18.222 14.464 16.099 14.464 13.976 16.191 12.255 18.321 12.255 20.452 12.255 22.179 13.976 22.179 16.099 22.179 18.222 20.452 19.942 18.321 19.942ZM20.732 16.099C20.732 16.364 20.516 16.579 20.25 16.579L18.804 16.579 18.804 18.021C18.804 18.286 18.588 18.501 18.321 18.501 18.055 18.501 17.839 18.286 17.839 18.021L17.839 16.579 16.393 16.579C16.127 16.579 15.911 16.364 15.911 16.099 15.911 15.833 16.127 15.618 16.393 15.618L17.839 15.618 17.839 14.177C17.839 13.912 18.055 13.697 18.321 13.697 18.588 13.697 18.804 13.912 18.804 14.177L18.804 15.618 20.25 15.618C20.516 15.618 20.732 15.833 20.732 16.099Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TokenWalletIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    TokenWalletIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TokenWalletIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TrendsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"48\"\n        viewBox=\"0 0 48 48\"\n        width=\"48\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M24,48 C10.766,48 0,37.234 0,24 C0,10.766 10.766,0 24,0 C37.234,0 48,10.766 48,24 C48,37.234 37.234,48 24,48 Z M24,2 C11.87,2 2,11.87 2,24 C2,36.13 11.87,46 24,46 C36.13,46 46,36.13 46,24 C46,11.87 36.13,2 24,2 Z\"\n            fillRule=\"nonzero\"\n          />\n          <polygon\n            points=\"36 24.9230769 34.0221193 24.9230769 34.0221193 17.6701884 26.7692308 17.6701884 26.7692308 15.6923077 35.0110596 15.6923077 36 16.681248\"\n          />\n          <polygon\n            points=\"14.3524956 31.3846154 12.9230769 29.9762196 19.7022011 23.2948061 20.7373671 23.0557573 26.2104029 24.8526073 34.5705813 16.6153846 36 18.0237804 27.1990673 26.6972671 26.1639013 26.938308 20.6908655 25.1394659\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TrendsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    TrendsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TrendsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TwitterIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        className=\"sc-fzXfPI dWWJAf\"\n        height={23}\n        viewBox=\"0 0 22 23\"\n        width={23}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m19 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-2.1171875 7.7004415c-.1015625 4.7261258-3.046875 8.0138655-7.515625 8.2193493-1.828125.1027418-3.1484375-.5137094-4.3671875-1.2329024 1.3203125.2054837 3.046875-.3082256 3.9609375-1.1301605-1.3203125-.1027419-2.1328125-.821935-2.5390625-1.9520955.40625.1027419.8125 0 1.1171875 0-1.21875-.4109675-2.03125-1.1301605-2.1328125-2.77403038.3046875.20548378.7109375.30822558 1.1171875.30822558-.9140625-.51370931-1.5234375-2.46580476-.8125-3.69870716 1.3203125 1.43838613 2.9453125 2.67128852 5.5859375 2.87677225-.7109375-2.87677225 3.1484375-4.41790024 4.671875-2.46580478.7109375-.10274187 1.21875-.41096747 1.7265625-.6164512-.203125.71919306-.609375 1.13016053-1.1171875 1.54112799.5078125-.10274186 1.015625-.20548373 1.421875-.41096746-.1015625.51370933-.609375.92467679-1.1171875 1.33564426z\"\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(0 .457)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TwitterIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(_TwitterIcon)\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(_TwitterIcon)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons VerifyIdentityIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"22\"\n        viewBox=\"0 0 18 22\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-2 -0.5)\"\n          >\n            <polygon\n              points=\"0 0 22.9 0 22.9 22.9 0 22.9\"\n            />\n            <path\n              d=\"M11.5 1L2.9 4.8 2.9 10.5C2.9 15.8 6.5 20.8 11.5 22 16.4 20.8 20 15.8 20 10.5L20 4.8 11.5 1ZM18.1 10.5C18.1 14.8 15.3 18.8 11.5 20 7.6 18.8 4.8 14.8 4.8 10.5L4.8 6 11.5 3 18.1 6 18.1 10.5ZM7.1 11.1L5.7 12.4 9.5 16.2 17.2 8.6 15.8 7.2 9.5 13.5 7.1 11.1Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            VerifyIdentityIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    VerifyIdentityIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              VerifyIdentityIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons WaitForApply 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"54\"\n        viewBox=\"0 0 54 54\"\n        width=\"54\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"27\"\n          cy=\"27\"\n          fill=\"#90e8d3\"\n          r=\"27\"\n        />\n        <path\n          d=\"m22.0188072 35.5783153h-2.7243229v-3.6842105c0-.4440359-.3660757-.8044128-.8171334-.8044128s-.8171334.3603769-.8171334.8044128v4.4886233c0 .4440359.3660757.8044128.8171334.8044128h3.5414563c.4510577 0 .8171335-.3603769.8171335-.8044128 0-.4440358-.3656672-.8044128-.8171335-.8044128zm18.7752752-18.3273385-6.2919275-6.9802919c-.1552554-.1721443-.3775157-.2706849-.6112159-.2706849h-17.2349785c-.4510577 0-.8171335.3603769-.8171335.8044128v17.4633992c-3.3960066 1.1853022-5.838827 4.3707768-5.838827 8.1153183 0 4.7512641 3.9263262 8.6168697 8.7531334 8.6168697 2.8566986 0 5.3902208-1.360262 6.9889424-3.4509308h14.4407908c.4510576 0 .8171334-.3603769.8171334-.8044128v-22.9599517c0-.1970812-.073542-.3869226-.2059176-.5337279zm-6.1007183-4.3442312 3.7122372 4.1181912h-3.7122372zm-15.9406392 30.4840266c-3.9251005 0-7.1188666-3.1436451-7.1188666-7.0080441s3.1933575-7.0080441 7.1188666-7.0080441c3.925509 0 7.1188665 3.1440473 7.1188665 7.0080441s-3.1933575 7.0080441-7.1188665 7.0080441zm20.6130082-3.4509308h-12.6496343c.5025371-1.0859572.7901681-2.2877499.7901681-3.5571133 0-.22604-.0171598-.4476557-.0343196-.6692714h7.6205865c.4510576 0 .8171334-.3603769.8171334-.8044128s-.3660758-.8044128-.8171334-.8044128h-7.9069918c-.336659-1.2062169-.9270379-2.3090669-1.7204745-3.2429901h9.6270577c.4510577 0 .8171334-.3603769.8171334-.8044128 0-.4440358-.3660757-.8044128-.8171334-.8044128h-11.4304712c-1.4009753-.937543-3.0903986-1.486957-4.9089291-1.486957-.4355321 0-.8608501.0418295-1.2800396.1029649v-16.2603999h15.5860033v6.2209262c0 .4440358.3660758.8044128.8171335.8044128h5.4895024v21.306079zm-18.4365733-14.7340266c0 .4440358.3660758.8044127.8171334.8044127h13.3462406c.4510576 0 .8171334-.3603769.8171334-.8044127 0-.4440359-.3660758-.8044128-.8171334-.8044128h-13.3462406c-.4514662 0-.8171334.3599747-.8171334.8044128zm0-5c0 .4440358.2194549.8044127.4898547.8044127h8.0007976c.2703998 0 .4898547-.3603769.4898547-.8044127 0-.4440359-.2194549-.8044128-.4898547-.8044128h-8.0007976c-.2706447 0-.4898547.3599747-.4898547.8044128z\"\n          fill=\"#000000\"\n          fillRule=\"nonzero\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            WaitForApply\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WaitForApply\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WaitForApply\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons WarningIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNRX jqOuGJ\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n          transform=\"translate(-40, -20)\"\n        >\n          <path\n            d=\"M4,0.5 C2.06700338,0.5 0.5,2.06700338 0.5,4 L0.5,64 C0.5,65.9329966 2.06700338,67.5 4,67.5 L726,67.5 C727.932997,67.5 729.5,65.9329966 729.5,64 L729.5,4 C729.5,2.06700338 727.932997,0.5 726,0.5 L4,0.5 Z\"\n            fill=\"#FCFCFC\"\n            stroke=\"#FF0C1A\"\n          />\n          <g\n            transform=\"translate(38, 18)\"\n          >\n            <polygon\n              points=\"0 0 32 0 32 32 0 32\"\n            />\n            <path\n              d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n              fill=\"#FF0C1A\"\n              fillRule=\"nonzero\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            WarningIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WarningIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WarningIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/icons/index.ts",
    "content": "export {\n  ApplicationInProgressIcon,\n  ApprovedNewsroomsIcon,\n  ArticleIndexIcon,\n  ArticleIndexPanelIcon,\n  ArticleSignIcon,\n  ArticleSignPanelIcon,\n  BellIcon,\n  BookreaderIcon,\n  BrainIcon,\n  CCAmexIcon,\n  CCDiscoverIcon,\n  CCMastercardIcon,\n  CCSecurityCodeIcon,\n  CCVisaIcon,\n  Chevron,\n  CivilIcon,\n  CivilTutorialIcon,\n  CvlToken,\n  ClockIcon,\n  CloseXIcon,\n  CommitVoteSuccessIcon,\n  DashboardNewsroomApplicationIcon,\n  DisclosureArrowIcon,\n  DropdownArrow,\n  EmbedIcon,\n  ErrorIcon,\n  ExamIcon,\n  ExchangeArrowsIcon,\n  ExpandDownArrow,\n  FacebookIcon,\n  GreenCheckMark,\n  HamburgerIcon,\n  HollowGrayNotGranted,\n  HollowGreenCheck,\n  HollowRedNoGood,\n  InfoNotification,\n  InstagramIcon,\n  LockOpenIcon,\n  MediumIcon,\n  MetaMaskFrontIcon,\n  MetaMaskSideIcon,\n  NetworkIcon,\n  NorthEastArrow,\n  OctopusErrorIcon,\n  RegistryEmptyIcon,\n  RejectedNewsroomsIcon,\n  RevealVoteSuccessIcon,\n  ReviewIcon,\n  RequestAppealSuccessIcon,\n  ShareEmailIcon,\n  ShareTwitterIcon,\n  SubmitChallengeSuccessIcon,\n  TelegramIcon,\n  TokenWalletIcon,\n  TrendsIcon,\n  TwitterIcon,\n  VerifyIdentityIcon,\n  WarningIcon,\n  WaitForApply,\n  GrantSubmitIcon,\n  ZoomInIcon,\n  ZoomOutIcon,\n} from \"@joincivil/elements\";\n"
  },
  {
    "path": "packages/components/src/icons/logos/Paypal.tsx",
    "content": "import * as React from \"react\";\n\nexport const PaypalLogoIcon = (): JSX.Element => {\n  return (\n    <svg\n      width=\"64px\"\n      height=\"16px\"\n      viewBox=\"0 0 64 16\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    >\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-43.000000, -132.000000)\">\n          <g>\n            <rect stroke=\"#E9E9EA\" fill=\"#FFFFFF\" fillRule=\"nonzero\" x=\"0.5\" y=\"0.5\" width=\"349\" height=\"198\" />\n            <g transform=\"translate(28.000000, 112.000000)\">\n              <rect strokeOpacity=\"0.5\" stroke=\"#4066FF\" fill=\"#FFFFFF\" x=\"0.5\" y=\"0.5\" width=\"92\" height=\"54\" rx=\"2\" />\n              <g transform=\"translate(15.000000, 20.000000)\" fillRule=\"nonzero\">\n                <path\n                  d=\"M23.8508387,3.48335484 L20.3210323,3.48335484 C20.0796078,3.48320256 19.8739984,3.65881354 19.8363871,3.89729032 L18.4087742,12.9486452 C18.3954918,13.0336465 18.4200827,13.1202025 18.4760721,13.1855235 C18.5320615,13.2508444 18.6138383,13.288384 18.699871,13.2882581 L20.3850323,13.2882581 C20.6266239,13.2883705 20.8322943,13.1124883 20.8696774,12.8738065 L21.2547097,10.4325161 C21.2920625,10.1940274 21.4974426,10.0182063 21.7388387,10.0180645 L22.8562581,10.0180645 C25.1814194,10.0180645 26.5233548,8.89290323 26.8738065,6.66322581 C27.0317419,5.68774194 26.8805161,4.92129032 26.4237419,4.38451613 C25.9220645,3.79509677 25.0322581,3.48335484 23.8508387,3.48335484 L23.8508387,3.48335484 Z M24.2580645,6.78916129 C24.0650323,8.05574194 23.0972903,8.05574194 22.1615484,8.05574194 L21.6289032,8.05574194 L22.0025806,5.69032258 C22.0251809,5.54735479 22.1484182,5.44206677 22.2931613,5.44206452 L22.5372903,5.44206452 C23.1747097,5.44206452 23.776,5.44206452 24.0867097,5.80541935 C24.272,6.02219355 24.3287742,6.34425806 24.2580645,6.78916129 L24.2580645,6.78916129 Z M34.4020645,6.7483871 L32.7117419,6.7483871 C32.5669989,6.74838935 32.4437615,6.85367737 32.4211613,6.99664516 L32.3463226,7.46941935 L32.228129,7.29806452 C31.8621935,6.76696774 31.0461935,6.58941935 30.2317419,6.58941935 C28.363871,6.58941935 26.7685161,8.00412903 26.4578065,9.98864516 C26.2962581,10.9785806 26.5259355,11.9251613 27.0874839,12.5852903 C27.6025806,13.1922581 28.3396129,13.4451613 29.2165161,13.4451613 C30.7215484,13.4451613 31.556129,12.4774194 31.556129,12.4774194 L31.4807742,12.9470968 C31.4671851,13.0320807 31.4914907,13.1187535 31.5472872,13.1842797 C31.6030838,13.2498058 31.6847753,13.2876136 31.7708387,13.2877419 L33.2934194,13.2877419 C33.535011,13.2878544 33.7406814,13.1119722 33.7780645,12.8732903 L34.6916129,7.088 C34.7052211,7.00320242 34.6809613,6.91670242 34.6252416,6.85134853 C34.5695219,6.78599464 34.4879471,6.74836054 34.4020645,6.7483871 L34.4020645,6.7483871 Z M32.0459355,10.0381935 C31.8828387,11.003871 31.1163871,11.652129 30.1388387,11.652129 C29.648,11.652129 29.2557419,11.4947097 29.003871,11.1963871 C28.7540645,10.900129 28.6590968,10.4784516 28.7385806,10.0087742 C28.8908387,9.05135484 29.6701935,8.38193548 30.6327742,8.38193548 C31.1127742,8.38193548 31.5029677,8.54141935 31.76,8.84232258 C32.0175484,9.14632258 32.1197419,9.57058065 32.0459355,10.0381935 L32.0459355,10.0381935 Z M43.4043871,6.7483871 L41.7058065,6.7483871 C41.5431734,6.74864454 41.3911579,6.82919152 41.2996129,6.9636129 L38.9569032,10.4144516 L37.963871,7.09832258 C37.901283,6.89065341 37.7100569,6.74849189 37.4931613,6.7483871 L35.824,6.7483871 C35.7289352,6.7481343 35.6396073,6.79383384 35.5841872,6.87107367 C35.5287671,6.9483135 35.5140862,7.04757271 35.5447742,7.13754839 L37.4157419,12.628129 L35.6567742,15.1112258 C35.5930466,15.200977 35.5847535,15.3187957 35.6352801,15.4165892 C35.6858067,15.5143826 35.7866993,15.5757887 35.8967742,15.5757419 L37.5932903,15.5757419 C37.7540744,15.5759634 37.9047284,15.4972607 37.9963871,15.3651613 L43.6459355,7.21032258 C43.7083474,7.12039791 43.7156733,7.00325781 43.6649515,6.90625782 C43.6142297,6.80925782 43.513848,6.74843857 43.4043871,6.7483871 L43.4043871,6.7483871 Z\"\n                  id=\"Shape\"\n                  fill=\"#253B80\"\n                />\n                <path\n                  d=\"M49.028129,3.48335484 L45.4978065,3.48335484 C45.2565775,3.48345661 45.0512583,3.65900666 45.0136774,3.89729032 L43.5860645,12.9486452 C43.5726265,13.0335001 43.5970191,13.1199842 43.6528156,13.1853118 C43.7086121,13.2506394 43.7902166,13.2882586 43.876129,13.2882581 L45.6877419,13.2882581 C45.8565852,13.2880105 46.0001711,13.1649994 46.0263226,12.9981935 L46.4314839,10.4325161 C46.4688367,10.1940274 46.6742168,10.0182063 46.9156129,10.0180645 L48.0325161,10.0180645 C50.3581935,10.0180645 51.6996129,8.89290323 52.0505806,6.66322581 C52.2090323,5.68774194 52.0567742,4.92129032 51.6,4.38451613 C51.0988387,3.79509677 50.2095484,3.48335484 49.028129,3.48335484 L49.028129,3.48335484 Z M49.4353548,6.78916129 C49.2428387,8.05574194 48.2750968,8.05574194 47.3388387,8.05574194 L46.8067097,8.05574194 L47.1809032,5.69032258 C47.203068,5.54732171 47.3262594,5.44188558 47.4709677,5.44206452 L47.7150968,5.44206452 C48.352,5.44206452 48.9538065,5.44206452 49.2645161,5.80541935 C49.4498065,6.02219355 49.5060645,6.34425806 49.4353548,6.78916129 L49.4353548,6.78916129 Z M59.5788387,6.7483871 L57.8895484,6.7483871 C57.7447593,6.74798882 57.6214444,6.8535306 57.5994839,6.99664516 L57.5246452,7.46941935 L57.4059355,7.29806452 C57.04,6.76696774 56.2245161,6.58941935 55.4100645,6.58941935 C53.5421935,6.58941935 51.9473548,8.00412903 51.6366452,9.98864516 C51.4756129,10.9785806 51.7042581,11.9251613 52.2658065,12.5852903 C52.7819355,13.1922581 53.5179355,13.4451613 54.3948387,13.4451613 C55.899871,13.4451613 56.7344516,12.4774194 56.7344516,12.4774194 L56.6590968,12.9470968 C56.6454791,13.0322588 56.6699161,13.1191071 56.7259447,13.1846725 C56.7819732,13.2502379 56.8639498,13.287916 56.9501935,13.2877419 L58.4722581,13.2877419 C58.7136542,13.2876002 58.9190343,13.1117791 58.9563871,12.8732903 L59.8704516,7.088 C59.8835646,7.00294166 59.8588415,6.91640123 59.8027752,6.85110624 C59.7467088,6.78581126 59.6649018,6.74828659 59.5788387,6.7483871 L59.5788387,6.7483871 Z M57.2227097,10.0381935 C57.0606452,11.003871 56.2931613,11.652129 55.3156129,11.652129 C54.8258065,11.652129 54.4325161,11.4947097 54.1806452,11.1963871 C53.9308387,10.900129 53.8369032,10.4784516 53.9153548,10.0087742 C54.0686452,9.05135484 54.8469677,8.38193548 55.8095484,8.38193548 C56.2895484,8.38193548 56.6797419,8.54141935 56.9367742,8.84232258 C57.1953548,9.14632258 57.2975484,9.57058065 57.2227097,10.0381935 L57.2227097,10.0381935 Z M61.5716129,3.7316129 L60.1228387,12.9486452 C60.1094007,13.0335001 60.1337933,13.1199842 60.1895898,13.1853118 C60.2453863,13.2506394 60.3269908,13.2882586 60.4129032,13.2882581 L61.8694194,13.2882581 C62.1114839,13.2882581 62.3169032,13.1127742 62.3540645,12.8738065 L63.7827097,3.82296774 C63.7961313,3.7380641 63.7717488,3.65153729 63.7159718,3.58613324 C63.6601947,3.52072919 63.578603,3.48299083 63.4926452,3.48283871 L61.8616774,3.48283871 C61.7170431,3.48335085 61.5941558,3.58874522 61.5716129,3.7316129 L61.5716129,3.7316129 Z\"\n                  id=\"Shape\"\n                  fill=\"#179BD7\"\n                />\n                <path\n                  d=\"M3.75019355,15.0472258 L4.02012903,13.3326452 L3.41883871,13.3187097 L0.547612903,13.3187097 L2.54296774,0.66683871 C2.55524562,0.586939826 2.62419665,0.528089902 2.70503226,0.528516129 L7.54632258,0.528516129 C9.15354839,0.528516129 10.2627097,0.862967742 10.8418065,1.52309677 C11.1132903,1.83277419 11.2861935,2.1563871 11.3698065,2.51251613 C11.4575484,2.88619355 11.4590968,3.33264516 11.3734194,3.87716129 L11.3672258,3.91690323 L11.3672258,4.26580645 L11.6387097,4.4196129 C11.8459649,4.52461422 12.0322584,4.66665203 12.1883871,4.83870968 C12.4206452,5.10348387 12.5708387,5.44 12.6343226,5.83896774 C12.699871,6.24929032 12.6781935,6.73754839 12.5708387,7.29032258 C12.4469677,7.92619355 12.2467097,8.48 11.9762581,8.93316129 C11.737635,9.33912072 11.4167969,9.69072418 11.0343226,9.96541935 C10.6750968,10.2203871 10.2482581,10.4139355 9.76567742,10.5378065 C9.29806452,10.6596129 8.76490323,10.7210323 8.18012903,10.7210323 L7.80335484,10.7210323 C7.53393548,10.7210323 7.27225806,10.8180645 7.06683871,10.992 C6.8617106,11.1677914 6.7256333,11.4106821 6.68283871,11.6774194 L6.65445161,11.8317419 L6.17754839,14.8536774 L6.15587097,14.9646452 C6.15019355,14.9997419 6.1403871,15.0172903 6.12593548,15.0291613 C6.11193597,15.0406102 6.0944703,15.0469779 6.0763871,15.0472258 L3.75019355,15.0472258 Z\"\n                  id=\"Path\"\n                  fill=\"#253B80\"\n                />\n                <path\n                  d=\"M11.8957419,3.95716129 C11.8812903,4.04954839 11.8647742,4.144 11.8461935,4.24103226 C11.2077419,7.51896774 9.02348387,8.65135484 6.23380645,8.65135484 L4.81341935,8.65135484 C4.47225806,8.65135484 4.18477419,8.89909677 4.1316129,9.2356129 L3.4043871,13.8477419 L3.19845161,15.1550968 C3.18184956,15.2600448 3.21201609,15.3670013 3.28100921,15.4478076 C3.35000232,15.5286139 3.45090825,15.5751725 3.55716129,15.5752258 L6.0763871,15.5752258 C6.37470968,15.5752258 6.62812903,15.3584516 6.67509677,15.0642581 L6.69987097,14.9362581 L7.17419355,11.9261935 L7.20464516,11.7610323 C7.25109677,11.4658065 7.50503226,11.2490323 7.80335484,11.2490323 L8.18012903,11.2490323 C10.6209032,11.2490323 12.5316129,10.2580645 13.0900645,7.39045161 C13.3233548,6.19251613 13.2025806,5.19225806 12.5852903,4.48877419 C12.3896414,4.27115513 12.1559755,4.09100848 11.8957419,3.95716129 L11.8957419,3.95716129 Z\"\n                  id=\"Path\"\n                  fill=\"#179BD7\"\n                />\n                <path\n                  d=\"M11.227871,3.69083871 C11.0240136,3.63186642 10.8166324,3.58583917 10.6069677,3.55303226 C10.1926813,3.48936354 9.77397926,3.45881521 9.35483871,3.46167742 L5.56025806,3.46167742 C5.26187242,3.46144702 5.00789159,3.67883183 4.96206452,3.97367742 L4.15483871,9.08645161 L4.1316129,9.2356129 C4.1835753,8.89930045 4.47311636,8.65118502 4.81341935,8.65135484 L6.23380645,8.65135484 C9.02348387,8.65135484 11.2077419,7.51845161 11.8461935,4.24103226 C11.8652903,4.144 11.8812903,4.04954839 11.8957419,3.95716129 C11.7272698,3.86881475 11.5516871,3.79474888 11.3708387,3.73574194 C11.3234261,3.72001024 11.2757641,3.70504057 11.227871,3.69083871 L11.227871,3.69083871 Z\"\n                  id=\"Path\"\n                  fill=\"#222D65\"\n                />\n                <path\n                  d=\"M4.96206452,3.97367742 C5.00750887,3.67869599 5.26179806,3.46126667 5.56025806,3.46219355 L9.35483871,3.46219355 C9.8043871,3.46219355 10.224,3.4916129 10.6069677,3.55354839 C10.86612,3.59427729 11.1216936,3.65519387 11.3713548,3.73574194 C11.5597419,3.79819355 11.7347097,3.872 11.8962581,3.95716129 C12.0861935,2.74580645 11.8947097,1.92103226 11.2397419,1.17419355 C10.5176774,0.352 9.21445161,0 7.54683871,0 L2.70554839,0 C2.36490323,0 2.07432258,0.247741935 2.02167742,0.584774194 L0.00516129032,13.3667097 C-0.0138469339,13.4868063 0.0206397385,13.6092075 0.0995495612,13.7017157 C0.178459384,13.7942238 0.293892403,13.8475775 0.415483871,13.8477419 L3.4043871,13.8477419 L4.15483871,9.08645161 L4.96206452,3.97367742 Z\"\n                  id=\"Path\"\n                  fill=\"#253B80\"\n                />\n              </g>\n            </g>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/icons/logos/index.ts",
    "content": "export * from \"./Paypal\";\n"
  },
  {
    "path": "packages/components/src/imageUrls.ts",
    "content": "import metaMaskNetworkSwitchImgUrl from \"./images/img-metamask-networkswitch@2x.png\";\nimport metaMaskLoginImgUrl from \"./images/img-metamask-login@2x.png\";\nimport metaMaskFrontLargeImgUrl from \"./images/img-metamask-large-front@2x.png\";\nimport metaMaskConnectImgUrl from \"./images/img-metamask-connectreq-banner@2x.png\";\nimport metaMaskSignImgUrl from \"./images/img-metamask-sign@2x.png\";\n\nimport applicationSavedImgUrl from \"./images/img-application-saved@2x.png\";\nimport applicationSubmittedImgUrl from \"./images/img-application-submitted@2x.png\";\nimport grantSubmittedImgUrl from \"./images/img-grant-submitted@2x.png\";\nimport defaultNewsroomImgUrl from \"./images/img-default-newsroom@2x.png\";\n\nimport storyPlaceholderImgUrl from \"./images/img-story-placeholder.png\";\n\n// So that we can host this image and access it from embed code instead of inlining huge svg string:\nimport loadingImgUrl from \"./images/loading.svg\";\n\nexport {\n  metaMaskNetworkSwitchImgUrl,\n  metaMaskLoginImgUrl,\n  metaMaskFrontLargeImgUrl,\n  metaMaskConnectImgUrl,\n  metaMaskSignImgUrl,\n  applicationSavedImgUrl,\n  applicationSubmittedImgUrl,\n  grantSubmittedImgUrl,\n  defaultNewsroomImgUrl,\n  storyPlaceholderImgUrl,\n  loadingImgUrl,\n};\n"
  },
  {
    "path": "packages/components/src/index.ts",
    "content": "export * from \"./containers\";\nexport * from \"./context\";\nexport * from \"./input\";\nexport * from \"./Account\";\nexport * from \"./Button\";\nexport * from \"./Card\";\nexport * from \"./ChevronAnchor\";\nexport * from \"./ChevronAnchorLeft\";\nexport * from \"./FullscreenModal\";\nexport * from \"./Heading\";\nexport * from \"./Message\";\nexport * from \"./styleConstants\";\nexport * from \"./LoadingIndicator\";\nexport * from \"./LoadingMessage\";\nexport * from \"./Modal\";\nexport * from \"./ModalContent\";\nexport * from \"./StepProcess\";\nexport * from \"./TransactionButton\";\nexport * from \"./DetailTransactionButton\";\nexport * from \"./DetailsButtonComponent\";\nexport * from \"./SignConstitutionButton\";\nexport * from \"./Collapsable\";\nexport * from \"./AddressWithCopyButton\";\nexport * from \"./AddressWithMetaMaskIcon\";\nexport * from \"./ListingSummary\";\nexport * from \"./ListingDetailHeader\";\nexport * from \"./ListingDetailPhaseCard\";\nexport * from \"./PhaseCountdown\";\nexport * from \"./QuestionToolTip\";\nexport * from \"./ToolTip\";\nexport * from \"./ListingHistoryEvent\";\nexport * from \"./ViewTransactionLink\";\nexport * from \"./TCRUserDashboard\";\nexport * from \"./ChallengeResultsChart\";\nexport * from \"./imageUrls\";\nexport * from \"./icons\";\nexport * from \"./theme\";\nexport * from \"./Tabs\";\nexport * from \"./Hero\";\nexport * from \"./ClipLoader\";\nexport * from \"./ClaimRewards\";\nexport * from \"./RescueTokens\";\nexport * from \"./MetaMaskModal\";\nexport * from \"./Notice\";\nexport * from \"./ReviewVote\";\nexport * from \"./onboardingStyledComponents\";\nexport * from \"./WalletOnboarding\";\nexport * from \"./WalletOnboardingV2\";\nexport * from \"./Table\";\nexport * from \"./Parameterizer\";\nexport * from \"./UserStatement\";\nexport * from \"./MetaMaskLogoButton\";\nexport * from \"./CardTransactionButton\";\nexport * from \"./ProgressModalContent\";\nexport * from \"./RegistryEmpty\";\nexport * from \"./Layout\";\nexport * from \"./SnackBar\";\nexport * from \"./DAppMessageContent\";\nexport * from \"./EmailSignup\";\nexport * from \"./Tokens\";\nexport * from \"./ExecuteOnMount\";\nexport * from \"./AuthenticatedRoute\";\nexport * from \"./EthAddressViewer\";\nexport * from \"./Notice\";\nexport * from \"./CurrencyConverter\";\nexport * from \"./GasEstimate\";\nexport * from \"./features\";\nexport * from \"./CopyToClipboard\";\nexport * from \"./HelmetHelper\";\nexport * from \"./WithNewsroomChannelHOC\";\nexport * from \"./Contributors\";\nexport * from \"./Comments\";\nexport * from \"./StoryFeed\";\nexport * from \"./Payments\";\n"
  },
  {
    "path": "packages/components/src/input/AddressInput.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { AddressInput } from \"./AddressInput\";\n\nstoriesOf(\"Pattern Library / inputs / AddressInput\", module)\n  .add(\"valid\", () => {\n    return (\n      <AddressInput\n        address={\"0x8c722b8ac728add7780a66017e8dadba530ee261\"}\n        onChange={(name: any, value: any) => undefined}\n      />\n    );\n  })\n  .add(\"invalid\", () => {\n    return <AddressInput address={\"0x8c722b8ac728add7780a66017e\"} onChange={(name: any, value: any) => undefined} />;\n  });\n"
  },
  {
    "path": "packages/components/src/input/AddressInput.tsx",
    "content": "import * as React from \"react\";\nimport { TextInput } from \"./Input\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { isWellFormattedAddress } from \"@joincivil/utils\";\n\nexport interface AddressInputProps {\n  address: EthAddress;\n  onChange(name: any, value: any): void;\n}\n\nexport class AddressInput extends React.Component<AddressInputProps> {\n  public invalid(): boolean {\n    return !!this.props.address && !isWellFormattedAddress(this.props.address);\n  }\n  public render(): JSX.Element {\n    const invalid = this.invalid();\n    return (\n      <TextInput\n        label=\"Wallet Address\"\n        placeholder=\"Enter Wallet Address\"\n        name=\"EditorWalletInput\"\n        onChange={this.props.onChange}\n        value={this.props.address}\n        invalid={invalid}\n        invalidMessage={\"The address you have entered is invalid\"}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/components/src/input/Checkbox.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../styleConstants\";\nimport { CheckboxTheme } from \"./SlideCheckbox\";\n\nexport enum CheckboxSizes {\n  SMALL = \"SMALL\",\n}\n\ninterface BoxProps {\n  locked?: boolean;\n  size?: CheckboxSizes;\n}\n\nconst Box = styled.span`\n  position: absolute;\n  cursor: ${(props: BoxProps) => (props.locked ? \"default\" : \"pointer\")};\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  &:after {\n    content: \"\";\n    position: absolute;\n    display: none;\n    left: 4px;\n    top: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"1\" : \"0\")}px;\n    width: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"3\" : \"5\")}px;\n    height: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"7\" : \"10\")}px;\n    border: solid white;\n    border-width: 0 3px 3px 0;\n    transform: rotate(45deg);\n  }\n`;\n\ninterface ContainerProps {\n  locked?: boolean;\n  theme?: CheckboxTheme;\n  size?: CheckboxSizes;\n}\n\nconst Container = styled.label<ContainerProps>`\n  position: relative;\n  display: inline-block;\n  box-sizing: content-box;\n  width: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"16\" : \"20\")}px;\n  height: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"16\" : \"20\")}px;\n  vertical-align: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"middle\" : \"bottom\")};\n\n  input {\n    display: none;\n  }\n  input + ${Box} {\n    border-radius: 2px;\n    color: transparent;\n    border: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"1\" : \"2\")}px solid\n      ${props => props.theme.checkboxInactiveColor};\n    background-color: transparent;\n  }\n  input:checked + ${Box} {\n    color: ${colors.basic.WHITE};\n    border: ${(props: ContainerProps) => (props.size === CheckboxSizes.SMALL ? \"1\" : \"2\")}px solid\n      ${props => props.theme.checkboxActiveColor};\n    background-color: ${props => props.theme.checkboxActiveColor};\n    opacity: ${(props: ContainerProps) => (props.locked ? 0.7 : 1)};\n  }\n  input:checked + ${Box}:after {\n    display: block;\n  }\n`;\n\nexport const DEFAULT_CHECKBOX_THEME = {\n  checkboxInactiveColor: colors.accent.CIVIL_GRAY_2,\n  checkboxActiveColor: colors.accent.CIVIL_BLUE,\n};\n\nContainer.defaultProps = {\n  theme: DEFAULT_CHECKBOX_THEME,\n};\n\nexport interface CheckboxProps {\n  checked: boolean;\n  locked?: boolean;\n  size?: CheckboxSizes;\n  id?: string;\n  onClick(): void;\n}\n\nexport const Checkbox = (props: CheckboxProps) => {\n  return (\n    <Container locked={props.locked} size={props.size}>\n      <input\n        onChange={() => {\n          if (!props.locked) {\n            props.onClick();\n          }\n        }}\n        checked={props.checked}\n        id={props.id}\n        type=\"checkbox\"\n      />\n      <Box locked={props.locked} size={props.size} />\n    </Container>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/input/Dropdown.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { Dropdown, DropdownGroup, DropdownItem } from \"./Dropdown\";\n\nstoriesOf(\"Pattern Library / Dropdown\", module).add(\"Dropdown\", () => {\n  return (\n    <Dropdown position=\"left\" target={<span>Click to Activate</span>}>\n      <DropdownGroup>\n        <DropdownItem>Account</DropdownItem>\n        <DropdownItem>Help Center</DropdownItem>\n        <DropdownItem>Sign Out</DropdownItem>\n      </DropdownGroup>\n    </Dropdown>\n  );\n});\n"
  },
  {
    "path": "packages/components/src/input/Dropdown.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Link } from \"react-router-dom\";\nimport { colors, fonts } from \"../styleConstants\";\n\nexport interface DropdownProps {\n  className?: string;\n  position?: string; // right or left\n  target: JSX.Element;\n}\n\nexport interface DropdownState {\n  open: boolean;\n}\n\nexport class DropdownComponent extends React.Component<DropdownProps, DropdownState> {\n  private wrapperRef: any;\n  constructor(props: DropdownProps) {\n    super(props);\n\n    this.state = { open: false };\n\n    this.toggle = this.toggle.bind(this);\n\n    this.setWrapperRef = this.setWrapperRef.bind(this);\n    this.handleClickOutside = this.handleClickOutside.bind(this);\n  }\n\n  public componentWillUnmount(): void {\n    document.removeEventListener(\"mousedown\", this.handleClickOutside.bind(this));\n  }\n\n  public render(): JSX.Element {\n    return (\n      <div className={this.props.className}>\n        <div onClick={ev => this.toggle()}>{this.props.target}</div>\n        {this.state.open ? (\n          <div ref={ref => this.setWrapperRef(ref)}>\n            <div onClick={ev => this.toggle()}>{this.props.children}</div>\n          </div>\n        ) : null}\n      </div>\n    );\n  }\n\n  private handleClickOutside(event: any): void {\n    if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n      this.toggle();\n    }\n  }\n\n  private setWrapperRef(node: any): void {\n    this.wrapperRef = node;\n  }\n  private toggle(): void {\n    if (this.state.open) {\n      document.removeEventListener(\"mousedown\", ev => this.handleClickOutside(ev));\n    } else {\n      document.addEventListener(\"mousedown\", ev => this.handleClickOutside(ev));\n    }\n\n    this.setState({ open: !this.state.open });\n  }\n}\n\nexport const Dropdown = styled(DropdownComponent)`\n  > div:first-child {\n    cursor: pointer;\n  }\n  > div:nth-child(2) {\n    font-family: ${fonts.SANS_SERIF};\n    position: relative;\n    z-index: 100;\n\n    > div {\n      position: absolute;\n      ${props => (props.position === \"left\" ? \"left\" : \"right\")}: 3px;\n      top: 10px;\n      width: 200px;\n      max-width: 200px;\n      background-color: ${colors.basic.WHITE};\n      box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px, rgba(0, 0, 0, 0.2) 0px 1px 2px;\n      border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n      :before,\n      :after {\n        content: \" \";\n        height: 0;\n        width: 0;\n        position: absolute;\n        border: 8px solid transparent; /* arrow size */\n      }\n\n      :before {\n        border-bottom-color: white; /* arrow color */\n\n        /* positioning */\n        position: absolute;\n        top: -15px;\n        ${props => (props.position === \"left\" ? \"left\" : \"right\")}: 10px;\n        z-index: 2;\n      }\n\n      :after {\n        border-bottom-color: ${colors.accent.CIVIL_GRAY_3}; /* arrow color */\n\n        /* positioning */\n        position: absolute;\n        top: -16px;\n        ${props => (props.position === \"left\" ? \"left\" : \"right\")}: 10px;\n        z-index: 1;\n      }\n    }\n  }\n`;\n\nexport const DropdownGroup = styled.ul`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n\n  li:hover {\n    background-color: ${colors.accent.CIVIL_GRAY_4};\n  }\n`;\n\nexport interface DropdownItemProps {\n  className?: string;\n  children?: any;\n  onClick?(): void;\n}\nconst DropdownItemComponent = ({ className, children, onClick }: DropdownItemProps) => {\n  return (\n    <li onClick={onClick} className={className}>\n      {children}\n    </li>\n  );\n};\n\nexport const DropdownItem = styled(DropdownItemComponent)`\n  display: block;\n  text-decoration: none;\n  color: black;\n  padding: 15px;\n  a:hover {\n    background-color: ${colors.accent.CIVIL_GRAY_4};\n  }\n`;\n\nexport interface DropdownLinkProps {\n  to: string;\n  className?: string;\n  children?: any;\n}\nconst DropdownLinkComponent = ({ className, to, children }: DropdownLinkProps) => {\n  return (\n    <li className={className}>\n      <Link to={to}>{children}</Link>\n    </li>\n  );\n};\n\nexport const DropdownLink = styled(DropdownLinkComponent)`\n  a {\n    display: block;\n    text-decoration: none;\n    color: black;\n    padding: 15px;\n  }\n  a:hover {\n    background-color: ${colors.accent.CIVIL_GRAY_4};\n  }\n`;\n"
  },
  {
    "path": "packages/components/src/input/ImageFileToDataUri.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton, BorderlessButton, buttonSizes } from \"../Button\";\nimport { Modal } from \"../Modal\";\nimport { colors, fonts } from \"../styleConstants\";\nimport styled from \"styled-components\";\nimport Dropzone from \"react-dropzone\";\n\nexport interface ImageFileToDataUriState {\n  modalOpen: boolean;\n  error?: string;\n}\n\nexport interface ImageFileToDataUriProps {\n  buttonText?: string;\n  maxBytes?: number;\n  maxSizeText?: string;\n  info?: string;\n  validMimeTypes?: string[];\n  onChange(dataUri: string): void;\n}\nexport interface ImageFileToDataUriDefaultProps {\n  maxBytes: number;\n  maxSizeText: string;\n  info: string;\n  validMimeTypes: string[];\n}\n\nconst DropArea = styled.div`\n  cursor: pointer;\n  outline: none;\n  width: 100%;\n  box-sizing: border-box;\n  height: 200px;\n  border: 3px dashed ${colors.primary.CIVIL_GRAY_2};\n  color: ${colors.primary.CIVIL_GRAY_2};\n  border-radius: 5px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  padding: 30px;\n  &:hover {\n    border-color: ${colors.primary.CIVIL_BLUE_1};\n  }\n  p {\n    font-size: 18px;\n    font-family: ${fonts.SANS_SERIF};\n  }\n`;\n\nconst ButtonContainer = styled.div`\n  display: flex;\n  justify-content: flex-end;\n  margin-top: 25px;\n`;\n\nconst Error = styled.p`\n  color: ${colors.accent.CIVIL_RED};\n`;\n\nexport class ImageFileToDataUri extends React.Component<\n  ImageFileToDataUriProps & ImageFileToDataUriDefaultProps,\n  ImageFileToDataUriState\n> {\n  public static defaultProps: ImageFileToDataUriDefaultProps = {\n    maxBytes: 256 * 1024,\n    maxSizeText: \"250KB\",\n    info: \"Recommended dimensions 260x260px, maximum file size 250KB. Image will be displayed constrained to a square.\",\n    validMimeTypes: [\"image/gif\", \"image/png\", \"image/jpeg\"],\n  };\n\n  constructor(props: ImageFileToDataUriProps & ImageFileToDataUriDefaultProps) {\n    super(props);\n    this.state = {\n      modalOpen: false,\n    };\n  }\n  public renderModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    return (\n      <Modal>\n        <p>{this.props.info}</p>\n        <Dropzone onDrop={this.createDataUrlFromFile}>\n          {({ getRootProps, getInputProps }: any) => (\n            <section>\n              <DropArea {...getRootProps()}>\n                <input {...getInputProps()} />\n                <p>Drop files here, or click to select files</p>\n              </DropArea>\n            </section>\n          )}\n        </Dropzone>\n        {this.state.error && <Error>{this.state.error}</Error>}\n        <ButtonContainer>\n          <BorderlessButton size={buttonSizes.SMALL} onClick={() => this.setState({ modalOpen: false })}>\n            Close\n          </BorderlessButton>\n        </ButtonContainer>\n      </Modal>\n    );\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <InvertedButton size={buttonSizes.SMALL} onClick={() => this.setState({ modalOpen: true })}>\n          {\" \"}\n          {this.props.buttonText || \"Add Image\"}{\" \"}\n        </InvertedButton>\n        {this.renderModal()}\n      </>\n    );\n  }\n\n  private createDataUrlFromFile = (acceptedFiles: any) => {\n    const reader = new FileReader();\n    reader.onload = (event: any) => {\n      const dataUri = event.target!.result;\n      if (!dataUri || !dataUri.length) {\n        this.setState({ error: \"Invalid image, please try another file.\" });\n        return;\n      }\n\n      const mimeMatch = dataUri.match(/data:([^;]*);/);\n      const mimeType = mimeMatch && mimeMatch[1];\n      if (this.props.validMimeTypes.indexOf(mimeType) === -1) {\n        this.setState({\n          error: `Invalid file type \"${mimeType}\", please try another file. Valid file types: ${this.props.validMimeTypes.join(\n            \", \",\n          )}.`,\n        });\n        return;\n      }\n\n      // Image data URI lengths are 1/3 longer than number of bytes in image file, don't know exactly why but tested for jpgs gifs and pngs of various sizes and it's spot on so divide by 4/3 to get bytes.\n      const fileSize = dataUri.length / (4 / 3);\n      if (fileSize > this.props.maxBytes) {\n        this.setState({\n          error: `Uploaded image is ${Math.round(fileSize / 1024)}KB, which is too large. Max size: ${\n            this.props.maxSizeText\n          }`,\n        });\n        return;\n      }\n      this.props.onChange(dataUri);\n      this.setState({ modalOpen: false, error: undefined });\n    };\n    reader.readAsDataURL(acceptedFiles[0]);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/input/Input.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { TextInput, HeaderInput, CurrencyInput, TextareaInput } from \"./Input\";\nimport { InputGroup } from \"./InputGroup\";\nimport { RadioInput, RadioButton } from \"./RadioInput\";\nimport { CurrencyInputWithButton, TextInputWithButton } from \"./InputWithButton\";\nimport { ImageFileToDataUri } from \"./ImageFileToDataUri\";\nimport { SubmitLink } from \"./SubmitLink\";\ntype changeCallback = (name: string, value: any) => any;\ninterface ControlProps {\n  children(state: any, onChange: changeCallback): React.ReactNode;\n}\nclass ControlComponent extends React.Component<ControlProps, any> {\n  constructor(props: any) {\n    super(props);\n\n    this.state = {};\n  }\n\n  public render(): React.ReactNode {\n    return this.props.children(this.state, this.onChange);\n  }\n\n  private onChange = (name: string, value: any): any => {\n    console.log(\"change: \", name, value);\n    this.setState({ [name]: value });\n  };\n}\n\nstoriesOf(\"Pattern Library / Inputs\", module)\n  .add(\"Text Input\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <TextInput label=\"Text Input\" placeholder=\"Enter a value\" name=\"TextInput\" onChange={onChange} />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Input Group\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <InputGroup\n            prepend=\"CVL\"\n            label=\"Input Group with Prepend Text\"\n            placeholder=\"Enter a value\"\n            name=\"TextInput\"\n            onChange={onChange}\n          />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Header Input\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <HeaderInput label=\"Header Input\" placeholder=\"I am a header input\" name=\"HeaderInput\" onChange={onChange} />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Currency Input\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <CurrencyInput\n            label=\"Currency Input\"\n            placeholder=\"$0.00\"\n            min=\"2\"\n            step=\"2\"\n            name=\"CurrencyInput\"\n            onChange={onChange}\n          />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Radio Input\", () => {\n    let result: any;\n    const onChange = (name: string, value: any) => {\n      console.log(\"Radio Input change\", name, value, result.RadioGroup.value);\n    };\n\n    return (\n      <div>\n        <RadioInput\n          onChange={onChange}\n          label=\"Group of radio buttons\"\n          name=\"RadioGroup\"\n          inputRef={(ref: any) => (result = ref)}\n        >\n          <RadioButton value=\"daily\">Daily</RadioButton>\n          <RadioButton value=\"weekly\">Weekly</RadioButton>\n          <RadioButton value=\"monthly\">Monthly</RadioButton>\n          <RadioButton value=\"yearly\">Yearly</RadioButton>\n        </RadioInput>\n      </div>\n    );\n  })\n\n  .add(\"Textarea Input\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <TextareaInput\n            label=\"Textarea Input\"\n            placeholder=\"Input your long text\"\n            name=\"TextareaInput\"\n            onChange={onChange}\n          />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Text Input With Button\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <TextInputWithButton\n            placeholder=\"Enter a thing\"\n            name=\"TextInputWithButton\"\n            onChange={onChange}\n            buttonText=\"Click Me\"\n            onButtonClick={() => console.log(\"TextInputWithButton button was clicked\")}\n          />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Currency Input With Button\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <CurrencyInputWithButton\n            placeholder=\"Enter an amount\"\n            name=\"CurrencyInputWithButton\"\n            onChange={onChange}\n            buttonText=\"Click Me\"\n            icon={<>CVL</>}\n            onButtonClick={() => console.log(\"CurrencyInputWithButton button was clicked\")}\n          />\n        )}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"image file to data uri\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => {\n          return <ImageFileToDataUri onChange={(dataUri: string) => onChange(\"name\", dataUri)} />;\n        }}\n      </ControlComponent>\n    );\n  })\n\n  .add(\"Submit a link\", () => {\n    return (\n      <ControlComponent>\n        {(state: any, onChange: changeCallback) => (\n          <SubmitLink\n            name={\"submit link\"}\n            submitting={false}\n            success={false}\n            error={false}\n            onChange={onChange}\n            onSubmit={() => console.log(\"Link submitted\")}\n          />\n        )}\n      </ControlComponent>\n    );\n  });\n"
  },
  {
    "path": "packages/components/src/input/Input.tsx",
    "content": "export {\n  InputIcon,\n  InputLabel,\n  ErrorMessage,\n  InputBaseProps,\n  InputBase,\n  InputProps,\n  TextInput,\n  NumericInput,\n  CurrencyProps,\n  CurrencyInput,\n  TextProps,\n  HeaderInput,\n  TextareaProps,\n  TextareaInput,\n  URLInput,\n} from \"@joincivil/elements\";\n"
  },
  {
    "path": "packages/components/src/input/InputGroup.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../styleConstants\";\nimport { TextInput, InputLabel, InputProps, ErrorMessage } from \"./Input\";\n\nconst StyledInputGroupContainer = styled.div`\n  margin: 0 0 10px;\n`;\n\nconst StyledInputGroup = styled.div`\n  align-items: 100%;\n  box-sizing: border-box;\n  display: flex;\n  position: relative;\n  margin: 5px 0;\n  width: 100%;\n\n  & > div {\n    margin-bottom: 0;\n  }\n  && input {\n    margin: 0;\n  }\n`;\n\nconst StyledInputGroupPrepend = styled.div`\n  display: flex;\n  box-sizing: border-box;\n\n  & > span {\n    margin-right: -1px;\n  }\n`;\n\nconst StyledInputGroupAppend = styled.div`\n  display: flex;\n  box-sizing: border-box;\n\n  & > span {\n    margin-left: -1px;\n  }\n`;\n\ninterface InputGroupTextProps {\n  noPadding?: boolean;\n}\n\nconst InputGroupText = styled.span`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  display: flex;\n  font-size: inherit;\n  padding: ${(props: InputGroupTextProps) => (props.noPadding ? \"0\" : \"10px\")};\n  text-align: center;\n  white-space: nowrap;\n`;\n\nconst InputGroupAppend: React.FunctionComponent<InputGroupTextProps> = props => {\n  return (\n    <StyledInputGroupAppend>\n      <InputGroupText noPadding={props.noPadding}>{props.children}</InputGroupText>\n    </StyledInputGroupAppend>\n  );\n};\n\nconst InputGroupPrepend: React.FunctionComponent = props => {\n  return (\n    <StyledInputGroupPrepend>\n      <InputGroupText>{props.children}</InputGroupText>\n    </StyledInputGroupPrepend>\n  );\n};\n\nexport interface InputGroupProps {\n  append?: string | JSX.Element;\n  prepend?: string | JSX.Element;\n  noAppendPadding?: boolean;\n  inputComponent?: React.ComponentClass<any> | React.FunctionComponent<any>;\n}\n\nexport const InputGroup: React.FunctionComponent<InputGroupProps & InputProps> = (props: any) => {\n  const { label, append, prepend, placeholder, noAppendPadding, invalid, invalidMessage, ...inputProps } = props;\n  const Input = props.inputComponent || TextInput;\n\n  return (\n    <StyledInputGroupContainer>\n      {!props.noLabel && <InputLabel>{label || placeholder}</InputLabel>}\n      <StyledInputGroup>\n        {prepend && <InputGroupPrepend>{props.prepend}</InputGroupPrepend>}\n        <Input noLabel={true} {...inputProps} />\n        {append && <InputGroupAppend noPadding={noAppendPadding}>{props.append}</InputGroupAppend>}\n      </StyledInputGroup>\n      {invalid && invalidMessage && <ErrorMessage>{invalidMessage}</ErrorMessage>}\n    </StyledInputGroupContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/input/InputWithButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors, fonts } from \"../styleConstants\";\nimport { InvertedButton, buttonSizes } from \"../Button\";\n\nimport { NumericInput, TextInput, InputProps } from \"./Input\";\n\nexport interface InputContainerProps {\n  buttonText?: string;\n  icon?: JSX.Element;\n  children(\n    isFocused: boolean,\n    setFocused: () => void,\n    setUnfocused: (ev: any) => void,\n    setInputRef: (el: any) => void,\n  ): React.ReactNode;\n  onButtonClick?(ev: any): void;\n}\n\nexport interface InputWithButtonProps extends InputProps {\n  buttonText: string;\n  icon?: JSX.Element;\n  onButtonClick(ev: any): void;\n}\n\nexport interface InputWithButtonState {\n  isFocused: boolean;\n}\n\nconst StyledTextInputButton = styled.div<InputWithButtonState>`\n  border: 1px solid;\n  border-color: ${props => (props.isFocused ? colors.accent.CIVIL_BLUE : colors.accent.CIVIL_GRAY_3)};\n  border-radius: 3px;\n  font-size: 21px;\n  padding: 26px 20px;\n  position: relative;\n\n  & > div {\n    margin: 0;\n  }\n\n  & > div > input,\n  & > div > input:focus {\n    border: none;\n    margin: 0;\n    padding: 0;\n  }\n`;\n\nconst StyledIcon = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 18px;\n  line-height: 21px;\n  position: absolute;\n  right: 40px;\n  top: calc(50% - 10px);\n`;\n\nconst StyledButtonContainer = styled.div`\n  position: absolute;\n  right: 40px;\n  top: calc(50% - 18px);\n`;\n\nclass InputContainer extends React.Component<InputContainerProps, InputWithButtonState> {\n  private inputElement: HTMLInputElement | undefined = undefined;\n  private buttonElement: HTMLButtonElement | undefined = undefined;\n\n  constructor(props: InputContainerProps) {\n    super(props);\n    this.state = {\n      isFocused: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledTextInputButton {...this.state}>\n        {this.props.children(this.state.isFocused, this.setFocused, this.setUnfocused, this.setInputRef)}\n        {this.props.buttonText && this.state.isFocused && (\n          <StyledButtonContainer>\n            <InvertedButton size={buttonSizes.SMALL} onClick={this.handleButtonClick} inputRef={this.setButtonRef}>\n              {this.props.buttonText}\n            </InvertedButton>\n          </StyledButtonContainer>\n        )}\n        {!this.state.isFocused && this.props.icon && <StyledIcon>{this.props.icon}</StyledIcon>}\n      </StyledTextInputButton>\n    );\n  }\n\n  private handleButtonClick = (ev: any) => {\n    if (this.props.onButtonClick) {\n      this.props.onButtonClick(ev);\n    }\n    if (this.inputElement) {\n      this.inputElement.blur();\n      this._setUnfocused();\n    }\n  };\n\n  private setFocusState = (isFocused: boolean): void => {\n    this.setState(() => ({ isFocused }));\n  };\n\n  private setFocused = () => this.setFocusState(true);\n\n  private _setUnfocused = () => this.setFocusState(false);\n\n  private setUnfocused = (ev: any) => {\n    if (ev.relatedTarget === this.buttonElement) {\n      ev.preventDefault();\n    } else {\n      this._setUnfocused();\n    }\n  };\n\n  private setInputRef = (el: HTMLInputElement) => (this.inputElement = el);\n  private setButtonRef = (el: HTMLButtonElement) => (this.buttonElement = el);\n}\n\nexport const TextInputWithButton: React.FunctionComponent<InputWithButtonProps> = props => {\n  const { onButtonClick, icon, buttonText, ...restProps } = props;\n  const inputProps = { ...restProps, noLabel: true };\n  const containerProps = { onButtonClick, buttonText, icon };\n\n  return (\n    <InputContainer {...containerProps}>\n      {(\n        isFocused: boolean,\n        setFocused: () => void,\n        setUnfocused: (ev: any) => void,\n        setInputRef: (el: any) => void,\n      ) => {\n        return (\n          <>\n            <TextInput {...inputProps} onFocus={setFocused} onBlur={setUnfocused} inputRef={setInputRef} />\n          </>\n        );\n      }}\n    </InputContainer>\n  );\n};\n\nexport const CurrencyInputWithButton: React.FunctionComponent<InputWithButtonProps> = props => {\n  const { onButtonClick, icon, buttonText, ...restProps } = props;\n  const inputProps = { ...restProps, noLabel: true };\n  const containerProps = { onButtonClick, buttonText, icon };\n\n  return (\n    <InputContainer {...containerProps}>\n      {(\n        isFocused: boolean,\n        setFocused: () => void,\n        setUnfocused: (ev: any) => void,\n        setInputRef: (el: any) => void,\n      ) => {\n        return (\n          <>\n            <NumericInput {...inputProps} onFocus={setFocused} onBlur={setUnfocused} inputRef={setInputRef} />\n          </>\n        );\n      }}\n    </InputContainer>\n  );\n};\n\nexport const CurrencyInputWithoutButton: React.FunctionComponent<InputProps> = props => {\n  const { icon, ...restProps } = props;\n  const inputProps = { ...restProps, noLabel: true };\n  const containerProps = { icon };\n\n  return (\n    <InputContainer {...containerProps}>\n      {(\n        isFocused: boolean,\n        setFocused: () => void,\n        setUnfocused: (ev: any) => void,\n        setInputRef: (el: any) => void,\n      ) => {\n        return (\n          <>\n            <NumericInput {...inputProps} onFocus={setFocused} onBlur={setUnfocused} inputRef={setInputRef} />\n          </>\n        );\n      }}\n    </InputContainer>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/input/RadioInput.tsx",
    "content": "export {\n  RadioButton,\n  RadioCardInput,\n  RadioButtonDiv,\n  RadioButtonProps,\n  RadioInput,\n  RadioCardInputProps,\n} from \"@joincivil/elements\";\n"
  },
  {
    "path": "packages/components/src/input/SaltInput.tsx",
    "content": "import * as React from \"react\";\nimport { TextInput } from \"../input/\";\nimport { wordsToSalt, saltToWords } from \"@joincivil/utils\";\n\nexport interface SaltInputProps {\n  name: string;\n  label?: string;\n  placeholder?: string;\n  salt?: string;\n  invalid?: boolean;\n  invalidMessage?: string;\n  onChange(name: string, value: string): void;\n}\n\nexport interface SaltInputState {\n  isValid: boolean;\n  value?: string;\n}\n\nexport class SaltInput extends React.Component<SaltInputProps, SaltInputState> {\n  constructor(props: SaltInputProps) {\n    super(props);\n\n    const { salt } = this.props;\n\n    this.state = {\n      isValid: false,\n      value: salt ? saltToWords(salt).join(\" \") : \"\",\n    };\n  }\n\n  public render(): JSX.Element {\n    const { name, label, placeholder, invalid, invalidMessage } = this.props;\n    const { value } = this.state;\n\n    const inputProps = {\n      name,\n      label,\n      placeholder,\n      invalid,\n      invalidMessage,\n      value,\n      onChange: this.handleChange,\n    };\n\n    return <TextInput {...inputProps} />;\n  }\n\n  private handleChange = (name: string, value: string): void => {\n    const { onChange } = this.props;\n\n    const nextState = { ...this.state };\n\n    const onlyLetters = value.replace(/[^a-z ]/, \"\").replace(/[ ]+/, \" \");\n\n    nextState.value = onlyLetters;\n\n    try {\n      const saltNum = wordsToSalt(onlyLetters);\n      nextState.isValid = true;\n      onChange(name, saltNum.toString());\n    } catch (err) {\n      nextState.isValid = false;\n      onChange(name, \"\");\n    }\n\n    this.setState(nextState);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/input/SimpleImageFileToDataUri.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton, buttonSizes } from \"../Button\";\nimport { colors, fonts, mediaQueries } from \"../styleConstants\";\nimport styled from \"styled-components\";\nimport Dropzone from \"react-dropzone\";\nimport { PhotoDragIcon } from \"@joincivil/elements\";\n\nexport interface SimpleImageFileToDataUriProps {\n  buttonText?: string;\n  onChange(dataUri: string): void;\n}\n\nconst DropArea = styled.div`\n  width: 336px;\n  box-sizing: border-box;\n  height: 336px;\n  ${mediaQueries.MOBILE} {\n    width: 200px;\n    height: 200px;\n  }\n  background-color: #f9faff;\n  border: 2px dashed ${colors.primary.CIVIL_BLUE_1};\n  color: ${colors.primary.CIVIL_GRAY_2};\n  border-radius: 168px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-direction: column;\n  padding: 30px;\n\n  ${mediaQueries.MOBILE} {\n    padding-left: 10px;\n    padding-right: 10px;\n  }\n  p {\n    font-size: 18px;\n    font-family: ${fonts.SANS_SERIF};\n  }\n`;\n\nconst ImageSelectionContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: space-between;\n  height: 450px;\n  ${mediaQueries.MOBILE} {\n    height: 300px;\n    width: 240px;\n  }\n`;\n\nconst DragAndDropText = styled.span`\n  width: 300px;\n  ${mediaQueries.MOBILE} {\n    width: 150px;\n  }\n  text-align: center;\n`;\n\nexport class SimpleImageFileToDataUri extends React.Component<SimpleImageFileToDataUriProps> {\n  private readonly inputOpenFileRef: React.RefObject<HTMLInputElement>;\n\n  constructor(props: SimpleImageFileToDataUriProps) {\n    super(props);\n\n    this.inputOpenFileRef = React.createRef();\n  }\n\n  public showOpenFileDlg = () => {\n    this.inputOpenFileRef!.current!.click();\n  };\n\n  public renderDropZone(): JSX.Element | null {\n    return (\n      <>\n        <Dropzone onDrop={this.createDataUrlFromFile}>\n          {({ getRootProps, getInputProps }: any) => (\n            <section>\n              <DropArea {...getRootProps()}>\n                <input {...getInputProps()} />\n                <PhotoDragIcon />\n                <br />\n                <DragAndDropText>Drag and drop an image here</DragAndDropText>\n              </DropArea>\n            </section>\n          )}\n        </Dropzone>\n      </>\n    );\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ImageSelectionContainer>\n        {this.renderDropZone()}\n        or\n        <input\n          ref={this.inputOpenFileRef}\n          type=\"file\"\n          style={{ display: \"none\" }}\n          onChange={this.createDataUrlFromFile2}\n        />\n        <InvertedButton size={buttonSizes.SMALL} onClick={() => this.showOpenFileDlg()}>\n          {\" \"}\n          {this.props.buttonText || \"Upload Image\"}{\" \"}\n        </InvertedButton>\n      </ImageSelectionContainer>\n    );\n  }\n\n  private createDataUrlFromFile = (acceptedFiles: any) => {\n    this.loadAsDataURLFromFile(acceptedFiles[0]);\n  };\n\n  private createDataUrlFromFile2 = (e: any) => {\n    this.loadAsDataURLFromFile(e.target.files[0]);\n  };\n\n  private loadAsDataURLFromFile = (file: any) => {\n    const reader = new FileReader();\n    reader.onload = (event: any) => {\n      this.props.onChange(event.target!.result);\n      this.setState({ modalOpen: false });\n    };\n    reader.readAsDataURL(file);\n  };\n}\n"
  },
  {
    "path": "packages/components/src/input/SlideCheckbox.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../styleConstants\";\n\nexport interface CheckboxTheme {\n  checkboxActiveColor: string;\n  checkboxInactiveColor: string;\n}\n\nconst Slider = styled.span`\n  position: absolute;\n  cursor: pointer;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  border-radius: 34px;\n  transition: 0.4s;\n  &:before {\n    position: absolute;\n    content: \"\";\n    height: 10px;\n    width: 10px;\n    left: 1.7px;\n    top: 1.7px;\n    transition: 0.4s;\n    border-radius: 50%;\n  }\n`;\n\nSlider.defaultProps = {\n  theme: {\n    checkboxInactiveColor: colors.accent.CIVIL_GRAY_2,\n    checkboxActiveColor: colors.accent.CIVIL_BLUE,\n  },\n};\n\nconst Switch = styled.label`\n  box-sizing: content-box;\n  position: relative;\n  display: inline-block;\n  width: 32px;\n  height: 19px;\n  input {\n    display: none;\n  }\n  input + ${Slider} {\n    background-color: transparent;\n    border: 2px solid ${props => props.theme.checkboxInactiveColor};\n  }\n  input + ${Slider}:before {\n    background-color: ${props => props.theme.checkboxInactiveColor};\n  }\n  input:checked + ${Slider} {\n    border: 2px solid ${props => props.theme.checkboxActiveColor};\n    background-color: ${props => props.theme.checkboxActiveColor};\n  }\n  input:focus + ${Slider} {\n    box-shadow: 0 0 1px #2196f3;\n  }\n  input:checked + ${Slider}:before {\n    background-color: ${colors.basic.WHITE};\n    transform: translateX(12px);\n  }\n`;\n\nSwitch.defaultProps = {\n  theme: {\n    checkboxInactiveColor: colors.accent.CIVIL_GRAY_2,\n    checkboxActiveColor: colors.accent.CIVIL_BLUE,\n  },\n};\n\nexport interface SlideCheckboxProps {\n  checked: boolean;\n  locked?: boolean;\n  onClick(): void;\n}\n\nexport const SlideCheckbox = (props: SlideCheckboxProps) => {\n  return (\n    <Switch>\n      <input\n        onChange={() => {\n          if (!props.locked) {\n            props.onClick();\n          }\n        }}\n        checked={props.checked}\n        type=\"checkbox\"\n      />\n      <Slider />\n    </Switch>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/input/SubmitLink.tsx",
    "content": "import * as React from \"react\";\nimport { URLInput } from \"../input/\";\nimport { Button } from \"../Button\";\nimport styled from \"styled-components\";\nimport { fonts, colors, mediaQueries } from \"../styleConstants\";\n\nexport const SubmitLinkStyled = styled.div`\n  align-items: flex-start;\n  display: flex;\n\n  ${Button} {\n    border-radius: 0;\n    font-size: 14px;\n    letter-spacing: 0;\n    margin: 5px 0 0 10px;\n    padding: 10px 15px;\n    width: 200px;\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n\n    ${Button} {\n      margin: 0;\n      width: 100%;\n    }\n  }\n`;\n\nexport interface SubmitLinkResponseProps {\n  error: boolean;\n}\n\nexport const ResponseText = styled.p`\n  color: ${colors.accent.CIVIL_RED};\n  ${(props: SubmitLinkResponseProps) => (props.error ? colors.accent.CIVIL_RED : colors.primary.BLACK)};\n  font: ${fonts.SANS_SERIF};\n  font-size: 12px;\n`;\n\nexport interface SubmitLinkProps {\n  name: string;\n  buttonText?: string;\n  placeholder?: string;\n  submitting: boolean;\n  success: boolean;\n  error: boolean;\n  onSubmit(): void;\n  onChange(name: string, value: string): void;\n}\n\nexport const SubmitLink: React.FunctionComponent<SubmitLinkProps> = props => {\n  const { buttonText, name, placeholder, submitting, success, error, onChange, onSubmit } = props;\n\n  return (\n    <>\n      <form>\n        <SubmitLinkStyled>\n          <URLInput name={name} placeholder={placeholder} onChange={onChange} />\n          <Button disabled={submitting} type=\"submit\" onClick={onSubmit}>\n            {submitting ? \"Submitting...\" : buttonText || \"Submit Link\"}\n          </Button>\n        </SubmitLinkStyled>\n        <ResponseText error={error}>\n          {error && <>There was an error submitting your link. Please try again.</>}\n          {success && <>Your link has been submitted.</>}\n        </ResponseText>\n      </form>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/components/src/input/__snapshots__/AddressInput.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / inputs / AddressInput invalid 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"civil-input-error sc-fzXfNe laEExU\"\n    >\n      <small\n        className=\"sc-fzXfNd eqtxCb\"\n      >\n        The address you have entered is invalid\n      </small>\n      <input\n        className=\"sc-fzXfNe laEExU\"\n        label=\"Wallet Address\"\n        name=\"EditorWalletInput\"\n        onChange={[Function]}\n        placeholder=\"Enter Wallet Address\"\n        type=\"text\"\n        value=\"0x8c722b8ac728add7780a66017e\"\n      />\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Wallet Address\n      </label>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / inputs / AddressInput\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            invalid\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  AddressInput\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      address\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          0x8c722b8ac728add7780a66017e\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      onChange\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onChange\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AddressInput\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / inputs / AddressInput valid 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\" sc-fzXfNe laEExU\"\n    >\n      <input\n        className=\"sc-fzXfNe laEExU\"\n        label=\"Wallet Address\"\n        name=\"EditorWalletInput\"\n        onChange={[Function]}\n        placeholder=\"Enter Wallet Address\"\n        type=\"text\"\n        value=\"0x8c722b8ac728add7780a66017e8dadba530ee261\"\n      />\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Wallet Address\n      </label>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / inputs / AddressInput\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            valid\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  AddressInput\n                </span>\n                <span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      address\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        \"\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#22a\",\n                              \"wordBreak\": \"break-word\",\n                            }\n                          }\n                        >\n                          0x8c722b8ac728add7780a66017e8dadba530ee261\n                        </span>\n                        \"\n                      </span>\n                    </span>\n                  </span>\n                  <span>\n                     \n                    <span\n                      style={Object {}}\n                    >\n                      onChange\n                    </span>\n                    <span>\n                      =\n                      <span\n                        style={Object {}}\n                      >\n                        {\n                        <span\n                          style={\n                            Object {\n                              \"color\": \"#170\",\n                            }\n                          }\n                        >\n                          onChange\n                        </span>\n                        }\n                      </span>\n                    </span>\n                     \n                  </span>\n                </span>\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              AddressInput\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/input/__snapshots__/Dropdown.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Dropdown Dropdown 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfPc izIOKk\"\n    >\n      <div\n        onClick={[Function]}\n      >\n        <span>\n          Click to Activate\n        </span>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Dropdown\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Dropdown\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(DropdownComponent)\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        position\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          \"\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#22a\",\n                                \"wordBreak\": \"break-word\",\n                              }\n                            }\n                          >\n                            left\n                          </span>\n                          \"\n                        </span>\n                      </span>\n                    </span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        target\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#666\",\n                              }\n                            }\n                          >\n                            &lt;span /&gt;\n                          </span>\n                          }\n                        </span>\n                      </span>\n                      \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      styled.ul\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Styled(DropdownItemComponent)\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Account\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Styled(DropdownItemComponent)\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Styled(DropdownItemComponent)\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Help Center\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Styled(DropdownItemComponent)\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Styled(DropdownItemComponent)\n                      </span>\n                      <span />\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Sign Out\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Styled(DropdownItemComponent)\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      styled.ul\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Styled(DropdownComponent)\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(DropdownComponent)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(DropdownItemComponent)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.ul\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/input/__snapshots__/Input.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / Inputs Currency Input 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\" sc-fzXfNe laEExU\"\n    >\n      <div\n        className=\"sc-fzXfME bsnqXw\"\n      >\n        <span>\n          USD\n        </span>\n      </div>\n      <input\n        className=\"sc-fzXfNe laEExU\"\n        icon={\n          <span>\n            USD\n          </span>\n        }\n        label=\"Currency Input\"\n        min=\"2\"\n        name=\"CurrencyInput\"\n        onChange={[Function]}\n        placeholder=\"$0.00\"\n        step=\"2\"\n        type=\"number\"\n      />\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Currency Input\n      </label>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Currency Input\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Currency Input With Button 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfPM hfRMWm\"\n    >\n      <div\n        className=\" sc-fzXfNe laEExU\"\n      >\n        <input\n          className=\"sc-fzXfNe laEExU\"\n          name=\"CurrencyInputWithButton\"\n          onBlur={[Function]}\n          onChange={[Function]}\n          onFocus={[Function]}\n          placeholder=\"Enter an amount\"\n          type=\"number\"\n        />\n      </div>\n      <div\n        className=\"sc-fzXfPN QKiye\"\n      >\n        CVL\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Currency Input With Button\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Header Input 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\" sc-fzXfNe laEExU sc-fzXfNf crDqod\"\n    >\n      <input\n        className=\"sc-fzXfNe laEExU sc-fzXfNf crDqod\"\n        label=\"Header Input\"\n        name=\"HeaderInput\"\n        onChange={[Function]}\n        placeholder=\"I am a header input\"\n        type=\"text\"\n      />\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Header Input\n      </label>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Header Input\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Input Group 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfPg hrehtr\"\n    >\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Input Group with Prepend Text\n      </label>\n      <div\n        className=\"sc-fzXfPE iCQlvb\"\n      >\n        <div\n          className=\"sc-fzXfPF kAVXgj\"\n        >\n          <span\n            className=\"sc-fzXfPH bVXMbI\"\n          >\n            CVL\n          </span>\n        </div>\n        <div\n          className=\" sc-fzXfNe laEExU\"\n        >\n          <input\n            className=\"sc-fzXfNe laEExU\"\n            name=\"TextInput\"\n            onChange={[Function]}\n            type=\"text\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Input Group\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Radio Input 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      <div\n        className=\"sc-fzXfNj brJHhZ\"\n      >\n        <label\n          className=\"sc-fzXfNc CbDly\"\n        >\n          Group of radio buttons\n        </label>\n        <div>\n          <div\n            className=\"sc-fzXfNi loyLmU\"\n          >\n            <input\n              defaultChecked={false}\n              name=\"RadioGroup\"\n              type=\"radio\"\n              value=\"daily\"\n            />\n            <button\n              className=\"sc-fzXfLO sc-fzXfLR dLItEB\"\n              onClick={[Function]}\n              theme={\n                Object {\n                  \"secondaryButtonBackground\": \"#FFFFFF\",\n                  \"secondaryButtonBorder\": \"#C4C2C0\",\n                  \"secondaryButtonColor\": \"#7D7373\",\n                  \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                  \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                }\n              }\n              type=\"button\"\n            >\n              Daily\n            </button>\n          </div>\n          <div\n            className=\"sc-fzXfNi loyLmU\"\n          >\n            <input\n              defaultChecked={false}\n              name=\"RadioGroup\"\n              type=\"radio\"\n              value=\"weekly\"\n            />\n            <button\n              className=\"sc-fzXfLO sc-fzXfLR dLItEB\"\n              onClick={[Function]}\n              theme={\n                Object {\n                  \"secondaryButtonBackground\": \"#FFFFFF\",\n                  \"secondaryButtonBorder\": \"#C4C2C0\",\n                  \"secondaryButtonColor\": \"#7D7373\",\n                  \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                  \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                }\n              }\n              type=\"button\"\n            >\n              Weekly\n            </button>\n          </div>\n          <div\n            className=\"sc-fzXfNi loyLmU\"\n          >\n            <input\n              defaultChecked={false}\n              name=\"RadioGroup\"\n              type=\"radio\"\n              value=\"monthly\"\n            />\n            <button\n              className=\"sc-fzXfLO sc-fzXfLR dLItEB\"\n              onClick={[Function]}\n              theme={\n                Object {\n                  \"secondaryButtonBackground\": \"#FFFFFF\",\n                  \"secondaryButtonBorder\": \"#C4C2C0\",\n                  \"secondaryButtonColor\": \"#7D7373\",\n                  \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                  \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                }\n              }\n              type=\"button\"\n            >\n              Monthly\n            </button>\n          </div>\n          <div\n            className=\"sc-fzXfNi loyLmU\"\n          >\n            <input\n              defaultChecked={false}\n              name=\"RadioGroup\"\n              type=\"radio\"\n              value=\"yearly\"\n            />\n            <button\n              className=\"sc-fzXfLO sc-fzXfLR dLItEB\"\n              onClick={[Function]}\n              theme={\n                Object {\n                  \"secondaryButtonBackground\": \"#FFFFFF\",\n                  \"secondaryButtonBorder\": \"#C4C2C0\",\n                  \"secondaryButtonColor\": \"#7D7373\",\n                  \"secondaryButtonHoverBackground\": \"#2B56FF\",\n                  \"secondaryButtonHoverColor\": \"#FFFFFF\",\n                }\n              }\n              type=\"button\"\n            >\n              Yearly\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Radio Input\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      Unknown\n                    </span>\n                    <span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          onChange\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              onChange\n                            </span>\n                            }\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          label\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              Group of radio buttons\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          name\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              RadioGroup\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                        <span>\n                          <br />\n                            \n                        </span>\n                        <span\n                          style={Object {}}\n                        >\n                          inputRef\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            {\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#170\",\n                                }\n                              }\n                            >\n                              inputRef\n                            </span>\n                            }\n                          </span>\n                        </span>\n                        <br />\n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Unknown\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            value\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                daily\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Daily\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Unknown\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Unknown\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            value\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                weekly\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Weekly\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Unknown\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Unknown\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            value\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                monthly\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Monthly\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Unknown\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        Unknown\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            value\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                yearly\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Yearly\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        Unknown\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      Unknown\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Unknown\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Unknown\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Submit a link 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <form>\n      <div\n        className=\"sc-fzXfQt cIHYbn\"\n      >\n        <div\n          className=\" sc-fzXfNe laEExU\"\n        >\n          <input\n            className=\"sc-fzXfNe laEExU\"\n            name=\"submit link\"\n            onChange={[Function]}\n            pattern=\"https?://.+\"\n            type=\"url\"\n          />\n          <label\n            className=\"sc-fzXfNc CbDly\"\n          />\n        </div>\n        <button\n          className=\"sc-fzXfLO sc-fzXfLP ewtwbh\"\n          disabled={false}\n          onClick={[Function]}\n          theme={\n            Object {\n              \"primaryButtonBackground\": \"#2B56FF\",\n              \"primaryButtonColor\": \"#FFFFFF\",\n              \"primaryButtonDisabledBackground\": \"rgba(43, 86, 255, 0.5)\",\n              \"primaryButtonDisabledColor\": \"#FFFFFF\",\n              \"primaryButtonFontWeight\": \"normal\",\n              \"primaryButtonHoverBackground\": \"#4066FF\",\n              \"primaryButtonTextTransform\": \"uppercase\",\n              \"sansSerifFont\": \"\\\\\"Libre Franklin\\\\\", sans-serif\",\n            }\n          }\n          type=\"submit\"\n        >\n          Submit Link\n        </button>\n      </div>\n      <p\n        className=\"sc-fzXfQu jINoac\"\n      />\n    </form>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Submit a link\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Text Input 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\" sc-fzXfNe laEExU\"\n    >\n      <input\n        className=\"sc-fzXfNe laEExU\"\n        label=\"Text Input\"\n        name=\"TextInput\"\n        onChange={[Function]}\n        placeholder=\"Enter a value\"\n        type=\"text\"\n      />\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Text Input\n      </label>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Text Input\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Text Input With Button 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfPM hfRMWm\"\n    >\n      <div\n        className=\" sc-fzXfNe laEExU\"\n      >\n        <input\n          className=\"sc-fzXfNe laEExU\"\n          name=\"TextInputWithButton\"\n          onBlur={[Function]}\n          onChange={[Function]}\n          onFocus={[Function]}\n          placeholder=\"Enter a thing\"\n          type=\"text\"\n        />\n      </div>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Text Input With Button\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs Textarea Input 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\" sc-fzXfNe laEExU\"\n    >\n      <textarea\n        className=\"sc-fzXfNe laEExU\"\n        label=\"Textarea Input\"\n        name=\"TextareaInput\"\n        onChange={[Function]}\n        placeholder=\"Input your long text\"\n        type=\"textarea\"\n      />\n      <label\n        className=\"sc-fzXfNc CbDly\"\n      >\n        Textarea Input\n      </label>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Textarea Input\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / Inputs image file to data uri 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <button\n      className=\"sc-fzXfLO sc-fzXfLQ ioNMHg\"\n      onClick={[Function]}\n      size=\"SMALL\"\n      theme={\n        Object {\n          \"invertedButtonBackground\": \"#FFFFFF\",\n          \"invertedButtonColor\": \"#2B56FF\",\n        }\n      }\n      type=\"button\"\n    >\n       \n      Add Image\n       \n    </button>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / Inputs\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            image file to data uri\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ControlComponent\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ControlComponent\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ControlComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/input/__snapshots__/checkbox.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / inputs / check box checkboxes 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <ul>\n      <li>\n        <label\n          htmlFor=\"check1\"\n        >\n          Default:\n        </label>\n        <label\n          className=\"sc-fzXfPL jQNPxc\"\n        >\n          <input\n            checked={false}\n            id=\"check1\"\n            onChange={[Function]}\n            type=\"checkbox\"\n          />\n          <span\n            className=\"sc-fzXfPK eHXNqB\"\n          />\n        </label>\n      </li>\n      <li>\n        <label\n          htmlFor=\"check2\"\n        >\n          Default checked:\n        </label>\n        <label\n          className=\"sc-fzXfPL jQNPxc\"\n        >\n          <input\n            checked={true}\n            id=\"check2\"\n            onChange={[Function]}\n            type=\"checkbox\"\n          />\n          <span\n            className=\"sc-fzXfPK eHXNqB\"\n          />\n        </label>\n      </li>\n      <li>\n        <label\n          htmlFor=\"check3\"\n        >\n          Small:\n        </label>\n        <label\n          className=\"sc-fzXfPL kIKmHS\"\n          size=\"SMALL\"\n        >\n          <input\n            checked={false}\n            id=\"check3\"\n            onChange={[Function]}\n            type=\"checkbox\"\n          />\n          <span\n            className=\"sc-fzXfPK buXQoO\"\n            size=\"SMALL\"\n          />\n        </label>\n      </li>\n      <li>\n        <label\n          htmlFor=\"check4\"\n        >\n          Small checked:\n        </label>\n        <label\n          className=\"sc-fzXfPL kIKmHS\"\n          size=\"SMALL\"\n        >\n          <input\n            checked={true}\n            id=\"check4\"\n            onChange={[Function]}\n            type=\"checkbox\"\n          />\n          <span\n            className=\"sc-fzXfPK buXQoO\"\n            size=\"SMALL\"\n          />\n        </label>\n      </li>\n    </ul>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / inputs / check box\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            checkboxes\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ul\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      li\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        label\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            htmlFor\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                check1\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Default:\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        label\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      TestComponent\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          id\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              check1\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      li\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      li\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        label\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            htmlFor\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                check2\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Default checked:\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        label\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      TestComponent\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          checked\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          id\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              check2\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      li\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      li\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        label\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            htmlFor\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                check3\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Small:\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        label\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      TestComponent\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          size\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              SMALL\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          id\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              check3\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      li\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      li\n                    </span>\n                    <span />\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &gt;\n                    </span>\n                  </div>\n                  <div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;\n                        label\n                      </span>\n                      <span>\n                        <span>\n                           \n                          <span\n                            style={Object {}}\n                          >\n                            htmlFor\n                          </span>\n                          <span>\n                            =\n                            <span\n                              style={Object {}}\n                            >\n                              \"\n                              <span\n                                style={\n                                  Object {\n                                    \"color\": \"#22a\",\n                                    \"wordBreak\": \"break-word\",\n                                  }\n                                }\n                              >\n                                check4\n                              </span>\n                              \"\n                            </span>\n                          </span>\n                          \n                        </span>\n                      </span>\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &gt;\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 63,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        Small checked:\n                      </span>\n                    </div>\n                    <div\n                      style={\n                        Object {\n                          \"paddingLeft\": 48,\n                          \"paddingRight\": 3,\n                        }\n                      }\n                    >\n                      <span\n                        style={\n                          Object {\n                            \"color\": \"#444\",\n                          }\n                        }\n                      >\n                        &lt;/\n                        label\n                        &gt;\n                      </span>\n                    </div>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 48,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;\n                      TestComponent\n                    </span>\n                    <span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          size\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              SMALL\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          checked\n                        </span>\n                      </span>\n                      <span>\n                         \n                        <span\n                          style={Object {}}\n                        >\n                          id\n                        </span>\n                        <span>\n                          =\n                          <span\n                            style={Object {}}\n                          >\n                            \"\n                            <span\n                              style={\n                                Object {\n                                  \"color\": \"#22a\",\n                                  \"wordBreak\": \"break-word\",\n                                }\n                              }\n                            >\n                              check4\n                            </span>\n                            \"\n                          </span>\n                        </span>\n                         \n                      </span>\n                    </span>\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      /&gt;\n                    </span>\n                  </div>\n                  <div\n                    style={\n                      Object {\n                        \"paddingLeft\": 33,\n                        \"paddingRight\": 3,\n                      }\n                    }\n                  >\n                    <span\n                      style={\n                        Object {\n                          \"color\": \"#444\",\n                        }\n                      }\n                    >\n                      &lt;/\n                      li\n                      &gt;\n                    </span>\n                  </div>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    ul\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TestComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / inputs / check box slide check box 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <label\n      className=\"sc-fzXfPJ hrApfs\"\n    >\n      <input\n        checked={false}\n        onChange={[Function]}\n        type=\"checkbox\"\n      />\n      <span\n        className=\"sc-fzXfPI iYsvKJ\"\n      />\n    </label>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / inputs / check box\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            slide check box\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div\n                style={\n                  Object {\n                    \"paddingLeft\": 18,\n                    \"paddingRight\": 3,\n                  }\n                }\n              >\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  &lt;\n                  TestSlideComponent\n                </span>\n                <span />\n                <span\n                  style={\n                    Object {\n                      \"color\": \"#444\",\n                    }\n                  }\n                >\n                  /&gt;\n                </span>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TestSlideComponent\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/components/src/input/checkbox.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport { SlideCheckbox } from \"./SlideCheckbox\";\nimport { Checkbox, CheckboxSizes } from \"./Checkbox\";\n\ninterface TestComponentState {\n  checked: boolean;\n}\n\nclass TestSlideComponent extends React.Component<any, TestComponentState> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      checked: false,\n    };\n  }\n  public render(): JSX.Element {\n    return <SlideCheckbox onClick={this.onClick} checked={this.state.checked} />;\n  }\n  private onClick = (): void => {\n    this.setState({ checked: !this.state.checked });\n  };\n}\n\nclass TestComponent extends React.Component<\n  { id?: string; checked?: boolean; size?: CheckboxSizes },\n  TestComponentState\n> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      checked: this.props.checked || false,\n    };\n  }\n  public render(): JSX.Element {\n    return <Checkbox onClick={this.onClick} checked={this.state.checked} size={this.props.size} id={this.props.id} />;\n  }\n  private onClick = (): void => {\n    this.setState({ checked: !this.state.checked });\n  };\n}\n\nstoriesOf(\"Pattern Library / inputs / check box\", module)\n  .add(\"slide check box\", () => {\n    return <TestSlideComponent />;\n  })\n  .add(\"checkboxes\", () => (\n    <ul>\n      <li>\n        <label htmlFor=\"check1\">Default:</label>\n        <TestComponent id=\"check1\" />\n      </li>\n      <li>\n        <label htmlFor=\"check2\">Default checked:</label>\n        <TestComponent checked id=\"check2\" />\n      </li>\n      <li>\n        <label htmlFor=\"check3\">Small:</label>\n        <TestComponent size={CheckboxSizes.SMALL} id=\"check3\" />\n      </li>\n      <li>\n        <label htmlFor=\"check4\">Small checked:</label>\n        <TestComponent size={CheckboxSizes.SMALL} checked id=\"check4\" />\n      </li>\n    </ul>\n  ));\n"
  },
  {
    "path": "packages/components/src/input/index.ts",
    "content": "export * from \"./Dropdown\";\nexport * from \"./Input\";\nexport * from \"./InputGroup\";\nexport * from \"./RadioInput\";\nexport * from \"./AddressInput\";\nexport * from \"./SaltInput\";\nexport * from \"./SlideCheckbox\";\nexport * from \"./Checkbox\";\nexport * from \"./InputWithButton\";\nexport * from \"./ImageFileToDataUri\";\nexport * from \"./SimpleImageFileToDataUri\";\nexport * from \"./SubmitLink\";\n"
  },
  {
    "path": "packages/components/src/onboardingStyledComponents.tsx",
    "content": "// tslint:disable-next-line:no-unused-variable\nimport * as React from \"react\"; // needed to export styled components\nimport { colors, fonts } from \"./\";\nimport { Collapsable } from \"./Collapsable\";\nimport styled from \"styled-components\";\n\nexport const OBSectionTitle = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 28px;\n  font-weight: bold;\n  letter-spacing: -0.58px;\n  line-height: 30px;\n  margin: 24px 0;\n  text-align: center;\n  color: ${colors.primary.BLACK};\n`;\n\nexport const OBSectionHeader = styled.h2`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 24px;\n  font-weight: bold;\n  letter-spacing: -0.17px;\n  line-height: 30px;\n  text-align: center;\n`;\n\nexport const OBSectionDescription = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  line-height: 24px;\n  text-align: center;\n  color: ${colors.primary.CIVIL_GRAY_1};\n`;\n\nexport const OBSmallParagraph = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 24px;\n`;\nexport const OBSmallList = styled.ul`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 24px;\n`;\nexport const OBSmallestParagraph = styled(OBSmallParagraph)`\n  font-size: 12px;\n  line-height: 22px;\n`;\n\nexport const OBCollapsable = styled(Collapsable)`\n  text-align: left;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 25px 0;\n  padding: 17px 7px 17px 0;\n\n  & + & {\n    border-top: none;\n    margin-top: -25px;\n  }\n`;\nexport const OBCollapsableHeader = styled.h4`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: bold;\n  line-height: 32px;\n  margin: 0;\n`;\n\nexport const OBBorderedSection = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 7px;\n  padding: 32px;\n`;\nexport const OBBorderedSectionActive = styled(OBBorderedSection)`\n  border-color: ${colors.accent.CIVIL_BLUE_VERY_FADED};\n`;\n\nexport const OBNoteContainer = styled(OBBorderedSection)`\n  display: flex;\n  justify-content: space-between;\n  padding-bottom: 30px;\n  margin-bottom: 36px;\n  text-align: left;\n`;\nexport const OBNoteHeading = styled.span`\n  font-weight: 600;\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  line-height: 16px;\n`;\nexport const OBNoteText = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  line-height: 16px;\n`;\n"
  },
  {
    "path": "packages/components/src/styleConstants.ts",
    "content": "export { colors, fonts, mediaQueries } from \"@joincivil/elements\";\n"
  },
  {
    "path": "packages/components/src/theme.ts",
    "content": "import { ButtonTheme } from \"./Button\";\nimport { LinkTheme } from \"./ViewTransactionLink\";\nimport { StepHeaderTheme } from \"./StepProcess\";\nimport { CheckboxTheme } from \"./input\";\nimport { StepProcessTopNavTheme } from \"./StepProcess/StepProcessTopNav\";\n\nexport interface Theme extends ButtonTheme, LinkTheme, StepHeaderTheme, CheckboxTheme, StepProcessTopNavTheme {\n  sansSerifFont: string;\n  serifFont: string;\n}\n"
  },
  {
    "path": "packages/components/src/types.d.ts",
    "content": "declare module \"@storybook/addon-storyshots\";\ndeclare module \"storybook-react-router\";\ndeclare module \"react-rte\";\ndeclare module \"react-add-to-calendar\";\ndeclare module \"react-helmet\";\ndeclare module \"*.png\";\ndeclare module \"*.svg\";\ndeclare module \"apollo-storybook-react\";\ndeclare module \"react-async-script\";\ndeclare module \"web3-providers-http\";\ndeclare module \"react-input-slider\";\n"
  },
  {
    "path": "packages/components/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declaration\": true,\n    \"declarationDir\": \"build/\",\n    \"jsx\": \"react\",\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"lib\": [\"dom\", \"es2017\"]\n  },\n  \"include\": [\"./src/**/*.ts\", \"./src/**/*.tsx\"]\n}\n"
  },
  {
    "path": "packages/components/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"],\n    \"no-unused-variable\": [true, { \"ignore-pattern\": \"^React|styled|StyledComponentClass\" }]\n  }\n}\n"
  },
  {
    "path": "packages/contracts/.doxityrc",
    "content": "{\n  \"target\": \"build/docs\",\n  \"src\": \"contracts/**/*\"\n}\n"
  },
  {
    "path": "packages/contracts/.gitignore",
    "content": ".0x-artifacts/\n"
  },
  {
    "path": "packages/contracts/.soliumignore",
    "content": "node_modules/\ncontracts/installed_contracts/PLCRVoting.sol\ncontracts/installed_contracts/Parameterizer.sol\ncontracts/RootCommits/RootCommits.sol\n"
  },
  {
    "path": "packages/contracts/.soliumrc.json",
    "content": "{\n  \"extends\": \"solium:recommended\",\n  \"plugins\": [\"security\"],\n  \"rules\": {\n    \"imports-on-top\": \"error\",\n    \"variable-declarations\": \"error\",\n    \"array-declarations\": \"error\",\n    \"operator-whitespace\": \"error\",\n    \"conditionals-whitespace\": \"error\",\n    \"comma-whitespace\": \"error\",\n    \"semicolon-whitespace\": \"error\",\n    \"function-whitespace\": \"error\",\n    \"lbrace\": \"error\",\n    \"mixedcase\": \"error\",\n    \"camelcase\": \"warning\",\n    \"uppercase\": \"error\",\n    \"no-empty-blocks\": \"warning\",\n    \"no-unused-vars\": \"error\",\n    \"blank-lines\": \"off\",\n    \"whitespace\": \"error\",\n    \"deprecated-suicide\": \"error\",\n    \"pragma-on-top\": \"error\",\n    \"function-order\": \"off\",\n    \"quotes\": [\"error\", \"double\"],\n    \"indentation\": [\"error\", 2],\n    \"max-len\": \"off\",\n\n    \"security/no-throw\": \"error\",\n    \"security/no-tx-origin\": \"error\",\n    \"security/enforce-explicit-visibility\": \"error\",\n    \"security/no-block-members\": [\"error\", [\"blockhash\"]],\n    \"security/no-call-value\": \"warning\",\n    \"security/no-assign-params\": \"error\",\n    \"security/no-fixed\": \"error\",\n    \"security/no-inline-assembly\": \"off\",\n    \"security/no-low-level-calls\": \"warning\",\n    \"security/no-modify-for-iter-var\": \"error\",\n    \"security/no-send\": \"error\",\n    \"security/no-sha3\": \"error\",\n    \"security/no-unreachable-code\": \"error\",\n    \"security/enforce-loop-bounds\": \"error\",\n    \"security/enforce-placeholder-last\": \"warning\",\n    \"security/no-suicide-or-selfdestruct\": \"warning\",\n    \"security/no-var\": \"error\"\n  }\n}\n"
  },
  {
    "path": "packages/contracts/README.md",
    "content": "# @joincivil/contracts\n\nSmart-contracts that build the kernel of the protocol and ecosystem of Civil in general. To be deployed on Ethereum's network.\n\n## Note\n\nTo support our code coverage and documentation generation tools (`solcover` and `doxity` respectively), which cannot correctly instrument and parse contracts that import files added to this repo via EPM, we have brought several contracts in via EPM and then moved them into the `/contracts/installed_contracts` folder. We have also modified the import paths of those files appropriately but otherwise there are no changes. The contracts originally brought in via EPM are:\n\nAttributeStore.sol (package: `attrstore @ v1.0.0`)\nDLL.sol (package: `dll @ v1.0.3`)\nERC20Interface.sol (package: `tokens @ v1.0.0`)\nERC20.sol (package: `tokens @ v1.0.0`)\nPLCRVoting.sol (package: `plcr-revival @ v1.3.0`)\nParameterizer.sol (package: `tcr @ v1.1.0`)\n\nFor the same reason, we have brought several files from OpenZeppelin originally added via NPM into the `contracts/zeppelin-solidity` folder. Those contracts are:\n\nECRecovery.sol\nOwnable.sol\nSafeMath.sol\n\n## Usage\n\nStart up [Ganache](https://github.com/trufflesuite/ganache-cli) in the root directory of the monorepo:\n\n```bash\nyarn ganache\n```\n\nBuild and strip the artifacts:\n\n```bash\nyarn build\n```\n\nRun tests:\n\n```bash\nyarn test\n```\n\nAnd check out migrations:\n\n```bash\nyarn truffle migrate\n```\n\n## Artifacts\n\nTruffle generates a lot of additional data inside the .json artifacts that are needed to interface with the artifacts from outside\nthe Ethereum's network.\n\nDuring the build process artifacts are striped out of additional, debugging information and placed in the `build/artifacts` folder.\n\n## Migrations\n\nThis package supports easy Infura migrations and automatic token allocation to teammates.\nAdding enviromental variables to your `.profile` will allow you to use it during migrations:\n\n```bash\nexport MNEMONIC=\"\" # Your mnemonic for HD Wallet provider\nexport INFURA_KEY=\"\" # Your infura api key\nexport TEAMMATES=\"\" # Comma seperated list of addresses\n```\n\n## Contributing\n\nCivil's ecosystem is free and open-source, we're all part of it and you're encouraged to be a part of it with us.\nBest place to start hacking would be to use the [`@joincivil/core`](/packages/core) and build some application on top of the protocol.\n\nIf you're itching to dwelve deeper inside, [**help wanted**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\nand [**good first issue**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) labels are good places to get started and learn the architecture.\n\n## Licenses\n\nInside this package there are multiple smart-contracts from multiple open-sources with somewhat different licensing terms.\nWhile we're working to get everything under LGPLv2.1 this is not currently possible.\n[`contracts`](./contracts) and [`test`](./test) folders are split into subfolders with specific names, code under those subfolders is licensed under licenses as follow:\n\n| Subfolder       | License                                                                                              | Original source                                                                                                   |\n| --------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |\n| `tcr/`          | [![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./licenses/LICENSE-tcr)   | [skmgoldin/tcr](https://github.com/skmgoldin/tcr)                                                                 |\n| `multisig/`     | [![license](https://img.shields.io/badge/license-LGPL%20v2.1-green.svg)](./licenses/LICENSE-general) | [gnosis/MultiSigWallet](https://github.com/gnosis/MultiSigWallet/commit/ac93a926aac155fb50590130edaa0b26b3487ba4) |\n| `anything else` | [![license](https://img.shields.io/badge/license-LGPL%20v2.1-green.svg)](./licenses/LICENSE-general) | [civil/Civil](https://github.com/joincivil/Civil)                                                                 |\n"
  },
  {
    "path": "packages/contracts/conf/config.json",
    "content": "{\n  \"nets\": {\n    \"mainnet\": {\n      \"paramDefaults\": {\n        \"minDeposit\": \"5000000000000000000000\",\n        \"pMinDeposit\": \"50000000000000000000000\",\n        \"applyStageLength\": 86400,\n        \"pApplyStageLength\": 86400,\n        \"commitStageLength\": 864000,\n        \"pCommitStageLength\": 864000,\n        \"revealStageLength\": 604800,\n        \"pRevealStageLength\": 604800,\n        \"dispensationPct\": 50,\n        \"pDispensationPct\": 50,\n        \"voteQuorum\": 50,\n        \"pVoteQuorum\": 50,\n        \"appealFeeAmount\": \"5000000000000000000000\",\n        \"challengeAppealLength\": 604800,\n        \"requestAppealPhaseLength\": 259200,\n        \"judgeAppealPhaseLength\": 1209600,\n        \"appealChallengeCommitStageLength\": 864000,\n        \"appealChallengeRevealStageLength\": 604800,\n        \"appealSupermajorityPercentage\": 66,\n        \"appealChallengeVoteDispensationPct\": 66,\n        \"govtPCommitStageLength\": 864000,\n        \"govtPRevealStageLength\": 604800,\n        \"constitutionURI\": \"ipfs://zb34W7r8jmpKj13xrTa3npapGpEpms8iPkUWeVyJPjsH7WYN2\",\n        \"constitutionHash\": \"0x3eaf99d3f9ad31d76d9c685655db55bf81211042841887d37c3643e12226b726\"\n      },\n      \"AppellateAddress\": \"0x52166e838ef51e3728d6679890e81cd37d945a54\",\n      \"GovernmentControllerAddress\": \"0xfe6eee8911d866f3196d9cb003ee0af50d1875c1\"\n    },\n    \"rinkeby\": {\n      \"paramDefaults\": {\n        \"minDeposit\": \"100000000000000000000\",\n        \"pMinDeposit\": \"1000000000000000000000\",\n        \"applyStageLength\": 86400,\n        \"pApplyStageLength\": 86400,\n        \"commitStageLength\": 86400,\n        \"pCommitStageLength\": 86400,\n        \"revealStageLength\": 86400,\n        \"pRevealStageLength\": 86400,\n        \"dispensationPct\": 50,\n        \"pDispensationPct\": 50,\n        \"voteQuorum\": 50,\n        \"pVoteQuorum\": 50,\n        \"pProcessBy\": 86400,\n        \"appealFeeAmount\": \"100000000000000000000\",\n        \"challengeAppealLength\": 86400,\n        \"requestAppealPhaseLength\": 86400,\n        \"judgeAppealPhaseLength\": 345600,\n        \"appealChallengeCommitStageLength\": 86400,\n        \"appealChallengeRevealStageLength\": 86400,\n        \"appealSupermajorityPercentage\": 66,\n        \"appealChallengeVoteDispensationPct\": 66,\n        \"govtPCommitStageLength\": 86400,\n        \"govtPRevealStageLength\": 86400,\n        \"constitutionURI\": \"ipfs://zb34W7r8jmpKj13xrTa3npapGpEpms8iPkUWeVyJPjsH7WYN2\",\n        \"constitutionHash\": \"0x3eaf99d3f9ad31d76d9c685655db55bf81211042841887d37c3643e12226b726\"\n      },\n      \"AppellateAddress\": \"0xafd9717b7af755d7f1b99d32e11351c803b2bf0c\",\n      \"GovernmentControllerAddress\": \"0xcEC56F1D4Dc439E298D5f8B6ff3Aa6be58Cd6Fdf\",\n      \"tokenHolders\": []\n    },\n    \"ganache\": {\n      \"paramDefaults\": {\n        \"minDeposit\": \"100000000000000000000\",\n        \"pMinDeposit\": \"1000000000000000000000\",\n        \"applyStageLength\": 120,\n        \"pApplyStageLength\": 120,\n        \"commitStageLength\": 120,\n        \"pCommitStageLength\": 120,\n        \"revealStageLength\": 120,\n        \"pRevealStageLength\": 120,\n        \"dispensationPct\": 50,\n        \"pDispensationPct\": 50,\n        \"voteQuorum\": 50,\n        \"pVoteQuorum\": 50,\n        \"pProcessBy\": 86400,\n        \"appealFeeAmount\": \"100000000000000000000\",\n        \"challengeAppealLength\": 120,\n        \"requestAppealPhaseLength\": 120,\n        \"judgeAppealPhaseLength\": 345600,\n        \"appealChallengeCommitStageLength\": 120,\n        \"appealChallengeRevealStageLength\": 120,\n        \"appealSupermajorityPercentage\": 66,\n        \"appealChallengeVoteDispensationPct\": 66,\n        \"govtPCommitStageLength\": 120,\n        \"govtPRevealStageLength\": 120,\n        \"constitutionURI\": \"http://madeupURL.com\",\n        \"constitutionHash\": \"0x3595a4bac2650127ce23cf4cbb67c6bd3cf311de5dc84d4bfc35efb5f99505d2\"\n      },\n      \"tokenHolders\": [\"0xcec56f1d4dc439e298d5f8b6ff3aa6be58cd6fdf\", \"0xbf9059ddf9e1954e0956f41bc757c411be602560\"],\n      \"AppellateAddress\": \"0xcEC56F1D4Dc439E298D5f8B6ff3Aa6be58Cd6Fdf\",\n      \"GovernmentControllerAddress\": \"0xcEC56F1D4Dc439E298D5f8B6ff3Aa6be58Cd6Fdf\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/Migrations.sol",
    "content": "pragma solidity ^0.4.19;\n\n\ncontract Migrations {\n  address public owner;\n  \n  // solium-disable-next-line\n  uint public last_completed_migration;\n\n  // solium-disable-next-line security/enforce-placeholder-last\n  modifier restricted() {\n    if (msg.sender == owner) {\n      _;\n    }\n  }\n\n  function Migrations() public {\n    owner = msg.sender;\n  }\n\n  function setCompleted(uint completed) public restricted {\n    last_completed_migration = completed;\n  }\n\n  function upgrade(address newAddress) public restricted {\n    Migrations upgraded = Migrations(newAddress);\n    upgraded.setCompleted(last_completed_migration);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/RootCommits/RootCommits.sol",
    "content": "pragma solidity ^0.4.23;\n\n/*\n* not finished\n*/\ncontract RootCommits {\n\n  mapping(address => MRoot[]) identities;\n\n  struct MRoot {\n    uint64 BlockN;\n    uint64 BlockTimestamp;\n    bytes32 Root;\n  }\n\n  // event called when a root is updated\n  event RootUpdated(address addr, uint64 blockN, uint64 timestamp, bytes32 root);\n\n  function setRoot(bytes32 _root) public {\n      if(identities[msg.sender].length>0){\n        require(identities[msg.sender][identities[msg.sender].length-1].BlockN!=block.number, \"no multiple set in the same block\");\n      }\n      identities[msg.sender].push(MRoot(uint64(block.number), uint64(block.timestamp), _root));\n      emit RootUpdated(msg.sender, uint64(block.number), uint64(block.timestamp), _root);\n  }\n\n  function getRoot(address _address) public view returns (bytes32){\n      return identities[_address][identities[_address].length-1].Root;\n  }\n\n  /*\n  * binary search\n  */\n  function getRootByBlock(address _address, uint64 _blockN) public view returns (bytes32) {\n      require(_blockN<block.number, \"errNoFutureAllowed\");\n      uint min = 0;\n      uint max = identities[_address].length-1;\n      while(min<=max) {\n          uint mid = (max + min)/ 2;\n          if(identities[_address][mid].BlockN==_blockN) {\n              return identities[_address][mid].Root;\n          } else if((_blockN>identities[_address][mid].BlockN) && (_blockN<identities[_address][mid+1].BlockN)) {\n              return identities[_address][mid].Root;\n          } else if(_blockN>identities[_address][mid].BlockN) {\n              min = mid + 1;\n          } else {\n              max = mid -1;\n          }\n      }\n      return;\n  }\n  function getRootByTime(address _address, uint64 _timestamp) public view returns (bytes32) {\n      require(_timestamp<block.timestamp, \"errNoFutureAllowed\");\n      if(identities[_address].length==0) {\n        bytes32 emptyRoot;\n        return emptyRoot;\n      }\n      uint min = 0;\n      uint max = identities[_address].length-1;\n      while(min<=max) {\n          uint mid = (max + min)/ 2;\n          if(identities[_address][mid].BlockTimestamp==_timestamp) {\n              return identities[_address][mid].Root;\n          } else if((_timestamp>identities[_address][mid].BlockTimestamp) && (_timestamp<identities[_address][mid+1].BlockTimestamp)) {\n              return identities[_address][mid].Root;\n          } else if(_timestamp>identities[_address][mid].BlockTimestamp) {\n              min = mid + 1;\n          } else {\n              max = mid -1;\n          }\n      }\n      return;\n  }\n\n}\n"
  },
  {
    "path": "packages/contracts/contracts/installed_contracts/AttributeStore.sol",
    "content": "/* solium-disable */\npragma solidity^0.4.11;\n\nlibrary AttributeStore {\n    struct Data {\n        mapping(bytes32 => uint) store;\n    }\n\n    function getAttribute(Data storage self, bytes32 _UUID, string _attrName)\n    public view returns (uint) {\n        bytes32 key = keccak256(_UUID, _attrName);\n        return self.store[key];\n    }\n\n    function setAttribute(Data storage self, bytes32 _UUID, string _attrName, uint _attrVal)\n    public {\n        bytes32 key = keccak256(_UUID, _attrName);\n        self.store[key] = _attrVal;\n    }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/installed_contracts/DLL.sol",
    "content": "pragma solidity^0.4.11;\n\nlibrary DLL {\n\n  uint constant NULL_NODE_ID = 0;\n\n  struct Node {\n    uint next;\n    uint prev;\n  }\n\n  struct Data {\n    mapping(uint => Node) dll;\n  }\n\n  function isEmpty(Data storage self) public view returns (bool) {\n    return getStart(self) == NULL_NODE_ID;\n  }\n\n  function contains(Data storage self, uint _curr) public view returns (bool) {\n    if (isEmpty(self) || _curr == NULL_NODE_ID) {\n      return false;\n    } \n\n    bool isSingleNode = (getStart(self) == _curr) && (getEnd(self) == _curr);\n    bool isNullNode = (getNext(self, _curr) == NULL_NODE_ID) && (getPrev(self, _curr) == NULL_NODE_ID);\n    return isSingleNode || !isNullNode;\n  }\n\n  function getNext(Data storage self, uint _curr) public view returns (uint) {\n    return self.dll[_curr].next;\n  }\n\n  function getPrev(Data storage self, uint _curr) public view returns (uint) {\n    return self.dll[_curr].prev;\n  }\n\n  function getStart(Data storage self) public view returns (uint) {\n    return getNext(self, NULL_NODE_ID);\n  }\n\n  function getEnd(Data storage self) public view returns (uint) {\n    return getPrev(self, NULL_NODE_ID);\n  }\n\n  /**\n  @dev Inserts a new node between _prev and _next. When inserting a node already existing in \n  the list it will be automatically removed from the old position.\n  @param _prev the node which _new will be inserted after\n  @param _curr the id of the new node being inserted\n  @param _next the node which _new will be inserted before\n  */\n  function insert(Data storage self, uint _prev, uint _curr, uint _next) public {\n    require(_curr != NULL_NODE_ID);\n\n    remove(self, _curr);\n\n    require(_prev == NULL_NODE_ID || contains(self, _prev));\n    require(_next == NULL_NODE_ID || contains(self, _next));\n\n    require(getNext(self, _prev) == _next);\n    require(getPrev(self, _next) == _prev);\n\n    self.dll[_curr].prev = _prev;\n    self.dll[_curr].next = _next;\n\n    self.dll[_prev].next = _curr;\n    self.dll[_next].prev = _curr;\n  }\n\n  function remove(Data storage self, uint _curr) public {\n    if (!contains(self, _curr)) {\n      return;\n    }\n\n    uint next = getNext(self, _curr);\n    uint prev = getPrev(self, _curr);\n\n    self.dll[next].prev = prev;\n    self.dll[prev].next = next;\n\n    delete self.dll[_curr];\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/installed_contracts/PLCRVoting.sol",
    "content": "pragma solidity ^0.4.8;\nimport \"./DLL.sol\";\nimport \"./AttributeStore.sol\";\nimport \"../zeppelin-solidity/token/ERC20/IERC20.sol\";\nimport \"../zeppelin-solidity/math/SafeMath.sol\";\n\n/**\n@title Partial-Lock-Commit-Reveal Voting scheme with ERC20 tokens\n@author Team: Aspyn Palatnick, Cem Ozer, Yorke Rhodes\n*/\ncontract PLCRVoting {\n\n    // ============\n    // EVENTS:\n    // ============\n\n    event _VoteCommitted(uint indexed pollID, uint numTokens, address indexed voter);\n    event _VoteRevealed(uint indexed pollID, uint numTokens, uint votesFor, uint votesAgainst, uint indexed choice, address indexed voter, uint salt);\n    event _PollCreated(uint voteQuorum, uint commitEndDate, uint revealEndDate, uint indexed pollID, address indexed creator);\n    event _VotingRightsGranted(uint numTokens, address indexed voter);\n    event _VotingRightsWithdrawn(uint numTokens, address indexed voter);\n    event _TokensRescued(uint indexed pollID, address indexed voter);\n\n    // ============\n    // DATA STRUCTURES:\n    // ============\n\n    using AttributeStore for AttributeStore.Data;\n    using DLL for DLL.Data;\n    using SafeMath for uint;\n\n    struct Poll {\n        uint commitEndDate;     /// expiration date of commit period for poll\n        uint revealEndDate;     /// expiration date of reveal period for poll\n        uint voteQuorum;\t    /// number of votes required for a proposal to pass\n        uint votesFor;\t\t    /// tally of votes supporting proposal\n        uint votesAgainst;      /// tally of votes countering proposal\n        mapping(address => bool) didCommit;  /// indicates whether an address committed a vote for this poll\n        mapping(address => bool) didReveal;   /// indicates whether an address revealed a vote for this poll\n    }\n\n    // ============\n    // STATE VARIABLES:\n    // ============\n\n    uint constant public INITIAL_POLL_NONCE = 0;\n    uint public pollNonce;\n\n    mapping(uint => Poll) public pollMap; // maps pollID to Poll struct\n    mapping(address => uint) public voteTokenBalance; // maps user's address to voteToken balance\n\n    mapping(address => DLL.Data) dllMap;\n    AttributeStore.Data store;\n\n    IERC20 public token;\n\n    /**\n    @param _token The address where the ERC20 token contract is deployed\n    */\n    constructor(address _token) public {\n        require(_token != 0);\n\n        token = IERC20(_token);\n        pollNonce = INITIAL_POLL_NONCE;\n    }\n\n    // ================\n    // TOKEN INTERFACE:\n    // ================\n\n    /**\n    @notice Loads _numTokens ERC20 tokens into the voting contract for one-to-one voting rights\n    @dev Assumes that msg.sender has approved voting contract to spend on their behalf\n    @param _numTokens The number of votingTokens desired in exchange for ERC20 tokens\n    */\n    function requestVotingRights(uint _numTokens) public {\n        require(token.balanceOf(msg.sender) >= _numTokens);\n        voteTokenBalance[msg.sender] += _numTokens;\n        require(token.transferFrom(msg.sender, this, _numTokens));\n        emit _VotingRightsGranted(_numTokens, msg.sender);\n    }\n\n    /**\n    @notice Withdraw _numTokens ERC20 tokens from the voting contract, revoking these voting rights\n    @param _numTokens The number of ERC20 tokens desired in exchange for voting rights\n    */\n    function withdrawVotingRights(uint _numTokens) external {\n        uint availableTokens = voteTokenBalance[msg.sender].sub(getLockedTokens(msg.sender));\n        require(availableTokens >= _numTokens);\n        voteTokenBalance[msg.sender] -= _numTokens;\n        require(token.transfer(msg.sender, _numTokens));\n        emit _VotingRightsWithdrawn(_numTokens, msg.sender);\n    }\n\n    /**\n    @dev Unlocks tokens locked in unrevealed vote where poll has ended\n    @param _pollID Integer identifier associated with the target poll\n    */\n    function rescueTokens(uint _pollID) public {\n        require(isExpired(pollMap[_pollID].revealEndDate));\n        require(dllMap[msg.sender].contains(_pollID));\n\n        dllMap[msg.sender].remove(_pollID);\n        emit _TokensRescued(_pollID, msg.sender);\n    }\n\n    /**\n    @dev Unlocks tokens locked in unrevealed votes where polls have ended\n    @param _pollIDs Array of integer identifiers associated with the target polls\n    */\n    function rescueTokensInMultiplePolls(uint[] _pollIDs) public {\n        // loop through arrays, rescuing tokens from all\n        for (uint i = 0; i < _pollIDs.length; i++) {\n            rescueTokens(_pollIDs[i]);\n        }\n    }\n\n    // =================\n    // VOTING INTERFACE:\n    // =================\n\n    /**\n    @notice Commits vote using hash of choice and secret salt to conceal vote until reveal\n    @param _pollID Integer identifier associated with target poll\n    @param _secretHash Commit keccak256 hash of voter's choice and salt (tightly packed in this order)\n    @param _numTokens The number of tokens to be committed towards the target poll\n    @param _prevPollID The ID of the poll that the user has voted the maximum number of tokens in which is still less than or equal to numTokens\n    */\n    function commitVote(uint _pollID, bytes32 _secretHash, uint _numTokens, uint _prevPollID) public {\n        require(commitPeriodActive(_pollID));\n\n        // if msg.sender doesn't have enough voting rights,\n        // request for enough voting rights\n        if (voteTokenBalance[msg.sender] < _numTokens) {\n            uint remainder = _numTokens.sub(voteTokenBalance[msg.sender]);\n            requestVotingRights(remainder);\n        }\n\n        // make sure msg.sender has enough voting rights\n        require(voteTokenBalance[msg.sender] >= _numTokens);\n        // prevent user from committing to zero node placeholder\n        require(_pollID != 0);\n        // prevent user from committing a secretHash of 0\n        require(_secretHash != 0);\n\n        // Check if _prevPollID exists in the user's DLL or if _prevPollID is 0\n        require(_prevPollID == 0 || dllMap[msg.sender].contains(_prevPollID));\n\n        uint nextPollID = dllMap[msg.sender].getNext(_prevPollID);\n\n        // edge case: in-place update\n        if (nextPollID == _pollID) {\n            nextPollID = dllMap[msg.sender].getNext(_pollID);\n        }\n\n        require(validPosition(_prevPollID, nextPollID, msg.sender, _numTokens));\n        dllMap[msg.sender].insert(_prevPollID, _pollID, nextPollID);\n\n        bytes32 UUID = attrUUID(msg.sender, _pollID);\n\n        store.setAttribute(UUID, \"numTokens\", _numTokens);\n        store.setAttribute(UUID, \"commitHash\", uint(_secretHash));\n\n        pollMap[_pollID].didCommit[msg.sender] = true;\n        emit _VoteCommitted(_pollID, _numTokens, msg.sender);\n    }\n\n    /**\n    @notice                 Commits votes using hashes of choices and secret salts to conceal votes until reveal\n    @param _pollIDs         Array of integer identifiers associated with target polls\n    @param _secretHashes    Array of commit keccak256 hashes of voter's choices and salts (tightly packed in this order)\n    @param _numsTokens      Array of numbers of tokens to be committed towards the target polls\n    @param _prevPollIDs     Array of IDs of the polls that the user has voted the maximum number of tokens in which is still less than or equal to numTokens\n    */\n    function commitVotes(uint[] _pollIDs, bytes32[] _secretHashes, uint[] _numsTokens, uint[] _prevPollIDs) external {\n        // make sure the array lengths are all the same\n        require(_pollIDs.length == _secretHashes.length);\n        require(_pollIDs.length == _numsTokens.length);\n        require(_pollIDs.length == _prevPollIDs.length);\n\n        // loop through arrays, committing each individual vote values\n        for (uint i = 0; i < _pollIDs.length; i++) {\n            commitVote(_pollIDs[i], _secretHashes[i], _numsTokens[i], _prevPollIDs[i]);\n        }\n    }\n\n    /**\n    @dev Compares previous and next poll's committed tokens for sorting purposes\n    @param _prevID Integer identifier associated with previous poll in sorted order\n    @param _nextID Integer identifier associated with next poll in sorted order\n    @param _voter Address of user to check DLL position for\n    @param _numTokens The number of tokens to be committed towards the poll (used for sorting)\n    @return valid Boolean indication of if the specified position maintains the sort\n    */\n    function validPosition(uint _prevID, uint _nextID, address _voter, uint _numTokens) public constant returns (bool valid) {\n        bool prevValid = (_numTokens >= getNumTokens(_voter, _prevID));\n        // if next is zero node, _numTokens does not need to be greater\n        bool nextValid = (_numTokens <= getNumTokens(_voter, _nextID) || _nextID == 0);\n        return prevValid && nextValid;\n    }\n\n    /**\n    @notice Reveals vote with choice and secret salt used in generating commitHash to attribute committed tokens\n    @param _pollID Integer identifier associated with target poll\n    @param _voteOption Vote choice used to generate commitHash for associated poll\n    @param _salt Secret number used to generate commitHash for associated poll\n    */\n    function revealVote(uint _pollID, uint _voteOption, uint _salt) public {\n        // Make sure the reveal period is active\n        require(revealPeriodActive(_pollID));\n        require(pollMap[_pollID].didCommit[msg.sender]);                         // make sure user has committed a vote for this poll\n        require(!pollMap[_pollID].didReveal[msg.sender]);                        // prevent user from revealing multiple times\n        require(keccak256(_voteOption, _salt) == getCommitHash(msg.sender, _pollID)); // compare resultant hash from inputs to original commitHash\n\n        uint numTokens = getNumTokens(msg.sender, _pollID);\n\n        if (_voteOption == 1) {// apply numTokens to appropriate poll choice\n            pollMap[_pollID].votesFor += numTokens;\n        } else {\n            pollMap[_pollID].votesAgainst += numTokens;\n        }\n\n        dllMap[msg.sender].remove(_pollID); // remove the node referring to this vote upon reveal\n        pollMap[_pollID].didReveal[msg.sender] = true;\n\n        emit _VoteRevealed(_pollID, numTokens, pollMap[_pollID].votesFor, pollMap[_pollID].votesAgainst, _voteOption, msg.sender, _salt);\n    }\n\n    /**\n    @notice             Reveals multiple votes with choices and secret salts used in generating commitHashes to attribute committed tokens\n    @param _pollIDs     Array of integer identifiers associated with target polls\n    @param _voteOptions Array of vote choices used to generate commitHashes for associated polls\n    @param _salts       Array of secret numbers used to generate commitHashes for associated polls\n    */\n    function revealVotes(uint[] _pollIDs, uint[] _voteOptions, uint[] _salts) external {\n        // make sure the array lengths are all the same\n        require(_pollIDs.length == _voteOptions.length);\n        require(_pollIDs.length == _salts.length);\n\n        // loop through arrays, revealing each individual vote values\n        for (uint i = 0; i < _pollIDs.length; i++) {\n            revealVote(_pollIDs[i], _voteOptions[i], _salts[i]);\n        }\n    }\n\n    /**\n    @param _pollID Integer identifier associated with target poll\n    @param _salt Arbitrarily chosen integer used to generate secretHash\n    @return correctVotes Number of tokens voted for winning option\n    */\n    function getNumPassingTokens(address _voter, uint _pollID, uint _salt) public constant returns (uint correctVotes) {\n        require(pollEnded(_pollID));\n        require(pollMap[_pollID].didReveal[_voter]);\n\n        uint winningChoice = isPassed(_pollID) ? 1 : 0;\n        bytes32 winnerHash = keccak256(winningChoice, _salt);\n        bytes32 commitHash = getCommitHash(_voter, _pollID);\n\n        require(winnerHash == commitHash);\n\n        return getNumTokens(_voter, _pollID);\n    }\n\n    // ==================\n    // POLLING INTERFACE:\n    // ==================\n\n    /**\n    @dev Initiates a poll with canonical configured parameters at pollID emitted by PollCreated event\n    @param _voteQuorum Type of majority (out of 100) that is necessary for poll to be successful\n    @param _commitDuration Length of desired commit period in seconds\n    @param _revealDuration Length of desired reveal period in seconds\n    */\n    function startPoll(uint _voteQuorum, uint _commitDuration, uint _revealDuration) public returns (uint pollID) {\n        pollNonce = pollNonce + 1;\n\n        uint commitEndDate = block.timestamp.add(_commitDuration);\n        uint revealEndDate = commitEndDate.add(_revealDuration);\n\n        pollMap[pollNonce] = Poll({\n            voteQuorum: _voteQuorum,\n            commitEndDate: commitEndDate,\n            revealEndDate: revealEndDate,\n            votesFor: 0,\n            votesAgainst: 0\n        });\n\n        emit _PollCreated(_voteQuorum, commitEndDate, revealEndDate, pollNonce, msg.sender);\n        return pollNonce;\n    }\n\n    /**\n    @notice Determines if proposal has passed\n    @dev Check if votesFor out of totalVotes exceeds votesQuorum (requires pollEnded)\n    @param _pollID Integer identifier associated with target poll\n    */\n    function isPassed(uint _pollID) constant public returns (bool passed) {\n        require(pollEnded(_pollID));\n\n        Poll memory poll = pollMap[_pollID];\n        return (100 * poll.votesFor) > (poll.voteQuorum * (poll.votesFor + poll.votesAgainst));\n    }\n\n    // ----------------\n    // POLLING HELPERS:\n    // ----------------\n\n    /**\n    @dev Gets the total winning votes for reward distribution purposes\n    @param _pollID Integer identifier associated with target poll\n    @return Total number of votes committed to the winning option for specified poll\n    */\n    function getTotalNumberOfTokensForWinningOption(uint _pollID) constant public returns (uint numTokens) {\n        require(pollEnded(_pollID));\n\n        if (isPassed(_pollID))\n            return pollMap[_pollID].votesFor;\n        else\n            return pollMap[_pollID].votesAgainst;\n    }\n\n    /**\n    @notice Determines if poll is over\n    @dev Checks isExpired for specified poll's revealEndDate\n    @return Boolean indication of whether polling period is over\n    */\n    function pollEnded(uint _pollID) constant public returns (bool ended) {\n        require(pollExists(_pollID));\n\n        return isExpired(pollMap[_pollID].revealEndDate);\n    }\n\n    /**\n    @notice Checks if the commit period is still active for the specified poll\n    @dev Checks isExpired for the specified poll's commitEndDate\n    @param _pollID Integer identifier associated with target poll\n    @return Boolean indication of isCommitPeriodActive for target poll\n    */\n    function commitPeriodActive(uint _pollID) constant public returns (bool active) {\n        require(pollExists(_pollID));\n\n        return !isExpired(pollMap[_pollID].commitEndDate);\n    }\n\n    /**\n    @notice Checks if the reveal period is still active for the specified poll\n    @dev Checks isExpired for the specified poll's revealEndDate\n    @param _pollID Integer identifier associated with target poll\n    */\n    function revealPeriodActive(uint _pollID) constant public returns (bool active) {\n        require(pollExists(_pollID));\n\n        return !isExpired(pollMap[_pollID].revealEndDate) && !commitPeriodActive(_pollID);\n    }\n\n    /**\n    @dev Checks if user has committed for specified poll\n    @param _voter Address of user to check against\n    @param _pollID Integer identifier associated with target poll\n    @return Boolean indication of whether user has committed\n    */\n    function didCommit(address _voter, uint _pollID) constant public returns (bool committed) {\n        require(pollExists(_pollID));\n\n        return pollMap[_pollID].didCommit[_voter];\n    }\n\n    /**\n    @dev Checks if user has revealed for specified poll\n    @param _voter Address of user to check against\n    @param _pollID Integer identifier associated with target poll\n    @return Boolean indication of whether user has revealed\n    */\n    function didReveal(address _voter, uint _pollID) constant public returns (bool revealed) {\n        require(pollExists(_pollID));\n\n        return pollMap[_pollID].didReveal[_voter];\n    }\n\n    /**\n    @dev Checks if a poll exists\n    @param _pollID The pollID whose existance is to be evaluated.\n    @return Boolean Indicates whether a poll exists for the provided pollID\n    */\n    function pollExists(uint _pollID) constant public returns (bool exists) {\n        return (_pollID != 0 && _pollID <= pollNonce);\n    }\n\n    // ---------------------------\n    // DOUBLE-LINKED-LIST HELPERS:\n    // ---------------------------\n\n    /**\n    @dev Gets the bytes32 commitHash property of target poll\n    @param _voter Address of user to check against\n    @param _pollID Integer identifier associated with target poll\n    @return Bytes32 hash property attached to target poll\n    */\n    function getCommitHash(address _voter, uint _pollID) constant public returns (bytes32 commitHash) {\n        return bytes32(store.getAttribute(attrUUID(_voter, _pollID), \"commitHash\"));\n    }\n\n    /**\n    @dev Wrapper for getAttribute with attrName=\"numTokens\"\n    @param _voter Address of user to check against\n    @param _pollID Integer identifier associated with target poll\n    @return Number of tokens committed to poll in sorted poll-linked-list\n    */\n    function getNumTokens(address _voter, uint _pollID) constant public returns (uint numTokens) {\n        return store.getAttribute(attrUUID(_voter, _pollID), \"numTokens\");\n    }\n\n    /**\n    @dev Gets top element of sorted poll-linked-list\n    @param _voter Address of user to check against\n    @return Integer identifier to poll with maximum number of tokens committed to it\n    */\n    function getLastNode(address _voter) constant public returns (uint pollID) {\n        return dllMap[_voter].getPrev(0);\n    }\n\n    /**\n    @dev Gets the numTokens property of getLastNode\n    @param _voter Address of user to check against\n    @return Maximum number of tokens committed in poll specified\n    */\n    function getLockedTokens(address _voter) constant public returns (uint numTokens) {\n        return getNumTokens(_voter, getLastNode(_voter));\n    }\n\n    /*\n    @dev Takes the last node in the user's DLL and iterates backwards through the list searching\n    for a node with a value less than or equal to the provided _numTokens value. When such a node\n    is found, if the provided _pollID matches the found nodeID, this operation is an in-place\n    update. In that case, return the previous node of the node being updated. Otherwise return the\n    first node that was found with a value less than or equal to the provided _numTokens.\n    @param _voter The voter whose DLL will be searched\n    @param _numTokens The value for the numTokens attribute in the node to be inserted\n    @return the node which the propoded node should be inserted after\n    */\n    function getInsertPointForNumTokens(address _voter, uint _numTokens, uint _pollID)\n    constant public returns (uint prevNode) {\n      // Get the last node in the list and the number of tokens in that node\n      uint nodeID = getLastNode(_voter);\n      uint tokensInNode = getNumTokens(_voter, nodeID);\n\n      // Iterate backwards through the list until reaching the root node\n      while(nodeID != 0) {\n        // Get the number of tokens in the current node\n        tokensInNode = getNumTokens(_voter, nodeID);\n        if(tokensInNode <= _numTokens) { // We found the insert point!\n          if(nodeID == _pollID) {\n            // This is an in-place update. Return the prev node of the node being updated\n            nodeID = dllMap[_voter].getPrev(nodeID);\n          }\n          // Return the insert point\n          return nodeID;\n        }\n        // We did not find the insert point. Continue iterating backwards through the list\n        nodeID = dllMap[_voter].getPrev(nodeID);\n      }\n\n      // The list is empty, or a smaller value than anything else in the list is being inserted\n      return nodeID;\n    }\n\n    // ----------------\n    // GENERAL HELPERS:\n    // ----------------\n\n    /**\n    @dev Checks if an expiration date has been reached\n    @param _terminationDate Integer timestamp of date to compare current timestamp with\n    @return expired Boolean indication of whether the terminationDate has passed\n    */\n    function isExpired(uint _terminationDate) constant public returns (bool expired) {\n        return (block.timestamp > _terminationDate);\n    }\n\n    /**\n    @dev Generates an identifier which associates a user and a poll together\n    @param _pollID Integer identifier associated with target poll\n    @return UUID Hash which is deterministic from _user and _pollID\n    */\n    function attrUUID(address _user, uint _pollID) public pure returns (bytes32 UUID) {\n        return keccak256(_user, _pollID);\n    }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/installed_contracts/Parameterizer.sol",
    "content": "pragma solidity^0.4.11;\n\nimport \"./PLCRVoting.sol\";\nimport \"../zeppelin-solidity/token/ERC20/IERC20.sol\";\nimport \"../zeppelin-solidity/math/SafeMath.sol\";\n\ncontract Parameterizer {\n\n    // ------\n    // EVENTS\n    // ------\n\n    event _ReparameterizationProposal(string name, uint value, bytes32 propID, uint deposit, uint appEndDate, address indexed proposer);\n    event _NewChallenge(bytes32 indexed propID, uint challengeID, uint commitEndDate, uint revealEndDate, address indexed challenger);\n    event _ProposalAccepted(bytes32 indexed propID, string name, uint value);\n    event _ProposalExpired(bytes32 indexed propID);\n    event _ChallengeSucceeded(bytes32 indexed propID, uint indexed challengeID, uint rewardPool, uint totalTokens);\n    event _ChallengeFailed(bytes32 indexed propID, uint indexed challengeID, uint rewardPool, uint totalTokens);\n    event _RewardClaimed(uint indexed challengeID, uint reward, address indexed voter);\n\n\n    // ------\n    // DATA STRUCTURES\n    // ------\n\n    using SafeMath for uint;\n\n    struct ParamProposal {\n        uint appExpiry;\n        uint challengeID;\n        uint deposit;\n        string name;\n        address owner;\n        uint processBy;\n        uint value;\n    }\n\n    struct Challenge {\n        uint rewardPool;        // (remaining) pool of tokens distributed amongst winning voters\n        address challenger;     // owner of Challenge\n        bool resolved;          // indication of if challenge is resolved\n        uint stake;             // number of tokens at risk for either party during challenge\n        uint winningTokens;     // (remaining) amount of tokens used for voting by the winning side\n        mapping(address => bool) tokenClaims;\n    }\n\n    // ------\n    // STATE\n    // ------\n\n    mapping(bytes32 => uint) public params;\n\n    // maps challengeIDs to associated challenge data\n    mapping(uint => Challenge) public challenges;\n\n    // maps pollIDs to intended data change if poll passes\n    mapping(bytes32 => ParamProposal) public proposals;\n\n    // Global Variables\n    IERC20 public token;\n    PLCRVoting public voting;\n    uint public PROCESSBY = 604800; // 7 days\n\n    /**\n    @param _token           The address where the ERC20 token contract is deployed\n    @param _plcr            address of a PLCR voting contract for the provided token\n    @notice _parameters     array of canonical parameters\n    */\n    constructor(\n        address _token,\n        address _plcr,\n        uint[] _parameters\n    ) public {\n        token = IERC20(_token);\n        voting = PLCRVoting(_plcr);\n\n        // minimum deposit for listing to be whitelisted\n        set(\"minDeposit\", _parameters[0]);\n\n        // minimum deposit to propose a reparameterization\n        set(\"pMinDeposit\", _parameters[1]);\n\n        // period over which applicants wait to be whitelisted\n        set(\"applyStageLen\", _parameters[2]);\n\n        // period over which reparmeterization proposals wait to be processed\n        set(\"pApplyStageLen\", _parameters[3]);\n\n        // length of commit period for voting\n        set(\"commitStageLen\", _parameters[4]);\n\n        // length of commit period for voting in parameterizer\n        set(\"pCommitStageLen\", _parameters[5]);\n\n        // length of reveal period for voting\n        set(\"revealStageLen\", _parameters[6]);\n\n        // length of reveal period for voting in parameterizer\n        set(\"pRevealStageLen\", _parameters[7]);\n\n        // percentage of losing party's deposit distributed to winning party\n        set(\"dispensationPct\", _parameters[8]);\n\n        // percentage of losing party's deposit distributed to winning party in parameterizer\n        set(\"pDispensationPct\", _parameters[9]);\n\n        // type of majority out of 100 necessary for candidate success\n        set(\"voteQuorum\", _parameters[10]);\n\n        // type of majority out of 100 necessary for proposal success in parameterizer\n        set(\"pVoteQuorum\", _parameters[11]);\n    }\n\n    // -----------------------\n    // TOKEN HOLDER INTERFACE\n    // -----------------------\n\n    /**\n    @notice propose a reparamaterization of the key _name's value to _value.\n    @param _name the name of the proposed param to be set\n    @param _value the proposed value to set the param to be set\n    */\n    function proposeReparameterization(string _name, uint _value) public returns (bytes32) {\n        uint deposit = get(\"pMinDeposit\");\n        bytes32 propID = keccak256(_name, _value);\n\n        if (keccak256(_name) == keccak256(\"dispensationPct\") ||\n            keccak256(_name) == keccak256(\"pDispensationPct\")) {\n            require(_value <= 100);\n        }\n\n        require(!propExists(propID)); // Forbid duplicate proposals\n        require(get(_name) != _value); // Forbid NOOP reparameterizations\n\n        // attach name and value to pollID\n        proposals[propID] = ParamProposal({\n            appExpiry: now.add(get(\"pApplyStageLen\")),\n            challengeID: 0,\n            deposit: deposit,\n            name: _name,\n            owner: msg.sender,\n            processBy: now.add(get(\"pApplyStageLen\"))\n                .add(get(\"pCommitStageLen\"))\n                .add(get(\"pRevealStageLen\"))\n                .add(PROCESSBY),\n            value: _value\n        });\n\n        require(token.transferFrom(msg.sender, this, deposit)); // escrow tokens (deposit amt)\n\n        emit _ReparameterizationProposal(_name, _value, propID, deposit, proposals[propID].appExpiry, msg.sender);\n        return propID;\n    }\n\n    /**\n    @notice challenge the provided proposal ID, and put tokens at stake to do so.\n    @param _propID the proposal ID to challenge\n    */\n    function challengeReparameterization(bytes32 _propID) public returns (uint challengeID) {\n        ParamProposal memory prop = proposals[_propID];\n        uint deposit = prop.deposit;\n\n        require(propExists(_propID) && prop.challengeID == 0);\n\n        //start poll\n        uint pollID = voting.startPoll(\n            get(\"pVoteQuorum\"),\n            get(\"pCommitStageLen\"),\n            get(\"pRevealStageLen\")\n        );\n\n        challenges[pollID] = Challenge({\n            challenger: msg.sender,\n            rewardPool: SafeMath.sub(100, get(\"pDispensationPct\")).mul(deposit).div(100),\n            stake: deposit,\n            resolved: false,\n            winningTokens: 0\n        });\n\n        proposals[_propID].challengeID = pollID;       // update listing to store most recent challenge\n\n        //take tokens from challenger\n        require(token.transferFrom(msg.sender, this, deposit));\n\n        var (commitEndDate, revealEndDate,) = voting.pollMap(pollID);\n\n        emit _NewChallenge(_propID, pollID, commitEndDate, revealEndDate, msg.sender);\n        return pollID;\n    }\n\n    /**\n    @notice             for the provided proposal ID, set it, resolve its challenge, or delete it depending on whether it can be set, has a challenge which can be resolved, or if its \"process by\" date has passed\n    @param _propID      the proposal ID to make a determination and state transition for\n    */\n    function processProposal(bytes32 _propID) public {\n        ParamProposal storage prop = proposals[_propID];\n        address propOwner = prop.owner;\n        uint propDeposit = prop.deposit;\n\n\n        // Before any token transfers, deleting the proposal will ensure that if reentrancy occurs the\n        // prop.owner and prop.deposit will be 0, thereby preventing theft\n        if (canBeSet(_propID)) {\n            // There is no challenge against the proposal. The processBy date for the proposal has not\n            // passed, but the proposal's appExpirty date has passed.\n            set(prop.name, prop.value);\n            emit _ProposalAccepted(_propID, prop.name, prop.value);\n            delete proposals[_propID];\n            require(token.transfer(propOwner, propDeposit));\n        } else if (challengeCanBeResolved(_propID)) {\n            // There is a challenge against the proposal.\n            resolveChallenge(_propID);\n        } else if (now > prop.processBy) {\n            // There is no challenge against the proposal, but the processBy date has passed.\n            emit _ProposalExpired(_propID);\n            delete proposals[_propID];\n            require(token.transfer(propOwner, propDeposit));\n        } else {\n            // There is no challenge against the proposal, and neither the appExpiry date nor the\n            // processBy date has passed.\n            revert();\n        }\n\n        assert(get(\"dispensationPct\") <= 100);\n        assert(get(\"pDispensationPct\") <= 100);\n\n        // verify that future proposal appExpiry and processBy times will not overflow\n        now.add(get(\"pApplyStageLen\"))\n            .add(get(\"pCommitStageLen\"))\n            .add(get(\"pRevealStageLen\"))\n            .add(PROCESSBY);\n\n        delete proposals[_propID];\n    }\n\n    /**\n    @notice                 Claim the tokens owed for the msg.sender in the provided challenge\n    @param _challengeID     the challenge ID to claim tokens for\n    @param _salt            the salt used to vote in the challenge being withdrawn for\n    */\n    function claimReward(uint _challengeID, uint _salt) public {\n        // ensure voter has not already claimed tokens and challenge results have been processed\n        require(challenges[_challengeID].tokenClaims[msg.sender] == false);\n        require(challenges[_challengeID].resolved == true);\n\n        uint voterTokens = voting.getNumPassingTokens(msg.sender, _challengeID, _salt);\n        uint reward = voterReward(msg.sender, _challengeID, _salt);\n\n        // subtract voter's information to preserve the participation ratios of other voters\n        // compared to the remaining pool of rewards\n        challenges[_challengeID].winningTokens -= voterTokens;\n        challenges[_challengeID].rewardPool -= reward;\n\n        // ensures a voter cannot claim tokens again\n        challenges[_challengeID].tokenClaims[msg.sender] = true;\n\n        emit _RewardClaimed(_challengeID, reward, msg.sender);\n        require(token.transfer(msg.sender, reward));\n    }\n\n    /**\n    @dev                    Called by a voter to claim their rewards for each completed vote.\n                            Someone must call updateStatus() before this can be called.\n    @param _challengeIDs    The PLCR pollIDs of the challenges rewards are being claimed for\n    @param _salts           The salts of a voter's commit hashes in the given polls\n    */\n    function claimRewards(uint[] _challengeIDs, uint[] _salts) public {\n        // make sure the array lengths are the same\n        require(_challengeIDs.length == _salts.length);\n\n        // loop through arrays, claiming each individual vote reward\n        for (uint i = 0; i < _challengeIDs.length; i++) {\n            claimReward(_challengeIDs[i], _salts[i]);\n        }\n    }\n\n    // --------\n    // GETTERS\n    // --------\n\n    /**\n    @dev                Calculates the provided voter's token reward for the given poll.\n    @param _voter       The address of the voter whose reward balance is to be returned\n    @param _challengeID The ID of the challenge the voter's reward is being calculated for\n    @param _salt        The salt of the voter's commit hash in the given poll\n    @return             The uint indicating the voter's reward\n    */\n    function voterReward(address _voter, uint _challengeID, uint _salt)\n    public view returns (uint) {\n        uint winningTokens = challenges[_challengeID].winningTokens;\n        uint rewardPool = challenges[_challengeID].rewardPool;\n        uint voterTokens = voting.getNumPassingTokens(_voter, _challengeID, _salt);\n        return (voterTokens * rewardPool) / winningTokens;\n    }\n\n    /**\n    @notice Determines whether a proposal passed its application stage without a challenge\n    @param _propID The proposal ID for which to determine whether its application stage passed without a challenge\n    */\n    function canBeSet(bytes32 _propID) view public returns (bool) {\n        ParamProposal memory prop = proposals[_propID];\n\n        return (now > prop.appExpiry && now < prop.processBy && prop.challengeID == 0);\n    }\n\n    /**\n    @notice Determines whether a proposal exists for the provided proposal ID\n    @param _propID The proposal ID whose existance is to be determined\n    */\n    function propExists(bytes32 _propID) view public returns (bool) {\n        return proposals[_propID].processBy > 0;\n    }\n\n    /**\n    @notice Determines whether the provided proposal ID has a challenge which can be resolved\n    @param _propID The proposal ID whose challenge to inspect\n    */\n    function challengeCanBeResolved(bytes32 _propID) view public returns (bool) {\n        ParamProposal memory prop = proposals[_propID];\n        Challenge memory challenge = challenges[prop.challengeID];\n\n        return (prop.challengeID > 0 && challenge.resolved == false && voting.pollEnded(prop.challengeID));\n    }\n\n    /**\n    @notice Determines the number of tokens to awarded to the winning party in a challenge\n    @param _challengeID The challengeID to determine a reward for\n    */\n    function challengeWinnerReward(uint _challengeID) public view returns (uint) {\n        if(voting.getTotalNumberOfTokensForWinningOption(_challengeID) == 0) {\n            // Edge case, nobody voted, give all tokens to the challenger.\n            return 2 * challenges[_challengeID].stake;\n        }\n\n        return (2 * challenges[_challengeID].stake) - challenges[_challengeID].rewardPool;\n    }\n\n    /**\n    @notice gets the parameter keyed by the provided name value from the params mapping\n    @param _name the key whose value is to be determined\n    */\n    function get(string _name) public view returns (uint value) {\n        return params[keccak256(_name)];\n    }\n\n    /**\n    @dev                Getter for Challenge tokenClaims mappings\n    @param _challengeID The challengeID to query\n    @param _voter       The voter whose claim status to query for the provided challengeID\n    */\n    function tokenClaims(uint _challengeID, address _voter) public view returns (bool) {\n        return challenges[_challengeID].tokenClaims[_voter];\n    }\n\n    // ----------------\n    // PRIVATE FUNCTIONS\n    // ----------------\n\n    /**\n    @dev resolves a challenge for the provided _propID. It must be checked in advance whether the _propID has a challenge on it\n    @param _propID the proposal ID whose challenge is to be resolved.\n    */\n    function resolveChallenge(bytes32 _propID) private {\n        ParamProposal memory prop = proposals[_propID];\n        Challenge storage challenge = challenges[prop.challengeID];\n\n        // winner gets back their full staked deposit, and dispensationPct*loser's stake\n        uint reward = challengeWinnerReward(prop.challengeID);\n\n        challenge.winningTokens = voting.getTotalNumberOfTokensForWinningOption(prop.challengeID);\n        challenge.resolved = true;\n\n        if (voting.isPassed(prop.challengeID)) { // The challenge failed\n            if(prop.processBy > now) {\n                set(prop.name, prop.value);\n            }\n            emit _ChallengeFailed(_propID, prop.challengeID, challenge.rewardPool, challenge.winningTokens);\n            require(token.transfer(prop.owner, reward));\n        }\n        else { // The challenge succeeded or nobody voted\n            emit _ChallengeSucceeded(_propID, prop.challengeID, challenge.rewardPool, challenge.winningTokens);\n            require(token.transfer(challenges[prop.challengeID].challenger, reward));\n        }\n    }\n\n    /**\n    @dev sets the param keted by the provided name to the provided value\n    @param _name the name of the param to be set\n    @param _value the value to set the param to be set\n    */\n    function set(string _name, uint _value) internal {\n        params[keccak256(_name)] = _value;\n    }\n}\n\n"
  },
  {
    "path": "packages/contracts/contracts/interfaces/IGovernment.sol",
    "content": "pragma solidity ^0.4.19;\n\n/**\n@title IGovernment\n@notice This is an interface that defines the functionality required by a Government\nThe functions herein are accessed by the CivilTCR contract as part of the appeals process.\n@author Nick Reynolds - nick@joincivil.com\n*/\ninterface IGovernment {\n  function getAppellate() public view returns (address);\n  function getGovernmentController() public view returns (address);\n  function get(string name) public view returns (uint);\n}\n"
  },
  {
    "path": "packages/contracts/contracts/interfaces/IMultiSigWalletFactory.sol",
    "content": "pragma solidity ^0.4.19;\n\ninterface IMultiSigWalletFactory {\n  function create(address[] _owners, uint _required) public returns (address wallet);\n}\n"
  },
  {
    "path": "packages/contracts/contracts/multisig/Factory.sol",
    "content": "pragma solidity ^0.4.19;\n\ncontract Factory {\n\n  /*\n    *  Events\n    */\n  event ContractInstantiation(address sender, address instantiation);\n\n  /*\n    *  Storage\n    */\n  mapping(address => bool) public isInstantiation;\n  mapping(address => address[]) public instantiations;\n\n  /*\n    * Public functions\n    */\n  /// @dev Returns number of instantiations by creator.\n  /// @param creator Contract creator.\n  /// @return Returns number of instantiations by creator.\n  function getInstantiationCount(address creator)\n    public\n    view\n    returns (uint)\n  {\n    return instantiations[creator].length;\n  }\n\n  /*\n    * Internal functions\n    */\n  /// @dev Registers contract in factory registry.\n  /// @param instantiation Address of contract instantiation.\n  function register(address instantiation)\n      internal\n  {\n    isInstantiation[instantiation] = true;\n    instantiations[msg.sender].push(instantiation);\n    emit ContractInstantiation(msg.sender, instantiation);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/multisig/MultiSigWallet.sol",
    "content": "pragma solidity ^0.4.19;\n\n\n/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.\n/// @author Stefan George - <stefan.george@consensys.net>\ncontract MultiSigWallet {\n\n  /*\n    *  Events\n    */\n  event Confirmation(address indexed sender, uint indexed transactionId);\n  event Revocation(address indexed sender, uint indexed transactionId);\n  event Submission(uint indexed transactionId);\n  event Execution(uint indexed transactionId);\n  event ExecutionFailure(uint indexed transactionId);\n  event Deposit(address indexed sender, uint value);\n  event OwnerAddition(address indexed owner);\n  event OwnerRemoval(address indexed owner);\n  event RequirementChange(uint required);\n\n  /*\n    *  Constants\n    */\n  uint constant public MAX_OWNER_COUNT = 50;\n\n  /*\n    *  Storage\n    */\n  mapping (uint => Transaction) public transactions;\n  mapping (uint => mapping (address => bool)) public confirmations;\n  mapping (address => bool) public isOwner;\n  address[] public owners;\n  uint public required;\n  uint public transactionCount;\n\n  struct Transaction {\n    address destination;\n    uint value;\n    bytes data;\n    bool executed;\n  }\n\n  /*\n    *  Modifiers\n    */\n  modifier onlyWallet() {\n    require(msg.sender == address(this));\n    _;\n  }\n\n  modifier ownerDoesNotExist(address owner) {\n    require(!isOwner[owner]);\n    _;\n  }\n\n  modifier ownerExists(address owner) {\n    require(isOwner[owner]);\n    _;\n  }\n\n  modifier transactionExists(uint transactionId) {\n    require(transactions[transactionId].destination != address(0));\n    _;\n  }\n\n  modifier confirmed(uint transactionId, address owner) {\n    require(confirmations[transactionId][owner]);\n    _;\n  }\n\n  modifier notConfirmed(uint transactionId, address owner) {\n    require(!confirmations[transactionId][owner]);\n    _;\n  }\n\n  modifier notExecuted(uint transactionId) {\n    require(!transactions[transactionId].executed);\n    _;\n  }\n\n  modifier notNull(address verifiedAddress) {\n    require(verifiedAddress != address(0));\n    _;\n  }\n\n  modifier validRequirement(uint ownerCount, uint proposedConfirmations) {\n    require(ownerCount <= MAX_OWNER_COUNT);\n    require(proposedConfirmations <= ownerCount);\n    require(proposedConfirmations != 0);\n    require(ownerCount != 0);\n    _;\n  }\n\n  /// @dev Fallback function allows to deposit ether.\n  function()\n    payable\n    public\n  {\n    if (msg.value > 0) {\n      emit Deposit(msg.sender, msg.value);\n    }\n  }\n\n  /*\n    * Public functions\n    */\n  /// @dev Contract constructor sets initial owners and required number of confirmations.\n  /// @param initialOwners List of initial owners.\n  /// @param initialRequired Number of required confirmations.\n  function MultiSigWallet(address[] initialOwners, uint initialRequired)\n    public\n    validRequirement(initialOwners.length, initialRequired)\n  {\n    for (uint i = 0; i < initialOwners.length; i++) {\n      require(!isOwner[initialOwners[i]] && initialOwners[i] != address(0));\n      isOwner[initialOwners[i]] = true;\n    }\n    owners = initialOwners;\n    required = initialRequired;\n  }\n\n  /// @dev Allows to add a new owner. Transaction has to be sent by wallet.\n  /// @param owner Address of new owner.\n  function addOwner(address owner)\n    public\n    onlyWallet\n    ownerDoesNotExist(owner)\n    notNull(owner)\n    validRequirement(owners.length + 1, required)\n  {\n    isOwner[owner] = true;\n    owners.push(owner);\n    emit OwnerAddition(owner);\n  }\n\n  /// @dev Allows to remove an owner. Transaction has to be sent by wallet.\n  /// @param owner Address of owner.\n  function removeOwner(address owner)\n    public\n    onlyWallet\n    ownerExists(owner)\n  {\n    isOwner[owner] = false;\n    for (uint i = 0; i < owners.length - 1; i++) {\n      if (owners[i] == owner) {\n        owners[i] = owners[owners.length - 1];\n        break;\n      }\n    }\n    owners.length -= 1;\n    if (required > owners.length) {\n      changeRequirement(owners.length);\n    }\n    emit OwnerRemoval(owner);\n  }\n\n  /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.\n  /// @param owner Address of owner to be replaced.\n  /// @param newOwner Address of new owner.\n  function replaceOwner(address owner, address newOwner)\n    public\n    onlyWallet\n    ownerExists(owner)\n    ownerDoesNotExist(newOwner)\n  {\n    for (uint i = 0; i < owners.length; i++) {\n      if (owners[i] == owner) {\n        owners[i] = newOwner;\n        break;\n      }\n    }\n    isOwner[owner] = false;\n    isOwner[newOwner] = true;\n    emit OwnerRemoval(owner);\n    emit OwnerAddition(newOwner);\n  }\n\n  /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.\n  /// @param newRequired Number of required confirmations.\n  function changeRequirement(uint newRequired)\n    public\n    onlyWallet\n    validRequirement(owners.length, newRequired)\n  {\n    required = newRequired;\n    emit RequirementChange(newRequired);\n  }\n\n  /// @dev Allows an owner to submit and confirm a transaction.\n  /// @param destination Transaction target address.\n  /// @param value Transaction ether value.\n  /// @param data Transaction data payload.\n  /// @return Returns transaction ID.\n  function submitTransaction(address destination, uint value, bytes data)\n    public\n    returns (uint transactionId)\n  {\n    transactionId = addTransaction(destination, value, data);\n    confirmTransaction(transactionId);\n  }\n\n  /// @dev Allows an owner to confirm a transaction.\n  /// @param transactionId Transaction ID.\n  function confirmTransaction(uint transactionId)\n    public\n    ownerExists(msg.sender)\n    transactionExists(transactionId)\n    notConfirmed(transactionId, msg.sender)\n  {\n    confirmations[transactionId][msg.sender] = true;\n    emit Confirmation(msg.sender, transactionId);\n    executeTransaction(transactionId);\n  }\n\n  /// @dev Allows an owner to revoke a confirmation for a transaction.\n  /// @param transactionId Transaction ID.\n  function revokeConfirmation(uint transactionId)\n    public\n    ownerExists(msg.sender)\n    confirmed(transactionId, msg.sender)\n    notExecuted(transactionId)\n  {\n    confirmations[transactionId][msg.sender] = false;\n    emit Revocation(msg.sender, transactionId);\n  }\n\n  /// @dev Allows anyone to execute a confirmed transaction.\n  /// @param transactionId Transaction ID.\n  function executeTransaction(uint transactionId)\n    public\n    ownerExists(msg.sender)\n    confirmed(transactionId, msg.sender)\n    notExecuted(transactionId)\n  {\n    if (isConfirmed(transactionId)) {\n      Transaction storage txn = transactions[transactionId];\n      txn.executed = true;\n      // solium-disable-next-line security/no-call-value\n      if (txn.destination.call.value(txn.value)(txn.data)) {\n        emit Execution(transactionId);\n      } else {\n        emit ExecutionFailure(transactionId);\n        txn.executed = false;\n      }\n    }\n  }\n\n  /// @dev Returns the confirmation status of a transaction.\n  /// @param transactionId Transaction ID.\n  /// @return Confirmation status.\n  function isConfirmed(uint transactionId)\n    public\n    view\n    returns (bool)\n  {\n    uint count = 0;\n    for (uint i = 0; i < owners.length; i++) {\n      if (confirmations[transactionId][owners[i]]) {\n        count += 1;\n      }\n      if (count == required) {\n        return true;\n      }\n    }\n  }\n\n  /*\n    * Internal functions\n    */\n  /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.\n  /// @param destination Transaction target address.\n  /// @param value Transaction ether value.\n  /// @param data Transaction data payload.\n  /// @return Returns transaction ID.\n  function addTransaction(address destination, uint value, bytes data)\n    internal\n    notNull(destination)\n    returns (uint transactionId)\n  {\n    transactionId = transactionCount;\n    transactions[transactionId] = Transaction({\n      destination: destination,\n      value: value,\n      data: data,\n      executed: false\n    });\n    transactionCount += 1;\n    emit Submission(transactionId);\n  }\n\n  /*\n    * Web3 call functions\n    */\n  /// @dev Returns number of confirmations of a transaction.\n  /// @param transactionId Transaction ID.\n  /// @return Number of confirmations.\n  function getConfirmationCount(uint transactionId)\n    public\n    view\n    returns (uint count)\n  {\n    for (uint i = 0; i < owners.length; i++) {\n      if (confirmations[transactionId][owners[i]]) {\n        count += 1;\n      }\n    }\n  }\n\n  /// @dev Returns total number of transactions after filers are applied.\n  /// @param pending Include pending transactions.\n  /// @param executed Include executed transactions.\n  /// @return Total number of transactions after filters are applied.\n  function getTransactionCount(bool pending, bool executed)\n    public\n    view\n    returns (uint count)\n  {\n    for (uint i = 0; i < transactionCount; i++) {\n      if (pending && !transactions[i].executed || executed && transactions[i].executed) {\n        count += 1;\n      }\n    }\n  }\n\n  /// @dev Returns list of owners.\n  /// @return List of owner addresses.\n  function getOwners()\n    public\n    view\n    returns (address[])\n  {\n    return owners;\n  }\n\n  /// @dev Returns array with owner addresses, which confirmed transaction.\n  /// @param transactionId Transaction ID.\n  /// @return Returns array of owner addresses.\n  function getConfirmations(uint transactionId)\n    public\n    view\n    returns (address[] _confirmations)\n  {\n    address[] memory confirmationsTemp = new address[](owners.length);\n    uint count = 0;\n    uint i;\n    for (i = 0; i < owners.length; i++) {\n      if (confirmations[transactionId][owners[i]]) {\n        confirmationsTemp[count] = owners[i];\n        count += 1;\n      }\n    }\n    _confirmations = new address[](count);\n    for (i = 0; i < count; i++) {\n      _confirmations[i] = confirmationsTemp[i];\n    }\n  }\n\n  /// @dev Returns list of transaction IDs in defined range.\n  /// @param from Index start position of transaction array.\n  /// @param to Index end position of transaction array.\n  /// @param pending Include pending transactions.\n  /// @param executed Include executed transactions.\n  /// @return Returns array of transaction IDs.\n  function getTransactionIds(uint from, uint to, bool pending, bool executed)\n    public\n    view\n    returns (uint[] _transactionIds)\n  {\n    uint[] memory transactionIdsTemp = new uint[](transactionCount);\n    uint count = 0;\n    uint i;\n    for (i = 0; i < transactionCount; i++) {\n      if (pending && !transactions[i].executed || executed && transactions[i].executed) {\n        transactionIdsTemp[count] = i;\n        count += 1;\n      }\n    }\n    _transactionIds = new uint[](to - from);\n    for (i = from; i < to; i++) {\n      _transactionIds[i - from] = transactionIdsTemp[i];\n    }\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/multisig/MultiSigWalletFactory.sol",
    "content": "pragma solidity ^0.4.19;\nimport \"./Factory.sol\";\nimport \"./MultiSigWallet.sol\";\n\n\n/// @title Multisignature wallet factory - Allows creation of multisig wallet.\n/// @author Stefan George - <stefan.george@consensys.net>\ncontract MultiSigWalletFactory is Factory {\n\n  /*\n    * Public functions\n    */\n  /// @dev Allows verified creation of multisignature wallet.\n  /// @param _owners List of initial owners.\n  /// @param _required Number of required confirmations.\n  /// @return Returns wallet address.\n  function create(address[] _owners, uint _required)\n    public\n    returns (address wallet)\n  {\n    wallet = new MultiSigWallet(_owners, _required);\n    register(wallet);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/newsroom/ACL.sol",
    "content": "pragma solidity ^0.4.19;\nimport \"../zeppelin-solidity/ownership/Ownable.sol\";\n\n/**\n@title String-based Access Control List\n@author The Civil Media Company\n@dev The owner of this smart-contract overrides any role requirement in the requireRole modifier,\nand so it is important to use the modifier instead of checking hasRole when creating actual requirements.\nThe internal functions are not secured in any way and should be extended in the deriving contracts to define\nrequirements that suit that specific domain.\n*/\ncontract ACL is Ownable {\n  event RoleAdded(address indexed granter, address indexed grantee, string role);\n  event RoleRemoved(address indexed granter, address indexed grantee, string role);\n\n  mapping(string => RoleData) private roles;\n\n  modifier requireRole(string role) {\n    require(isOwner(msg.sender) || hasRole(msg.sender, role));\n    _;\n  }\n\n  function ACL() Ownable() public {\n  }\n\n  /**\n  @notice Returns whether a specific addres has a role. Keep in mind that the owner can override role checks\n  @param user The address for which role check is done\n  @param role A constant name of the role being checked\n  */\n  function hasRole(address user, string role) public view returns (bool) {\n    return roles[role].actors[user];\n  }\n\n  /**\n  @notice Returns if the specified address is owner of this smart-contract and thus can override any role checks\n  @param user The checked address\n  */\n  function isOwner(address user) public view returns (bool) {\n    return user == owner;\n  }\n\n  function _addRole(address grantee, string role) internal {\n    roles[role].actors[grantee] = true;\n    emit RoleAdded(msg.sender, grantee, role);\n  }\n\n  function _removeRole(address grantee, string role) internal {\n    delete roles[role].actors[grantee];\n    emit RoleRemoved(msg.sender, grantee, role);\n  }\n\n  struct RoleData {\n    mapping(address => bool) actors;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/newsroom/EventStorage.sol",
    "content": "pragma solidity ^0.4.19;\n\n/**\n@title Event Storage Archive\n@notice This smart-contract uses events to cheaply store content on the blockchain.\n@dev For most use-cases, using events to store strings than using the \"Storage\" memory model is cheaper\nAdditionally the keccak256 is also calculated for easier filtering of events for which we're looking for\n*/\ncontract EventStorage {\n  event StringStored(bytes32 indexed dataHash, string data);\n\n  function store(string data) public {\n    emit StringStored(keccak256((data)), data);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/newsroom/Newsroom.sol",
    "content": "pragma solidity ^0.4.19;\n\nimport \"./ACL.sol\";\nimport \"../zeppelin-solidity/ECRecovery.sol\";\n\n/**\n@title Newsroom - Smart-contract allowing for Newsroom-like goverance and content publishing\n\n@dev The content number 0 is created automatically and it's use is reserved for the Newsroom charter / about page\n\nRoles that are currently supported are:\n- \"editor\" -> which can publish content, update revisions and add/remove more editors\n\nTo post cryptographicaly pre-approved content on the Newsroom, the author's signature must be included and\n\"Signed\"-suffix functions used. Here are the steps to generate authors signature:\n1. Take the address of this newsroom and the contentHash as bytes32 and tightly pack them\n2. Calculate the keccak256 of tightly packed of above\n3. Take the keccak and prepend it with the standard \"Ethereum signed message\" preffix (see ECRecovery and Ethereum's JSON PRC).\n  a. Note - if you're using Ethereum's node instead of manual private key signing, that message shall be prepended by the Node itself\n4. Take a keccak256 of that signed messaged\n5. Verification can be done by using EC recovery algorithm using the authors signature\nThe verification can be seen in the internal `verifyRevisionsSignature` function.\nThe signing can be seen in (at)joincivil/utils package, function prepareNewsroomMessage function (and web3.eth.sign() it afterwards)\n*/\ncontract Newsroom is ACL {\n  using ECRecovery for bytes32;\n\n  event ContentPublished(address indexed editor, uint indexed contentId, string uri);\n  event RevisionSigned(uint indexed contentId, uint indexed revisionId, address indexed author);\n  event RevisionUpdated(address indexed editor, uint indexed contentId, uint indexed revisionId, string uri);\n  event NameChanged(string newName);\n\n  string private constant ROLE_EDITOR = \"editor\";\n\n  mapping(uint => Content) private contents;\n  /*\n  Maps the revision hash to original contentId where it was first used.\n  This is used to prevent replay attacks in which a bad actor reuses an already used signature to sign a new revision of new content.\n  New revisions with the same contentID can reuse signatures by design -> this is to allow the Editors to change the canonical URL (eg, website change).\n  The end-client of those smart-contracts MUST (RFC-Like) verify the content to it's hash and the the hash to the signature.\n  */\n  mapping(bytes32 => UsedSignature) private usedSignatures;\n\n  /**\n  @notice The number of different contents in this Newsroom, indexed in <0, contentCount) (exclusive) range\n  */\n  uint public contentCount;\n  /**\n  @notice User readable name of this Newsroom\n  */\n  string public name;\n\n  function Newsroom(string newsroomName, string charterUri, bytes32 charterHash) ACL() public {\n    setName(newsroomName);\n    publishContent(charterUri, charterHash, address(0), \"\");\n  }\n\n  /**\n  @notice Gets the latest revision of the content at id contentId\n  */\n  function getContent(uint contentId) external view returns (bytes32 contentHash, string uri, uint timestamp, address author, bytes signature) {\n    return getRevision(contentId, contents[contentId].revisions.length - 1);\n  }\n\n  /**\n  @notice Gets a specific revision of the content. Each revision increases the ID from the previous one\n  @param contentId Which content to get\n  @param revisionId Which revision in that get content to get\n  */\n  function getRevision(\n    uint contentId,\n    uint revisionId\n  ) public view returns (bytes32 contentHash, string uri, uint timestamp, address author, bytes signature)\n  {\n    Content storage content = contents[contentId];\n    require(content.revisions.length > revisionId);\n\n    Revision storage revision = content.revisions[revisionId];\n\n    return (revision.contentHash, revision.uri, revision.timestamp, content.author, revision.signature);\n  }\n\n  /**\n  @return Number of revisions for a this content, 0 if never published\n  */\n  function revisionCount(uint contentId) external view returns (uint) {\n    return contents[contentId].revisions.length;\n  }\n\n  /**\n  @notice Returns if the latest revision of the content at ID has the author's signature associated with it\n  */\n  function isContentSigned(uint contentId) public view returns (bool) {\n    return isRevisionSigned(contentId, contents[contentId].revisions.length - 1);\n  }\n\n  /**\n  @notice Returns if that specific revision of the content has the author's signature\n  */\n  function isRevisionSigned(uint contentId, uint revisionId) public view returns (bool) {\n    Revision[] storage revisions = contents[contentId].revisions;\n    require(revisions.length > revisionId);\n    return revisions[revisionId].signature.length != 0;\n  }\n\n  /**\n  @notice Changes the user-readable name of this contract.\n  This function can be only called by the owner of the Newsroom\n  */\n  function setName(string newName) public onlyOwner() {\n    require(bytes(newName).length > 0);\n    name = newName;\n\n    emit NameChanged(name);\n  }\n\n  /**\n  @notice Adds a string-based role to the specific address, requires ROLE_EDITOR to use\n  */\n  function addRole(address who, string role) external requireRole(ROLE_EDITOR) {\n    _addRole(who, role);\n  }\n\n  function addEditor(address who) external requireRole(ROLE_EDITOR) {\n    _addRole(who, ROLE_EDITOR);\n  }\n\n  /**\n  @notice Removes a string-based role from the specific address, requires ROLE_EDITOR to use\n  */\n  function removeRole(address who, string role) external requireRole(ROLE_EDITOR) {\n    _removeRole(who, role);\n  }\n\n  /**\n  @notice Saves the content's URI and it's hash into this Newsroom, this creates a new Content and Revision number 0.\n  This function requires ROLE_EDITOR or owner to use.\n  The content can be cryptographicaly secured / approved by author as per signing procedure\n  @param contentUri Canonical URI to access the content. The client should then verify that the content has the same hash\n  @param contentHash Keccak256 hash of the content that is linked\n  @param author Author that cryptographically signs the content. Null if not signed\n  @param signature Cryptographic signature of the author. Empty if not signed\n  @return Content ID of the newly published content\n\n  @dev Emits `ContentPublished`, `RevisionUpdated` and optionaly `ContentSigned` events\n  */\n  function publishContent(\n    string contentUri,\n    bytes32 contentHash,\n    address author,\n    bytes signature\n  ) public requireRole(ROLE_EDITOR) returns (uint)\n  {\n    uint contentId = contentCount;\n    contentCount++;\n\n    require((author == address(0) && signature.length == 0) || (author != address(0) && signature.length != 0));\n    contents[contentId].author = author;\n    pushRevision(contentId, contentUri, contentHash, signature);\n\n    emit ContentPublished(msg.sender, contentId, contentUri);\n    return contentId;\n  }\n\n  /**\n  @notice Updates the existing content with a new revision, the content id stays the same while revision id increases afterwards\n  Requires that the content was first published\n  This function can be only called by ROLE_EDITOR or the owner.\n  The new revision can be left unsigned, even if the previous revisions were signed.\n  If the new revision is also signed, it has to be approved by the same author that has signed the first revision.\n  No signing can be done for articles that were published without any cryptographic author in the first place\n  @param signature Signature that cryptographically approves this revision. Empty if not approved\n  @return Newest revision id\n\n  @dev Emits `RevisionUpdated`  event\n  */\n  function updateRevision(uint contentId, string contentUri, bytes32 contentHash, bytes signature) external requireRole(ROLE_EDITOR) {\n    pushRevision(contentId, contentUri, contentHash, signature);\n  }\n\n  /**\n  @notice Allows to backsign a revision by the author. This is indented when an author didn't have time to access\n  to their private key but after time they do.\n  The author must be the same as the one during publishing.\n  If there was no author during publishing this functions allows to update the null author to a real one.\n  Once done, the author can't be changed afterwards\n\n  @dev Emits `RevisionSigned` event\n  */\n  function signRevision(uint contentId, uint revisionId, address author, bytes signature) external requireRole(ROLE_EDITOR) {\n    require(contentId < contentCount);\n\n    Content storage content = contents[contentId];\n\n    require(content.author == address(0) || content.author == author);\n    require(content.revisions.length > revisionId);\n\n    if (contentId == 0) {\n      require(isOwner(msg.sender));\n    }\n\n    content.author = author;\n\n    Revision storage revision = content.revisions[revisionId];\n    revision.signature = signature;\n\n    require(verifyRevisionSignature(author, contentId, revision));\n\n    emit RevisionSigned(contentId, revisionId, author);\n  }\n\n  function verifyRevisionSignature(address author, uint contentId, Revision storage revision) internal returns (bool isSigned) {\n    if (author == address(0) || revision.signature.length == 0) {\n      require(revision.signature.length == 0);\n      return false;\n    } else {\n      // The url is is not used in the cryptography by design,\n      // the rationale is that the Author can approve the content and the Editor might need to set the url\n      // after the fact, or things like DNS change, meaning there would be a question of canonical url for that article\n      //\n      // The end-client of this smart-contract MUST (RFC-like) compare the authenticity of the content behind the URL with the hash of the revision\n      bytes32 hashedMessage = keccak256(\n        address(this),\n        revision.contentHash\n      ).toEthSignedMessageHash();\n\n      require(hashedMessage.recover(revision.signature) == author);\n\n      // Prevent replay attacks\n      UsedSignature storage lastUsed = usedSignatures[hashedMessage];\n      require(lastUsed.wasUsed == false || lastUsed.contentId == contentId);\n\n      lastUsed.wasUsed = true;\n      lastUsed.contentId = contentId;\n\n      return true;\n    }\n  }\n\n  function pushRevision(uint contentId, string contentUri, bytes32 contentHash, bytes signature) internal returns (uint) {\n    require(contentId < contentCount);\n\n    if (contentId == 0) {\n      require(isOwner(msg.sender));\n    }\n\n    Content storage content = contents[contentId];\n\n    uint revisionId = content.revisions.length;\n\n    content.revisions.push(Revision(\n      contentHash,\n      contentUri,\n      now,\n      signature\n    ));\n\n    if (verifyRevisionSignature(content.author, contentId, content.revisions[revisionId])) {\n      emit RevisionSigned(contentId, revisionId, content.author);\n    }\n\n    emit RevisionUpdated(msg.sender, contentId, revisionId, contentUri);\n  }\n\n  struct Content {\n    Revision[] revisions;\n    address author;\n  }\n\n  struct Revision {\n    bytes32 contentHash;\n    string uri;\n    uint timestamp;\n    bytes signature;\n  }\n\n  // Since all uints are 0x0 by default, we require additional bool to confirm that the contentID is not equal to content with actualy ID 0x0\n  struct UsedSignature {\n    bool wasUsed;\n    uint contentId;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/newsroom/NewsroomFactory.sol",
    "content": "pragma solidity ^0.4.19;\n// TODO(ritave): Think of a way to not require contracts out of package\nimport \"../multisig/Factory.sol\";\n\nimport \"../interfaces/IMultiSigWalletFactory.sol\";\nimport \"./Newsroom.sol\";\n\n/**\n@title Newsroom with Board of Directors factory\n@notice This smart-contract creates the full multi-smart-contract structure of a Newsroom in a single transaction\nAfter creation the Newsroom is owned by the Board of Directors which is represented by a multisig-gnosis-based wallet\n*/\ncontract NewsroomFactory is Factory {\n  IMultiSigWalletFactory public multisigFactory;\n  mapping (address => address) public multisigNewsrooms;\n\n  function NewsroomFactory(address multisigFactoryAddr) public {\n    multisigFactory = IMultiSigWalletFactory(multisigFactoryAddr);\n  }\n\n  /**\n  @notice Creates a fully-set-up newsroom, a multisig wallet and transfers it's ownership straight to the wallet at hand\n  */\n  function create(string name, string charterUri, bytes32 charterHash, address[] initialOwners, uint initialRequired)\n    public\n    returns (Newsroom newsroom)\n  {\n    address wallet = multisigFactory.create(initialOwners, initialRequired);\n    newsroom = new Newsroom(name, charterUri, charterHash);\n    newsroom.addEditor(initialOwners[0]);\n    newsroom.transferOwnership(wallet);\n    multisigNewsrooms[wallet] = newsroom;\n    register(newsroom);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/proof-of-use/telemetry/TokenTelemetryI.sol",
    "content": "pragma solidity ^0.4.23;\n\ninterface TokenTelemetryI {\n  function onRequestVotingRights(address user, uint tokenAmount) external;\n}\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/AddressRegistry.sol",
    "content": "// solium-disable\npragma solidity ^0.4.24;\n\nimport \"../installed_contracts/Parameterizer.sol\";\nimport \"../installed_contracts/PLCRVoting.sol\";\nimport \"../zeppelin-solidity/token/ERC20/IERC20.sol\";\nimport \"../zeppelin-solidity/math/SafeMath.sol\";\n\ncontract AddressRegistry {\n\n    // ------\n    // EVENTS\n    // ------\n\n    event _Application(address indexed listingAddress, uint deposit, uint appEndDate, string data, address indexed applicant);\n    event _Challenge(address indexed listingAddress, uint indexed challengeID, string data, uint commitEndDate, uint revealEndDate, address indexed challenger);\n    event _Deposit(address indexed listingAddress, uint added, uint newTotal, address indexed owner);\n    event _Withdrawal(address indexed listingAddress, uint withdrew, uint newTotal, address indexed owner);\n    event _ApplicationWhitelisted(address indexed listingAddress);\n    event _ApplicationRemoved(address indexed listingAddress);\n    event _ListingRemoved(address indexed listingAddress);\n    event _ListingWithdrawn(address indexed listingAddress);\n    event _TouchAndRemoved(address indexed listingAddress);\n    event _ChallengeFailed(address indexed listingAddress, uint indexed challengeID, uint rewardPool, uint totalTokens);\n    event _ChallengeSucceeded(address indexed listingAddress, uint indexed challengeID, uint rewardPool, uint totalTokens);\n    event _RewardClaimed(uint indexed challengeID, uint reward, address indexed voter);\n\n    using SafeMath for uint;\n\n    struct Listing {\n        uint applicationExpiry; // Expiration date of apply stage\n        bool whitelisted;       // Indicates registry status\n        address owner;          // Owner of Listing\n        uint unstakedDeposit;   // Number of tokens in the listing not locked in a challenge\n        uint challengeID;       // Corresponds to a PollID in PLCRVoting\n    }\n\n    struct Challenge {\n        uint rewardPool;        // (remaining) Pool of tokens to be distributed to winning voters\n        address challenger;     // Owner of Challenge\n        bool resolved;          // Indication of if challenge is resolved\n        uint stake;             // Number of tokens at stake for either party during challenge\n        uint totalTokens;       // (remaining) Number of tokens used in voting by the winning side\n        mapping(address => bool) tokenClaims; // Indicates whether a voter has claimed a reward yet\n    }\n\n    // Maps challengeIDs to associated challenge data\n    mapping(uint => Challenge) public challenges;\n\n    // Maps listingHashes to associated listingHash data\n    mapping(address => Listing) public listings;\n\n    // Global Variables\n    IERC20 public token;\n    PLCRVoting public voting;\n    Parameterizer public parameterizer;\n    string public name;\n\n    /**\n    @dev Initializer. Can only be called once.\n    @param _token The address where the ERC20 token contract is deployed\n    */\n    constructor(address _token, address _voting, address _parameterizer, string _name) public {\n        require(_token != 0, \"_token address is 0\");\n        require(_voting != 0, \"_voting address is 0\");\n        require(_parameterizer != 0, \"_parameterizer address is 0\");\n\n        token = IERC20(_token);\n        voting = PLCRVoting(_voting);\n        parameterizer = Parameterizer(_parameterizer);\n        name = _name;\n    }\n\n    // --------------------\n    // PUBLISHER INTERFACE:\n    // --------------------\n\n    /**\n    @dev                Allows a user to start an application. Takes tokens from user and sets\n                        apply stage end time.\n    @param listingAddress The hash of a potential listing a user is applying to add to the registry\n    @param _amount      The number of ERC20 tokens a user is willing to potentially stake\n    @param _data        Extra data relevant to the application. Think IPFS hashes.\n    */\n    function apply(address listingAddress, uint _amount, string _data) public {\n        require(!isWhitelisted(listingAddress), \"Listing already whitelisted\");\n        require(!appWasMade(listingAddress), \"Application already made for this address\");\n        require(_amount >= parameterizer.get(\"minDeposit\"), \"Deposit amount not above minDeposit\");\n\n        // Sets owner\n        Listing storage listing = listings[listingAddress];\n        listing.owner = msg.sender;\n\n        // Sets apply stage end time\n        listing.applicationExpiry = block.timestamp.add(parameterizer.get(\"applyStageLen\"));\n        listing.unstakedDeposit = _amount;\n\n        // Transfers tokens from user to Registry contract\n        require(token.transferFrom(listing.owner, this, _amount), \"Token transfer failed\");\n\n        emit _Application(listingAddress, _amount, listing.applicationExpiry, _data, msg.sender);\n    }\n\n    /**\n    @dev                Allows the owner of a listingHash to increase their unstaked deposit.\n    @param listingAddress A listingHash msg.sender is the owner of\n    @param _amount      The number of ERC20 tokens to increase a user's unstaked deposit\n    */\n    function deposit(address listingAddress, uint _amount) external {\n        Listing storage listing = listings[listingAddress];\n\n        require(listing.owner == msg.sender, \"Sender is not owner of Listing\");\n\n        listing.unstakedDeposit += _amount;\n        require(token.transferFrom(msg.sender, this, _amount), \"Token transfer failed\");\n\n        emit _Deposit(listingAddress, _amount, listing.unstakedDeposit, msg.sender);\n    }\n\n    /**\n    @dev                Allows the owner of a listingHash to decrease their unstaked deposit.\n    @param listingAddress A listingHash msg.sender is the owner of.\n    @param _amount      The number of ERC20 tokens to withdraw from the unstaked deposit.\n    */\n    function withdraw(address listingAddress, uint _amount) external {\n        Listing storage listing = listings[listingAddress];\n\n        require(listing.owner == msg.sender, \"Sender is not owner of listing\");\n        require(_amount <= listing.unstakedDeposit, \"Cannot withdraw more than current unstaked deposit\");\n        if (listing.challengeID == 0 || challenges[listing.challengeID].resolved) { // ok to withdraw entire unstakedDeposit when challenge active as described here: https://github.com/skmgoldin/tcr/issues/55\n          require(listing.unstakedDeposit - _amount >= parameterizer.get(\"minDeposit\"), \"Withdrawal prohibitied as it would put Listing unstaked deposit below minDeposit\");\n        }\n\n        listing.unstakedDeposit -= _amount;\n        require(token.transfer(msg.sender, _amount), \"Token transfer failed\");\n\n        emit _Withdrawal(listingAddress, _amount, listing.unstakedDeposit, msg.sender);\n    }\n\n    /**\n    @dev                Allows the owner of a listingHash to remove the listingHash from the whitelist\n                        Returns all tokens to the owner of the listingHash\n    @param listingAddress A listingHash msg.sender is the owner of.\n    */\n    function exit(address listingAddress) external {\n        Listing storage listing = listings[listingAddress];\n\n        require(msg.sender == listing.owner, \"Sender is not owner of listing\");\n        require(isWhitelisted(listingAddress), \"Listing must be whitelisted to be exited\");\n\n        // Cannot exit during ongoing challenge\n        require(listing.challengeID == 0 || challenges[listing.challengeID].resolved, \"Listing must not have an active challenge to be exited\");\n\n        // Remove listingHash & return tokens\n        resetListing(listingAddress);\n        emit _ListingWithdrawn(listingAddress);\n    }\n\n    // -----------------------\n    // TOKEN HOLDER INTERFACE:\n    // -----------------------\n\n    /**\n    @dev                Starts a poll for a listingHash which is either in the apply stage or\n                        already in the whitelist. Tokens are taken from the challenger and the\n                        applicant's deposits are locked.\n    @param listingAddress The listingHash being challenged, whether listed or in application\n    @param _data        Extra data relevant to the challenge. Think IPFS hashes.\n    */\n    function challenge(address listingAddress, string _data) public returns (uint challengeID) {\n        Listing storage listing = listings[listingAddress];\n        uint minDeposit = parameterizer.get(\"minDeposit\");\n\n        // Listing must be in apply stage or already on the whitelist\n        require(appWasMade(listingAddress) || listing.whitelisted, \"Listing must be in application phase or already whitelisted to be challenged\");\n        // Prevent multiple challenges\n        require(listing.challengeID == 0 || challenges[listing.challengeID].resolved, \"Listing must not have active challenge to be challenged\");\n\n        if (listing.unstakedDeposit < minDeposit) {\n            // Not enough tokens, listingHash auto-delisted\n            resetListing(listingAddress);\n            emit _TouchAndRemoved(listingAddress);\n            return 0;\n        }\n\n        // Starts poll\n        uint pollID = voting.startPoll(\n            parameterizer.get(\"voteQuorum\"),\n            parameterizer.get(\"commitStageLen\"),\n            parameterizer.get(\"revealStageLen\")\n        );\n\n        uint oneHundred = 100; // Kludge that we need to use SafeMath\n        challenges[pollID] = Challenge({\n            challenger: msg.sender,\n            rewardPool: ((oneHundred.sub(parameterizer.get(\"dispensationPct\"))).mul(minDeposit)).div(100),\n            stake: minDeposit,\n            resolved: false,\n            totalTokens: 0\n        });\n\n        // Updates listingHash to store most recent challenge\n        listing.challengeID = pollID;\n\n        // Locks tokens for listingHash during challenge\n        listing.unstakedDeposit -= minDeposit;\n\n        // Takes tokens from challenger\n        require(token.transferFrom(msg.sender, this, minDeposit), \"Token transfer failed\");\n\n        var (commitEndDate, revealEndDate,) = voting.pollMap(pollID);\n\n        emit _Challenge(listingAddress, pollID, _data, commitEndDate, revealEndDate, msg.sender);\n        return pollID;\n    }\n\n    /**\n    @dev                Updates a listingHash's status from 'application' to 'listing' or resolves\n                        a challenge if one exists.\n    @param listingAddress The listingHash whose status is being updated\n    */\n    function updateStatus(address listingAddress) public {\n        if (canBeWhitelisted(listingAddress)) {\n            whitelistApplication(listingAddress);\n        } else if (challengeCanBeResolved(listingAddress)) {\n            resolveChallenge(listingAddress);\n        } else {\n            revert();\n        }\n    }\n\n    /**\n    @dev                  Updates an array of listingHashes' status from 'application' to 'listing' or resolves\n                          a challenge if one exists.\n    @param listingAddresses The listingHashes whose status are being updated\n    */\n    function updateStatuses(address[] listingAddresses) public {\n        // loop through arrays, revealing each individual vote values\n        for (uint i = 0; i < listingAddresses.length; i++) {\n            updateStatus(listingAddresses[i]);\n        }\n    }\n\n    // ----------------\n    // TOKEN FUNCTIONS:\n    // ----------------\n\n    /**\n    @dev                Called by a voter to claim their reward for each completed vote. Someone\n                        must call updateStatus() before this can be called.\n    @param _challengeID The PLCR pollID of the challenge a reward is being claimed for\n    @param _salt        The salt of a voter's commit hash in the given poll\n    */\n    function claimReward(uint _challengeID, uint _salt) public {\n        // Ensures the voter has not already claimed tokens and challenge results have been processed\n        require(challenges[_challengeID].tokenClaims[msg.sender] == false, \"Reward already claimed\");\n        require(challenges[_challengeID].resolved == true, \"Challenge not yet resolved\");\n\n        uint voterTokens = voting.getNumPassingTokens(msg.sender, _challengeID, _salt);\n        uint reward = voterReward(msg.sender, _challengeID, _salt);\n\n        // Subtracts the voter's information to preserve the participation ratios\n        // of other voters compared to the remaining pool of rewards\n        challenges[_challengeID].totalTokens -= voterTokens;\n        challenges[_challengeID].rewardPool -= reward;\n\n        // Ensures a voter cannot claim tokens again\n        challenges[_challengeID].tokenClaims[msg.sender] = true;\n\n        require(token.transfer(msg.sender, reward), \"Token transfer failed\");\n\n        emit _RewardClaimed(_challengeID, reward, msg.sender);\n    }\n\n    /**\n    @dev                 Called by a voter to claim their rewards for each completed vote. Someone\n                         must call updateStatus() before this can be called.\n    @param _challengeIDs The PLCR pollIDs of the challenges rewards are being claimed for\n    @param _salts        The salts of a voter's commit hashes in the given polls\n    */\n    function claimRewards(uint[] _challengeIDs, uint[] _salts) public {\n        // make sure the array lengths are the same\n        require(_challengeIDs.length == _salts.length, \"Mismatch in length of _challengeIDs and _salts parameters\");\n\n        // loop through arrays, claiming each individual vote reward\n        for (uint i = 0; i < _challengeIDs.length; i++) {\n            claimReward(_challengeIDs[i], _salts[i]);\n        }\n    }\n\n    // --------\n    // GETTERS:\n    // --------\n\n    /**\n    @dev                Calculates the provided voter's token reward for the given poll.\n    @param _voter       The address of the voter whose reward balance is to be returned\n    @param _challengeID The pollID of the challenge a reward balance is being queried for\n    @param _salt        The salt of the voter's commit hash in the given poll\n    @return             The uint indicating the voter's reward\n    */\n    function voterReward(address _voter, uint _challengeID, uint _salt)\n    public view returns (uint) {\n        uint totalTokens = challenges[_challengeID].totalTokens;\n        uint rewardPool = challenges[_challengeID].rewardPool;\n        uint voterTokens = voting.getNumPassingTokens(_voter, _challengeID, _salt);\n        return (voterTokens * rewardPool) / totalTokens;\n    }\n\n    /**\n    @dev                Determines whether the given listingHash be whitelisted.\n    @param listingAddress The listingHash whose status is to be examined\n    */\n    function canBeWhitelisted(address listingAddress) view public returns (bool) {\n        uint challengeID = listings[listingAddress].challengeID;\n\n        // Ensures that the application was made,\n        // the application period has ended,\n        // the listingHash can be whitelisted,\n        // and either: the challengeID == 0, or the challenge has been resolved.\n        if (\n            appWasMade(listingAddress) &&\n            listings[listingAddress].applicationExpiry < now &&\n            !isWhitelisted(listingAddress) &&\n            (challengeID == 0 || challenges[challengeID].resolved == true)\n        ) { return true; }\n\n        return false;\n    }\n\n    /**\n    @dev                Returns true if the provided listingHash is whitelisted\n    @param listingAddress The listingHash whose status is to be examined\n    */\n    function isWhitelisted(address listingAddress) view public returns (bool whitelisted) {\n        return listings[listingAddress].whitelisted;\n    }\n\n    /**\n    @dev                Returns true if apply was called for this listingHash\n    @param listingAddress The listingHash whose status is to be examined\n    */\n    function appWasMade(address listingAddress) view public returns (bool exists) {\n        return listings[listingAddress].applicationExpiry > 0;\n    }\n\n    /**\n    @dev                Returns true if the application/listingHash has an unresolved challenge\n    @param listingAddress The listingHash whose status is to be examined\n    */\n    function challengeExists(address listingAddress) view public returns (bool) {\n        uint challengeID = listings[listingAddress].challengeID;\n\n        return (listings[listingAddress].challengeID > 0 && !challenges[challengeID].resolved);\n    }\n\n    /**\n    @dev                Determines whether voting has concluded in a challenge for a given\n                        listingHash. Throws if no challenge exists.\n    @param listingAddress A listingHash with an unresolved challenge\n    */\n    function challengeCanBeResolved(address listingAddress) view public returns (bool) {\n        uint challengeID = listings[listingAddress].challengeID;\n\n        require(challengeExists(listingAddress), \"Challenge does not exist for Listing\");\n\n        return voting.pollEnded(challengeID);\n    }\n\n    /**\n    @dev                Determines the number of tokens awarded to the winning party in a challenge.\n    @param _challengeID The challengeID to determine a reward for\n    */\n    function determineReward(uint _challengeID) public view returns (uint) {\n        require(!challenges[_challengeID].resolved, \"Challenge already resolved\");\n        require(voting.pollEnded(_challengeID), \"Poll for challenge has not ended\");\n\n        // Edge case, nobody voted, give all tokens to the challenger.\n        if (voting.getTotalNumberOfTokensForWinningOption(_challengeID) == 0) {\n            return 2 * challenges[_challengeID].stake;\n        }\n\n        return (2 * challenges[_challengeID].stake) - challenges[_challengeID].rewardPool;\n    }\n\n    /**\n    @dev                Getter for Challenge tokenClaims mappings\n    @param _challengeID The challengeID to query\n    @param _voter       The voter whose claim status to query for the provided challengeID\n    */\n    function tokenClaims(uint _challengeID, address _voter) public view returns (bool) {\n        return challenges[_challengeID].tokenClaims[_voter];\n    }\n\n    // ----------------\n    // PRIVATE FUNCTIONS:\n    // ----------------\n\n    /**\n    @dev                Determines the winner in a challenge. Rewards the winner tokens and\n                        either whitelists or de-whitelists the listingHash.\n    @param listingAddress A listingHash with a challenge that is to be resolved\n    */\n    function resolveChallenge(address listingAddress) internal {\n        uint challengeID = listings[listingAddress].challengeID;\n\n        // Calculates the winner's reward,\n        // which is: (winner's full stake) + (dispensationPct * loser's stake)\n        uint reward = determineReward(challengeID);\n\n        // Sets flag on challenge being processed\n        challenges[challengeID].resolved = true;\n\n        // Stores the total tokens used for voting by the winning side for reward purposes\n        challenges[challengeID].totalTokens =\n            voting.getTotalNumberOfTokensForWinningOption(challengeID);\n\n        // Case: challenge failed\n        if (voting.isPassed(challengeID)) {\n            whitelistApplication(listingAddress);\n            // Unlock stake so that it can be retrieved by the applicant\n            listings[listingAddress].unstakedDeposit += reward;\n\n            emit _ChallengeFailed(listingAddress, challengeID, challenges[challengeID].rewardPool, challenges[challengeID].totalTokens);\n        }\n        // Case: challenge succeeded or nobody voted\n        else {\n            resetListing(listingAddress);\n            // Transfer the reward to the challenger\n            require(token.transfer(challenges[challengeID].challenger, reward), \"Token transfer failure\");\n\n            emit _ChallengeSucceeded(listingAddress, challengeID, challenges[challengeID].rewardPool, challenges[challengeID].totalTokens);\n        }\n    }\n\n    /**\n    @dev                Called by updateStatus() if the applicationExpiry date passed without a\n                        challenge being made. Called by resolveChallenge() if an\n                        application/listing beat a challenge.\n    @param listingAddress The listingHash of an application/listingHash to be whitelisted\n    */\n    function whitelistApplication(address listingAddress) internal {\n        if (!listings[listingAddress].whitelisted) { emit _ApplicationWhitelisted(listingAddress); }\n        listings[listingAddress].whitelisted = true;\n    }\n\n    /**\n    @dev                Deletes a listingHash from the whitelist and transfers tokens back to owner\n    @param listingAddress The listing hash to delete\n    */\n    function resetListing(address listingAddress) internal {\n        Listing storage listing = listings[listingAddress];\n\n        // Emit events before deleting listing to check whether is whitelisted\n        if (listing.whitelisted) {\n            emit _ListingRemoved(listingAddress);\n        } else {\n            emit _ApplicationRemoved(listingAddress);\n        }\n\n        // Deleting listing to prevent reentry\n        address owner = listing.owner;\n        uint unstakedDeposit = listing.unstakedDeposit;\n        delete listings[listingAddress];\n\n        // Transfers any remaining balance back to the owner\n        if (unstakedDeposit > 0){\n            require(token.transfer(owner, unstakedDeposit), \"Token transfer failure\");\n        }\n    }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/CivilPLCRVoting.sol",
    "content": "pragma solidity ^0.4.23;\n\nimport \"../installed_contracts/PLCRVoting.sol\";\nimport \"../proof-of-use/telemetry/TokenTelemetryI.sol\";\n\n/**\n@title Partial-Lock-Commit-Reveal Voting scheme with ERC20 tokens\n*/\ncontract CivilPLCRVoting is PLCRVoting {\n\n  TokenTelemetryI public telemetry;\n\n  /**\n  @dev Initializer. Can only be called once.\n  @param tokenAddr The address where the ERC20 token contract is deployed\n  @param telemetryAddr The address where the TokenTelemetry contract is deployed\n  */\n  constructor(address tokenAddr, address telemetryAddr) public PLCRVoting(tokenAddr) {\n    require(telemetryAddr != 0);\n    telemetry = TokenTelemetryI(telemetryAddr);\n  }\n\n  /**\n    @notice Loads _numTokens ERC20 tokens into the voting contract for one-to-one voting rights\n    @dev Assumes that msg.sender has approved voting contract to spend on their behalf\n    @param _numTokens The number of votingTokens desired in exchange for ERC20 tokens\n    @dev Differs from base implementation in that it records use of token in mapping for \"proof of use\"\n  */\n  function requestVotingRights(uint _numTokens) public {\n    super.requestVotingRights(_numTokens);\n    telemetry.onRequestVotingRights(msg.sender, voteTokenBalance[msg.sender]);\n  }\n\n  /**\n  @param _pollID Integer identifier associated with target poll\n  @param _salt Arbitrarily chosen integer used to generate secretHash\n  @return correctVotes Number of tokens voted for losing option\n  */\n  function getNumLosingTokens(address _voter, uint _pollID, uint _salt) public view returns (uint correctVotes) {\n    require(pollEnded(_pollID));\n    require(pollMap[_pollID].didReveal[_voter]);\n\n    uint losingChoice = isPassed(_pollID) ? 0 : 1;\n    bytes32 loserHash = keccak256(losingChoice, _salt);\n    bytes32 commitHash = getCommitHash(_voter, _pollID);\n\n    require(loserHash == commitHash);\n\n    return getNumTokens(_voter, _pollID);\n  }\n\n  /**\n  @dev Gets the total losing votes for reward distribution purposes\n  @param _pollID Integer identifier associated with target poll\n  @return Total number of votes committed to the losing option for specified poll\n  */\n  function getTotalNumberOfTokensForLosingOption(uint _pollID) public view returns (uint numTokens) {\n    require(pollEnded(_pollID));\n\n    if (isPassed(_pollID))\n      return pollMap[_pollID].votesAgainst;\n    else\n      return pollMap[_pollID].votesFor;\n  }\n\n}\n\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/CivilParameterizer.sol",
    "content": "pragma solidity ^0.4.19;\n\nimport \"../installed_contracts/Parameterizer.sol\";\n\ncontract CivilParameterizer is Parameterizer {\n\n  /**\n  @param tokenAddr           The address where the ERC20 token contract is deployed\n  @param plcrAddr            address of a PLCR voting contract for the provided token\n  @notice parameters     array of canonical parameters\n  */\n  constructor(\n    address tokenAddr,\n    address plcrAddr,\n    uint[] parameters\n  ) public Parameterizer(tokenAddr, plcrAddr, parameters)\n  {\n    set(\"challengeAppealLen\", parameters[12]);\n    set(\"challengeAppealCommitLen\", parameters[13]);\n    set(\"challengeAppealRevealLen\", parameters[14]);\n  }\n}\n\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/CivilTCR.sol",
    "content": "pragma solidity ^0.4.24;\n\nimport \"./RestrictedAddressRegistry.sol\";\nimport \"../interfaces/IGovernment.sol\";\nimport \"./CivilPLCRVoting.sol\";\nimport \"./CivilParameterizer.sol\";\nimport \"../zeppelin-solidity/token/ERC20/IERC20.sol\";\n\n/**\n@title CivilTCR - Token Curated Registry with Appeallate Functionality and Restrictions on Application\n@author Nick Reynolds - nick@civil.co / engineering@civil.co\n@notice The CivilTCR is a TCR with restrictions (address applied for must be a contract with Owned\nimplementated, and only the owner of a contract can apply on behalf of that contract), an appeallate entity that can\noverturn challenges if someone requests an appeal, and a process by which granted appeals can be vetoed by a supermajority vote.\nA Granted Appeal reverses the result of the challenge vote (including which parties are considered the winners & receive rewards).\nA successful Appeal Challenge reverses the result of the Granted Appeal (again, including the winners).\n*/\ncontract CivilTCR is RestrictedAddressRegistry {\n\n  event _AppealRequested(address indexed listingAddress, uint indexed challengeID, uint appealFeePaid, address requester, string data);\n  event _AppealGranted(address indexed listingAddress, uint indexed challengeID, string data);\n  event _FailedChallengeOverturned(address indexed listingAddress, uint indexed challengeID, uint rewardPool, uint totalTokens);\n  event _SuccessfulChallengeOverturned(address indexed listingAddress, uint indexed challengeID, uint rewardPool, uint totalTokens);\n  event _GrantedAppealChallenged(address indexed listingAddress, uint indexed challengeID, uint indexed appealChallengeID, string data);\n  event _GrantedAppealOverturned(address indexed listingAddress, uint indexed challengeID, uint indexed appealChallengeID, uint rewardPool, uint totalTokens);\n  event _GrantedAppealConfirmed(address indexed listingAddress, uint indexed challengeID, uint indexed appealChallengeID, uint rewardPool, uint totalTokens);\n  event _GovernmentTransfered(address newGovernment);\n\n  modifier onlyGovernmentController {\n    require(msg.sender == government.getGovernmentController(), \"sender was not the Government Controller\");\n    _;\n  }\n\n  /**\n  @notice modifier that checks that the sender of a message is the Appellate entity set by the Government\n  */\n  modifier onlyAppellate {\n    require(msg.sender == government.getAppellate(), \"sender was not the Appellate\");\n    _;\n  }\n\n  CivilPLCRVoting public civilVoting;\n  IGovernment public government;\n\n  /*\n  @notice this struct handles the state of an appeal. It is first initialized\n  when an appeal is requested\n  */\n  struct Appeal {\n    address requester;\n    uint appealFeePaid;\n    uint appealPhaseExpiry;\n    bool appealGranted;\n    uint appealOpenToChallengeExpiry;\n    uint appealChallengeID;\n    bool overturned;\n  }\n\n  mapping(uint => uint) public challengeRequestAppealExpiries;\n  mapping(uint => Appeal) public appeals; // map challengeID to appeal\n\n  /**\n  @notice Init function calls AddressRegistry init then sets IGovernment\n  @dev passes tokenAddr, plcrAddr, paramsAddr up to RestrictedAddressRegistry constructor\n  @param token TCR's intrinsic ERC20 token\n  @param plcr CivilPLCR voting contract for the provided token\n  @param param CivilParameterizer contract\n  @param govt IGovernment contract\n  */\n  constructor(\n    IERC20 token,\n    CivilPLCRVoting plcr,\n    CivilParameterizer param,\n    IGovernment govt\n  ) public RestrictedAddressRegistry(token, address(plcr), address(param), \"CivilTCR\")\n  {\n    require(address(govt) != 0, \"govt address was zero\");\n    require(govt.getGovernmentController() != 0, \"govt.getGovernmentController address was 0\");\n    civilVoting = plcr;\n    government = govt;\n  }\n\n  // --------------------\n  // LISTING OWNER INTERFACE:\n  // --------------------\n\n  /**\n  @dev Allows a user to start an application. Takes tokens from user and sets apply stage end time.\n  @param listingAddress The hash of a potential listing a user is applying to add to the registry\n  @param amount The number of ERC20 tokens a user is willing to potentially stake\n  @param data Extra data relevant to the application. Think IPFS hashes.\n  */\n  function apply(address listingAddress, uint amount, string data) public {\n    super.apply(listingAddress, amount, data);\n  }\n\n  /**\n  @notice Requests an appeal for a listing that has been challenged and completed its voting\n  phase, but has not passed its challengeRequestAppealExpiries time.\n  --------\n  In order to request appeal, the following conditions must be met:\n  1) voting for challenge has ended\n  2) request appeal expiry has not passed\n  3) appeal not already requested\n  4) appeal requester transfers appealFee to TCR\n  --------\n  Initializes `Appeal` struct in `appeals` mapping for active challenge on listing at given address.\n  --------\n  Emits `_AppealRequested` if successful\n  @param listingAddress address of listing that has challenged result that the user wants to appeal\n  @param data Extra data relevant to the spprsl. Think IPFS hashes.\n  */\n  function requestAppeal(address listingAddress, string data) external {\n    Listing storage listing = listings[listingAddress];\n    require(voting.pollEnded(listing.challengeID), \"Poll for listing challenge has not ended\");\n    require(challengeRequestAppealExpiries[listing.challengeID] > now, \"Request Appeal phase is over\"); // \"Request Appeal Phase\" active\n    require(appeals[listing.challengeID].requester == address(0), \"Appeal for this challenge has already been made\");\n\n    uint appealFee = government.get(\"appealFee\");\n    Appeal storage appeal = appeals[listing.challengeID];\n    appeal.requester = msg.sender;\n    appeal.appealFeePaid = appealFee;\n    appeal.appealPhaseExpiry = now.add(government.get(\"judgeAppealLen\"));\n    require(token.transferFrom(msg.sender, this, appealFee), \"Token transfer failed\");\n    emit _AppealRequested(listingAddress, listing.challengeID, appealFee, msg.sender, data);\n  }\n\n  // --------\n  // APPELLATE INTERFACE:\n  // --------\n\n  /**\n  @notice Grants a requested appeal.\n  --------\n  In order to grant an appeal:\n  1) Message sender must be appellate entity as set by IGovernment contract\n  2) An appeal has been requested\n  3) The appeal phase expiry has not passed\n  4) An appeal has not yet been granted\n  --------\n  Updates `Appeal` struct for appeal of active challenge for listing at given address by setting `appealGranted` to true and\n  setting the `appealOpenToChallengeExpiry` value to a future time based on current value of `challengeAppealLen` in the Parameterizer.\n  --------\n  Emits `_AppealGranted` if successful\n  @param listingAddress The address of the listing associated with the appeal\n  @param data Extra data relevant to the appeal. Think IPFS hashes.\n  */\n  function grantAppeal(address listingAddress, string data) external onlyAppellate {\n    Listing storage listing = listings[listingAddress];\n    Appeal storage appeal = appeals[listing.challengeID];\n    require(appeal.appealPhaseExpiry > now, \"Judge Appeal phase not active\"); // \"Judge Appeal Phase\" active\n    require(!appeal.appealGranted, \"Appeal has already been granted\"); // don't grant twice\n\n    appeal.appealGranted = true;\n    appeal.appealOpenToChallengeExpiry = now.add(parameterizer.get(\"challengeAppealLen\"));\n    emit _AppealGranted(listingAddress, listing.challengeID, data);\n  }\n\n  /**\n  @notice Updates IGovernment instance.\n  --------\n  Can only be called by Government Controller.\n  --------\n  Emits `_GovernmentTransfered` if successful.\n  */\n  function transferGovernment(IGovernment newGovernment) external onlyGovernmentController {\n    require(address(newGovernment) != address(0), \"New Government address is 0\");\n    government = newGovernment;\n    emit _GovernmentTransfered(newGovernment);\n  }\n\n  // --------\n  // ANY USER INTERFACE\n  // ANYONE CAN CALL THESE FUNCTIONS FOR A LISTING\n  // --------\n\n  /**\n  @notice Updates a listing's status from 'application' to 'listing', or resolves a challenge or appeal\n  or appeal challenge if one exists. Reverts if none of `canBeWhitelisted`, `challengeCanBeResolved`, or\n  `appealCanBeResolved` is true for given `listingAddress`.\n  @param listingAddress Address of the listing of which the status is being updated\n  */\n  function updateStatus(address listingAddress) public {\n    if (canBeWhitelisted(listingAddress)) {\n      whitelistApplication(listingAddress);\n    } else if (challengeCanBeResolved(listingAddress)) {\n      resolveChallenge(listingAddress);\n    } else if (appealCanBeResolved(listingAddress)) {\n      resolveAppeal(listingAddress);\n    } else if (appealChallengeCanBeResolved(listingAddress)) {\n      resolveAppealChallenge(listingAddress);\n    } else {\n      revert();\n    }\n  }\n\n  /**\n  @notice Update state of listing after \"Judge Appeal Phase\" has ended. Reverts if cannot be processed yet.\n  @param listingAddress Address of listing associated with appeal\n  */\n  function resolveAppeal(address listingAddress) internal {\n    Listing listing = listings[listingAddress];\n    Appeal appeal = appeals[listing.challengeID];\n    if (appeal.appealGranted) {\n      // appeal granted. override decision of voters.\n      resolveOverturnedChallenge(listingAddress);\n      // return appeal fee to appeal requester\n      require(token.transfer(appeal.requester, appeal.appealFeePaid), \"Token transfer failed\");\n    } else {\n      // appeal fee is split between original winning voters and challenger\n      Challenge storage challenge = challenges[listing.challengeID];\n      uint extraReward = appeal.appealFeePaid.div(2);\n      challenge.rewardPool = challenge.rewardPool.add(extraReward);\n      challenge.stake = challenge.stake.add(appeal.appealFeePaid.sub(extraReward));\n      // appeal not granted, confirm original decision of voters.\n      super.resolveChallenge(listingAddress);\n    }\n  }\n\n  // --------------------\n  // TOKEN OWNER INTERFACE:\n  // --------------------\n\n  /**\n  @notice Starts a poll for a listingAddress which is either in the apply stage or already in the whitelist.\n  Tokens are taken from the challenger and the applicant's deposits are locked.\n  Delists listing and returns 0 if listing's unstakedDeposit is less than current minDeposit\n  @dev  Differs from base implementation in that it stores a timestamp in a mapping\n  corresponding to the end of the request appeal phase, at which point a challenge\n  can be resolved, if no appeal was requested\n  @param listingAddress The listingAddress being challenged, whether listed or in application\n  @param data Extra data relevant to the challenge. Think IPFS hashes.\n  */\n  function challenge(address listingAddress, string data) public returns (uint challengeID) {\n    uint id = super.challenge(listingAddress, data);\n    if (id > 0) {\n      uint challengeLength = parameterizer.get(\"commitStageLen\").add(parameterizer.get(\"revealStageLen\")).add(government.get(\"requestAppealLen\"));\n      challengeRequestAppealExpiries[id] = now.add(challengeLength);\n    }\n    return id;\n  }\n\n  /**\n  @notice Starts a poll for a listingAddress which has recently been granted an appeal. If\n  the poll passes, the granted appeal will be overturned.\n  --------\n  In order to start a challenge:\n  1) There is an active appeal on the listing\n  2) This appeal was granted\n  3) This appeal has not yet been challenged\n  4) The expiry time of the appeal challenge is greater than the current time\n  5) The challenger transfers tokens to the TCR equal to appeal fee paid by appeal requester\n  --------\n  Initializes `Challenge` struct in `challenges` mapping\n  --------\n  Emits `_GrantedAppealChallenged` if successful, and sets value of `appealChallengeID` on appeal being challenged.\n  @return challengeID associated with the appeal challenge\n  @dev challengeID is a nonce created by the PLCRVoting contract, regular challenges and appeal challenges share the same nonce variable\n  @param listingAddress The listingAddress associated with the appeal\n  @param data Extra data relevant to the appeal challenge. Think URLs.\n  */\n  function challengeGrantedAppeal(address listingAddress, string data) public returns (uint challengeID) {\n    Listing storage listing = listings[listingAddress];\n    Appeal storage appeal = appeals[listing.challengeID];\n    require(appeal.appealGranted, \"Appeal not granted\");\n    require(appeal.appealChallengeID == 0, \"Appeal already challenged\");\n    require(appeal.appealOpenToChallengeExpiry > now, \"Appeal no longer open to challenge\");\n\n    uint pollID = voting.startPoll(\n      government.get(\"appealVotePercentage\"),\n      parameterizer.get(\"challengeAppealCommitLen\"),\n      parameterizer.get(\"challengeAppealRevealLen\")\n    );\n\n    uint oneHundred = 100;\n    uint reward = (oneHundred.sub(government.get(\"appealChallengeVoteDispensationPct\"))).mul(appeal.appealFeePaid).div(oneHundred);\n    challenges[pollID] = Challenge({\n      challenger: msg.sender,\n      rewardPool: reward,\n      stake: appeal.appealFeePaid,\n      resolved: false,\n      totalTokens: 0\n    });\n\n    appeal.appealChallengeID = pollID;\n\n    require(token.transferFrom(msg.sender, this, appeal.appealFeePaid), \"Token transfer failed\");\n    emit _GrantedAppealChallenged(listingAddress, listing.challengeID, pollID, data);\n    return pollID;\n  }\n\n\n  /**\n  @notice Determines the winner in an appeal challenge. Rewards the winner tokens and\n  either whitelists or delists the listing at the given address. Also resolves the underlying\n  challenge that was originally appealed.\n  Emits `_GrantedAppealConfirmed` if appeal challenge unsuccessful (vote not passed).\n  Emits `_GrantedAppealOverturned` if appeal challenge successful (vote passed).\n  @param listingAddress The address of a listing with an appeal challenge that is to be resolved\n  */\n  function resolveAppealChallenge(address listingAddress) internal {\n    Listing storage listing = listings[listingAddress];\n    uint challengeID = listings[listingAddress].challengeID;\n    Appeal storage appeal = appeals[listing.challengeID];\n    uint appealChallengeID = appeal.appealChallengeID;\n    Challenge storage appealChallenge = challenges[appeal.appealChallengeID];\n\n    // Calculates the winner's reward,\n    // which is: (winner's full stake) + (dispensationPct * loser's stake)\n    uint reward = determineReward(appealChallengeID);\n\n    // Sets flag on challenge being processed\n    appealChallenge.resolved = true;\n\n    // Stores the total tokens used for voting by the winning side for reward purposes\n    appealChallenge.totalTokens = voting.getTotalNumberOfTokensForWinningOption(appealChallengeID);\n\n    if (voting.isPassed(appealChallengeID)) { // Case: vote passed, appeal challenge succeeded, overturn appeal\n      appeal.overturned = true;\n      super.resolveChallenge(listingAddress);\n      require(token.transfer(appealChallenge.challenger, reward), \"Token transfer failed\");\n      emit _GrantedAppealOverturned(listingAddress, challengeID, appealChallengeID, appealChallenge.rewardPool, appealChallenge.totalTokens);\n    } else { // Case: vote not passed, appeal challenge failed, confirm appeal\n      resolveOverturnedChallenge(listingAddress);\n      require(token.transfer(appeal.requester, reward), \"Token transfer failed\");\n      emit _GrantedAppealConfirmed(listingAddress, challengeID, appealChallengeID, appealChallenge.rewardPool, appealChallenge.totalTokens);\n    }\n  }\n\n  /**\n  @dev Called by a voter to claim their reward for each completed vote. Someone must call \n  updateStatus() before this can be called.\n  @param _challengeID The PLCR pollID of the challenge a reward is being claimed for\n  @param _salt        The salt of a voter's commit hash in the given poll\n  */\n  function claimReward(uint _challengeID, uint _salt) public {\n    // Ensures the voter has not already claimed tokens and challenge results have been processed\n    require(challenges[_challengeID].tokenClaims[msg.sender] == false, \"Reward already claimed\");\n    require(challenges[_challengeID].resolved == true, \"Challenge not yet resolved\");\n\n    uint voterTokens = getNumChallengeTokens(msg.sender, _challengeID, _salt);\n    uint reward = voterReward(msg.sender, _challengeID, _salt);\n\n    // Subtracts the voter's information to preserve the participation ratios\n    // of other voters compared to the remaining pool of rewards\n    challenges[_challengeID].totalTokens = challenges[_challengeID].totalTokens.sub(voterTokens);\n    challenges[_challengeID].rewardPool = challenges[_challengeID].rewardPool.sub(reward);\n\n    // Ensures a voter cannot claim tokens again\n    challenges[_challengeID].tokenClaims[msg.sender] = true;\n\n    require(token.transfer(msg.sender, reward), \"Token transfer failed\");\n\n    emit _RewardClaimed(_challengeID, reward, msg.sender);\n  }\n\n  /**\n  @notice gets the number of tokens the voter staked on the winning side of the challenge,\n  or the losing side if the challenge has been overturned\n  @param voter The Voter to check\n  @param challengeID The PLCR pollID of the challenge to check\n  @param salt The salt of a voter's commit hash in the given poll\n  */\n  function getNumChallengeTokens(address voter, uint challengeID, uint salt) internal view returns (uint) {\n    // a challenge is overturned if an appeal for it was granted, but the appeal itself was not overturned\n    bool challengeOverturned = appeals[challengeID].appealGranted && !appeals[challengeID].overturned;\n    if (challengeOverturned) {\n      return civilVoting.getNumLosingTokens(voter, challengeID, salt);\n    } else {\n      return voting.getNumPassingTokens(voter, challengeID, salt);\n    }\n  }\n\n  /**\n  @dev Determines the number of tokens awarded to the winning party in a challenge.\n  @param challengeID The challengeID to determine a reward for\n  */\n  function determineReward(uint challengeID) public view returns (uint) {\n    // a challenge is overturned if an appeal for it was granted, but the appeal itself was not overturned\n    require(!challenges[challengeID].resolved, \"Challenge already resolved\");\n    require(voting.pollEnded(challengeID), \"Poll for challenge has not ended\");\n    bool challengeOverturned = appeals[challengeID].appealGranted && !appeals[challengeID].overturned;\n    // Edge case, nobody voted, give all tokens to the challenger.\n    if (challengeOverturned) {\n      if (civilVoting.getTotalNumberOfTokensForLosingOption(challengeID) == 0) {\n        return 2 * challenges[challengeID].stake;\n      }\n    } else {\n      if (voting.getTotalNumberOfTokensForWinningOption(challengeID) == 0) {\n        return 2 * challenges[challengeID].stake;\n      }\n    }\n\n    return (2 * challenges[challengeID].stake) - challenges[challengeID].rewardPool;\n  }\n\n  /**\n  @notice Calculates the provided voter's token reward for the given poll.\n  @dev differs from implementation in `AddressRegistry` in that it takes into consideration whether an\n  appeal was granted and possible overturned via appeal challenge.\n  @param voter The address of the voter whose reward balance is to be returned\n  @param challengeID The pollID of the challenge a reward balance is being queried for\n  @param salt The salt of the voter's commit hash in the given poll\n  @return The uint indicating the voter's reward\n  */\n  function voterReward(\n    address voter,\n    uint challengeID,\n    uint salt\n  ) public view returns (uint)\n  {\n    Challenge challenge = challenges[challengeID];\n    uint totalTokens = challenge.totalTokens;\n    uint rewardPool = challenge.rewardPool;\n    uint voterTokens = getNumChallengeTokens(voter, challengeID, salt);\n    return (voterTokens.mul(rewardPool)).div(totalTokens);\n  }\n\n  /**\n  @dev Called by updateStatus() if the applicationExpiry date passed without a challenge being made. \n  Called by resolveChallenge() if an application/listing beat a challenge. Differs from base \n  implementation in thatit also clears out challengeID\n  @param listingAddress The listingHash of an application/listingHash to be whitelisted\n  */\n  function whitelistApplication(address listingAddress) internal {\n    super.whitelistApplication(listingAddress);\n    listings[listingAddress].challengeID = 0;\n  }\n\n  /**\n  @notice Updates the state of a listing after a challenge was overtuned via appeal (and no appeal\n  challenge was initiated). If challenge previously failed, transfer reward to original challenger.\n  Otherwise, add reward to listing's unstaked deposit\n  --------\n  Emits `_FailedChallengeOverturned` if original challenge failed.\n  Emits `_SuccessfulChallengeOverturned` if original challenge succeeded.\n  Emits `_ListingRemoved` if original challenge failed and listing was previous whitelisted.\n  Emits `_ApplicationRemoved` if original challenge failed and listing was not previously whitelisted.\n  Emits `_ApplicationWhitelisted` if original challenge succeeded and listing was not previously whitelisted.\n  @param listingAddress Address of listing with a challenge that is to be resolved\n  */\n  function resolveOverturnedChallenge(address listingAddress) private {\n    Listing storage listing = listings[listingAddress];\n    uint challengeID = listing.challengeID;\n    Challenge storage challenge = challenges[challengeID];\n    // Calculates the winner's reward,\n    uint reward = determineReward(challengeID);\n\n    challenge.resolved = true;\n    // Stores the total tokens used for voting by the losing side for reward purposes\n    challenge.totalTokens = civilVoting.getTotalNumberOfTokensForLosingOption(challengeID);\n\n    // challenge is overturned, behavior here is opposite resolveChallenge\n    if (!voting.isPassed(challengeID)) { // original vote failed (challenge succeded), this should whitelist listing\n      whitelistApplication(listingAddress);\n      // Unlock stake so that it can be retrieved by the applicant\n      listing.unstakedDeposit = listing.unstakedDeposit.add(reward);\n\n      emit _SuccessfulChallengeOverturned(listingAddress, challengeID, challenge.rewardPool, challenge.totalTokens);\n    } else { // original vote succeded (challenge failed), this should de-list listing\n      resetListing(listingAddress);\n      // Transfer the reward to the challenger\n      require(token.transfer(challenge.challenger, reward), \"Token transfer failed\");\n\n      emit _FailedChallengeOverturned(listingAddress, challengeID, challenge.rewardPool, challenge.totalTokens);\n    } \n  }\n\n  /**\n  @notice Determines whether a challenge can be resolved for a listing at given address. Throws if no challenge exists.\n  @param listingAddress An address for a listing to check\n  @return True if challenge exists, has not already been resolved, has not had appeal requested, and has passed the request\n  appeal expiry time. False otherwise.\n  */\n  function challengeCanBeResolved(address listingAddress) view public returns (bool canBeResolved) {\n    uint challengeID = listings[listingAddress].challengeID;\n    require(challengeExists(listingAddress), \"Challenge does not exist for listing\");\n    if (challengeRequestAppealExpiries[challengeID] > now) {\n      return false;\n    }\n    return (appeals[challengeID].appealPhaseExpiry == 0);\n  }\n\n  /**\n  @notice Determines whether an appeal can be resolved for a listing at given address. Throws if no challenge exists.\n  @param listingAddress An address for a listing to check\n  @return True if challenge exists, has not already been resolved, has had appeal requested, and has either\n  (1) had an appeal granted and passed the appeal opten to challenge expiry OR (2) has not had an appeal granted and\n  has passed the appeal phase expiry. False otherwise.\n  */\n  function appealCanBeResolved(address listingAddress) view public returns (bool canBeResolved) {\n    uint challengeID = listings[listingAddress].challengeID;\n    Appeal appeal = appeals[challengeID];\n    require(challengeExists(listingAddress), \"Challenge does not exist for listing\");\n    if (appeal.appealPhaseExpiry == 0) {\n      return false;\n    }\n    if (!appeal.appealGranted) {\n      return appeal.appealPhaseExpiry < now;\n    } else {\n      return appeal.appealOpenToChallengeExpiry < now && appeal.appealChallengeID == 0;\n    }\n  }\n\n  /**\n  @notice Determines whether an appeal challenge can be resolved for a listing at given address. Throws if no challenge exists.\n  @param listingAddress An address for a listing to check\n  @return True if appeal challenge exists, has not already been resolved, and the voting phase for the appeal challenge is ended. False otherwise.\n  */\n  function appealChallengeCanBeResolved(address listingAddress) view public returns (bool canBeResolved) {\n    uint challengeID = listings[listingAddress].challengeID;\n    Appeal appeal = appeals[challengeID];\n    require(challengeExists(listingAddress), \"Challenge does not exist for listing\");\n    if (appeal.appealChallengeID == 0) {\n      return false;\n    }\n    return voting.pollEnded(appeal.appealChallengeID);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/ContractAddressRegistry.sol",
    "content": "pragma solidity ^0.4.24;\n\nimport \"./AddressRegistry.sol\";\n\ncontract ContractAddressRegistry is AddressRegistry {\n\n  modifier onlyContract(address contractAddress) {\n    uint size;\n    assembly { size := extcodesize(contractAddress) }\n    require(size > 0, \"Address is not a contract\");\n    _;\n  }\n\n  constructor(address _token, address _voting, address _parameterizer, string _name) public AddressRegistry(_token, _voting, _parameterizer, _name) {\n  }\n\n  // --------------------\n  // PUBLISHER INTERFACE:\n  // --------------------\n\n  /**\n  @notice Allows a user to start an application. Takes tokens from user and sets apply stage end time.\n  --------\n  In order to apply:\n  1) Listing must not currently be whitelisted\n  2) Listing must not currently be in application pahse\n  3) Tokens deposited must be greater than or equal to the minDeposit value from the parameterizer\n  4) Listing Address must point to contract\n  --------\n  Emits `_Application` event if successful\n  @param amount The number of ERC20 tokens a user is willing to potentially stake\n  @param data Extra data relevant to the application. Think IPFS hashes.\n  */\n  function apply(address listingAddress, uint amount, string data) onlyContract(listingAddress) public {\n    super.apply(listingAddress, amount, data);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/Government.sol",
    "content": "pragma solidity ^0.4.24;\nimport \"../interfaces/IGovernment.sol\";\nimport \"../installed_contracts/PLCRVoting.sol\";\nimport \"../zeppelin-solidity/math/SafeMath.sol\";\n\n/**\n@title Government\n@notice The Government contract keeps track of parameters related to the CivilTCR appeals process.\n@dev These parameters are kept in a mapping, similar to that of the Parameterizer, in order to save on gas\ncost of deployment (specifically to minimize the size of the IGovernment interface)\n@author Nick Reynolds - nick@joincivil.com\n*/\ncontract Government is IGovernment {\n  event _AppellateSet(address newAppellate);\n  event _ParameterSet(string name, uint value);\n  event _GovtReparameterizationProposal(string name, uint value, bytes32 propID, uint pollID);\n  event _ProposalPassed(bytes32 propId, uint pollID);\n  event _ProposalExpired(bytes32 propId, uint pollID);\n  event _ProposalFailed(bytes32 propId, uint pollID);\n  event _NewConstSet(bytes32 proposedHash, string proposedURI);\n\n  modifier onlyGovernmentController {\n    require(msg.sender == governmentController, \"Sender is not Government Controller\");\n    _;\n  }\n\n  modifier onlyAppellate {\n    require(msg.sender == appellate, \"Sender is not Appellate\");\n    _;\n  }\n\n  using SafeMath for uint;\n\n  struct GovtParamProposal {\n    uint pollID;\n    string name;\n    uint processBy;\n    uint value;\n  }\n\n  address public appellate;\n  address public governmentController;\n  bytes32 public constitutionHash;\n  string public constitutionURI;\n  mapping(bytes32 => uint) public params;\n  mapping(bytes32 => GovtParamProposal) public proposals;\n\n  // Global Variables\n  PLCRVoting public voting;\n  // solium-disable-next-line\n  uint public PROCESSBY = 604800; // 7 days\n\n  /**\n  @param appellateAddr address of entity that will be the Appellate\n  @param governmentControllerAddr address of entity that will be the Government Controller\n  */\n  function Government(\n    address appellateAddr,\n    address governmentControllerAddr,\n    address plcrAddr,\n    uint appealFeeAmount,\n    uint requestAppealLength,\n    uint judgeAppealLength,\n    uint appealSupermajorityPercentage,\n    uint appealChallengeVoteDispensationPct,\n    uint pDeposit,\n    uint pCommitStageLength,\n    uint pRevealStageLength,\n    bytes32 constHash,\n    string constURI\n  ) public\n  {\n    require(appellateAddr != 0, \"appellateAddr address is 0\");\n    require(governmentControllerAddr != 0, \"governmentControllerAddr is 0\");\n    appellate = appellateAddr;\n    governmentController = governmentControllerAddr;\n    voting = PLCRVoting(plcrAddr);\n    set(\"requestAppealLen\", requestAppealLength);\n    set(\"judgeAppealLen\", judgeAppealLength);\n    set(\"appealFee\", appealFeeAmount);\n    set(\"appealVotePercentage\", appealSupermajorityPercentage);\n    set(\"appealChallengeVoteDispensationPct\", appealChallengeVoteDispensationPct);\n    set(\"govtPCommitStageLen\", pCommitStageLength);\n    set(\"govtPRevealStageLen\", pRevealStageLength);\n    \n    constitutionHash = constHash;\n    constitutionURI = constURI;\n  }\n\n  /**\n  @notice Returns the address of the entity that acts as an Appellate.\n  The Appellate can modify Appeals parameters (via the `set` function)\n  */\n  function getAppellate() public view returns (address) {\n    return appellate;\n  }\n\n  /**\n  @notice Returns the address of the entity that controls this Government.\n  The Government controller can set the Appellate.\n  */\n  function getGovernmentController() public view returns (address) {\n    return governmentController;\n  }\n\n  /**\n  @notice gets the parameter keyed by the provided name value from the params mapping\n  @param name the key whose value is to be determined\n  */\n  function get(string name) public view returns (uint value) {\n    return params[keccak256(name)];\n  }\n\n  /**\n  @notice propose a reparamaterization of the key _name's value to _value.\n  @param _name the name of the proposed param to be set\n  @param _value the proposed value to set the param to be set\n  */\n  function proposeReparameterization(string _name, uint _value) public onlyAppellate returns (bytes32) {\n    bytes32 propID = keccak256(_name, _value);\n\n    if (keccak256(_name) == keccak256(\"appealVotePercentage\") || keccak256(_name) == keccak256(\"appealChallengeVoteDispensationPct\")) {\n      require(_value <= 100, \"Percentage parameters must be less than or equal to 100\");\n    }\n\n    require(!propExists(propID), \"Proposed reparameterization already exists\"); // Forbid duplicate proposals\n    require(get(_name) != _value, \"Proposed reparameterization would not change parameter value\"); // Forbid NOOP reparameterizations\n\n    //start poll\n    uint pollID = voting.startPoll(\n      get(\"appealVotePercentage\"),\n      get(\"govtPCommitStageLen\"),\n      get(\"govtPRevealStageLen\")\n    );\n    // attach name and value to pollID\n    proposals[propID] = GovtParamProposal({\n      pollID: pollID,\n      name: _name,\n      processBy: now.add(get(\"govtPCommitStageLen\"))\n        .add(get(\"govtPRevealStageLen\"))\n        .add(PROCESSBY),\n      value: _value\n    });\n\n    emit _GovtReparameterizationProposal(_name, _value, propID, pollID);\n    return propID;\n  }\n\n    /**\n  @notice set a new constitution\n  @param _newConstHash the hash of the new constitution\n  @param _newConstURI the URI of the new constitution\n  */\n  function setNewConstitution(bytes32 _newConstHash, string _newConstURI) public onlyAppellate {\n    constitutionHash = _newConstHash;\n    constitutionURI = _newConstURI;\n    emit _NewConstSet(_newConstHash, _newConstURI);\n  }\n\n  /**\n  @notice for the provided proposal ID, set it, resolve its vote, or delete it depending on whether it can be set, has a vote which can be resolved, or if its \"process by\" date has passed\n  @param _propID the proposal ID to make a determination and state transition for\n  */\n  function processProposal(bytes32 _propID) public {\n    if (propCanBeResolved(_propID)) {\n      resolveProposal(_propID);\n    } else {\n      revert();\n    }\n  }\n\n  /**\n  @notice Determines whether a proposal exists for the provided proposal ID\n  @param _propID The proposal ID whose existance is to be determined\n  */\n  function propExists(bytes32 _propID) view public returns (bool) {\n    return proposals[_propID].processBy > 0;\n  }\n\n  /**\n  @dev resolves a proposal for the provided _propID.\n  @param _propID the proposal ID that is to be resolved.\n  */\n  function resolveProposal(bytes32 _propID) private {\n    GovtParamProposal storage prop = proposals[_propID];\n\n    if (voting.isPassed(prop.pollID)) { // The challenge failed\n      if (prop.processBy > now) {\n        set(prop.name, prop.value);\n        emit _ProposalPassed(_propID, prop.pollID);\n      } else {\n        emit _ProposalExpired(_propID, prop.pollID);\n      }\n    } else { // The challenge succeeded or nobody voted\n      emit _ProposalFailed(_propID, prop.pollID);\n    }\n    delete proposals[_propID];\n  }\n\n  /**\n  @notice Determines whether the provided proposal ID can be resolved\n  @param _propID The ID of proposal to inspect\n  */\n  function propCanBeResolved(bytes32 _propID) view public returns (bool) {\n    GovtParamProposal memory prop = proposals[_propID];\n\n    return (prop.pollID > 0 && voting.pollEnded(prop.pollID));\n  }\n\n  /**\n  @notice sets the param keyed by the provided name to the provided value.\n  @param name the name of the param to be set\n  @param value the value to set the param to be set\n  @dev this functionality is separated out from `set` so that we can bypass the `onlyAppellate`\n  modifier when setting initial values in the constructor\n  */\n  function set(string name, uint value) internal {\n    params[keccak256(name)] = value;\n    emit _ParameterSet(name, value);\n  }\n\n  /**\n  @notice sets a new Appellate address (entity that is allowed to grant appeals and modify appeal parameters)\n  @param newAppellate address of entity that will be made the Appellate\n  */\n  function setAppellate(address newAppellate) external onlyGovernmentController {\n    require(newAppellate != 0, \"newAppellate address must not be 0\");\n    appellate = newAppellate;\n    emit _AppellateSet(newAppellate);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/tcr/RestrictedAddressRegistry.sol",
    "content": "pragma solidity ^0.4.24;\n\nimport \"../zeppelin-solidity/ownership/Ownable.sol\";\n\nimport \"./ContractAddressRegistry.sol\";\n\ncontract RestrictedAddressRegistry is ContractAddressRegistry {\n\n  modifier onlyContractOwner(address _contractAddress) {\n    Ownable ownedContract = Ownable(_contractAddress);\n    require(ownedContract.owner() == msg.sender, \"Sender is not owner of contract\");\n    _;\n  }\n\n  constructor(address _token, address _voting, address _parameterizer, string _name) public ContractAddressRegistry(_token, _voting, _parameterizer, _name) {\n  }\n\n  // --------------------\n  // PUBLISHER INTERFACE:\n  // --------------------\n\n  /**\n  @notice Allows a user to start an application. Takes tokens from user and sets apply stage end time.\n  --------\n  In order to apply:\n  1) Listing must not currently be whitelisted\n  2) Listing must not currently be in application pahse\n  3) Tokens deposited must be greater than or equal to the minDeposit value from the parameterizer\n  4) Listing Address must point to owned contract\n  5) Sender of message must be owner of contract at Listing Address\n  --------\n  Emits `_Application` event if successful\n  @param amount The number of ERC20 tokens a user is willing to potentially stake\n  @param data Extra data relevant to the application. Think IPFS hashes.\n  */\n  function apply(address listingAddress, uint amount, string data) onlyContractOwner(listingAddress) public {\n    super.apply(listingAddress, amount, data);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/test/DummyACL.sol",
    "content": "pragma solidity ^0.4.19;\nimport \"../newsroom/ACL.sol\";\n\n\ncontract DummyACL is ACL {\n  string constant public TEST_ROLE = \"testrole\";\n\n  function DummyACL() ACL() public {\n  }\n\n  function addRole(address who, string what) public requireRole(TEST_ROLE) {\n    _addRole(who, what);\n  }\n\n  function removeRole(address who, string what) public requireRole(TEST_ROLE) {\n    _removeRole(who, what);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/test/DummyTokenTelemetry.sol",
    "content": "pragma solidity ^0.4.23;\n\nimport \"../proof-of-use/telemetry/TokenTelemetryI.sol\";\n\ncontract DummyTokenTelemetry is TokenTelemetryI {\n  function onRequestVotingRights(address user, uint tokenAmount) external {\n\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/CVLToken.sol",
    "content": "pragma solidity ^0.4.24;\nimport \"./CivilTokenController.sol\";\nimport \"./ERC1404/ERC1404.sol\";\nimport \"../zeppelin-solidity/ownership/Ownable.sol\";\nimport \"../zeppelin-solidity/token/ERC20/ERC20.sol\";\nimport \"../zeppelin-solidity/token/ERC20/ERC20Detailed.sol\";\n\n/// @title Extendable reference implementation for the ERC-1404 token\n/// @dev Inherit from this contract to implement your own ERC-1404 token\ncontract CVLToken is ERC20, ERC20Detailed, Ownable, ERC1404 {\n\n  ERC1404 public controller;\n\n  constructor (uint256 _initialAmount,\n    string _tokenName,\n    uint8 _decimalUnits,\n    string _tokenSymbol,\n    ERC1404 _controller \n    ) public ERC20Detailed(_tokenName, _tokenSymbol, _decimalUnits) {\n    require(address(_controller) != address(0), \"controller not provided\");\n    controller = _controller;\n    _mint(msg.sender, _initialAmount);              // Give the creator all initial tokens\n  }\n\n  modifier onlyOwner () {\n    require(msg.sender == owner, \"not owner\");\n    _;\n  }\n\n  function changeController(ERC1404 _controller) public onlyOwner {\n    require(address(_controller) != address(0), \"controller not provided\");\n    controller = _controller;\n  }\n\n  modifier notRestricted (address from, address to, uint256 value) {\n    require(controller.detectTransferRestriction(from, to, value) == 0, \"token transfer restricted\");\n    _;\n  }\n\n  function transfer (address to, uint256 value)\n      public\n      notRestricted(msg.sender, to, value)\n      returns (bool success)\n  {\n    success = super.transfer(to, value);\n  }\n\n  function transferFrom (address from, address to, uint256 value)\n      public\n      notRestricted(from, to, value)\n      returns (bool success)\n  {\n    success = super.transferFrom(from, to, value);\n  }\n\n  function detectTransferRestriction (address from, address to, uint256 value) public view returns (uint8) {\n    return controller.detectTransferRestriction(from, to, value);\n  }\n\n  function messageForTransferRestriction (uint8 restrictionCode) public view returns (string) {\n    return controller.messageForTransferRestriction(restrictionCode);\n  }\n\n\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/CivilTokenController.sol",
    "content": "pragma solidity ^0.4.24;\nimport \"./ManagedWhitelist.sol\";\nimport \"./ERC1404/ERC1404.sol\";\nimport \"./ERC1404/MessagesAndCodes.sol\";\nimport \"../newsroom/NewsroomFactory.sol\";\nimport \"../proof-of-use/telemetry/TokenTelemetryI.sol\";\n\ncontract CivilTokenController is ManagedWhitelist, ERC1404, TokenTelemetryI {\n  using MessagesAndCodes for MessagesAndCodes.Data;\n  MessagesAndCodes.Data internal messagesAndCodes;\n\n  uint8 public constant SUCCESS_CODE = 0;\n  string public constant SUCCESS_MESSAGE = \"SUCCESS\";\n\n  uint8 public constant MUST_BE_A_CIVILIAN_CODE = 1;\n  string public constant MUST_BE_A_CIVILIAN_ERROR = \"MUST_BE_A_CIVILIAN\";\n\n  uint8 public constant MUST_BE_UNLOCKED_CODE = 2;\n  string public constant MUST_BE_UNLOCKED_ERROR = \"MUST_BE_UNLOCKED\";\n\n  uint8 public constant MUST_BE_VERIFIED_CODE = 3;\n  string public constant MUST_BE_VERIFIED_ERROR = \"MUST_BE_VERIFIED\";\n\n  constructor () public {\n    messagesAndCodes.addMessage(SUCCESS_CODE, SUCCESS_MESSAGE);\n    messagesAndCodes.addMessage(MUST_BE_A_CIVILIAN_CODE, MUST_BE_A_CIVILIAN_ERROR);\n    messagesAndCodes.addMessage(MUST_BE_UNLOCKED_CODE, MUST_BE_UNLOCKED_ERROR);\n    messagesAndCodes.addMessage(MUST_BE_VERIFIED_CODE, MUST_BE_VERIFIED_ERROR);\n\n  }\n\n  function detectTransferRestriction (address from, address to, uint value)\n      public\n      view\n      returns (uint8)\n  {\n    // FROM is core or users that have proved use\n    if (coreList[from] || unlockedList[from]) {\n      return SUCCESS_CODE;\n    } else if (storefrontList[from]) { // FROM is a storefront wallet\n      // allow if this is going to a verified user or a core address\n      if (verifiedList[to] || coreList[to]) {\n        return SUCCESS_CODE;\n      } else {\n        // Storefront cannot transfer to wallets that have not been KYCed\n        return MUST_BE_VERIFIED_CODE;\n      }\n    } else if (newsroomMultisigList[from]) { // FROM is a newsroom multisig\n      // TO is CORE or CIVILIAN\n      if ( coreList[to] || civilianList[to]) {\n        return SUCCESS_CODE;\n      } else {\n        return MUST_BE_UNLOCKED_CODE;\n      }\n    } else if (civilianList[from]) { // FROM is a civilian\n      // FROM is sending TO a core address or a newsroom\n      if (coreList[to] || newsroomMultisigList[to]) {\n        return SUCCESS_CODE;\n      } else {\n        // otherwise fail\n        return MUST_BE_UNLOCKED_CODE;\n      }\n    } else {\n      // reject if FROM is not a civilian\n      return MUST_BE_A_CIVILIAN_CODE;\n    }\n  }\n\n  function messageForTransferRestriction (uint8 restrictionCode)\n    public\n    view\n    returns (string message)\n  {\n    message = messagesAndCodes.messages[restrictionCode];\n  }\n\n  function onRequestVotingRights(address user, uint tokenAmount) external {\n    addToUnlocked(user);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/ERC1404/ERC1404.sol",
    "content": "pragma solidity ^0.4.24;\n\ncontract ERC1404 {\n  /// @notice Detects if a transfer will be reverted and if so returns an appropriate reference code\n  /// @param from Sending address\n  /// @param to Receiving address\n  /// @param value Amount of tokens being transferred\n  /// @return Code by which to reference message for rejection reasoning\n  /// @dev Overwrite with your custom transfer restriction logic\n  function detectTransferRestriction (address from, address to, uint256 value) public view returns (uint8);\n\n  /// @notice Returns a human-readable message for a given restriction code\n  /// @param restrictionCode Identifier for looking up a message\n  /// @return Text showing the restriction's reasoning\n  /// @dev Overwrite with your custom message and restrictionCode handling\n  function messageForTransferRestriction (uint8 restrictionCode) public view returns (string);\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/ERC1404/MessagesAndCodes.sol",
    "content": "pragma solidity ^0.4.24;\n\nlibrary MessagesAndCodes {\n  string public constant EMPTY_MESSAGE_ERROR = \"Message cannot be empty string\";\n  string public constant CODE_RESERVED_ERROR = \"Given code is already pointing to a message\";\n  string public constant CODE_UNASSIGNED_ERROR = \"Given code does not point to a message\";\n\n  struct Data {\n    mapping (uint8 => string) messages;\n    uint8[] codes;\n  }\n\n  function messageIsEmpty (string _message)\n      internal\n      pure\n      returns (bool isEmpty)\n  {\n    isEmpty = bytes(_message).length == 0;\n  }\n\n  function messageExists (Data storage self, uint8 _code)\n      internal\n      view\n      returns (bool exists)\n  {\n    exists = bytes(self.messages[_code]).length > 0;\n  }\n\n  function addMessage (Data storage self, uint8 _code, string _message)\n      public\n      returns (uint8 code)\n  {\n    require(!messageIsEmpty(_message), EMPTY_MESSAGE_ERROR);\n    require(!messageExists(self, _code), CODE_RESERVED_ERROR);\n\n    // enter message at code and push code onto storage\n    self.messages[_code] = _message;\n    self.codes.push(_code);\n    code = _code;\n  }\n\n  function autoAddMessage (Data storage self, string _message)\n      public\n      returns (uint8 code)\n  {\n    require(!messageIsEmpty(_message), EMPTY_MESSAGE_ERROR);\n\n    // find next available code to store the message at\n    code = 0;\n    while (messageExists(self, code)) {\n      code++;\n    }\n\n    // add message at the auto-generated code\n    addMessage(self, code, _message);\n  }\n\n  function removeMessage (Data storage self, uint8 _code)\n      public\n      returns (uint8 code)\n  {\n    require(messageExists(self, _code), CODE_UNASSIGNED_ERROR);\n\n    // find index of code\n    uint8 indexOfCode = 0;\n    while (self.codes[indexOfCode] != _code) {\n      indexOfCode++;\n    }\n\n    // remove code from storage by shifting codes in array\n    for (uint8 i = indexOfCode; i < self.codes.length - 1; i++) {\n      self.codes[i] = self.codes[i + 1];\n    }\n    self.codes.length--;\n\n    // remove message from storage\n    self.messages[_code] = \"\";\n    code = _code;\n  }\n\n  function updateMessage (Data storage self, uint8 _code, string _message)\n      public\n      returns (uint8 code)\n  {\n    require(!messageIsEmpty(_message), EMPTY_MESSAGE_ERROR);\n    require(messageExists(self, _code), CODE_UNASSIGNED_ERROR);\n\n    // update message at code\n    self.messages[_code] = _message;\n    code = _code;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/Managed.sol",
    "content": "pragma solidity ^0.4.24;\nimport \"../zeppelin-solidity/ownership/Ownable.sol\";\n\ncontract Managed is Ownable {\n  mapping (address => bool) public managers;\n  \n  modifier onlyManager () {\n    require(isManager(), \"Only managers may perform this action\");\n    _;\n  }\n\n  modifier onlyManagerOrOwner () {\n    require(\n      checkManagerStatus(msg.sender) || msg.sender == owner,\n      \"Only managers or owners may perform this action\"\n    );\n    _;\n  }\n\n  function checkManagerStatus (address managerAddress) public view returns (bool) {\n    return managers[managerAddress];\n  }\n\n  function isManager () public view returns (bool) {\n    return checkManagerStatus(msg.sender);\n  }\n\n  function addManager (address managerAddress) public onlyOwner {\n    managers[managerAddress] = true;\n  }\n\n  function removeManager (address managerAddress) public onlyOwner {\n    managers[managerAddress] = false;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/ManagedWhitelist.sol",
    "content": "pragma solidity ^0.4.24;\nimport \"./Managed.sol\";\n\ncontract ManagedWhitelist is Managed {\n  // CORE - addresses that are controller by Civil Foundation, Civil Media, or Civil Newsrooms\n  mapping (address => bool) public coreList;\n  // CIVILIAN - addresses that have completed the tutorial\n  mapping (address => bool) public civilianList;\n  // UNLOCKED - addresses that have completed \"proof of use\" requirements\n  mapping (address => bool) public unlockedList;\n  // VERIFIED - addresses that have completed KYC verification\n  mapping (address => bool) public verifiedList;\n  // STOREFRONT - addresses that will sell tokens on behalf of the Civil Foundation. these addresses can only transfer to VERIFIED users\n  mapping (address => bool) public storefrontList;\n  // NEWSROOM - multisig addresses created by the NewsroomFactory\n  mapping (address => bool) public newsroomMultisigList;\n\n  // addToCore allows a manager to add an address to the CORE list\n  function addToCore (address operator) public onlyManagerOrOwner { \n    coreList[operator] = true; \n  }\n\n  // removeFromCore allows a manager to remove an address frin the CORE list\n  function removeFromCore (address operator) public onlyManagerOrOwner { \n    coreList[operator] = false; \n  } \n\n  // addToCivilians allows a manager to add an address to the CORE list\n  function addToCivilians (address operator) public onlyManagerOrOwner { \n    civilianList[operator] = true; \n  } \n\n  // removeFromCivilians allows a manager to remove an address from the CORE list\n  function removeFromCivilians (address operator) public onlyManagerOrOwner { \n    civilianList[operator] = false; \n  } \n  // addToUnlocked allows a manager to add an address to the UNLOCKED list\n  function addToUnlocked (address operator) public onlyManagerOrOwner { \n    unlockedList[operator] = true; \n  } \n\n  // removeFromUnlocked allows a manager to remove an address from the UNLOCKED list\n  function removeFromUnlocked (address operator) public onlyManagerOrOwner { \n    unlockedList[operator] = false; \n  } \n\n  // addToVerified allows a manager to add an address to the VERIFIED list\n  function addToVerified (address operator) public onlyManagerOrOwner { \n    verifiedList[operator] = true; \n  } \n  // removeFromVerified allows a manager to remove an address from the VERIFIED list\n  function removeFromVerified (address operator) public onlyManagerOrOwner { \n    verifiedList[operator] = false; \n  } \n\n  // addToStorefront allows a manager to add an address to the STOREFRONT list\n  function addToStorefront (address operator) public onlyManagerOrOwner { \n    storefrontList[operator] = true; \n  } \n  // removeFromStorefront allows a manager to remove an address from the STOREFRONT list\n  function removeFromStorefront (address operator) public onlyManagerOrOwner { \n    storefrontList[operator] = false; \n  }\n\n  // addToNewsroomMultisigs allows a manager to remove an address from the STOREFRONT list\n  function addToNewsroomMultisigs (address operator) public onlyManagerOrOwner {\n    newsroomMultisigList[operator] = true;\n  }\n  // removeFromNewsroomMultisigs allows a manager to remove an address from the STOREFRONT list\n  function removeFromNewsroomMultisigs (address operator) public onlyManagerOrOwner {\n    newsroomMultisigList[operator] = false;\n  }\n\n  function checkProofOfUse (address operator) public {\n\n  }\n\n}\n"
  },
  {
    "path": "packages/contracts/contracts/token/NoOpTokenController.sol",
    "content": "pragma solidity ^0.4.24;\nimport \"./ManagedWhitelist.sol\";\nimport \"./ERC1404/ERC1404.sol\";\n\ncontract NoOpTokenController is ERC1404 {\n  uint8 public constant SUCCESS_CODE = 0;\n  string public constant SUCCESS_MESSAGE = \"SUCCESS\";\n  \n  function detectTransferRestriction (address from, address to, uint value)\n      public\n      view\n      returns (uint8)\n  {\n    return SUCCESS_CODE; \n  }\n\n  function messageForTransferRestriction (uint8 restrictionCode)\n      public\n      view\n      returns (string)\n  {\n    return SUCCESS_MESSAGE;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/ux/CreateNewsroomInGroup.sol",
    "content": "pragma solidity ^0.4.23;\n\nimport \"../newsroom/NewsroomFactory.sol\";\nimport \"../token/CivilTokenController.sol\";\n\ncontract CreateNewsroomInGroup {\n  NewsroomFactory factory;\n  CivilTokenController controller;\n\n  constructor(NewsroomFactory _factory, CivilTokenController _controller) public {\n    factory = _factory;\n    controller = _controller;\n  }\n\n  function create(string name, string charterUri, bytes32 charterHash, address[] initialOwners, uint initialRequired)\n    public\n    returns (Newsroom newsroom)\n  {\n    require(initialOwners.length > 0, \"initialOwners must have at least one member\");\n\n    newsroom = factory.create(name, charterUri, charterHash, initialOwners, initialRequired);\n\n    // Multisig\n    controller.addToNewsroomMultisigs(newsroom.owner());\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/ECRecovery.sol",
    "content": "pragma solidity ^0.4.24;\n\n\n/**\n * @title Elliptic curve signature operations\n * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d\n * TODO Remove this library once solidity supports passing a signature to ecrecover.\n * See https://github.com/ethereum/solidity/issues/864\n */\n\nlibrary ECRecovery {\n\n  /**\n   * @dev Recover signer address from a message by using their signature\n   * @param _hash bytes32 message, the hash is the signed message. What is recovered is the signer address.\n   * @param _sig bytes signature, the signature is generated using web3.eth.sign()\n   */\n  function recover(bytes32 _hash, bytes _sig)\n    internal\n    pure\n    returns (address)\n  {\n    bytes32 r;\n    bytes32 s;\n    uint8 v;\n\n    // Check the signature length\n    if (_sig.length != 65) {\n      return (address(0));\n    }\n\n    // Divide the signature in r, s and v variables\n    // ecrecover takes the signature parameters, and the only way to get them\n    // currently is to use assembly.\n    // solium-disable-next-line security/no-inline-assembly\n    assembly {\n      r := mload(add(_sig, 32))\n      s := mload(add(_sig, 64))\n      v := byte(0, mload(add(_sig, 96)))\n    }\n\n    // Version of signature should be 27 or 28, but 0 and 1 are also possible versions\n    if (v < 27) {\n      v += 27;\n    }\n\n    // If the version is correct return the signer address\n    if (v != 27 && v != 28) {\n      return (address(0));\n    } else {\n      // solium-disable-next-line arg-overflow\n      return ecrecover(_hash, v, r, s);\n    }\n  }\n\n  /**\n   * toEthSignedMessageHash\n   * @dev prefix a bytes32 value with \"\\x19Ethereum Signed Message:\"\n   * and hash the result\n   */\n  function toEthSignedMessageHash(bytes32 _hash)\n    internal\n    pure\n    returns (bytes32)\n  {\n    // 32 is the length in bytes of hash,\n    // enforced by the type signature above\n    return keccak256(\n      abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash)\n    );\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/README.md",
    "content": "Using release v1.12.0\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/access/Whitelist.sol",
    "content": "pragma solidity ^0.4.24;\n\n\nimport \"../ownership/Ownable.sol\";\nimport \"../access/rbac/RBAC.sol\";\n\n\n/**\n * @title Whitelist\n * @dev The Whitelist contract has a whitelist of addresses, and provides basic authorization control functions.\n * This simplifies the implementation of \"user permissions\".\n */\ncontract Whitelist is Ownable, RBAC {\n  string public constant ROLE_WHITELISTED = \"whitelist\";\n\n  /**\n   * @dev Throws if operator is not whitelisted.\n   * @param _operator address\n   */\n  modifier onlyIfWhitelisted(address _operator) {\n    checkRole(_operator, ROLE_WHITELISTED);\n    _;\n  }\n\n  /**\n   * @dev add an address to the whitelist\n   * @param _operator address\n   * @return true if the address was added to the whitelist, false if the address was already in the whitelist\n   */\n  function addAddressToWhitelist(address _operator)\n    public\n    onlyOwner\n  {\n    addRole(_operator, ROLE_WHITELISTED);\n  }\n\n  /**\n   * @dev getter to determine if address is in whitelist\n   */\n  function whitelist(address _operator)\n    public\n    view\n    returns (bool)\n  {\n    return hasRole(_operator, ROLE_WHITELISTED);\n  }\n\n  /**\n   * @dev add addresses to the whitelist\n   * @param _operators addresses\n   * @return true if at least one address was added to the whitelist,\n   * false if all addresses were already in the whitelist\n   */\n  function addAddressesToWhitelist(address[] _operators)\n    public\n    onlyOwner\n  {\n    for (uint256 i = 0; i < _operators.length; i++) {\n      addAddressToWhitelist(_operators[i]);\n    }\n  }\n\n  /**\n   * @dev remove an address from the whitelist\n   * @param _operator address\n   * @return true if the address was removed from the whitelist,\n   * false if the address wasn't in the whitelist in the first place\n   */\n  function removeAddressFromWhitelist(address _operator)\n    public\n    onlyOwner\n  {\n    removeRole(_operator, ROLE_WHITELISTED);\n  }\n\n  /**\n   * @dev remove addresses from the whitelist\n   * @param _operators addresses\n   * @return true if at least one address was removed from the whitelist,\n   * false if all addresses weren't in the whitelist in the first place\n   */\n  function removeAddressesFromWhitelist(address[] _operators)\n    public\n    onlyOwner\n  {\n    for (uint256 i = 0; i < _operators.length; i++) {\n      removeAddressFromWhitelist(_operators[i]);\n    }\n  }\n\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/access/rbac/RBAC.sol",
    "content": "pragma solidity ^0.4.24;\n\nimport \"./Roles.sol\";\n\n\n/**\n * @title RBAC (Role-Based Access Control)\n * @author Matt Condon (@Shrugs)\n * @dev Stores and provides setters and getters for roles and addresses.\n * Supports unlimited numbers of roles and addresses.\n * See //contracts/mocks/RBACMock.sol for an example of usage.\n * This RBAC method uses strings to key roles. It may be beneficial\n * for you to write your own implementation of this interface using Enums or similar.\n */\ncontract RBAC {\n  using Roles for Roles.Role;\n\n  mapping (string => Roles.Role) private roles;\n\n  event RoleAdded(address indexed operator, string role);\n  event RoleRemoved(address indexed operator, string role);\n\n  /**\n   * @dev reverts if addr does not have role\n   * @param _operator address\n   * @param _role the name of the role\n   * // reverts\n   */\n  function checkRole(address _operator, string _role)\n    public\n    view\n  {\n    roles[_role].check(_operator);\n  }\n\n  /**\n   * @dev determine if addr has role\n   * @param _operator address\n   * @param _role the name of the role\n   * @return bool\n   */\n  function hasRole(address _operator, string _role)\n    public\n    view\n    returns (bool)\n  {\n    return roles[_role].has(_operator);\n  }\n\n  /**\n   * @dev add a role to an address\n   * @param _operator address\n   * @param _role the name of the role\n   */\n  function addRole(address _operator, string _role)\n    internal\n  {\n    roles[_role].add(_operator);\n    emit RoleAdded(_operator, _role);\n  }\n\n  /**\n   * @dev remove a role from an address\n   * @param _operator address\n   * @param _role the name of the role\n   */\n  function removeRole(address _operator, string _role)\n    internal\n  {\n    roles[_role].remove(_operator);\n    emit RoleRemoved(_operator, _role);\n  }\n\n  /**\n   * @dev modifier to scope access to a single role (uses msg.sender as addr)\n   * @param _role the name of the role\n   * // reverts\n   */\n  modifier onlyRole(string _role)\n  {\n    checkRole(msg.sender, _role);\n    _;\n  }\n\n  /**\n   * @dev modifier to scope access to a set of roles (uses msg.sender as addr)\n   * @param _roles the names of the roles to scope access to\n   * // reverts\n   *\n   * @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this\n   *  see: https://github.com/ethereum/solidity/issues/2467\n   */\n  // modifier onlyRoles(string[] _roles) {\n  //     bool hasAnyRole = false;\n  //     for (uint8 i = 0; i < _roles.length; i++) {\n  //         if (hasRole(msg.sender, _roles[i])) {\n  //             hasAnyRole = true;\n  //             break;\n  //         }\n  //     }\n\n  //     require(hasAnyRole);\n\n  //     _;\n  // }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/access/rbac/Roles.sol",
    "content": "pragma solidity ^0.4.24;\n\n\n/**\n * @title Roles\n * @author Francisco Giordano (@frangio)\n * @dev Library for managing addresses assigned to a Role.\n * See RBAC.sol for example usage.\n */\nlibrary Roles {\n  struct Role {\n    mapping (address => bool) bearer;\n  }\n\n  /**\n   * @dev give an address access to this role\n   */\n  function add(Role storage _role, address _addr)\n    internal\n  {\n    _role.bearer[_addr] = true;\n  }\n\n  /**\n   * @dev remove an address' access to this role\n   */\n  function remove(Role storage _role, address _addr)\n    internal\n  {\n    _role.bearer[_addr] = false;\n  }\n\n  /**\n   * @dev check if an address has this role\n   * // reverts\n   */\n  function check(Role storage _role, address _addr)\n    internal\n    view\n  {\n    require(has(_role, _addr));\n  }\n\n  /**\n   * @dev check if an address has this role\n   * @return bool\n   */\n  function has(Role storage _role, address _addr)\n    internal\n    view\n    returns (bool)\n  {\n    return _role.bearer[_addr];\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/license/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 Smart Contract Solutions, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/math/SafeMath.sol",
    "content": "pragma solidity ^0.4.24;\n\n\n/**\n * @title SafeMath\n * @dev Math operations with safety checks that throw on error\n */\nlibrary SafeMath {\n\n  /**\n  * @dev Multiplies two numbers, throws on overflow.\n  */\n  function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {\n    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the\n    // benefit is lost if 'b' is also tested.\n    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n    if (_a == 0) {\n      return 0;\n    }\n\n    c = _a * _b;\n    assert(c / _a == _b);\n    return c;\n  }\n\n  /**\n  * @dev Integer division of two numbers, truncating the quotient.\n  */\n  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {\n    // assert(_b > 0); // Solidity automatically throws when dividing by 0\n    // uint256 c = _a / _b;\n    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold\n    return _a / _b;\n  }\n\n  /**\n  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).\n  */\n  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {\n    assert(_b <= _a);\n    return _a - _b;\n  }\n\n  /**\n  * @dev Adds two numbers, throws on overflow.\n  */\n  function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) {\n    c = _a + _b;\n    assert(c >= _a);\n    return c;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/ownership/Ownable.sol",
    "content": "pragma solidity ^0.4.24;\n\n\n/**\n * @title Ownable\n * @dev The Ownable contract has an owner address, and provides basic authorization control\n * functions, this simplifies the implementation of \"user permissions\".\n */\ncontract Ownable {\n  address public owner;\n\n\n  event OwnershipRenounced(address indexed previousOwner);\n  event OwnershipTransferred(\n    address indexed previousOwner,\n    address indexed newOwner\n  );\n\n\n  /**\n   * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n   * account.\n   */\n  constructor() public {\n    owner = msg.sender;\n  }\n\n  /**\n   * @dev Throws if called by any account other than the owner.\n   */\n  modifier onlyOwner() {\n    require(msg.sender == owner);\n    _;\n  }\n\n  /**\n   * @dev Allows the current owner to relinquish control of the contract.\n   * @notice Renouncing to ownership will leave the contract without an owner.\n   * It will not be possible to call the functions with the `onlyOwner`\n   * modifier anymore.\n   */\n  function renounceOwnership() public onlyOwner {\n    emit OwnershipRenounced(owner);\n    owner = address(0);\n  }\n\n  /**\n   * @dev Allows the current owner to transfer control of the contract to a newOwner.\n   * @param _newOwner The address to transfer ownership to.\n   */\n  function transferOwnership(address _newOwner) public onlyOwner {\n    _transferOwnership(_newOwner);\n  }\n\n  /**\n   * @dev Transfers control of the contract to a newOwner.\n   * @param _newOwner The address to transfer ownership to.\n   */\n  function _transferOwnership(address _newOwner) internal {\n    require(_newOwner != address(0));\n    emit OwnershipTransferred(owner, _newOwner);\n    owner = _newOwner;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/token/ERC20/ERC20.sol",
    "content": "pragma solidity ^0.4.24;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @title Standard ERC20 token\n *\n * @dev Implementation of the basic standard token.\n * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\n * Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n */\ncontract ERC20 is IERC20 {\n  using SafeMath for uint256;\n\n  mapping (address => uint256) private _balances;\n\n  mapping (address => mapping (address => uint256)) private _allowed;\n\n  uint256 private _totalSupply;\n\n  /**\n  * @dev Total number of tokens in existence\n  */\n  function totalSupply() public view returns (uint256) {\n    return _totalSupply;\n  }\n\n  /**\n  * @dev Gets the balance of the specified address.\n  * @param owner The address to query the balance of.\n  * @return An uint256 representing the amount owned by the passed address.\n  */\n  function balanceOf(address owner) public view returns (uint256) {\n    return _balances[owner];\n  }\n\n  /**\n    * @dev Function to check the amount of tokens that an owner allowed to a spender.\n    * @param owner address The address which owns the funds.\n    * @param spender address The address which will spend the funds.\n    * @return A uint256 specifying the amount of tokens still available for the spender.\n    */\n  function allowance(address owner, address spender) public view returns (uint256) {\n    return _allowed[owner][spender];\n  }\n\n  /**\n  * @dev Transfer token for a specified address\n  * @param to The address to transfer to.\n  * @param value The amount to be transferred.\n  */\n  function transfer(address to, uint256 value) public returns (bool) {\n    _transfer(msg.sender, to, value);\n    return true;\n  }\n\n  /**\n    * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n    * Beware that changing an allowance with this method brings the risk that someone may use both the old\n    * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n    * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n    * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n    * @param spender The address which will spend the funds.\n    * @param value The amount of tokens to be spent.\n    */\n  function approve(address spender, uint256 value) public returns (bool) {\n    require(spender != address(0));\n\n    _allowed[msg.sender][spender] = value;\n    emit Approval(msg.sender, spender, value);\n    return true;\n  }\n\n  /**\n    * @dev Transfer tokens from one address to another\n    * @param from address The address which you want to send tokens from\n    * @param to address The address which you want to transfer to\n    * @param value uint256 the amount of tokens to be transferred\n    */\n  function transferFrom(address from, address to, uint256 value) public returns (bool) {\n    _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);\n    _transfer(from, to, value);\n    return true;\n  }\n\n  /**\n    * @dev Increase the amount of tokens that an owner allowed to a spender.\n    * approve should be called when allowed_[_spender] == 0. To increment\n    * allowed value is better to use this function to avoid 2 calls (and wait until\n    * the first transaction is mined)\n    * From MonolithDAO Token.sol\n    * @param spender The address which will spend the funds.\n    * @param addedValue The amount of tokens to increase the allowance by.\n    */\n  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n    require(spender != address(0));\n\n    _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue);\n    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);\n    return true;\n  }\n\n  /**\n    * @dev Decrease the amount of tokens that an owner allowed to a spender.\n    * approve should be called when allowed_[_spender] == 0. To decrement\n    * allowed value is better to use this function to avoid 2 calls (and wait until\n    * the first transaction is mined)\n    * From MonolithDAO Token.sol\n    * @param spender The address which will spend the funds.\n    * @param subtractedValue The amount of tokens to decrease the allowance by.\n    */\n  function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n    require(spender != address(0));\n\n    _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue);\n    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);\n    return true;\n  }\n\n  /**\n  * @dev Transfer token for a specified addresses\n  * @param from The address to transfer from.\n  * @param to The address to transfer to.\n  * @param value The amount to be transferred.\n  */\n  function _transfer(address from, address to, uint256 value) internal {\n    require(to != address(0));\n\n    _balances[from] = _balances[from].sub(value);\n    _balances[to] = _balances[to].add(value);\n    emit Transfer(from, to, value);\n  }\n\n  /**\n    * @dev Internal function that mints an amount of the token and assigns it to\n    * an account. This encapsulates the modification of balances such that the\n    * proper events are emitted.\n    * @param account The account that will receive the created tokens.\n    * @param value The amount that will be created.\n    */\n  function _mint(address account, uint256 value) internal {\n    require(account != address(0));\n\n    _totalSupply = _totalSupply.add(value);\n    _balances[account] = _balances[account].add(value);\n    emit Transfer(address(0), account, value);\n  }\n\n  /**\n    * @dev Internal function that burns an amount of the token of a given\n    * account.\n    * @param account The account whose tokens will be burnt.\n    * @param value The amount that will be burnt.\n    */\n  function _burn(address account, uint256 value) internal {\n    require(account != address(0));\n\n    _totalSupply = _totalSupply.sub(value);\n    _balances[account] = _balances[account].sub(value);\n    emit Transfer(account, address(0), value);\n  }\n\n  /**\n    * @dev Internal function that burns an amount of the token of a given\n    * account, deducting from the sender's allowance for said account. Uses the\n    * internal burn function.\n    * @param account The account whose tokens will be burnt.\n    * @param value The amount that will be burnt.\n    */\n  function _burnFrom(address account, uint256 value) internal {\n    // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,\n    // this function needs to emit an event with the updated approval.\n    _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);\n    _burn(account, value);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/token/ERC20/ERC20Detailed.sol",
    "content": "pragma solidity ^0.4.24;\n\nimport \"./IERC20.sol\";\n\n/**\n * @title ERC20Detailed token\n * @dev The decimals are only for visualization purposes.\n * All the operations are done using the smallest and indivisible token unit,\n * just as on Ethereum all the operations are done in wei.\n */\ncontract ERC20Detailed is IERC20 {\n  string private _name;\n  string private _symbol;\n  uint8 private _decimals;\n\n  constructor (string name, string symbol, uint8 decimals) public {\n    _name = name;\n    _symbol = symbol;\n    _decimals = decimals;\n  }\n\n  /**\n    * @return the name of the token.\n    */\n  function name() public view returns (string) {\n    return _name;\n  }\n\n  /**\n    * @return the symbol of the token.\n    */\n  function symbol() public view returns (string) {\n    return _symbol;\n  }\n\n  /**\n    * @return the number of decimals of the token.\n    */\n  function decimals() public view returns (uint8) {\n    return _decimals;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/contracts/zeppelin-solidity/token/ERC20/IERC20.sol",
    "content": "pragma solidity ^0.4.24;\n\n/**\n * @title ERC20 interface\n * @dev see https://github.com/ethereum/EIPs/issues/20\n */\ninterface IERC20 {\n    function totalSupply() external view returns (uint256);\n\n    function balanceOf(address who) external view returns (uint256);\n\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function approve(address spender, uint256 value) external returns (bool);\n\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}"
  },
  {
    "path": "packages/contracts/docs/CivilTCR.md",
    "content": "# Civil Token Curated Registry\n\nThe CivilTCR is a Token Curated Registry based on [Mike Goldin's / AdChain's original implementation](https://github.com/skmgoldin/tcr) with a few modifications:\n\n- Listings are keyed by the address of an owned contract, rather than arbitrary hashes\n- Only the owner of the contract can apply on its behalf\n- After the challenge voting has ended, users can appeal (by staking tokens) to have the appellate entity consider overturning the result of a challenge\n- If the appellate overturns the challenge result, that decision can be challenged by users as well (by matching the deposit in the previous step), which begins another vote that requires a supermajority in favor in order to veto the granted appeal.\n- When a challenge result is overturned (the appellate granted an appeal and the appeal was either not challenged or survived the appeal challenge) the winnings for the challenge go to the original losers (e.g.: a Challenger wins a challenge 61%-39%. The Newsroom appeals the result and the appellate grants the appeal, which goes unchallenged. When the challenge is resolved, the Newsroom receives the challenge reward, with the remainder able to be claimed by the voters who were part of the original 39% minority).\n\nA flow-chart detailing the application/listing lifecycle is included at the bottom of this page.\n\nDocumentation for contracts are generated using `doxity` and can be found at [http://dapp.staging.cvl.pub/contracts](http://dapp.staging.cvl.pub/contracts)\n\n## Voting\n\nOur voting system, controlled by the `CivilPLCRVoting` contract, is a Partial-Lock Commit-Reveal Voting contract based on [Mike Goldin's / ConsenSys' original implementation](https://github.com/ConsenSys/PLCRVoting) with a few modifications required to properly distribute tokens to voters when a challenge vote is overturned by the appellate:\n\n- Added `getNumLosingTokens(address _voter, uint _pollID, uint _salt)` and `getTotalNumberOfTokensForLosingOption(uint _pollID)` since an overturned challenge treats the losers as the winners, and thus these values are needed to properly calculate payouts.\n\nWhen voting within the Civil ecosystem, it's important to know what the vote options mean.\n\nA \"passed\" vote is one in which the percentage of YES (1) votes is greater than the `voteQuorum` for the poll. In the event of a tie, the NO (0) side is considered the winner.\n\n- A vote of YES (1) on a `CHALLENGE` poll means that you \"support the newsroom\" and believe the application/listing should be whitelisted.\n- A vote of NO (0) on a `CHALLENGE` poll means that you \"agree with the challenger\" that the application/listing should be removed.\n- A vote of YES (1) on an `APPEAL CHALLENGE` poll means that you \"agree with the appeal challenger\" that the granted appeal should be overturned.\n- A vote of NO (0) on an `APPEAL CHALLENGE` poll means that you \"agree with the appellate\" and that their decision should stand.\n\n## Parameters\n\nThe parameters used by various aspects of the CivilTCR (e.g. the length of an application) are controlled by the `CivilParameterizer` contract, based on [Mike Goldin's / AdChain's original implementation](https://github.com/skmgoldin/tcr) with 2 very minor modifications:\n\n- Initializing a few additional parameters in the constructor to support the appeal challenge process.\n- Using an array of values to initialize parameters in constructor, rather than individual constructor parameters, because the additional parameters we added were putting us over the limit for a transaction (when added as individual constructor parameters) and the contract couldn't be initialized.\n\n## Government\n\nThe `Government` contracts (which implements `IGovernment`) controls various parameters related to the appeals process, as well as the Appellate entity address. `CivilTCR` maintains an instance of `IGovernment` originally set in the constructor, which can be updated by the \"Government Controller\".\n\nThis contract also maintains a reference to the hash of the current \"Constitution\", the document that is intended to guide participants in the system.\n\nThe `Government` parameters can be updated in a process similar to how the `Parameterizer` functions, except that new values can only be proposed by the appellate.\n\n![tcr diagram](CivilRegistry.png)\n"
  },
  {
    "path": "packages/contracts/docs/Newsroom.md",
    "content": "# Newsroom - Smart-contract allowing for Newsroom-like goverance and content publishing\n\nThe content number 0 is created automatically and it's use is reserved for the Newsroom charter / about page\n\nRoles that are currently supported are:\n\n- \"editor\" -> which can publish content, update revisions and add/remove more editors\n\nTo post cryptographicaly pre-approved content on the Newsroom, the author's signature must be included and\n\"Signed\"-suffix functions used. Here are the steps to generate authors signature:\n\n1.  Take the address of this newsroom and the contentHash as bytes32 and tightly pack them\n2.  Calculate the keccak256 of tightly packed of above\n3.  Take the keccak and prepend it with the standard \"Ethereum signed message\" preffix (see ECRecovery and Ethereum's JSON PRC).\n    a. Note - if you're using Ethereum's node instead of manual private key signing, that message shall be prepended by the Node itself\n4.  Take a keccak256 of that signed messaged\n5.  Verification can be done by using EC recovery algorithm using the authors signature\n\nThe verification can be seen in the internal `verifyRevisionsSignature` function.\nThe signing can be seen in (at)joincivil/utils package, function prepareNewsroomMessage function (and web3.eth.sign() it afterwards)\n"
  },
  {
    "path": "packages/contracts/ethpm.json",
    "content": "{\n  \"package_name\": \"civil_contracts\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Set of contracts for Civil, including Newsroom and TCR\",\n  \"authors\": [\n    \"Nick Reynolds\",\n    \"Olaf Tomalka\",\n    \"Mike Goldin\",\n    \"Isaac Kang\",\n    \"Terry Li\",\n    \"Irene Lin\",\n    \"Cem Ozer\",\n    \"Aspyn Palatnick\",\n    \"Yorke Rhodes\",\n    \"Mira Zeitlin\"\n  ],\n  \"keywords\": [\"newsroom\", \"civil\", \"consensys\", \"plcr\", \"tokens\", \"tcr\"],\n  \"dependencies\": {}\n}\n"
  },
  {
    "path": "packages/contracts/licenses/LICENSE-general",
    "content": "                  GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL.  It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it.  You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n  When we speak of free software, we are referring to freedom of use,\nnot price.  Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n  To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights.  These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library.  Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n  Finally, software patents pose a constant threat to the existence of\nany free program.  We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder.  Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n  Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License.  This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License.  We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n  When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library.  The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom.  The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n  We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License.  It also provides other free software developers Less\nof an advantage over competing non-free programs.  These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries.  However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n  For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard.  To achieve this, non-free programs must be\nallowed to use the library.  A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries.  In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n  In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software.  For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n  Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n                  GNU LESSER GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\f\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n  6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Use a suitable shared library mechanism for linking with the\n    Library.  A suitable mechanism is one that (1) uses at run time a\n    copy of the library already present on the user's computer system,\n    rather than copying library functions into the executable, and (2)\n    will operate properly with a modified version of the library, if\n    the user installs one, as long as the modified version is\n    interface-compatible with the version that the work was made with.\n\n    c) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    d) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    e) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n                            NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/contracts/licenses/LICENSE-tcr",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/contracts/migrations/10_government.ts",
    "content": "import { config } from \"./utils\";\nconst Government = artifacts.require(\"Government\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  deployer.then(async () => {\n    let appellate = accounts[0];\n    let govtController = accounts[0];\n\n    if (config.nets[network]) {\n      if (config.nets[network].AppellateAddress) {\n        appellate = config.nets[network].AppellateAddress;\n      }\n\n      if (config.nets[network].GovernmentControllerAddress) {\n        govtController = config.nets[network].GovernmentControllerAddress;\n      }\n    }\n\n    const parameterizerConfig = config.nets[network].paramDefaults;\n    // const estimate = web3.eth.estimateGas({ data: Government.bytecode });\n    // console.log(\"Government gas cost estimate: \" + estimate);\n\n    await deployer.deploy(\n      Government,\n      appellate,\n      govtController,\n      PLCRVoting.address,\n      parameterizerConfig.appealFeeAmount,\n      parameterizerConfig.requestAppealPhaseLength,\n      parameterizerConfig.judgeAppealPhaseLength,\n      parameterizerConfig.appealSupermajorityPercentage,\n      parameterizerConfig.appealChallengeVoteDispensationPct,\n      0,\n      parameterizerConfig.govtPCommitStageLength,\n      parameterizerConfig.govtPRevealStageLength,\n      parameterizerConfig.constitutionHash,\n      parameterizerConfig.constitutionURI,\n    );\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/11_deploy_ecrecovery.ts",
    "content": "module.exports = (deployer: any, network: string, accounts: string[]) => {\n  const ECRecovery = artifacts.require(\"ECRecovery\");\n  const Newsroom = artifacts.require(\"Newsroom\");\n\n  deployer.then(async () => {\n    await deployer.deploy(ECRecovery);\n    await deployer.link(ECRecovery, Newsroom);\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/12_registry.ts",
    "content": "/* global artifacts */\n\nimport { approveEverything, inTesting } from \"./utils\";\nconst Token = artifacts.require(\"CVLToken\");\nconst DLL = artifacts.require(\"DLL\");\nconst AttributeStore = artifacts.require(\"AttributeStore\");\n\nconst CivilTCR = artifacts.require(\"CivilTCR\");\nconst Parameterizer = artifacts.require(\"CivilParameterizer\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst Government = artifacts.require(\"Government\");\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  deployer.then(async () => {\n    await deployer.link(DLL, CivilTCR);\n    await deployer.link(AttributeStore, CivilTCR);\n\n    const tokenAddress = Token.address;\n\n    // const estimate = web3.eth.estimateGas({ data: CivilTCR.bytecode });\n    // console.log(\"CivilTCR gas cost estimate: \" + estimate);\n\n    await deployer.deploy(CivilTCR, tokenAddress, PLCRVoting.address, Parameterizer.address, Government.address);\n\n    if (inTesting(network)) {\n      await approveEverything(accounts, Token.at(tokenAddress), CivilTCR.address);\n    }\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/14_multisig_factory.ts",
    "content": "module.exports = (deployer: any, network: string, accounts: string[]) => {\n  const MultiSigWalletFactory = artifacts.require(\"MultiSigWalletFactory\");\n\n  deployer.deploy(MultiSigWalletFactory);\n};\n"
  },
  {
    "path": "packages/contracts/migrations/15_newsroom_factory.ts",
    "content": "module.exports = (deployer: any, network: string, accounts: string[]) => {\n  const MultiSigWalletFactory = artifacts.require(\"MultiSigWalletFactory\");\n  const NewsroomFactory = artifacts.require(\"NewsroomFactory\");\n\n  deployer.then(async () => {\n    const multisigWalletFactory = await MultiSigWalletFactory.deployed();\n    await deployer.deploy(NewsroomFactory, multisigWalletFactory.address);\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/16_add_test_listings.ts",
    "content": "import { BN } from \"bn.js\";\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  const Newsroom = artifacts.require(\"Newsroom\");\n  const CivilTCR = artifacts.require(\"CivilTCR\");\n  const Token = artifacts.require(\"CVLToken\");\n\n  deployer.then(async () => {\n    if (network === \"ganache\") {\n      const civilTCR = await CivilTCR.deployed();\n      const token = await Token.deployed();\n\n      await token.approve(civilTCR.address, new BN(\"1000000000000000000000\"), { from: accounts[5] });\n      await token.approve(civilTCR.address, new BN(\"1000000000000000000000\"), { from: accounts[6] });\n\n      const newsroom1 = await Newsroom.new(\"Fake News 1000\", \"http://fakecharter.uri\", web3.utils.sha3(\"test\"), {\n        from: accounts[5],\n      });\n      await civilTCR.apply(newsroom1.address, new BN(\"100000000000000000000\"), \"\", { from: accounts[5] });\n\n      const newsroom2 = await Newsroom.new(\"The Ultra News 2000\", \"https://fakecharter.com\", web3.utils.sha3(\"test\"), {\n        from: accounts[5],\n      });\n      await civilTCR.apply(newsroom2.address, new BN(\"100000000000000000000\"), \"\", { from: accounts[5] });\n      await civilTCR.challenge(newsroom2.address, \"\", { from: accounts[5] });\n    }\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/17_deploy_eventstorage.ts",
    "content": "module.exports = (deployer: any, network: string, accounts: string[]) => {\n  const EventStorage = artifacts.require(\"EventStorage\");\n  deployer.then(async () => {\n    await deployer.deploy(EventStorage);\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/19_create_newsroom_in_group.ts",
    "content": "module.exports = (deployer: any, network: string, accounts: string[]) => {\n  const NewsroomFactory = artifacts.require(\"NewsroomFactory\");\n  const CreateNewsroomInGroup = artifacts.require(\"CreateNewsroomInGroup\");\n  const CivilTokenController = artifacts.require(\"CivilTokenController\");\n\n  deployer.then(async () => {\n    await deployer.deploy(CreateNewsroomInGroup, NewsroomFactory.address, CivilTokenController.address);\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/1_migrations.ts",
    "content": "const Migrations = artifacts.require(\"./Migrations.sol\");\n\nexport = (deployer: any) => {\n  deployer.deploy(Migrations);\n};\n"
  },
  {
    "path": "packages/contracts/migrations/20_government_take2.ts",
    "content": "import { config } from \"./utils\";\nconst Government = artifacts.require(\"Government\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  deployer.then(async () => {\n    console.log(\"deploying government\");\n    let appellate = accounts[0];\n    let govtController = accounts[0];\n\n    if (config.nets[network]) {\n      if (config.nets[network].AppellateAddress) {\n        appellate = config.nets[network].AppellateAddress;\n      }\n\n      if (config.nets[network].GovernmentControllerAddress) {\n        govtController = config.nets[network].GovernmentControllerAddress;\n      }\n    }\n\n    const parameterizerConfig = config.nets[network].paramDefaults;\n    // const estimate = web3.eth.estimateGas({ data: Government.bytecode });\n    // console.log(\"Government gas cost estimate: \" + estimate);\n\n    await deployer.deploy(\n      Government,\n      appellate,\n      govtController,\n      PLCRVoting.address,\n      parameterizerConfig.appealFeeAmount,\n      parameterizerConfig.requestAppealPhaseLength,\n      parameterizerConfig.judgeAppealPhaseLength,\n      parameterizerConfig.appealSupermajorityPercentage,\n      parameterizerConfig.appealChallengeVoteDispensationPct,\n      0, // parameterizerConfig.govtPDeposit,\n      parameterizerConfig.govtPCommitStageLength,\n      parameterizerConfig.govtPRevealStageLength,\n      parameterizerConfig.constitutionHash,\n      parameterizerConfig.constitutionURI,\n    );\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/21_deploy_root_commits.ts",
    "content": "module.exports = (deployer: any, network: string, accounts: string[]) => {\n  const RootCommits = artifacts.require(\"RootCommits\");\n\n  deployer.deploy(RootCommits);\n};\n"
  },
  {
    "path": "packages/contracts/migrations/2_optional_for_test.ts",
    "content": "/* global artifacts */\n\nimport { config } from \"./utils\";\nimport { MAIN_NETWORK } from \"./utils/consts\";\nimport { BN } from \"bn.js\";\n\nconst MessagesAndCodes = artifacts.require(\"MessagesAndCodes\");\nconst CivilTokenController = artifacts.require(\"CivilTokenController\");\nconst NoOpTokenController = artifacts.require(\"NoOpTokenController\");\nconst Token = artifacts.require(\"CVLToken\");\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  const totalSupply = new BN(\"100000000000000000000000000\");\n  const decimals = \"18\";\n\n  async function giveTokensTo(addresses: string[], originalCount: number): Promise<boolean> {\n    const token = await Token.deployed();\n    const user = addresses[0];\n    const allocation = new BN(\"50000000000000000000000\");\n    console.log(\"give \" + allocation.toString() + \" tokens to: \" + user);\n    await token.transfer(user, allocation);\n    if (network === \"ganache\" && !accounts.includes(user)) {\n      await web3.eth.sendTransaction({\n        from: accounts[0],\n        to: user,\n        value: new BN(web3.utils.toWei(\"1\", \"ether\")),\n      });\n    }\n\n    if (addresses.length === 1) {\n      return true;\n    }\n    return giveTokensTo(addresses.slice(1), originalCount);\n  }\n\n  deployer.deploy(MessagesAndCodes);\n  deployer.link(MessagesAndCodes, CivilTokenController);\n\n  deployer.then(async () => {\n    let tokenName = \"CVL\";\n    let symbol = \"CVL\";\n    let giveTo: string[] = [];\n    if (network !== MAIN_NETWORK) {\n      tokenName = \"TestCvl\";\n      symbol = \"TESTCVL\";\n\n      const teammates = process.env.TEAMMATES;\n      let teammatesSplit: string[] = [];\n      if (teammates) {\n        teammatesSplit = teammates!.split(\",\");\n      }\n      giveTo = accounts.concat(config.nets[network].tokenHolders, teammatesSplit);\n    }\n\n    const controller = await deployer.deploy(NoOpTokenController);\n    await deployer.deploy(CivilTokenController);\n    await deployer.deploy(Token, totalSupply, tokenName, decimals, symbol, controller.address);\n    if (giveTo.length > 0) {\n      await giveTokensTo(giveTo, giveTo.length);\n    }\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/3_deploy_libs.ts",
    "content": "/* global artifacts */\n\nconst DLL = artifacts.require(\"DLL\");\nconst AttributeStore = artifacts.require(\"AttributeStore\");\n\nmodule.exports = (deployer: any) => {\n  deployer.then(async () => {\n    await deployer.deploy(DLL);\n    await deployer.deploy(AttributeStore);\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/8_deploy_plcr.ts",
    "content": "/* global artifacts */\n\nimport { approveEverything, inTesting } from \"./utils\";\n\nconst Token = artifacts.require(\"CVLToken\");\nconst DLL = artifacts.require(\"DLL\");\nconst AttributeStore = artifacts.require(\"AttributeStore\");\nconst CivilTokenController = artifacts.require(\"CivilTokenController\");\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  deployer.then(async () => {\n    await deployer.link(DLL, PLCRVoting);\n    await deployer.link(AttributeStore, PLCRVoting);\n\n    const tokenAddress = Token.address;\n    await deployer.deploy(PLCRVoting, tokenAddress, CivilTokenController.address);\n\n    if (inTesting(network)) {\n      await approveEverything(accounts, Token.at(tokenAddress), PLCRVoting.address);\n    }\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/9_deploy_parameterizer.ts",
    "content": "/* global artifacts */\nimport { approveEverything, config, inTesting } from \"./utils\";\nimport { BN } from \"bn.js\";\n\nconst Token = artifacts.require(\"CVLToken\");\nconst DLL = artifacts.require(\"DLL\");\nconst AttributeStore = artifacts.require(\"AttributeStore\");\n\nconst Parameterizer = artifacts.require(\"CivilParameterizer\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\n\nmodule.exports = (deployer: any, network: string, accounts: string[]) => {\n  deployer.then(async () => {\n    await deployer.link(DLL, Parameterizer);\n    await deployer.link(AttributeStore, Parameterizer);\n\n    const parameterizerConfig = config.nets[network].paramDefaults;\n    const tokenAddress = Token.address;\n\n    // const estimate = web3.eth.estimateGas({ data: Parameterizer.bytecode });\n    // console.log(\"Parameterizer gas cost estimate: \" + estimate);\n    await deployer.deploy(Parameterizer, tokenAddress, PLCRVoting.address, [\n      new BN(parameterizerConfig.minDeposit),\n      new BN(parameterizerConfig.pMinDeposit),\n      new BN(parameterizerConfig.applyStageLength),\n      new BN(parameterizerConfig.pApplyStageLength),\n      new BN(parameterizerConfig.commitStageLength),\n      new BN(parameterizerConfig.pCommitStageLength),\n      new BN(parameterizerConfig.revealStageLength),\n      new BN(parameterizerConfig.pRevealStageLength),\n      new BN(parameterizerConfig.dispensationPct),\n      new BN(parameterizerConfig.pDispensationPct),\n      new BN(parameterizerConfig.voteQuorum),\n      new BN(parameterizerConfig.pVoteQuorum),\n      new BN(parameterizerConfig.challengeAppealLength),\n      new BN(parameterizerConfig.appealChallengeCommitStageLength),\n      new BN(parameterizerConfig.appealChallengeRevealStageLength),\n    ]);\n\n    if (inTesting(network)) {\n      await approveEverything(accounts, Token.at(tokenAddress), Parameterizer.address);\n    }\n  });\n};\n"
  },
  {
    "path": "packages/contracts/migrations/utils/consts.ts",
    "content": "export const MAIN_NETWORK = \"mainnet\";\nexport const RINKEBY = \"rinkeby\";\nexport const ROPSTEN = \"ropsten\";\n"
  },
  {
    "path": "packages/contracts/migrations/utils/index.ts",
    "content": "import * as fs from \"fs\";\n\nimport { MAIN_NETWORK } from \"./consts\";\n\nexport const config = JSON.parse(fs.readFileSync(\"../../conf/config.json\").toString());\nconfig.nets[\"rinkeby-fork\"] = config.nets.rinkeby;\nconfig.nets[\"mainnet-fork\"] = config.nets.mainnet;\n\nexport function inTesting(network: string): boolean {\n  return network !== MAIN_NETWORK && !(network in config.nets);\n}\n\nexport async function approveEverything(addresses: string[], token: any, target: string): Promise<void> {\n  await Promise.all(\n    addresses.map(async user => {\n      const balance = await token.balanceOf(user);\n      await token.approve(target, balance, { from: user });\n    }),\n  );\n}\n"
  },
  {
    "path": "packages/contracts/package.json",
    "content": "{\n  \"name\": \"@joincivil/contracts\",\n  \"private\": true,\n  \"version\": \"4.8.9\",\n  \"description\": \"Smart Contracts needed to make the ecosystem work\",\n  \"scripts\": {\n    \"build\": \"run-s compile build:stripArtifacts\",\n    \"build:createDocsFolder\": \"mkdirp ./build/docs\",\n    \"build:stripArtifacts\": \"node ../dev-utils/build/scripts/strip-artifacts.js \\\"build/contracts/**/*.json\\\" build/artifacts\",\n    \"build:stable\": \"node ../dev-utils/build/scripts/strip-artifacts.js \\\"../artifacts/v1/**/*.json\\\" ../artifacts/v1/\",\n    \"compile\": \"run-p --aggregate-output compile:*\",\n    \"compile:typescript\": \"tsc\",\n    \"compile:solidity\": \"truffle compile\",\n    \"generate:docs\": \"doxity compile\",\n    \"lint\": \"run-p --aggregate-output lint:*\",\n    \"lint:typescript\": \"tslint --project ./\",\n    \"lint:solidity\": \"solium --dir contracts/\",\n    \"coverage\": \"SOLIDITY_COVERAGE=true run-s test coverage:report:lcov\",\n    \"coverage:report:html\": \"istanbul report html && open coverage/index.html\",\n    \"coverage:report:lcov\": \"istanbul report lcov\",\n    \"migrate\": \"truffle migrate\",\n    \"migrate:ganache\": \"run-s 'migrate --reset --network ganache' build:stripArtifacts\",\n    \"migrate:rinkeby\": \"CONTRACT_BUILDS_DIRECTORY=\\\"../artifacts/v1\\\" run-s 'migrate --network=rinkeby' build:stable\",\n    \"migrate:rinkeby:reset\": \"CONTRACT_BUILDS_DIRECTORY=\\\"../artifacts/v1\\\" run-s 'migrate --reset --network rinkeby' build:stable\",\n    \"migrate:ropsten\": \"CONTRACT_BUILDS_DIRECTORY=\\\"../artifacts/v1\\\" run-s 'migrate --network ropsten' build:stable\",\n    \"migrate:ropsten:reset\": \"CONTRACT_BUILDS_DIRECTORY=\\\"../artifacts/v1\\\" run-s 'migrate --reset --network ropsten' build:stable\",\n    \"migrate:mainnet\": \"CONTRACT_BUILDS_DIRECTORY=\\\"../artifacts/v1\\\" run-s 'migrate --network mainnet' build:stable\",\n    \"migrate:mainnet:reset\": \"CONTRACT_BUILDS_DIRECTORY=\\\"../artifacts/v1\\\" run-s 'migrate --reset --network mainnet' build:stable\",\n    \"migrate:ledgerMainnet\": \"run-s 'migrate --network ledgerMainnet' build:stripArtifacts\",\n    \"test\": \"truffle test --network ganache\",\n    \"clean\": \"rimraf build/ coverage/ .0x-artifacts/\",\n    \"prepare\": \"truffle install\",\n    \"truffle\": \"truffle\",\n    \"tsc\": \"tsc\",\n    \"tslint\": \"tslint\",\n    \"solium\": \"solium\",\n    \"doxity\": \"doxity\"\n  },\n  \"author\": \"The Civil Media Company\",\n  \"license\": \"LGPL-2.1\",\n  \"devDependencies\": {\n    \"@joincivil/dev-utils\": \"^1.6.9\",\n    \"@joincivil/doxity\": \"^0.0.1\",\n    \"@joincivil/ethapi\": \"^0.4.9\",\n    \"@joincivil/tslint-rules\": \"^2.7.1\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@joincivil/utils\": \"^1.9.9\",\n    \"@types/chai\": \"^4.0.10\",\n    \"@types/chai-as-promised\": \"^7.1.0\",\n    \"@types/glob\": \"^5.0.34\",\n    \"@types/mkdirp\": \"^0.5.2\",\n    \"@types/node\": \"^10.12.0\",\n    \"@types/underscore\": \"^1.8.6\",\n    \"bn.js\": \"^4.11.8\",\n    \"chai\": \"^4.1.2\",\n    \"chai-as-promised\": \"^7.1.1\",\n    \"dirty-chai\": \"^2.0.1\",\n    \"ethereumjs-util\": \"^5.2.0\",\n    \"ethers\": \"^4.0.33\",\n    \"glob\": \"^7.1.2\",\n    \"istanbul\": \"^0.4.5\",\n    \"mkdirp\": \"^0.5.1\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"rimraf\": \"^2.6.2\",\n    \"solium\": \"github:duaraghav8/Solium#develop\",\n    \"solium-plugin-security\": \"^0.1.1\",\n    \"truffle\": \"~5.0.29\",\n    \"truffle-hdwallet-provider\": \"^1.0.15\",\n    \"tslint\": \"^5.17.0\",\n    \"typescript\": \"^3.6.2\",\n    \"web3\": \"^1.2.4\",\n    \"web3-core\": \"^1.2.4\",\n    \"web3-eth\": \"^1.2.4\",\n    \"web3-provider-engine\": \"^14.0.6\",\n    \"web3-providers-http\": \"^1.2.4\"\n  },\n  \"dependencies\": {\n    \"@truffle/hdwallet-provider\": \"^1.0.30\",\n    \"chai-bignumber\": \"^3.0.0\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/contracts/test/.gitkeep",
    "content": ""
  },
  {
    "path": "packages/contracts/test/global_hooks.ts",
    "content": "// import { coverageProviderSingleton, inCoverage } from \"./utils/coverage\";\n\n// after(\"Write coverage\", async () => {\n//   if (inCoverage()) {\n//     console.log(\"Writting coverage\");\n//     await coverageProviderSingleton().writeCoverageAsync();\n//   }\n// });\n"
  },
  {
    "path": "packages/contracts/test/modules.d.ts",
    "content": "declare module \"web3-providers-http\";\n\n// https://github.com/ethereum-ts/bn.js-typings/blob/master/index.d.ts\ndeclare module \"bn.js\" {\n  import { Buffer } from \"buffer\";\n\n  type Endianness = \"le\" | \"be\";\n\n  export class BN {\n    constructor(\n      number: number | string | number[] | ReadonlyArray<number> | Buffer,\n      base?: number,\n      endian?: Endianness,\n    );\n    clone(): BN;\n    toString(base?: number, length?: number): string;\n    toNumber(): number;\n    toJSON(): string;\n    toArray(endian?: Endianness, length?: number): number[];\n    toBuffer(endian?: Endianness, length?: number): Buffer;\n    bitLength(): number;\n    zeroBits(): number;\n    byteLength(): number;\n    isNeg(): boolean;\n    isEven(): boolean;\n    isOdd(): boolean;\n    isZero(): boolean;\n    cmp(b: any): number;\n    lt(b: any): boolean;\n    lte(b: any): boolean;\n    gt(b: any): boolean;\n    gte(b: any): boolean;\n    eq(b: any): boolean;\n    isBN(b: any): boolean;\n\n    neg(): BN;\n    abs(): BN;\n    add(b: BN | number): BN;\n    sub(b: BN | number): BN;\n    mul(b: BN | number): BN;\n    sqr(): BN;\n    pow(b: BN | number): BN;\n    div(b: BN | number): BN;\n    mod(b: BN): BN;\n    divRound(b: BN): BN;\n\n    or(b: BN): BN;\n    and(b: BN): BN;\n    xor(b: BN): BN;\n    setn(b: number): BN;\n    shln(b: number): BN;\n    shrn(b: number): BN;\n    testn(b: number): boolean;\n    maskn(b: number): BN;\n    bincn(b: number): BN;\n    notn(w: number): BN;\n\n    gcd(b: BN): BN;\n    egcd(b: BN): { a: BN; b: BN; gcd: BN };\n    invm(b: BN): BN;\n  }\n}\n"
  },
  {
    "path": "packages/contracts/test/multisig/multsigwallet.ts",
    "content": "import { configureChai, getParamFromTxEvent } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { configureProviders } from \"../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst MultiSigWallet = artifacts.require(\"MultiSigWallet\");\nconfigureProviders(MultiSigWallet);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst EXCLUDE_PENDING = false;\nconst INCLUDE_PENDING = true;\nconst EXCLUDE_EXECUTED = false;\nconst INCLUDE_EXECUTED = true;\n\nconst sendTransactionAsync = web3.eth.sendTransaction;\nconst balanceAsync = web3.eth.getBalance;\n\ncontract(\"MultiSigWallet\", accounts => {\n  let instance: any;\n  const REQUIRED_CONFIRMATIONS = 2;\n  const NOT_WALLET_OWNER = accounts[9];\n\n  beforeEach(async () => {\n    instance = await MultiSigWallet.new([accounts[0], accounts[1], accounts[2]], REQUIRED_CONFIRMATIONS);\n  });\n\n  describe(\"executeTransaction\", () => {\n    it(\"works after requirement change\", async () => {\n      const DEPOSIT = new BN(1000);\n\n      // Send money to the wallet contract\n      await sendTransactionAsync({ to: instance.address, value: DEPOSIT, from: accounts[0] });\n      const balance = await balanceAsync(instance.address);\n      expect(balance).to.be.bignumber.equal(DEPOSIT);\n\n      // Add owner number 4\n      const addOwnerData = instance.contract.methods.addOwner(accounts[3]).encodeABI();\n      const txIdAddOwner = getParamFromTxEvent<BN>(\n        await instance.submitTransaction(instance.address, 0, addOwnerData, { from: accounts[0] }),\n        \"transactionId\",\n        \"Submission\",\n      );\n\n      // One pending transaction\n      expect(await instance.getTransactionIds(0, 1, INCLUDE_PENDING, EXCLUDE_EXECUTED)).to.be.deep.equal([\n        txIdAddOwner,\n      ]);\n\n      // Updated required threshold to 1\n      const NEW_REQUIRED = 1;\n      const updateRequirementsData = instance.contract.methods.changeRequirement(NEW_REQUIRED).encodeABI();\n      const txIdChangeRequirement = getParamFromTxEvent(\n        await instance.submitTransaction(instance.address, 0, updateRequirementsData, { from: accounts[0] }),\n        \"transactionId\",\n        \"Submission\",\n      );\n\n      // Two pending transactios\n      expect(await instance.getTransactionIds(0, 2, INCLUDE_EXECUTED, EXCLUDE_EXECUTED)).to.be.deep.equal([\n        txIdAddOwner,\n        txIdChangeRequirement,\n      ]);\n\n      // Confirm change requirement\n      await instance.confirmTransaction(txIdChangeRequirement, { from: accounts[1] });\n      expect(await instance.required()).to.be.bignumber.equal(NEW_REQUIRED);\n\n      await expect(instance.executeTransaction(txIdAddOwner, { from: NOT_WALLET_OWNER })).to.eventually.be.rejected();\n\n      await instance.executeTransaction(txIdAddOwner, { from: accounts[0] });\n      expect(await instance.getTransactionIds(0, 2, EXCLUDE_PENDING, INCLUDE_EXECUTED)).to.be.deep.equal([\n        txIdAddOwner,\n        txIdChangeRequirement,\n      ]);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/newsroom/ACL.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { ACL_TEST_ROLE, events, REVERTED } from \"../utils/constants\";\nimport { configureProviders, findEvent } from \"../utils/contractutils\";\n\nconst ACL = artifacts.require(\"test/DummyACL\");\nconfigureProviders(ACL);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"ACL\", (accounts: string[]) => {\n  const defaultAccount = accounts[0];\n  let acl: any;\n\n  beforeEach(async () => {\n    acl = await ACL.new();\n  });\n\n  describe(\"hasRole\", () => {\n    it(\"owner without role added doesn't have the role\", async () => {\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.false();\n    });\n\n    it(\"returns false when no role\", async () => {\n      expect(await acl.hasRole(accounts[1], ACL_TEST_ROLE)).to.be.false();\n    });\n\n    it(\"returns true when added to role\", async () => {\n      await acl.addRole(accounts[1], ACL_TEST_ROLE);\n\n      expect(await acl.hasRole(accounts[1], ACL_TEST_ROLE)).to.be.true();\n    });\n  });\n\n  describe(\"addRole\", () => {\n    it(\"works from superuser\", async () => {\n      const SOME_ROLE = \"some role, please ignore\";\n      await acl.addRole(defaultAccount, SOME_ROLE);\n\n      expect(await acl.hasRole(defaultAccount, SOME_ROLE));\n    });\n\n    it(\"fails without proper role\", async () => {\n      const addRole = acl.addRole(accounts[1], ACL_TEST_ROLE, { from: accounts[1] });\n      await expect(addRole).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"works from TEST_ROLE\", async () => {\n      const SOME_ROLE = \"some role, please ignore\";\n      expect(await acl.hasRole(accounts[2], SOME_ROLE)).to.be.false();\n      await acl.addRole(accounts[1], ACL_TEST_ROLE);\n\n      const addRole = acl.addRole(accounts[2], SOME_ROLE, { from: accounts[1] });\n\n      await expect(addRole).to.eventually.be.fulfilled();\n      expect(await acl.hasRole(accounts[2], SOME_ROLE)).to.be.true();\n    });\n\n    it(\"returns an event\", async () => {\n      const tx = await acl.addRole(accounts[1], ACL_TEST_ROLE);\n      const event = findEvent(tx, events.ACL_ROLE_ADDED);\n\n      expect(event).to.not.be.null();\n      expect(event!.args.granter).to.be.equal(defaultAccount);\n      expect(event!.args.grantee).to.be.equal(accounts[1]);\n      expect(event!.args.role).to.be.equal(ACL_TEST_ROLE);\n    });\n\n    it(\"doesn't crash when double adding\", async () => {\n      await acl.addRole(defaultAccount, ACL_TEST_ROLE);\n\n      await expect(acl.addRole(defaultAccount, ACL_TEST_ROLE)).to.eventually.be.fulfilled();\n    });\n  });\n\n  describe(\"removeRole\", () => {\n    it(\"removes a role\", async () => {\n      await acl.addRole(defaultAccount, ACL_TEST_ROLE);\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.true();\n\n      await acl.removeRole(defaultAccount, ACL_TEST_ROLE);\n\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.false();\n    });\n\n    it(\"removes non-existen role\", async () => {\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.false();\n\n      await expect(acl.removeRole(defaultAccount, ACL_TEST_ROLE)).to.eventually.be.fulfilled();\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.false();\n    });\n\n    it(\"doesn't work without TEST_ROLE access\", async () => {\n      await acl.addRole(defaultAccount, ACL_TEST_ROLE);\n\n      const removeRole = acl.removeRole(defaultAccount, ACL_TEST_ROLE, { from: accounts[1] });\n      await expect(removeRole).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"works with TEST_ROLE access\", async () => {\n      await acl.addRole(accounts[1], ACL_TEST_ROLE);\n      await acl.addRole(defaultAccount, ACL_TEST_ROLE);\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.true();\n\n      await acl.removeRole(defaultAccount, ACL_TEST_ROLE, { from: accounts[1] });\n\n      expect(await acl.hasRole(defaultAccount, ACL_TEST_ROLE)).to.be.false();\n    });\n\n    it(\"allows you to remove your own role\", async () => {\n      await acl.addRole(accounts[1], ACL_TEST_ROLE);\n\n      const removeRole = acl.removeRole(accounts[1], ACL_TEST_ROLE, { from: accounts[1] });\n\n      await expect(removeRole).to.eventually.be.fulfilled();\n      expect(await acl.hasRole(accounts[1], ACL_TEST_ROLE)).to.be.false();\n    });\n\n    it(\"allows to remove role somebody else added\", async () => {\n      const SOME_ROLE = \"test role, please ignore\";\n      await acl.addRole(accounts[1], SOME_ROLE);\n      await acl.addRole(accounts[2], ACL_TEST_ROLE);\n\n      const removeRole = acl.removeRole(accounts[1], SOME_ROLE, { from: accounts[2] });\n      await expect(removeRole).to.eventually.be.fulfilled();\n      expect(await acl.hasRole(accounts[1], SOME_ROLE)).to.be.false();\n    });\n\n    it(\"fires an event\", async () => {\n      const SOME_ROLE = \"test role, please ignore\";\n      await acl.addRole(accounts[1], SOME_ROLE);\n\n      const tx = await acl.removeRole(accounts[1], SOME_ROLE);\n      const event = findEvent(tx, events.ACL_ROLE_REMOVED);\n\n      expect(event).to.not.be.null();\n      expect(event!.args.granter).to.be.equal(defaultAccount);\n      expect(event!.args.grantee).to.be.equal(accounts[1]);\n      expect(event!.args.role).to.be.equal(SOME_ROLE);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/newsroom/eventStorage.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport { keccak256String } from \"@joincivil/utils\";\nimport * as chai from \"chai\";\nimport { events } from \"../utils/constants\";\nimport { configureProviders, findEvent } from \"../utils/contractutils\";\n\nconst EventStorage = artifacts.require(\"EventStorage\");\nconfigureProviders(EventStorage);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst SOME_DATA = \"this is test data, please ignore\";\nconst SOME_DATA_2 = \"this is more data for testing, also ignore\";\nconst SOME_DATA_HASH = keccak256String(SOME_DATA);\n\ncontract(\"Newsroom\", (accounts: string[]) => {\n  let eventStorage: any;\n\n  beforeEach(async () => {\n    eventStorage = await EventStorage.new();\n  });\n\n  describe(\"store\", () => {\n    it(\"fires an event\", async () => {\n      const receipt = await eventStorage.store(SOME_DATA);\n      const event = findEvent(receipt, events.EVENTSTORAGE_STORED);\n\n      expect(receipt.logs).to.be.length(1);\n\n      expect(event).to.not.be.null();\n      expect(event!.args.data).to.be.equal(SOME_DATA);\n    });\n\n    it(\"allows multiple stores\", async () => {\n      const firstReceipt = await eventStorage.store(SOME_DATA);\n      const secondReceipt = await eventStorage.store(SOME_DATA_2);\n\n      const firstEvent = findEvent(firstReceipt, events.EVENTSTORAGE_STORED);\n      const secondEvent = findEvent(secondReceipt, events.EVENTSTORAGE_STORED);\n\n      expect(firstEvent).to.not.be.null();\n      expect(secondEvent).to.not.be.null();\n\n      expect(firstEvent!.args.data).to.be.equal(SOME_DATA);\n      expect(secondEvent!.args.data).to.be.equal(SOME_DATA_2);\n    });\n\n    it(\"allows duplicate data\", async () => {\n      const firstReceipt = await eventStorage.store(SOME_DATA);\n      const secondReceipt = await eventStorage.store(SOME_DATA);\n\n      const firstEvent = findEvent(firstReceipt, events.EVENTSTORAGE_STORED);\n      const secondEvent = findEvent(secondReceipt, events.EVENTSTORAGE_STORED);\n\n      expect(firstEvent).to.not.be.null();\n      expect(secondEvent).to.not.be.null();\n\n      expect(firstEvent!.args.data).to.be.equal(SOME_DATA);\n      expect(firstEvent!.args.data).to.be.equal(secondEvent!.args.data);\n      expect(firstEvent!.args.dataHash).to.be.equal(secondEvent!.args.dataHash);\n    });\n\n    it(\"calculates the hash properly\", async () => {\n      const receipt = await eventStorage.store(SOME_DATA);\n      const event = findEvent(receipt, events.EVENTSTORAGE_STORED);\n\n      expect(event).to.not.be.null();\n\n      expect(event!.args.dataHash).to.be.equal(SOME_DATA_HASH);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/newsroom/newsroom.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport { is0x0Address, prepareNewsroomMessage, promisify } from \"@joincivil/utils\";\nimport * as chai from \"chai\";\nimport { events, NEWSROOM_ROLE_EDITOR, REVERTED, REVERTED_CALL } from \"../utils/constants\";\nimport { findEvent, configureProviders } from \"../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst Newsroom = artifacts.require(\"Newsroom\");\nconfigureProviders(Newsroom);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst FIRST_NEWSROOM_NAME = \"TEST NAME, PLEASE IGNORE\";\nconst SOME_URI = \"http://thiistest.uri\";\nconst SECOND_URI = \"http://anotheruri.com\";\nconst SOME_HASH = web3.utils.sha3(\"test\");\nconst ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nconst signAsync = web3.eth.sign;\nconst getBlockAsync = promisify<any>(web3.eth.getBlock, web3.eth);\n\nexport function idFromEvent(tx: any): BN | undefined {\n  for (const log of tx.logs) {\n    if (log.args.contentId) {\n      return log.args.contentId;\n    }\n  }\n  return undefined;\n}\n\ncontract(\"Newsroom\", (accounts: string[]) => {\n  const [defaultAccount, editor, author] = accounts;\n  let newsroom: any;\n\n  beforeEach(async () => {\n    newsroom = await Newsroom.new(FIRST_NEWSROOM_NAME, SOME_URI, SOME_HASH);\n  });\n\n  it(\"allows for empty charter\", async () => {\n    await expect(Newsroom.new(FIRST_NEWSROOM_NAME, defaultAccount, \"0x\")).to.eventually.be.fulfilled();\n  });\n\n  describe(\"publishContent\", () => {\n    it(\"finishes\", async () => {\n      await newsroom.addRole(defaultAccount, NEWSROOM_ROLE_EDITOR);\n      await expect(newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\")).to.eventually.be.fulfilled();\n    });\n\n    it(\"creates an event\", async () => {\n      const tx = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n      const event = findEvent(tx, events.NEWSROOM_PUBLISHED);\n      expect(event).to.not.be.undefined();\n      expect(event!.args.editor).to.be.equal(defaultAccount);\n    });\n\n    it(\"succeeds with editor role\", async () => {\n      await newsroom.addRole(accounts[1], NEWSROOM_ROLE_EDITOR);\n\n      const tx = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\", { from: accounts[1] });\n      const id = idFromEvent(tx);\n\n      const [hash, uri] = await newsroom.getContent(id);\n\n      expect(uri).to.be.equal(SOME_URI);\n      expect(hash).to.be.equal(`${SOME_HASH}`);\n    });\n\n    describe(\"with author signature\", () => {\n      let MESSAGE: string;\n      let SIGNATURE: string;\n\n      beforeEach(async () => {\n        MESSAGE = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n        SIGNATURE = await signAsync(MESSAGE, author);\n        await newsroom.addRole(editor, NEWSROOM_ROLE_EDITOR);\n      });\n\n      it(\"fails without proper signature\", async () => {\n        const WRONG_SIG = await signAsync(MESSAGE, editor);\n        await expect(\n          newsroom.publishContent(SOME_URI, SOME_HASH, author, WRONG_SIG, { from: editor }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"fires RevisionSigned event\", async () => {\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE, { from: editor });\n\n        const event = findEvent(receipt, events.NEWSROOM_SIGNED);\n\n        expect(event).to.not.be.null();\n        expect(event!.args.author).to.be.equal(author);\n      });\n\n      it(\"has the same ids in published, signed and updated events\", async () => {\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE);\n\n        const publishedEvent = findEvent(receipt, events.NEWSROOM_PUBLISHED);\n        const signedEvent = findEvent(receipt, events.NEWSROOM_SIGNED);\n        const updatedEvent = findEvent(receipt, events.NEWSROOM_UPDATED);\n\n        expect(publishedEvent).to.not.be.null();\n        expect(signedEvent).to.not.be.null();\n        expect(updatedEvent).to.not.be.null();\n\n        expect(publishedEvent!.args.contentId).to.be.bignumber.equal(signedEvent!.args.contentId);\n        expect(updatedEvent!.args.contentId).to.be.bignumber.equal(publishedEvent!.args.contentId);\n\n        expect(updatedEvent!.args.revisionId).to.be.bignumber.equal(signedEvent!.args.revisionId);\n      });\n\n      it(\"doesn't allow signature and 0x0 author\", async () => {\n        await expect(newsroom.publishContent(SOME_URI, SOME_HASH, \"0x0\", SIGNATURE)).to.be.rejected.with(REVERTED);\n      });\n\n      it(\"doesn't allow empty signature and an author\", async () => {\n        await expect(newsroom.publishContent(SOME_URI, SOME_HASH, author, \"\")).to.be.rejected.with(REVERTED);\n      });\n\n      it(\"verifies that the signature was not used in other content\", async () => {\n        await newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE, { from: editor });\n\n        await expect(\n          newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE, { from: editor }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      // Implementation edge case\n      it(\"verifies that the signature was not reused from charter\", async () => {\n        expect(await newsroom.revisionCount(0)).to.be.bignumber.equal(1);\n\n        await newsroom.signRevision(0, 0, author, SIGNATURE, { from: defaultAccount });\n\n        await expect(\n          newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE, { from: editor }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n    });\n  });\n\n  describe(\"addRole\", () => {\n    beforeEach(async () => {\n      await newsroom.addRole(accounts[1], NEWSROOM_ROLE_EDITOR);\n    });\n\n    it(\"works with superpowers\", async () => {\n      const addRole = newsroom.addRole(accounts[2], NEWSROOM_ROLE_EDITOR);\n\n      await expect(addRole).to.eventually.be.fulfilled();\n      expect(await newsroom.hasRole(accounts[2], NEWSROOM_ROLE_EDITOR)).to.be.true();\n    });\n\n    it(\"works with editor role\", async () => {\n      const addRole = newsroom.addRole(accounts[2], NEWSROOM_ROLE_EDITOR, { from: accounts[1] });\n\n      await expect(addRole).to.eventually.be.fulfilled();\n      expect(await newsroom.hasRole(accounts[2], NEWSROOM_ROLE_EDITOR)).to.be.true();\n    });\n\n    it(\"doesn't work without any role\", async () => {\n      const addRole = newsroom.addRole(accounts[2], NEWSROOM_ROLE_EDITOR, { from: accounts[2] });\n\n      await expect(addRole).to.eventually.be.rejectedWith(REVERTED);\n      expect(await newsroom.hasRole(accounts[2], NEWSROOM_ROLE_EDITOR)).to.be.false();\n    });\n  });\n\n  describe(\"removeRole\", () => {\n    beforeEach(async () => {\n      await newsroom.addRole(accounts[1], NEWSROOM_ROLE_EDITOR);\n    });\n\n    it(\"works with superpowers\", async () => {\n      const removeRole = newsroom.removeRole(accounts[1], NEWSROOM_ROLE_EDITOR);\n\n      await expect(removeRole).to.eventually.be.fulfilled();\n      expect(await newsroom.hasRole(accounts[1], NEWSROOM_ROLE_EDITOR)).to.be.false();\n    });\n\n    it(\"works with editor role\", async () => {\n      const removeRole = newsroom.removeRole(accounts[1], NEWSROOM_ROLE_EDITOR, { from: accounts[1] });\n\n      await expect(removeRole).to.eventually.be.fulfilled();\n      expect(await newsroom.hasRole(accounts[1], NEWSROOM_ROLE_EDITOR)).to.be.false();\n    });\n\n    it(\"doesn't work without any role\", async () => {\n      const removeRole = newsroom.removeRole(accounts[1], NEWSROOM_ROLE_EDITOR, { from: accounts[2] });\n\n      await expect(removeRole).to.eventually.be.rejectedWith(REVERTED);\n      expect(await newsroom.hasRole(accounts[1], NEWSROOM_ROLE_EDITOR)).to.be.true();\n    });\n  });\n\n  describe(\"setName\", () => {\n    it(\"sets the name in constructor\", async () => {\n      const name = await newsroom.name();\n      expect(name).to.be.equal(FIRST_NEWSROOM_NAME);\n    });\n\n    it(\"can't set empty name\", async () => {\n      await expect(newsroom.setName(\"\")).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"changes name\", async () => {\n      const NEW_NAME = \"new name here\";\n\n      expect(await newsroom.name()).to.be.equal(FIRST_NEWSROOM_NAME);\n\n      await newsroom.setName(NEW_NAME);\n\n      expect(await newsroom.name()).to.be.equal(NEW_NAME);\n    });\n\n    it(\"can't be used by non-owner\", async () => {\n      await expect(newsroom.setName(\"something\", { from: accounts[1] })).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"fires an event\", async () => {\n      const receipt = await newsroom.setName(\"something\");\n\n      const event = findEvent(receipt, \"NameChanged\");\n\n      expect(event).to.not.be.null();\n    });\n  });\n\n  describe(\"updateRevision\", () => {\n    const SECOND_HASH = web3.utils.sha3(\"Some content\");\n\n    beforeEach(async () => {\n      await newsroom.addRole(editor, NEWSROOM_ROLE_EDITOR);\n    });\n\n    it(\"can't update the charter if you're not an owner\", async () => {\n      await expect(\n        newsroom.updateRevision(0, SECOND_URI, SECOND_HASH, \"0x\", { from: editor }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"works for charter if you're the owner\", async () => {\n      await expect(\n        newsroom.updateRevision(0, SECOND_URI, SECOND_HASH, \"0x\", { from: defaultAccount }),\n      ).to.eventually.be.fulfilled();\n    });\n\n    describe(\"without author signature\", () => {\n      let contentId: BN;\n\n      beforeEach(async () => {\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\", { from: editor });\n        const event = findEvent(receipt, events.NEWSROOM_PUBLISHED);\n        expect(event).to.not.be.null();\n        contentId = event!.args.contentId;\n      });\n\n      it(\"can't update non-existing content\", async () => {\n        await expect(\n          newsroom.updateRevision(999, SECOND_URI, SECOND_HASH, \"0x\", { from: editor }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"requires editor role\", async () => {\n        await expect(\n          newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, \"0x\", { from: author }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"fires RevisionUpdated event\", async () => {\n        const receipt = await newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, \"0x\", {\n          from: editor,\n        });\n\n        const event = findEvent(receipt, events.NEWSROOM_UPDATED);\n\n        expect(event).to.not.be.null();\n        expect(event!.args.editor).to.be.equal(editor);\n        expect(event!.args.contentId).to.be.bignumber.equal(contentId);\n        expect(event!.args.revisionId).to.be.bignumber.equal(1);\n        expect(event!.args.uri).to.be.equal(SECOND_URI);\n      });\n\n      it(\"increases revision count\", async () => {\n        expect(await newsroom.revisionCount(contentId)).to.be.bignumber.equal(1);\n\n        await newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, \"0x\", { from: editor });\n\n        expect(await newsroom.revisionCount(contentId)).to.be.bignumber.equal(2);\n      });\n    });\n\n    describe(\"with author signature\", () => {\n      let MESSAGE: string;\n      let SIGNATURE: string;\n\n      let contentId: BN;\n\n      beforeEach(async () => {\n        MESSAGE = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n        SIGNATURE = await signAsync(MESSAGE, author);\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE, { from: editor });\n        const event = findEvent(receipt, events.NEWSROOM_PUBLISHED);\n        expect(event).to.not.be.null();\n        contentId = event!.args.contentId;\n      });\n\n      it(\"disallows to reuse signature from different content\", async () => {\n        const SECOND_MESSAGE = prepareNewsroomMessage(newsroom.address, SECOND_HASH);\n        const SECOND_SIGNATURE = await signAsync(SECOND_MESSAGE, author);\n\n        await newsroom.publishContent(SECOND_URI, SECOND_HASH, author, SECOND_SIGNATURE);\n\n        await expect(\n          newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, SECOND_SIGNATURE),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"requires signature from the same author\", async () => {\n        const message = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n        const editorSignature = await signAsync(message, editor);\n\n        await expect(\n          newsroom.updateRevision(contentId, SOME_URI, SOME_HASH, editorSignature),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"allows unsigned revisions\", async () => {\n        expect(await newsroom.isContentSigned(contentId)).to.be.true();\n\n        await newsroom.updateRevision(contentId, SOME_URI, SOME_HASH, \"0x\");\n\n        expect(await newsroom.isContentSigned(contentId)).to.be.false();\n        expect(await newsroom.isRevisionSigned(contentId, 0)).to.be.true();\n      });\n\n      it(\"doesn't allow signing if the first revision was unsigned\", async () => {\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\", { from: editor });\n        const event = findEvent(receipt, events.NEWSROOM_PUBLISHED);\n        const secondContentId = event!.args.contentId;\n\n        await expect(\n          newsroom.updateRevision(secondContentId, SOME_URI, SOME_HASH, SIGNATURE),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"allows to reuse the signature from previous revision\", async () => {\n        await expect(newsroom.updateRevision(contentId, SECOND_URI, SOME_HASH, SIGNATURE)).to.eventually.be.fulfilled();\n      });\n    });\n  });\n\n  describe(\"isContentSigned\", () => {\n    it(\"returns true on signed content\", async () => {\n      const message = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n      const signature = await signAsync(message, author);\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, signature);\n      const contentId = idFromEvent(receipt);\n\n      expect(await newsroom.isContentSigned(contentId)).to.be.true();\n    });\n\n    it(\"returns false on non-signed content\", async () => {\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n      const contentId = idFromEvent(receipt);\n\n      expect(await newsroom.isContentSigned(contentId)).to.be.false();\n    });\n\n    it(\"works with multiple revisions\", async () => {\n      const message = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n      const signature = await signAsync(message, author);\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, signature);\n      const contentId = idFromEvent(receipt);\n\n      await newsroom.updateRevision(contentId, SOME_URI, SOME_HASH, signature);\n\n      expect(await newsroom.isContentSigned(contentId)).to.be.true();\n    });\n  });\n\n  describe(\"getContent\", () => {\n    it(\"returns proper data\", async () => {\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n\n      const block = await getBlockAsync(receipt.receipt.blockNumber);\n      const contentId = idFromEvent(receipt);\n\n      const [hash, uri, timestamp, returnedAuthor, signature] = await newsroom.getContent(contentId);\n\n      expect(uri).to.be.equal(SOME_URI);\n      expect(hash).to.be.equal(SOME_HASH);\n      expect(timestamp).to.be.bignumber.equal(block.timestamp);\n      expect(is0x0Address(returnedAuthor)).to.be.ok();\n      expect(signature).to.be.equal(null);\n    });\n\n    it(\"returns signed data\", async () => {\n      const MESSAGE = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n      const SIGNATURE = await signAsync(MESSAGE, author);\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE);\n\n      const contentId = idFromEvent(receipt);\n\n      const [, , , returnedAuthor, signature] = await newsroom.getContent(contentId);\n\n      expect(returnedAuthor).to.be.equal(author);\n      expect(signature).to.be.equal(SIGNATURE);\n    });\n\n    it(\"returns zeros on non-existing content\", async () => {\n      const result = newsroom.getContent(999);\n      expect(result).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"returns latest revision\", async () => {\n      const SECOND_HASH = web3.utils.sha3(\"Some test content\");\n\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n      const contentId = idFromEvent(receipt);\n\n      const updateReceipt = await newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, \"0x\");\n      const block = await getBlockAsync(updateReceipt.receipt.blockNumber);\n\n      const [hash, uri, timestamp] = await newsroom.getContent(contentId);\n\n      expect(uri).to.be.equal(SECOND_URI);\n      expect(hash).to.be.equal(SECOND_HASH);\n      expect(timestamp).to.be.bignumber.equal(block.timestamp);\n    });\n  });\n\n  describe(\"getRevision\", () => {\n    it(\"returns proper data\", async () => {\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n\n      const block = await getBlockAsync(receipt.receipt.blockNumber);\n      const contentId = idFromEvent(receipt);\n\n      const [hash, uri, timestamp] = await newsroom.getRevision(contentId, 0);\n\n      expect(uri).to.be.equal(SOME_URI);\n      expect(hash).to.be.equal(SOME_HASH);\n      expect(timestamp).to.be.bignumber.equal(block.timestamp);\n    });\n\n    it(\"returns zeros on non-existing content\", async () => {\n      const result = newsroom.getRevision(999, 0);\n      expect(result).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"returns latest revision\", async () => {\n      const SECOND_HASH = web3.utils.sha3(\"Some test content\");\n\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n      const contentId = idFromEvent(receipt);\n\n      const updateReceipt = await newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, \"0x\");\n      const block = await getBlockAsync(updateReceipt.receipt.blockNumber);\n\n      const [hash, uri, timestamp] = await newsroom.getRevision(contentId, 1);\n\n      expect(uri).to.be.equal(SECOND_URI);\n      expect(hash).to.be.equal(SECOND_HASH);\n      expect(timestamp).to.be.bignumber.equal(block.timestamp);\n    });\n\n    it(\"returns previous revision\", async () => {\n      const SECOND_HASH = web3.utils.sha3(\"Some test content\");\n\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n      const block = await getBlockAsync(receipt.receipt.blockNumber);\n\n      const contentId = idFromEvent(receipt);\n\n      await newsroom.updateRevision(contentId, SECOND_URI, SECOND_HASH, \"0x\");\n\n      const [hash, uri, timestamp] = await newsroom.getRevision(contentId, 0);\n\n      expect(uri).to.be.equal(SOME_URI);\n      expect(hash).to.be.equal(SOME_HASH);\n      expect(timestamp).to.be.bignumber.equal(block.timestamp);\n    });\n\n    it(\"returns zeros on non-existing revision\", async () => {\n      const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\");\n\n      const contentId = idFromEvent(receipt);\n\n      const result = newsroom.getRevision(contentId, 999);\n      expect(result).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n  });\n\n  describe(\"signRevision\", () => {\n    let contentId: BN;\n    let MESSAGE: string;\n    let SIGNATURE: string;\n\n    beforeEach(async () => {\n      MESSAGE = prepareNewsroomMessage(newsroom.address, SOME_HASH);\n      SIGNATURE = await signAsync(MESSAGE, author);\n      await newsroom.addRole(editor, NEWSROOM_ROLE_EDITOR);\n    });\n\n    it(\"requires the owner to sign charter\", async () => {\n      expect(await newsroom.revisionCount(0)).to.be.bignumber.equal(1);\n\n      await expect(newsroom.signRevision(0, 0, author, SIGNATURE, { from: editor })).to.eventually.be.rejectedWith(\n        REVERTED,\n      );\n\n      await expect(\n        newsroom.signRevision(0, 0, author, SIGNATURE, { from: defaultAccount }),\n      ).to.eventually.be.fulfilled();\n    });\n\n    describe(\"with no publishing author\", () => {\n      beforeEach(async () => {\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, ZERO_ADDRESS, \"0x\", { from: editor });\n        const event = findEvent(receipt, events.NEWSROOM_PUBLISHED);\n        expect(event).to.not.be.null();\n        contentId = event!.args.contentId;\n      });\n\n      it(\"doesn't allow to add signature with 0x0 author\", async () => {\n        await expect(newsroom.signRevision(contentId, 0, ZERO_ADDRESS, SIGNATURE)).to.be.eventually.rejectedWith(\n          REVERTED,\n        );\n      });\n\n      it(\"allows to update author\", async () => {\n        const receipt = await newsroom.signRevision(contentId, 0, author, SIGNATURE);\n        const event = findEvent(receipt, events.NEWSROOM_SIGNED);\n\n        const [, , , newAuthor] = await newsroom.getContent(contentId);\n\n        expect(event).to.not.be.null();\n        expect(event!.args.contentId).to.be.bignumber.equal(contentId);\n        expect(event!.args.revisionId).to.be.bignumber.equal(0);\n        expect(event!.args.author).to.be.equal(author);\n\n        expect(newAuthor).to.be.equal(author);\n      });\n\n      it(\"requires proper signature\", async () => {\n        const wrongSignature = await signAsync(MESSAGE, editor);\n\n        await expect(newsroom.signRevision(contentId, 0, author, wrongSignature)).to.eventually.be.rejectedWith(\n          REVERTED,\n        );\n      });\n\n      it(\"requires editor role\", async () => {\n        await expect(\n          newsroom.signRevision(contentId, 0, author, SIGNATURE, { from: author }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n    });\n\n    describe(\"with an existing author\", () => {\n      beforeEach(async () => {\n        const receipt = await newsroom.publishContent(SOME_URI, SOME_HASH, author, SIGNATURE, { from: editor });\n        const event = findEvent(receipt, events.NEWSROOM_PUBLISHED);\n        expect(event).to.not.be.null();\n        contentId = event!.args.contentId;\n      });\n\n      it(\"doesn't allow to add 0x0 author\", async () => {\n        await expect(newsroom.signRevision(contentId, 0, ZERO_ADDRESS, SIGNATURE)).to.eventually.be.rejectedWith(\n          REVERTED,\n        );\n      });\n\n      it(\"doesn't allow to unsign revision\", async () => {\n        await expect(newsroom.signRevision(contentId, 0, ZERO_ADDRESS, \"0x\")).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"allows to backsign an unsigned revisision\", async () => {\n        await newsroom.updateRevision(contentId, SOME_URI, SOME_HASH, \"0x\", { from: editor });\n\n        expect(await newsroom.isContentSigned(contentId)).to.be.false();\n\n        await newsroom.signRevision(contentId, 1, author, SIGNATURE);\n\n        expect(await newsroom.isContentSigned(contentId)).to.be.true();\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/newsroom/newsroomFactory.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport { DecodedLogEntry } from \"@joincivil/typescript-types\";\nimport { isDeployedBytecodeEqual } from \"@joincivil/utils\";\nimport * as chai from \"chai\";\nimport { bufferToHex, sha3 } from \"ethereumjs-util\";\nimport { REVERTED, NEWSROOM_ROLE_EDITOR } from \"../utils/constants\";\nimport { configureProviders } from \"../utils/contractutils\";\nimport ethApi from \"../utils/getethapi\";\n\nconst Newsroom = artifacts.require(\"Newsroom\");\nconst MultiSigWallet = artifacts.require(\"MultiSigWallet\");\nconst MultiSigWalletFactory = artifacts.require(\"MultiSigWalletFactory\");\nconst NewsroomFactory = artifacts.require(\"NewsroomFactory\");\nconfigureProviders(Newsroom, MultiSigWallet, MultiSigWalletFactory, NewsroomFactory);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst CONTRACT_EVENT = \"ContractInstantiation\";\nconst NEWSROOM_NAME = \"Newsroom name\";\nconst SOME_URI = \"http://someuri.com\";\nconst SOME_HASH = bufferToHex(sha3(\"\"));\n\nfunction createdContract(factory: any, txReceipt: any): string {\n  const myLog = txReceipt.logs.find((log: any) => log.event === CONTRACT_EVENT && log.address === factory.address) as\n    | DecodedLogEntry\n    | undefined;\n\n  if (!myLog) {\n    throw new Error(\"ContractInstantation log not found\");\n  }\n  return myLog.args.instantiation;\n}\n\n// TODO(ritave): Make this into mocha extension\nasync function codeMatches(instance: any, clazz: any): Promise<void> {\n  const code = await ethApi.getCode(instance.address);\n  expect(isDeployedBytecodeEqual(code, clazz.deployedBytecode)).to.be.true();\n}\n\ncontract(\"NewsroomFactory\", accounts => {\n  const [owner, secondOwner, thirdOwner] = accounts;\n\n  let multisigFactoryInstance: any;\n  let instance: any;\n\n  async function createNewsroom(\n    owners: string[],\n    required: number = 1,\n    name: string = NEWSROOM_NAME,\n  ): Promise<{ newsroom: any; multisig: any }> {\n    const receipt = await instance.create(name, SOME_URI, SOME_HASH, owners, required);\n    return {\n      newsroom: await Newsroom.at(createdContract(instance, receipt)),\n      multisig: await MultiSigWallet.at(createdContract(multisigFactoryInstance, receipt)),\n    };\n  }\n\n  before(async () => {\n    multisigFactoryInstance = await MultiSigWalletFactory.new();\n  });\n\n  beforeEach(async () => {\n    instance = await NewsroomFactory.new(multisigFactoryInstance.address);\n  });\n\n  it(\"creates a newsroom\", async () => {\n    const { newsroom } = await createNewsroom([owner]);\n\n    const [charterHash, charterUri] = await newsroom.getContent(0);\n\n    await codeMatches(newsroom, Newsroom);\n\n    expect(charterHash).to.be.equal(SOME_HASH);\n    expect(charterUri).to.be.equal(SOME_URI);\n  });\n\n  it(\"creates a multisig\", async () => {\n    const { multisig } = await createNewsroom([owner]);\n\n    await codeMatches(multisig, MultiSigWallet);\n  });\n\n  it(\"tranfers ownership to multisig\", async () => {\n    const { newsroom, multisig } = await createNewsroom([owner]);\n\n    await expect(newsroom.owner()).to.eventually.be.equal(multisig.address);\n  });\n\n  it(\"sets proper owners\", async () => {\n    const OWNERS = [owner, thirdOwner];\n\n    const { multisig } = await createNewsroom(OWNERS);\n\n    await expect(multisig.getOwners()).to.eventually.have.members(OWNERS);\n  });\n\n  it(\"makes the owner also an editor\", async () => {\n    const OWNERS = [owner];\n    const { newsroom } = await createNewsroom(OWNERS);\n    expect(await newsroom.hasRole(owner, NEWSROOM_ROLE_EDITOR)).to.be.true();\n  });\n\n  it(\"sets proper required\", async () => {\n    const OWNERS = [owner, secondOwner, thirdOwner];\n    const REQUIRED = 2;\n\n    const { multisig } = await createNewsroom(OWNERS, REQUIRED);\n\n    await expect(multisig.required()).to.eventually.be.bignumber.equal(REQUIRED);\n  });\n\n  it(\"registers newsroom\", async () => {\n    const { newsroom } = await createNewsroom([owner]);\n\n    await expect(instance.isInstantiation(newsroom.address)).to.eventually.be.true();\n  });\n\n  it(\"registers multisig\", async () => {\n    const { multisig } = await createNewsroom([owner]);\n\n    await expect(multisigFactoryInstance.isInstantiation(multisig.address)).to.eventually.be.true();\n  });\n\n  it(\"sets the name properly\", async () => {\n    const MY_NAME = \"my name\";\n\n    const { newsroom } = await createNewsroom([owner], 1, MY_NAME);\n\n    expect(await newsroom.name()).to.be.equal(MY_NAME);\n  });\n\n  it(\"doesn't allow empty names\", async () => {\n    await expect(instance.create(\"\", \"somecontent.com\", SOME_HASH, [owner], 1)).to.eventually.be.rejectedWith(REVERTED);\n  });\n\n  it(\"checks required amount\", async () => {\n    await expect(\n      instance.create(NEWSROOM_NAME, \"somecontent.com\", SOME_HASH, [owner], 2),\n    ).to.eventually.be.rejectedWith(REVERTED);\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/contractRegistry/apply.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst AddressRegistry = artifacts.require(\"AddressRegistry\");\nutils.configureProviders(AddressRegistry);\n\nconst CHARTER_HASH = \"0x\";\n\ncontract(\"ContractAddressRegistry\", accounts => {\n  describe(\"Function: apply\", () => {\n    const [applicant, troll] = accounts;\n    const listing1 = \"0x0000000000000000000000000000000000000001\";\n    let registry: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestContractAddressRegistryInstance(accounts);\n    });\n\n    describe(\"with real newsroom\", () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(applicant);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should allow contract owner to apply on behalf of contract\", async () => {\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.fulfilled();\n\n        // get the struct in the mapping\n        const [applicationExpiry, whitelisted, owner, unstakedDeposit] = await registry.listings(newsroomAddress);\n\n        // check that Application is initialized correctly\n        expect(applicationExpiry).to.be.bignumber.gt(0, \"challenge time < now\");\n        expect(whitelisted).to.be.false(\"whitelisted != false\");\n        expect(owner).to.be.equal(applicant, \"owner of application != address that applied\");\n        expect(unstakedDeposit).to.be.bignumber.equal(utils.paramConfig.minDeposit, \"incorrect unstakedDeposit\");\n      });\n\n      it(\"should not allow a listing to apply which has a pending application\", async () => {\n        await registry.apply(newsroomAddress, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant });\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"should add a listing to the whitelist which went unchallenged in its application period\", async () => {\n        await registry.apply(newsroomAddress, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant });\n        await utils.advanceEvmTime(utils.paramConfig.applyStageLength * 45);\n        await registry.updateStatus(newsroomAddress);\n        const [, result] = await registry.listings(newsroomAddress);\n        expect(result).to.be.true(\"listing didn't get whitelisted\");\n      });\n\n      it(\"should not allow a listing to apply which is already listed\", async () => {\n        await utils.addToWhitelist(newsroomAddress, utils.paramConfig.minDeposit, applicant, registry);\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n    });\n\n    describe(\"with troll newsroom\", () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(troll);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should allow a non-contract owner to apply\", async () => {\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.fulfilled();\n      });\n    });\n\n    it(\"should prevent non-contract address from being listed\", async () => {\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should prevent non-contract address from being listed when registry cast to AddressRegistry\", async () => {\n      const parentRegistry = await AddressRegistry.at(registry.address);\n      await expect(\n        parentRegistry.apply(listing1, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/get.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst Government = artifacts.require(\"Government\");\nconst PLCRVoting = artifacts.require(\"PLCRVoting\");\nutils.configureProviders(Government);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: get\", () => {\n    const [JAB, nobody, voter] = accounts;\n    let registry: any;\n    let government: any;\n    let voting: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n      voting = await PLCRVoting.at(await registry.voting());\n    });\n\n    it(\"judgeAppealLen value should be same as in config after deployment\", async () => {\n      const judgeAppealLength = await government.get(\"judgeAppealLen\");\n      expect(judgeAppealLength).to.be.bignumber.equal(\n        new BN(utils.paramConfig.judgeAppealPhaseLength),\n        \"judgeAppealLen was not equal to value in config immediately after deployment\",\n      );\n    });\n\n    it(\"judgeAppealLength should be new value after processing proposal\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n\n      const { propID, pollID } = receipt.logs[0].args;\n      await utils.commitVote(voting, pollID, \"1\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.govtPCommitStageLength + 1);\n      await voting.revealVote(pollID, \"1\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.govtPRevealStageLength + 1);\n      await government.processProposal(propID, { from: nobody });\n      const judgeAppealLength = await government.get(\"judgeAppealLen\");\n      expect(judgeAppealLength).to.be.bignumber.equal(\n        new BN(100),\n        \"judgeAppealLen was not equal to value it was set to\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/getAppellate.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Government = artifacts.require(\"Government\");\nutils.configureProviders(Government);\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: getAppellate\", () => {\n    const [JAB, newAppellate] = accounts;\n    let registry: any;\n    let government: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n    });\n\n    it(\"should return JAB immediately after deploy\", async () => {\n      const appellate = await government.getAppellate();\n      expect(appellate).to.be.equal(JAB, \"Should have equaled JAB immediately after deploy\");\n    });\n\n    it(\"should return newAppellate after it has been set\", async () => {\n      await expect(government.setAppellate(newAppellate, { from: JAB })).to.eventually.be.fulfilled(\n        \"Should have allowed JAB to update appellate\",\n      );\n      const appellate = await government.getAppellate();\n      expect(appellate).to.be.equal(newAppellate, \"Should have equaled newAppellate immediately after deploy\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/getGovernmentController.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Government = artifacts.require(\"Government\");\nutils.configureProviders(Government);\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: getAppellate\", () => {\n    const [JAB] = accounts;\n    let registry: any;\n    let government: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n    });\n\n    it(\"should return JAB immediately after deploy\", async () => {\n      const appellate = await government.getGovernmentController();\n      expect(appellate).to.be.equal(JAB, \"Should have equaled JAB immediately after deploy\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/processProposal.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\nimport { REVERTED } from \"../../utils/constants\";\nimport { BN } from \"bn.js\";\nconst Government = artifacts.require(\"Government\");\nconst PLCRVoting = artifacts.require(\"PLCRVoting\");\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: processProposal\", () => {\n    const [JAB, nobody, voter] = accounts;\n    let registry: any;\n    let government: any;\n    let voting: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n      voting = await PLCRVoting.at(await registry.voting());\n    });\n\n    it(\"processProposal should fail if proposal not active\", async () => {\n      await expect(government.processProposal(\"0x1234\", { from: nobody })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to process nonexistent proposal\",\n      );\n    });\n\n    it(\"processProposal should fail if proposal just begun\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n      const { propID } = receipt.logs[0].args;\n      await expect(government.processProposal(propID, { from: nobody })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to process nonexistent proposal\",\n      );\n    });\n\n    it(\"processProposal should fail if proposal vote not over\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n      const { propID } = receipt.logs[0].args;\n      await utils.advanceEvmTime(utils.paramConfig.govtPCommitStageLength + 1);\n      await expect(government.processProposal(propID, { from: nobody })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to process proposal before vote is over\",\n      );\n    });\n\n    it(\"processProposal should succeed if proposal vote over\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n      const { propID } = receipt.logs[0].args;\n      await utils.advanceEvmTime(utils.paramConfig.govtPCommitStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.govtPRevealStageLength + 1);\n      await expect(government.processProposal(propID, { from: nobody })).to.eventually.be.fulfilled(\n        \"should have been able to process proposal after vote is over\",\n      );\n    });\n\n    it(\"judgeAppealLength should be new value after processing successful proposal\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n\n      const { propID, pollID } = receipt.logs[0].args;\n      await utils.commitVote(voting, pollID, \"1\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.govtPCommitStageLength + 1);\n      await voting.revealVote(pollID, \"1\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.govtPRevealStageLength + 1);\n      await government.processProposal(propID, { from: nobody });\n      const judgeAppealLength = await government.get(\"judgeAppealLen\");\n      expect(judgeAppealLength).to.be.bignumber.equal(\n        new BN(100),\n        \"judgeAppealLen was not equal to value it was set to\",\n      );\n    });\n\n    it(\"judgeAppealLength should be old value after processing unsuccessful proposal\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n\n      const { propID, pollID } = receipt.logs[0].args;\n      await utils.commitVote(voting, pollID, \"0\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.govtPCommitStageLength + 1);\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.govtPRevealStageLength + 1);\n      await government.processProposal(propID, { from: nobody });\n      const judgeAppealLength = await government.get(\"judgeAppealLen\");\n      expect(judgeAppealLength).to.be.bignumber.equal(\n        new BN(utils.paramConfig.judgeAppealPhaseLength),\n        \"judgeAppealLen was not equal to value it was set to\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/proposeReparameterization.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst Government = artifacts.require(\"Government\");\nconst PLCRVoting = artifacts.require(\"PLCRVoting\");\n\nutils.configureProviders(Government);\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: proposeReparameterization\", () => {\n    const [JAB, troll, nobody, voter] = accounts;\n    let registry: any;\n    let government: any;\n    let voting: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n      voting = await PLCRVoting.at(await registry.voting());\n    });\n\n    it(\"should be possible for JAB to propose new judgeAppealLen value\", async () => {\n      await expect(\n        government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should be possible for JAB to propose new appealVotePercentage value less than or equal to 100\", async () => {\n      await expect(\n        government.proposeReparameterization(\"appealVotePercentage\", 99, { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should be possible for JAB to propose new appealVotePercentage value less than or equal to 100\", async () => {\n      await expect(\n        government.proposeReparameterization(\"appealVotePercentage\", 100, { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should be possible for JAB to propose new appealVotePercentage value less than or equal to 100\", async () => {\n      await expect(\n        government.proposeReparameterization(\"appealVotePercentage\", 1, { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should not be possible for JAB to propose new appealVotePercentage value greater than 100\", async () => {\n      await expect(\n        government.proposeReparameterization(\"appealVotePercentage\", 101, { from: JAB }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should not be possible for JAB to propose new appealVotePercentage value greater than 100\", async () => {\n      await expect(\n        government.proposeReparameterization(\"appealVotePercentage\", 10000, { from: JAB }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should not be possible for troll to propose new judgeAppealLen value\", async () => {\n      await expect(\n        government.proposeReparameterization(\"judgeAppealLen\", 100, { from: troll }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed troll to propose new judgeAppealLen\");\n    });\n\n    it(\"should be possible for JAB to propose new judgeAppealLen value again after processing first proposal\", async () => {\n      const receipt = await government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB });\n\n      const { propID, pollID } = receipt.logs[0].args;\n      await utils.commitVote(voting, pollID, \"0\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.govtPCommitStageLength + 1);\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.govtPRevealStageLength + 1);\n      await government.processProposal(propID, { from: nobody });\n      const judgeAppealLength = await government.get(\"judgeAppealLen\");\n      expect(judgeAppealLength).to.be.bignumber.equal(\n        new BN(utils.paramConfig.judgeAppealPhaseLength),\n        \"judgeAppealLen was not equal to value it was set to\",\n      );\n\n      await expect(\n        government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new judgeAppealLen\");\n    });\n\n    it(\"should not be possible for JAB to propose judgeAppealLen same as current value again after processing first proposal\", async () => {\n      await expect(\n        government.proposeReparameterization(\"judgeAppealLen\", utils.paramConfig.judgeAppealPhaseLength, { from: JAB }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed JAB to propose new judgeAppealLen same as current value\",\n      );\n    });\n\n    it(\"should not be possible for JAB to propose new judgeAppealLen value while same proposal currently in progress\", async () => {\n      await expect(\n        government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new judgeAppealLen\");\n      await expect(\n        government.proposeReparameterization(\"judgeAppealLen\", 100, { from: JAB }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should have allowed JAB to propose new judgeAppealLen\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/setAppellate.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Government = artifacts.require(\"Government\");\nutils.configureProviders(Government);\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: setAppellate\", () => {\n    const [JAB, troll, newAppellate] = accounts;\n    let registry: any;\n    let government: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n    });\n\n    it(\"should be possible for JAB to set appellate\", async () => {\n      await expect(government.setAppellate(newAppellate, { from: JAB })).to.eventually.be.fulfilled(\n        \"Should have allowed JAB to update appellate\",\n      );\n    });\n\n    it(\"should not be possible for troll to set appellate\", async () => {\n      await expect(government.setAppellate(newAppellate, { from: troll })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed troll to update appellate\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/government/setNewConstitution.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Government = artifacts.require(\"Government\");\n\nutils.configureProviders(Government);\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: proposeReparameterization\", () => {\n    const [JAB, troll] = accounts;\n    let registry: any;\n    let government: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      government = await Government.at(await registry.government());\n    });\n\n    it(\"should be possible for JAB to set new constitution value\", async () => {\n      await expect(\n        government.setNewConstitution(web3.utils.sha3(\"something.com\"), \"something.com\", { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to propose new constitution\");\n    });\n\n    it(\"should not be possible for troll to set new constitution value\", async () => {\n      await expect(\n        government.setNewConstitution(web3.utils.sha3(\"something.com\"), \"something.com\", { from: troll }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed troll to propose new constitution\");\n    });\n\n    it(\"should be possible for JAB to set new constitution value again after setting it once\", async () => {\n      await government.setNewConstitution(web3.utils.sha3(\"something.com\"), \"something.com\", {\n        from: JAB,\n      });\n\n      const constitutionURI = await government.constitutionURI();\n      expect(constitutionURI).to.be.equal(\"something.com\", \"constitutionURI was not equal to value it was set to\");\n\n      await expect(\n        government.setNewConstitution(web3.utils.sha3(\"something.com\"), \"something.com\", { from: JAB }),\n      ).to.eventually.be.fulfilled(\"Should have allowed JAB to set new constitution after setting previous\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/canBeSet.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", (accounts: string[]) => {\n  describe(\"Function: canBeSet\", () => {\n    const proposer = accounts[0];\n    let parameterizer: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n    });\n\n    it(\"should return true if a proposal passed its application stage with no challenge\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"voteQuorum\",\n        utils.toBaseTenBigNumber(51),\n        parameterizer,\n        proposer,\n      );\n      await utils.advanceEvmTime(utils.paramConfig.pApplyStageLength + 1);\n      const result = await parameterizer.canBeSet(propID);\n      expect(result).to.be.true();\n    });\n    it(\"should return false if a proposal is still in its application stage with no challenge\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"pRevealStageLength\",\n        utils.toBaseTenBigNumber(500),\n        parameterizer,\n        proposer,\n      );\n      const result = await parameterizer.canBeSet(propID);\n      expect(result).to.be.false();\n    });\n    it(\"should expect false immediately after proposal, and true once enough time has passed\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"dispensationPct\",\n        utils.toBaseTenBigNumber(58),\n        parameterizer,\n        proposer,\n      );\n\n      const betterBeFalse = await parameterizer.canBeSet(propID);\n      expect(betterBeFalse).to.be.false();\n\n      await utils.advanceEvmTime(utils.paramConfig.pApplyStageLength + 1);\n\n      const result = await parameterizer.canBeSet(propID);\n      expect(result).to.be.true();\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/challengeCanBeResolved.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: challengeCanBeResolved\", () => {\n    const [proposer, challenger] = accounts;\n    let parameterizer: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n    });\n\n    it(\"should be true if a challenge is ready to be resolved\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"voteQuorum\",\n        utils.toBaseTenBigNumber(51),\n        parameterizer,\n        proposer,\n      );\n\n      await parameterizer.challengeReparameterization(propID, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      const result = await parameterizer.challengeCanBeResolved(propID);\n      expect(result).to.be.true();\n    });\n\n    it(\"should be false if a challenge is not ready to be resolved\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"voteQuorum\",\n        utils.toBaseTenBigNumber(59),\n        parameterizer,\n        proposer,\n      );\n\n      await parameterizer.challengeReparameterization(propID, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength);\n\n      const result = await parameterizer.challengeCanBeResolved(propID);\n      expect(result).to.be.false();\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/challengeReparameterization.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport { BN } from \"bn.js\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst Token = artifacts.require(\"CVLToken.sol\");\nutils.configureProviders(PLCRVoting, Token);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: challengeReparameterization\", () => {\n    const [proposer, challenger, voter] = accounts;\n    let parameterizer: any;\n    let voting: any;\n    let token: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n      const tokenAddress = await parameterizer.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should leave parameters unchanged if a proposal loses a challenge\", async () => {\n      const proposerStartingBalance = await token.balanceOf(proposer);\n      const challengerStartingBalance = await token.balanceOf(challenger);\n\n      const receipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = receipt.logs[0].args;\n      await parameterizer.challengeReparameterization(propID, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + utils.paramConfig.pRevealStageLength + 1);\n      await parameterizer.processProposal(propID);\n      const voteQuorum = await parameterizer.get(\"voteQuorum\");\n      expect(voteQuorum).to.be.bignumber.equal(\"50\");\n      const proposerFinalBalance = await token.balanceOf(proposer);\n      const proposerExpected = proposerStartingBalance.sub(new BN(utils.paramConfig.pMinDeposit));\n      expect(proposerFinalBalance).to.be.bignumber.equal(proposerExpected);\n      // Edge case, challenger gets both deposits back because there were no voters\n      const challengerFinalBalance = await token.balanceOf(challenger);\n      const challengerExpected = challengerStartingBalance.add(new BN(utils.paramConfig.pMinDeposit));\n      expect(challengerFinalBalance).to.be.bignumber.equal(challengerExpected);\n    });\n\n    it(\"should set new parameters if a proposal wins a challenge\", async () => {\n      const proposerStartingBalance = await token.balanceOf(proposer);\n      const challengerStartingBalance = await token.balanceOf(challenger);\n\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      await parameterizer.processProposal(propID);\n\n      const voteQuorum = await parameterizer.get(\"voteQuorum\");\n      expect(voteQuorum).to.be.bignumber.equal(\"51\");\n\n      const proposerFinalBalance = await token.balanceOf(proposer);\n      const winnings = utils.multiplyByPercentage(\n        new BN(utils.paramConfig.pMinDeposit),\n        utils.paramConfig.pDispensationPct,\n      );\n      const proposerExpected = proposerStartingBalance.add(new BN(winnings.toString()));\n      expect(proposerFinalBalance).to.be.bignumber.equal(proposerExpected);\n\n      const challengerFinalBalance = await token.balanceOf(challenger);\n      const challengerExpected = challengerStartingBalance.sub(new BN(utils.paramConfig.pMinDeposit));\n      expect(challengerFinalBalance).to.be.bignumber.equal(challengerExpected);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/claimReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nimport { BN } from \"bn.js\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst Token = artifacts.require(\"CVLToken.sol\");\nutils.configureProviders(PLCRVoting, Token);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: claimReward\", () => {\n    const [proposer, challenger, voterAlice, voterBob] = accounts;\n    let parameterizer: any;\n    let voting: any;\n    let token: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n      const tokenAddress = await parameterizer.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should give the correct number of tokens to a voter on the winning side.\", async () => {\n      const voterAliceStartingBalance = await token.balanceOf(voterAlice);\n\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      await parameterizer.processProposal(propID);\n\n      await parameterizer.claimReward(challengeID, \"420\", { from: voterAlice });\n      await voting.withdrawVotingRights(\"10\", { from: voterAlice });\n\n      const voterAliceFinalBalance = await token.balanceOf.call(voterAlice);\n      const voterAliceExpected = voterAliceStartingBalance.add(\n        utils.multiplyByPercentage(\n          new BN(utils.paramConfig.pMinDeposit),\n          utils.toBaseTenBigNumber(100).sub(utils.toBaseTenBigNumber(utils.paramConfig.pDispensationPct)),\n        ),\n      );\n      expect(voterAliceFinalBalance).to.be.bignumber.equal(voterAliceExpected);\n    });\n\n    it(\"should give the correct number of tokens to multiple voters on the winning side.\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"52\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.commitVote(voting, challengeID, \"1\", \"20\", \"420\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice });\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      await parameterizer.processProposal(propID);\n\n      const voterAliceReward = await parameterizer.voterReward.call(voterAlice, challengeID, \"420\");\n      await parameterizer.claimReward(challengeID, \"420\", { from: voterAlice });\n      await voting.withdrawVotingRights(\"10\", { from: voterAlice });\n\n      const voterBobReward = await parameterizer.voterReward.call(voterBob, challengeID, \"420\");\n      await parameterizer.claimReward(challengeID, \"420\", { from: voterBob });\n      await voting.withdrawVotingRights(\"20\", { from: voterBob });\n\n      // TODO: do better than approximately.\n      expect(voterBobReward.sub(new BN(2))).to.bignumber.equal(\n        voterAliceReward.mul(utils.toBaseTenBigNumber(2)),\n        \"Rewards were not properly distributed between voters\",\n      );\n      // TODO: add asserts for final balances\n    });\n\n    it(\"should not transfer tokens for an unresolved challenge\", async () => {\n      const proposerStartingBalance = await token.balanceOf(proposer);\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"pMinDeposit\", \"5000\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      await expect(parameterizer.claimReward(challengeID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n      );\n\n      const proposerEndingBalance = await token.balanceOf.call(proposer);\n      const proposerExpected = proposerStartingBalance.sub(utils.toBaseTenBigNumber(utils.paramConfig.pMinDeposit));\n      const aliceEndingBalance = await token.balanceOf.call(voterAlice);\n      const aliceExpected = aliceStartingBalance.sub(utils.toBaseTenBigNumber(10));\n\n      expect(proposerEndingBalance).to.be.bignumber.equal(proposerExpected, \"proposers ending balance is incorrect\");\n      expect(aliceEndingBalance).to.be.bignumber.equal(aliceExpected, \"alices ending balance is incorrect\");\n    });\n\n    // it(\"should give zero tokens to a voter who cannot reveal a vote on the winning side.\");\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/get.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", (accounts: string[]) => {\n  describe(\"Function: get\", () => {\n    let parameterizer: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n    });\n\n    it(\"should get a parameter\", async () => {\n      const result = await parameterizer.get(\"minDeposit\");\n      expect(result).to.be.bignumber.equal(utils.paramConfig.minDeposit, \"minDeposit param has wrong value\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/processProposal.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst Token = artifacts.require(\"CVLToken.sol\");\nutils.configureProviders(PLCRVoting, Token);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: processProposal\", () => {\n    const [proposer, challenger, voter] = accounts;\n    let parameterizer: any;\n    let voting: any;\n    let token: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n      const tokenAddress = await parameterizer.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should set new parameters if a proposal went unchallenged\", async () => {\n      const receipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      await utils.advanceEvmTime(utils.paramConfig.pApplyStageLength + 1);\n\n      const { propID } = receipt.logs[0].args;\n      await parameterizer.processProposal(propID);\n\n      const voteQuorum = await parameterizer.get(\"voteQuorum\");\n      expect(voteQuorum.toString(10)).to.be.equal(\n        \"51\",\n        \"A proposal which went unchallenged failed to update its parameter\",\n      );\n    });\n\n    it(\"should not set new parameters if a proposal's processBy date has passed\", async () => {\n      const receipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"69\", { from: proposer });\n\n      const { propID } = receipt.logs[0].args;\n      const [, , , , , processBy] = await parameterizer.proposals(propID);\n      await utils.advanceEvmTime(processBy.toNumber() + 1);\n\n      await parameterizer.processProposal(propID);\n\n      const voteQuorum = await parameterizer.get(\"voteQuorum\");\n      expect(voteQuorum).to.be.bignumber.equal(\n        utils.paramConfig.voteQuorum, // unchanged\n        \"A proposal whose processBy date passed was able to update the parameterizer\",\n      );\n    });\n\n    it(\n      \"should not set new parameters if a proposal's processBy date has passed, \" +\n        \"but should resolve any challenges against the domain\",\n      async () => {\n        const proposerStartingBalance = await token.balanceOf(proposer);\n        const challengerStartingBalance = await token.balanceOf(challenger);\n\n        const receipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"69\", { from: proposer });\n\n        const { propID } = receipt.logs[0].args;\n\n        const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n        const { challengeID } = challengeReceipt.logs[0].args;\n        await utils.commitVote(voting, challengeID, \"0\", \"10\", \"420\", voter);\n        await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n        await voting.revealVote(challengeID, \"0\", \"420\", { from: voter });\n\n        const [, , , , , processBy] = await parameterizer.proposals(propID);\n        await utils.advanceEvmTime(processBy.toNumber() + 1);\n\n        await parameterizer.processProposal(propID);\n\n        const voteQuorum = await parameterizer.get(\"voteQuorum\");\n        expect(voteQuorum).to.be.bignumber.equal(\n          utils.paramConfig.voteQuorum,\n          \"A proposal whose processBy date passed was able to update the parameterizer\",\n        );\n\n        const proposerFinalBalance = await token.balanceOf(proposer);\n        const proposerExpected = proposerStartingBalance.sub(new BN(utils.paramConfig.pMinDeposit));\n        expect(proposerFinalBalance).to.be.bignumber.equal(\n          proposerExpected,\n          \"The challenge loser's token balance is not as expected\",\n        );\n\n        const challengerFinalBalance = await token.balanceOf.call(challenger);\n        const winnings = utils.multiplyByPercentage(\n          new BN(utils.paramConfig.pMinDeposit),\n          utils.paramConfig.pDispensationPct,\n        );\n        const challengerExpected = challengerStartingBalance.add(winnings);\n        expect(challengerFinalBalance).to.be.bignumber.equal(\n          challengerExpected,\n          \"The challenge winner's token balance is not as expected\",\n        );\n      },\n    );\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/propExists.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: propExists\", () => {\n    const [proposer] = accounts;\n    let parameterizer: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n    });\n\n    it(\"should true if a proposal exists for the provided propID\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"voteQuorum\",\n        utils.toBaseTenBigNumber(51),\n        parameterizer,\n        proposer,\n      );\n      const result = await parameterizer.propExists(propID);\n      expect(result).to.be.true(\"should have been true cause I literally just made the proposal\");\n    });\n\n    it(\"should false if no proposal exists for the provided propID\", async () => {\n      const result = await parameterizer.propExists(\"0x666\");\n      expect(result).to.be.false(\"should have been false cause i just made it up!\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/proposeReparameterization.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Token = artifacts.require(\"CVLToken.sol\");\nutils.configureProviders(Token);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: proposeReparameterization\", () => {\n    const [proposer, secondProposer] = accounts;\n    const pMinDeposit = utils.toBaseTenBigNumber(utils.paramConfig.pMinDeposit);\n    let parameterizer: any;\n    let token: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const tokenAddress = await parameterizer.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should add a new reparameterization proposal\", async () => {\n      const applicantStartingBalance = await token.balanceOf.call(proposer);\n\n      const receipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const propID = utils.getReceiptValue(receipt, \"propID\");\n      const [, , , , , , propValue] = await parameterizer.proposals(propID);\n\n      expect(propValue).to.be.bignumber.equal(\n        \"51\",\n        \"The reparameterization proposal was not created, or not created correctly.\",\n      );\n\n      const applicantFinalBalance = await token.balanceOf.call(proposer);\n      const expected = applicantStartingBalance.sub(pMinDeposit);\n      expect(applicantFinalBalance).to.be.bignumber.equal(\n        expected,\n        \"tokens were not properly transferred from proposer\",\n      );\n    });\n\n    it(\"should not allow a NOOP reparameterization\", async () => {\n      await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n      await expect(\n        parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Performed NOOP reparameterization\");\n    });\n\n    it(\"should not allow a reparameterization for a proposal that already exists\", async () => {\n      const applicantStartingBalance = await token.balanceOf.call(secondProposer);\n\n      await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n      await expect(\n        parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: secondProposer }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"should not have been able to make duplicate proposal\");\n\n      const applicantEndingBalance = await token.balanceOf.call(secondProposer);\n\n      expect(applicantEndingBalance).to.be.bignumber.equal(\n        applicantStartingBalance,\n        \"starting balance and ending balance should have been equal\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/voterReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Parameterizer\", accounts => {\n  describe(\"Function: voterReward\", () => {\n    const [proposer, challenger, voterAlice] = accounts;\n    let parameterizer: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should return the correct number of tokens to voter on the winning side.\", async () => {\n      const propID = await utils.proposeReparamAndGetPropID(\n        \"voteQuorum\",\n        utils.toBaseTenBigNumber(51),\n        parameterizer,\n        proposer,\n      );\n      const receipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n      const challengeID = receipt.logs[0].args.challengeID;\n      // Alice commits a vote: FOR, 10 tokens, 420 salt\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      // Alice reveals her vote: FOR, 420 salt\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      await parameterizer.processProposal(propID);\n\n      // Grab the challenge struct after the proposal has been processed\n      const voterTokens = await voting.getNumPassingTokens(voterAlice, challengeID, \"420\"); // 10\n      const [rewardPool, , , , totalTokens] = await parameterizer.challenges(challengeID); // 250,000\n\n      const expectedVoterReward = voterTokens.mul(rewardPool).div(totalTokens); // 250,000\n      const voterReward = await parameterizer.voterReward(voterAlice, challengeID, \"420\");\n\n      expect(expectedVoterReward).to.be.bignumber.equal(\n        voterReward,\n        \"voterReward should have equaled tokens * pool / total\",\n      );\n    });\n    // TODO: Complete\n    // it(\"should return zero tokens to a voter who cannot reveal a vote on the winning side.\");\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/parameterizer/voting.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\nconst ZERO_DATA = \"0x\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"PLCRVoting\", accounts => {\n  describe(\"Function: commitVote\", () => {\n    const [applicant, challenger, voter, applicant2] = accounts;\n    const listingAddress1 = \"0x1a5cdcFBA600e0c669795e0B65c344D5A37a4d5A\";\n    const listingAddress2 = \"0x2a5cDcfBa600e0c669795e0B65C344d5a37A4D5A\";\n    let registry: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should correctly update DLL state\", async () => {\n      const minDeposit = new BN(utils.paramConfig.minDeposit);\n\n      await registry.apply(listingAddress1, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.apply(listingAddress2, minDeposit, ZERO_DATA, { from: applicant2 });\n\n      const firstChallengeReceipt = await registry.challenge(listingAddress1, ZERO_DATA, { from: challenger });\n      const firstPollID = firstChallengeReceipt.logs[0].args.challengeID;\n      const secondChallengeReceipt = await registry.challenge(listingAddress2, ZERO_DATA, { from: challenger });\n      const secondPollID = secondChallengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, firstPollID, \"1\", \"7\", \"420\", voter);\n      await utils.commitVote(voting, secondPollID, \"1\", \"8\", \"420\", voter);\n      await utils.commitVote(voting, firstPollID, \"1\", \"9\", \"420\", voter);\n\n      const insertPoint = await voting.getInsertPointForNumTokens(voter, 6, secondPollID);\n      const expectedInsertPoint = 0;\n\n      expect(insertPoint).to.be.bignumber.equal(expectedInsertPoint, \"The insert point was not correct\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/plcrVoting/commitVote.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"PLCRVoting\", accounts => {\n  describe(\"Function: commitVote\", () => {\n    const [proposer, challenger, voterAlice] = accounts;\n    const unapproved = accounts[9];\n    let parameterizer: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should revert if poll does not exists.\", async () => {\n      await expect(utils.commitVote(voting, \"1\", \"1\", \"500\", \"123\", voterAlice)).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should have reverted if poll did not exist\",\n      );\n    });\n\n    it(\"should revert if pollID = 0.\", async () => {\n      await expect(utils.commitVote(voting, \"0\", \"1\", \"500\", \"123\", voterAlice)).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should have reverted if pollID = 0\",\n      );\n    });\n\n    it(\"should succeed first time during vote commit stage\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await expect(utils.commitVote(voting, challengeID, \"1\", \"500\", \"123\", voterAlice)).to.eventually.be.fulfilled(\n        \"should have allowed user to commit vote during commit vote stage\",\n      );\n    });\n\n    it(\"should fail if user has not deposited tokens into voting contract\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await expect(utils.commitVote(voting, challengeID, \"1\", \"500\", \"123\", unapproved)).to.eventually.be.fulfilled(\n        \"should have allowed user to commit vote during commit vote stage\",\n      );\n    });\n\n    it(\"should revert after commit vote stage\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n      await expect(utils.commitVote(voting, challengeID, \"1\", \"500\", \"123\", voterAlice)).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should have reverted after commit vote stage\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/plcrVoting/didCommit.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { REVERTED_CALL } from \"../../utils/constants\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"PLCRVoting\", accounts => {\n  describe(\"Function: didCommit\", () => {\n    const [proposer, challenger, voterAlice] = accounts;\n    let parameterizer: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should return false if poll does not exists.\", async () => {\n      await expect(voting.didCommit(voterAlice, 123)).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false before vote committed\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      const didCommit = await voting.didCommit(voterAlice, challengeID);\n      expect(didCommit).to.be.false(\"didCommit should have returned false before vote committed\");\n    });\n\n    it(\"should return true after vote committed\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n\n      const didCommit = await voting.didCommit(voterAlice, challengeID);\n      expect(didCommit).to.be.true(\"didCommit should have returned true after vote committed\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/plcrVoting/didReveal.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { REVERTED_CALL } from \"../../utils/constants\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"PLCRVoting\", accounts => {\n  describe(\"Function: didReveal\", () => {\n    const [proposer, challenger, voterAlice] = accounts;\n    let parameterizer: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should return false if poll does not exists.\", async () => {\n      await expect(voting.didCommit(voterAlice, 123)).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false before vote committed\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n      const didReveal = await voting.didReveal(voterAlice, challengeID);\n      expect(didReveal).to.be.false(\"didCommit should have returned false before vote committed\");\n    });\n\n    it(\"should return true after vote committed\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      const didReveal = await voting.didReveal(voterAlice, challengeID);\n      expect(didReveal).to.be.true(\"didReveal should have returned true after vote committed\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/plcrVoting/revealVote.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"PLCRVoting\", accounts => {\n  describe(\"Function: revealVote\", () => {\n    const [proposer, challenger, voterAlice] = accounts;\n    let parameterizer: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      [parameterizer] = await utils.createAllTestParameterizerInstance(accounts);\n      const votingAddress = await parameterizer.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should revert if poll does not exists.\", async () => {\n      await expect(voting.revealVote(\"1\", \"1\", \"123\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should have reverted if poll did not exist\",\n      );\n    });\n\n    it(\"should revert before vote committed\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await expect(voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed user to reveal vote before vote committed\",\n      );\n    });\n\n    it(\"should revert after vote committed but before conclusion of commit vote stage\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await expect(voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed user to reveal vote after vote committed but before commit stage is over\",\n      );\n    });\n\n    it(\"should allow reveal vote after vote committed but before conclusion of reveal vote stage\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await expect(voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice })).to.eventually.be.fulfilled(\n        \"should have allowed user to reveal vote after vote committed immediately after commit stage is over\",\n      );\n    });\n\n    it(\"should revert is salt is incorrect\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await expect(voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice })).to.eventually.be.fulfilled(\n        \"should have allowed user to reveal vote after vote committed immediately after commit stage is over\",\n      );\n    });\n\n    it(\"should revert if user has already revealed vote\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n\n      await voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice });\n      await expect(voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed user to reveal after vote already revealed\",\n      );\n    });\n\n    it(\"should revert if reveal stage is over\", async () => {\n      const proposalReceipt = await parameterizer.proposeReparameterization(\"voteQuorum\", \"51\", { from: proposer });\n\n      const { propID } = proposalReceipt.logs[0].args;\n\n      const challengeReceipt = await parameterizer.challengeReparameterization(propID, { from: challenger });\n\n      const challengeID = challengeReceipt.logs[0].args.challengeID;\n\n      await utils.commitVote(voting, challengeID, \"1\", \"10\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.pCommitStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.pRevealStageLength + 1);\n\n      await expect(voting.revealVote(challengeID, \"1\", \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed user to reveal after vote reveal stage is over\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/appWasMade.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"AddressRegistry\", accounts => {\n  describe(\"Function: appWasMade\", () => {\n    const [applicant] = accounts;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n    const listing2 = \"0x0000000000000000000000000000000000000002\";\n    const listing3 = \"0x0000000000000000000000000000000000000003\";\n    let registry: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n    });\n\n    it(\"should return true if applicationExpiry was previously initialized\", async () => {\n      // Apply\n      await registry.apply(listing2, minDeposit, ZERO_DATA, { from: applicant });\n      const result = await registry.appWasMade(listing2);\n      expect(result).to.be.true(\"should have returned true for the applied listing\");\n\n      // Commit stage complete\n      await utils.advanceEvmTime(utils.paramConfig.applyStageLength + 1);\n      const resultTwo = await registry.appWasMade(listing2);\n      expect(resultTwo).to.be.true(\"should have returned true because app is still not expired\");\n\n      await registry.updateStatus(listing2, { from: applicant });\n      const [, isWhitelisted] = await registry.listings(listing2);\n      expect(isWhitelisted).to.be.true(\"should have been whitelisted\");\n      const resultThree = await registry.appWasMade(listing2);\n      expect(resultThree).to.be.true(\"should have returned true because its whitelisted\");\n\n      // Exit\n      await registry.exit(listing2, { from: applicant });\n      const resultFour = await registry.appWasMade(listing2);\n      expect(resultFour).to.be.false(\"should have returned false because exit\");\n    });\n\n    it(\"should return false if applicationExpiry was uninitialized\", async () => {\n      const result = await registry.appWasMade(listing3);\n      expect(result).to.be.false(\"should have returned false because listing was never applied\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/apply.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst Parameterizer = artifacts.require(\"CivilParameterizer\");\nutils.configureProviders(Parameterizer);\nconst ZERO_DATA = \"0x\";\n\ncontract(\"AddressRegistry\", accounts => {\n  describe(\"Function: apply\", () => {\n    const [applicant, proposer] = accounts;\n    const unapproved = accounts[9];\n    const listing1 = \"0x0000000000000000000000000000000000000001\";\n    let registry: any;\n    let parameterizer: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const parameterizerAddr = await registry.parameterizer();\n      parameterizer = await Parameterizer.at(parameterizerAddr);\n    });\n\n    it(\"should allow a new listing to apply\", async () => {\n      await registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      const [applicationExpiry, whitelisted, owner, unstakedDeposit] = await registry.listings(listing1);\n\n      // check that Application is initialized correctly\n      expect(applicationExpiry).to.be.bignumber.gt(0, \"challenge time < now\");\n      expect(whitelisted).to.be.false(\"whitelisted != false\");\n      expect(owner).to.be.equal(applicant, \"owner of application != address that applied\");\n      expect(unstakedDeposit).to.be.bignumber.equal(utils.paramConfig.minDeposit, \"incorrect unstakedDeposit\");\n    });\n\n    it(\"should fail if applicant has not approved registry as spender of token\", async () => {\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: unapproved }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed applicant to apply if they have not approved registry as spender\",\n      );\n    });\n\n    it(\"should fail if deposit is less than minimum required\", async () => {\n      const deposit = new BN(utils.paramConfig.minDeposit).sub(new BN(1));\n      await expect(\n        registry.apply(listing1, deposit.toString(), ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"should not have allowed application with deposit less than minimum\");\n    });\n\n    it(\"should not allow a listing to apply which has a pending application\", async () => {\n      await registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should add a listing to the whitelist which went unchallenged in its application period\", async () => {\n      await registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.applyStageLength + 1);\n      await registry.updateStatus(listing1);\n      const [, isWhitelisted] = await registry.listings(listing1);\n      expect(isWhitelisted).to.be.true(\"listing didn't get whitelisted\");\n    });\n\n    it(\"should not allow a listing to apply which is already listed\", async () => {\n      await utils.addToWhitelist(listing1, utils.paramConfig.minDeposit, applicant, registry);\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should revert if the listing's applicationExpiry would overflow\", async () => {\n      // calculate an applyStageLen which when added to the current block time will be greater\n      // than 2^256 - 1\n      const blockTimestamp = await utils.getBlockTimestamp();\n      const maxEVMuint = new BN(2).pow(new BN(256)).sub(new BN(1));\n      const applyStageLen = maxEVMuint.sub(new BN(blockTimestamp)).add(new BN(1));\n\n      const receipt = await parameterizer.proposeReparameterization(\"applyStageLen\", applyStageLen.toString(), {\n        from: proposer,\n      });\n      const { propID } = receipt.logs[0].args;\n\n      // wait until the apply stage has elapsed and process the proposal\n      await utils.advanceEvmTime(utils.paramConfig.pApplyStageLength + 1);\n      await parameterizer.processProposal(propID);\n\n      // make sure that the reparameterization proposal was processed as expected\n      const actualApplyStageLen = await parameterizer.get.call(\"applyStageLen\");\n      expect(actualApplyStageLen.toString()).to.be.equal(\n        applyStageLen.toString(),\n        \"the applyStageLen should have been the proposed value\",\n      );\n\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejected(\"should not have allowed applicant to apply if application expiry would overflow\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/challenge.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst Parameterizer = artifacts.require(\"CivilParameterizer\");\nconst Token = artifacts.require(\"CVLToken\");\nutils.configureProviders(Parameterizer, Token);\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\nconst hundred = new BN(100);\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: challenge\", () => {\n    const [applicant, challenger, voter, proposer] = accounts;\n    const unapproved = accounts[9];\n    const listing3 = \"0x0000000000000000000000000000000000000003\";\n    const listing4 = \"0x0000000000000000000000000000000000000004\";\n    const listing5 = \"0x0000000000000000000000000000000000000005\";\n    const listing6 = \"0x0000000000000000000000000000000000000006\";\n    const listing7 = \"0x0000000000000000000000000000000000000007\";\n    let registry: any;\n    let parameterizer: any;\n    let token: any;\n    const minDeposit = new BN(utils.paramConfig.minDeposit);\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const parameterizerAddress = await registry.parameterizer();\n      parameterizer = await Parameterizer.at(parameterizerAddress);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should successfully challenge an application\", async () => {\n      const challengerStartingBalance = await token.balanceOf.call(challenger);\n\n      await registry.apply(listing3, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, listing3, challenger, voter);\n      await registry.updateStatus(listing3);\n\n      const [, isWhitelisted] = await registry.listings(listing3);\n      expect(isWhitelisted).to.be.false(\"An application which should have failed succeeded\");\n\n      const challengerFinalBalance = await token.balanceOf.call(challenger);\n      const expectedFinalBalance = challengerStartingBalance.add(\n        hundred\n          .sub(new BN(utils.paramConfig.dispensationPct))\n          .mul(minDeposit)\n          .div(hundred),\n      );\n      expect(challengerFinalBalance).to.be.bignumber.equal(\n        expectedFinalBalance,\n        \"The challenge winner was not properly disbursed their tokens\",\n      );\n    });\n\n    it(\"should fail if challenge is already in progress\", async () => {\n      await registry.apply(listing3, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      await utils.challengeAndGetPollID(listing3, challenger, registry);\n      await expect(registry.challenge(listing3, ZERO_DATA, { from: challenger })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed user to challenge listing currently undergoing a challenge\",\n      );\n    });\n\n    it(\"should fail if challenger has not approved registry as spender of token\", async () => {\n      await registry.apply(listing3, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      await expect(registry.challenge(listing3, ZERO_DATA, { from: unapproved })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed challenge if challenger has not approved registry as spender of token\",\n      );\n    });\n\n    it(\"should successfully challenge a listing\", async () => {\n      const challengerStartingBalance = await token.balanceOf.call(challenger);\n\n      await utils.addToWhitelist(listing4, utils.paramConfig.minDeposit, applicant, registry);\n      await utils.simpleSuccessfulChallenge(registry, listing4, challenger, voter);\n      await registry.updateStatus(listing4);\n\n      const [, isWhitelisted] = await registry.listings(listing4);\n      expect(isWhitelisted).to.be.false(\"An application which should have failed succeeded\");\n\n      const challengerFinalBalance = await token.balanceOf.call(challenger);\n      const expectedFinalBalance = challengerStartingBalance.add(\n        hundred\n          .sub(new BN(utils.paramConfig.dispensationPct))\n          .mul(minDeposit)\n          .div(hundred),\n      );\n      expect(challengerFinalBalance).to.be.bignumber.equal(\n        expectedFinalBalance,\n        \"The challenge winner was not properly disbursed their tokens\",\n      );\n    });\n\n    it(\"should unsuccessfully challenge an application\", async () => {\n      await registry.apply(listing5, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleUnsuccessfulChallenge(registry, listing5, challenger, voter);\n      await registry.updateStatus(listing5);\n\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(listing5);\n      expect(isWhitelisted).to.be.true(\"An application which should have succeeded failed\");\n\n      const expectedUnstakedDeposit = minDeposit.add(\n        hundred\n          .sub(new BN(utils.paramConfig.dispensationPct))\n          .mul(minDeposit)\n          .div(hundred),\n      );\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        expectedUnstakedDeposit,\n        \"The challenge winner was not properly disbursed their tokens\",\n      );\n    });\n\n    it(\"should unsuccessfully challenge a listing\", async () => {\n      await utils.addToWhitelist(listing6, minDeposit, applicant, registry);\n      await utils.simpleUnsuccessfulChallenge(registry, listing6, challenger, voter);\n      await registry.updateStatus(listing6);\n\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(listing6);\n      expect(isWhitelisted).to.be.true(\"An application which should have succeeded failed\");\n\n      const expectedUnstakedDeposit = minDeposit.add(\n        hundred\n          .sub(new BN(utils.paramConfig.dispensationPct))\n          .mul(minDeposit)\n          .div(hundred),\n      );\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        expectedUnstakedDeposit,\n        \"The challenge winner was not properly disbursed their tokens\",\n      );\n    });\n\n    it(\"should touch-and-remove a listing with a depost below the current minimum\", async () => {\n      const newMinDeposit = minDeposit.add(new BN(1));\n\n      const applicantStartingBal = await token.balanceOf(applicant);\n\n      await utils.addToWhitelist(listing7, minDeposit, applicant, registry);\n\n      const receipt = await parameterizer.proposeReparameterization(\"minDeposit\", newMinDeposit, { from: proposer });\n      const propID = utils.getReceiptValue(receipt, \"propID\");\n\n      await utils.advanceEvmTime(utils.paramConfig.pApplyStageLength + 1);\n\n      await parameterizer.processProposal(propID);\n\n      const challengerStartingBal = await token.balanceOf(challenger);\n      await registry.challenge(listing7, ZERO_DATA, { from: challenger });\n\n      const [, isWhitelisted] = await registry.listings(listing7);\n      expect(isWhitelisted).to.be.false(\"Listing was not removed\");\n\n      const challengerFinalBal = await token.balanceOf(challenger);\n      expect(challengerStartingBal).to.be.bignumber.equal(challengerFinalBal, \"Tokens were not returned to challenger\");\n\n      const applicantFinalBal = await token.balanceOf(applicant);\n      expect(applicantStartingBal).to.be.bignumber.equal(applicantFinalBal, \"Tokens were not returned to applicant\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/claimReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Token = artifacts.require(\"CVLToken\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(Token, PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: claimReward\", () => {\n    const [applicant, challenger, voterAlice] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const listing8 = \"0x0000000000000000000000000000000000000008\";\n    const listing9 = \"0x0000000000000000000000000000000000000009\";\n    const listing10 = \"0x0000000000000000000000000000000000000010\";\n    const listing11 = \"0x0000000000000000000000000000000000000011\";\n    const listing12 = \"0x0000000000000000000000000000000000000012\";\n    let registry: any;\n    let token: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should transfer the correct number of tokens once a challenge has been resolved\", async () => {\n      // Apply\n      await registry.apply(listing8, minDeposit, ZERO_DATA, { from: applicant });\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(listing8, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      // Update status\n      await registry.updateStatus(listing8, { from: applicant });\n\n      // Alice claims reward\n      const aliceVoterReward = await registry.voterReward(voterAlice, pollID, \"420\");\n      await registry.claimReward(pollID, \"420\", { from: voterAlice });\n\n      // Alice withdraws her voting rights\n      await voting.withdrawVotingRights(\"500\", { from: voterAlice });\n\n      const aliceExpected = aliceStartingBalance.add(aliceVoterReward);\n      const aliceFinalBalance = await token.balanceOf(voterAlice);\n\n      expect(aliceFinalBalance).to.be.bignumber.equal(\n        aliceExpected,\n        \"alice should have the same balance as she started\",\n      );\n    });\n\n    it(\"should revert if challenge does not exist\", async () => {\n      await utils.addToWhitelist(listing9, minDeposit, applicant, registry);\n\n      const nonPollID = \"666\";\n      await expect(registry.claimReward(nonPollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n      );\n    });\n\n    it(\"should revert if provided salt is incorrect\", async () => {\n      const applicantStartingBalance = await token.balanceOf(applicant);\n      const aliceStartBal = await token.balanceOf(voterAlice);\n      await utils.addToWhitelist(listing10, minDeposit, applicant, registry);\n\n      const pollID = await utils.challengeAndGetPollID(listing10, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      const applicantFinalBalance = await token.balanceOf(applicant);\n      const aliceFinalBalance = await token.balanceOf(voterAlice);\n      const expectedBalance = applicantStartingBalance.sub(minDeposit);\n\n      expect(applicantFinalBalance).to.be.bignumber.equal(\n        expectedBalance,\n        \"applicants final balance should be what they started with minus the minDeposit\",\n      );\n      expect(aliceFinalBalance).to.be.bignumber.equal(\n        aliceStartBal.sub(utils.toBaseTenBigNumber(500)),\n        \"alices final balance should be exactly the same as her starting balance\",\n      );\n\n      // Update status\n      await registry.updateStatus(listing10, { from: applicant });\n\n      await expect(registry.claimReward(pollID, \"421\", { from: voterAlice })).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should not transfer tokens if msg.sender has already claimed tokens for a challenge\", async () => {\n      const applicantStartingBalance = await token.balanceOf(applicant);\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      await utils.addToWhitelist(listing11, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(listing11, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      // Update status\n      await registry.updateStatus(listing11, { from: applicant });\n\n      // Claim reward\n      await registry.claimReward(pollID, \"420\", { from: voterAlice });\n\n      await expect(registry.claimReward(pollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to call claimReward twice\",\n      );\n\n      const applicantEndingBalance = await token.balanceOf(applicant);\n      const appExpected = applicantStartingBalance.sub(minDeposit);\n\n      const aliceEndingBalance = await token.balanceOf(voterAlice);\n      const aliceExpected = aliceStartingBalance\n        .add(minDeposit.div(utils.toBaseTenBigNumber(2)))\n        .sub(utils.toBaseTenBigNumber(500));\n\n      expect(applicantEndingBalance).to.be.bignumber.equal(appExpected, \"applicants ending balance is incorrect\");\n      expect(aliceEndingBalance).to.be.bignumber.equal(aliceExpected, \"alices ending balance is incorrect\");\n    });\n\n    it(\"should not transfer tokens for an unresolved challenge\", async () => {\n      const applicantStartingBalance = await token.balanceOf(applicant);\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      await utils.addToWhitelist(listing12, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(listing12, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await expect(registry.claimReward(pollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to claimReward for unresolved challenge\",\n      );\n\n      const applicantEndingBalance = await token.balanceOf.call(applicant);\n      const appExpected = applicantStartingBalance.sub(minDeposit);\n\n      const aliceEndingBalance = await token.balanceOf.call(voterAlice);\n      const aliceExpected = aliceStartingBalance.sub(utils.toBaseTenBigNumber(500));\n\n      expect(applicantEndingBalance).to.be.bignumber.equal(appExpected, \"applicants ending balance is incorrect\");\n      expect(aliceEndingBalance).to.be.bignumber.equal(aliceExpected, \"alices ending balance is incorrect\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/deposit.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst Token = artifacts.require(\"CVLToken\");\nutils.configureProviders(Token);\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: deposit\", () => {\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const incAmount = minDeposit.div(utils.toBaseTenBigNumber(2));\n    const [applicant, challenger] = accounts;\n    const unapproved = accounts[9];\n\n    const listing13 = \"0x0000000000000000000000000000000000000013\";\n    const listing14 = \"0x0000000000000000000000000000000000000014\";\n    const listing15 = \"0x0000000000000000000000000000000000000015\";\n    const listing16 = \"0x0000000000000000000000000000000000000016\";\n    const listing17 = \"0x0000000000000000000000000000000000000017\";\n    let registry: any;\n    let token: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should increase the deposit for a specific listing in the listing\", async () => {\n      await utils.addToWhitelist(listing13, minDeposit, applicant, registry);\n      await registry.deposit(listing13, incAmount, { from: applicant });\n\n      const [, , , unstakedDeposit] = await registry.listings(listing13);\n      const expectedAmount = incAmount.add(minDeposit);\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        expectedAmount,\n        \"Unstaked deposit should be equal to the sum of the original + increase amount\",\n      );\n    });\n\n    it(\"should fail for depositer that has not approved registry as spender of additiona tokens after application\", async () => {\n      await token.approve(registry.address, minDeposit, { from: unapproved });\n      await utils.addToWhitelist(listing17, minDeposit, unapproved, registry);\n      await expect(registry.deposit(listing17, incAmount, { from: unapproved })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed listing owner to deposit tokens if they have not approved registry as spender for more than original deposit amount\",\n      );\n    });\n\n    it(\"should increase a deposit for a pending application\", async () => {\n      await registry.apply(listing14, minDeposit, ZERO_DATA, { from: applicant });\n\n      await registry.deposit(listing14, incAmount, { from: applicant });\n\n      const [, , , unstakedDeposit] = await registry.listings(listing14);\n      const expectedAmount = incAmount.add(minDeposit);\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        expectedAmount,\n        \"Deposit should have increased for pending application\",\n      );\n    });\n\n    it(\"should increase deposit for a whitelisted, challenged listing\", async () => {\n      await utils.addToWhitelist(listing15, minDeposit, applicant, registry);\n      const [, , , originalDeposit] = await registry.listings(listing15);\n\n      // challenge, then increase deposit\n      await registry.challenge(listing15, ZERO_DATA, { from: challenger });\n      await registry.deposit(listing15, incAmount, { from: applicant });\n\n      const [, , , afterIncDeposit] = await registry.listings(listing15);\n\n      const expectedAmount = originalDeposit.add(incAmount).sub(minDeposit);\n\n      expect(afterIncDeposit).to.be.bignumber.equal(\n        expectedAmount,\n        \"Deposit should have increased for whitelisted, challenged listing\",\n      );\n    });\n\n    it(\"should not increase deposit for a listing not owned by the msg.sender\", async () => {\n      await utils.addToWhitelist(listing16, minDeposit, applicant, registry);\n\n      await expect(registry.deposit(listing16, incAmount, { from: challenger })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Deposit should not have increased when sent by the wrong msg.sender\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/exit.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst Token = artifacts.require(\"CVLToken\");\nutils.configureProviders(Token);\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: exit\", () => {\n    const [applicant, challenger, voter] = accounts;\n    const listing17 = \"0x0000000000000000000000000000000000000017\";\n    const listing18 = \"0x0000000000000000000000000000000000000018\";\n    let registry: any;\n    let token: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"should not allow a listing to exit if listing is not whitelisted\", async () => {\n      await registry.apply(listing17, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      await expect(registry.exit(listing17, { from: applicant })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have allowed listing in application stage to exit\",\n      );\n    });\n\n    it(\"should allow a listing to exit when no challenge exists\", async () => {\n      const initialApplicantTokenHoldings = await token.balanceOf(applicant);\n\n      await utils.addToWhitelist(listing17, utils.paramConfig.minDeposit, applicant, registry);\n\n      const [, isWhitelisted] = await registry.listings(listing17);\n      expect(isWhitelisted).to.be.true(\"the listing was not added to the registry\");\n\n      await registry.exit(listing17, { from: applicant });\n\n      const [, isWhitelistedAfterExit] = await registry.listings(listing17);\n      expect(isWhitelistedAfterExit).to.be.false(\"the listing was not removed on exit\");\n\n      const finalApplicantTokenHoldings = await token.balanceOf(applicant);\n      expect(initialApplicantTokenHoldings).to.be.bignumber.equal(\n        finalApplicantTokenHoldings,\n        \"the applicant's tokens were not returned to them after exiting the registry\",\n      );\n    });\n\n    it(\"should not allow a listing to exit when a challenge does exist\", async () => {\n      const initialApplicantTokenHoldings = await token.balanceOf(applicant);\n\n      await utils.addToWhitelist(listing18, utils.paramConfig.minDeposit, applicant, registry);\n\n      const [, isWhitelisted] = await registry.listings(listing18);\n      expect(isWhitelisted).to.be.true(\"the listing was not added to the registry\");\n\n      await registry.challenge(listing18, ZERO_DATA, { from: challenger });\n      await expect(registry.exit(listing18, { from: applicant })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"exit succeeded when it should have failed\",\n      );\n\n      const [, isWhitelistedAfterExit] = await registry.listings(listing18);\n      expect(isWhitelistedAfterExit).to.be.true(\"the listing was able to exit while a challenge was active\");\n\n      const finalApplicantTokenHoldings = await token.balanceOf(applicant);\n      expect(initialApplicantTokenHoldings.gt(finalApplicantTokenHoldings)).to.be.true(\n        \"the applicant's tokens were returned in spite of failing to exit\",\n      );\n\n      // Clean up state, remove consensys.net (it fails its challenge due to draw)\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + utils.paramConfig.revealStageLength + 1);\n      await registry.updateStatus(listing18);\n    });\n\n    it(\"should not allow a listing to be exited by someone who doesn't own it\", async () => {\n      await utils.addToWhitelist(listing18, utils.paramConfig.minDeposit, applicant, registry);\n\n      await expect(registry.exit(listing18, { from: voter })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"exit succeeded when it should have failed\",\n      );\n\n      const [, isWhitelistedAfterExit] = await registry.listings(listing18);\n      expect(isWhitelistedAfterExit).to.be.true(\"the listing was exited by someone other than its owner\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/hasClaimedTokens.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: claimReward\", () => {\n    const [applicant, challenger, voterAlice] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const listing8 = \"0x0000000000000000000000000000000000000008\";\n    let registry: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should transfer the correct number of tokens once a challenge has been resolved\", async () => {\n      await registry.apply(listing8, minDeposit, ZERO_DATA, { from: applicant });\n\n      const pollID = await utils.challengeAndGetPollID(listing8, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.updateStatus(listing8, { from: applicant });\n\n      const hasClaimedBefore = await registry.tokenClaims(pollID, voterAlice);\n      expect(hasClaimedBefore).to.be.false(\"tokenClaims should have been false before tokens claimed\");\n      await registry.claimReward(pollID, \"420\", { from: voterAlice });\n\n      const hasClaimedAfter = await registry.tokenClaims(pollID, voterAlice);\n      expect(hasClaimedAfter).to.be.true(\"tokenClaims should have been true after tokens claimed\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/isWhitelisted.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: isWhitelisted\", () => {\n    const [applicant] = accounts;\n    const listing19 = \"0x0000000000000000000000000000000000000019\";\n    let registry: any;\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n    });\n\n    it(\"should verify a listing is not in the whitelist\", async () => {\n      const [, isWhitelisted] = await registry.listings(listing19);\n      expect(isWhitelisted).to.be.false(\"Listing should not be whitelisted\");\n    });\n\n    it(\"should verify a listing is in the whitelist\", async () => {\n      await utils.addToWhitelist(listing19, utils.paramConfig.minDeposit, applicant, registry);\n      const [, isWhitelisted] = await registry.listings(listing19);\n      expect(isWhitelisted).to.be.true(\"Listing should have been whitelisted\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/tokenClaims.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: tokenClaims\", () => {\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const [applicant, challenger, voter] = accounts;\n    const listing20 = \"0x0000000000000000000000000000000000000020\";\n    let registry: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should report properly whether a voter has claimed tokens\", async () => {\n      await utils.addToWhitelist(listing20, minDeposit, applicant, registry);\n\n      const pollID = await utils.challengeAndGetPollID(listing20, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.updateStatus(listing20, { from: challenger });\n\n      const initialHasClaimed = await registry.tokenClaims(pollID, voter);\n      expect(initialHasClaimed).to.be.false(\n        \"The voter is purported to have claimed \" + \"their reward, when in fact they have not\",\n      );\n\n      await registry.claimReward(pollID, \"420\", { from: voter });\n\n      const finalHasClaimed = await registry.tokenClaims(pollID, voter);\n      expect(finalHasClaimed).to.be.true(\n        \"The voter is purported to not have claimed \" + \"their reward, when in fact they have\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/updateStatus.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: updateStatus\", () => {\n    const [applicant, challenger, voter] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const listing21 = \"0x0000000000000000000000000000000000000021\";\n    const listing22 = \"0x0000000000000000000000000000000000000022\";\n    const listing23 = \"0x0000000000000000000000000000000000000023\";\n    const listing24 = \"0x0000000000000000000000000000000000000024\";\n    const listing25 = \"0x0000000000000000000000000000000000000025\";\n    const listing26 = \"0x0000000000000000000000000000000000000026\";\n    const listing27 = \"0x0000000000000000000000000000000000000027\";\n    const listing28 = \"0x0000000000000000000000000000000000000028\";\n    let registry: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should whitelist listing if apply stage ended without a challenge\", async () => {\n      // note: this function calls registry.updateStatus at the end\n      await utils.addToWhitelist(listing21, minDeposit, applicant, registry);\n\n      const [, isWhitelisted] = await registry.listings(listing21);\n      expect(isWhitelisted).to.be.true(\"Listing should have been whitelisted\");\n    });\n\n    it(\"should whitelist 2 listings via updateStatuses if apply stage ended without a challenge for both\", async () => {\n      await registry.apply(listing27, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.apply(listing28, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.applyStageLength + 1);\n\n      await expect(registry.updateStatuses([listing27, listing28], { from: applicant })).to.eventually.be.fulfilled(\n        \"should have updated statuses for multiple applications\",\n      );\n    });\n\n    it(\"should not whitelist a listing that is still pending an application\", async () => {\n      await registry.apply(listing22, minDeposit, ZERO_DATA, { from: applicant });\n\n      await expect(registry.updateStatus(listing22, { from: applicant })).to.be.rejectedWith(\n        REVERTED,\n        \"Listing should not have been whitelisted\",\n      );\n    });\n\n    it(\"should not whitelist a listing that is currently being challenged\", async () => {\n      await registry.apply(listing23, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(listing23, ZERO_DATA, { from: challenger });\n\n      await expect(registry.updateStatus(listing23)).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Listing should not have been whitelisted\",\n      );\n    });\n\n    it(\"should not whitelist a listing that failed a challenge\", async () => {\n      await registry.apply(listing24, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.challengeAndGetPollID(listing24, challenger, registry);\n      await utils.commitVote(voting, pollID, \"0\", \"100\", \"123\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n      await voting.revealVote(pollID, \"0\", \"123\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.updateStatus(listing24);\n      const [, isWhitelisted] = await registry.listings(listing24);\n      expect(isWhitelisted).to.be.false(\"Listing should not have been whitelisted\");\n\n      const [, , , , challengeID] = await registry.listings(listing24);\n      await expect(challengeID.isZero()).to.be.true(\"challengeID should be 0 after successfully updating status\");\n    });\n\n    it(\"should not be possible to add a listing to the whitelist just by calling updateStatus\", async () => {\n      await expect(registry.updateStatus(listing25, { from: applicant })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Listing should not have been whitelisted\",\n      );\n    });\n\n    it(\n      \"should not be possible to add a listing to the whitelist just \" +\n        \"by calling updateStatus after it has been previously removed\",\n      async () => {\n        await utils.addToWhitelist(listing26, minDeposit, applicant, registry);\n        const [, resultOne] = await registry.listings(listing26);\n        expect(resultOne).to.be.true(\"Listing should have been whitelisted\");\n\n        await registry.exit(listing26, { from: applicant });\n        const [, resultTwo] = await registry.listings(listing26);\n        expect(resultTwo).to.be.false(\"Listing should not be in the whitelist\");\n\n        await expect(registry.updateStatus(listing26, { from: applicant })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Listing should not have been whitelisted\",\n        );\n      },\n    );\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/userStories.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"User stories\", () => {\n    const [applicant, challenger, voter] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const listing27 = \"0x0000000000000000000000000000000000000027\";\n    const listing28 = \"0x0000000000000000000000000000000000000028\";\n    let registry: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should apply, get challenged, have challenge be successful, and reject listing\", async () => {\n      await registry.apply(listing27, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, listing27, challenger, voter);\n      await registry.updateStatus(listing27);\n\n      // should not have been added to whitelist\n      const [, isWhitelisted] = await registry.listings(listing27);\n      expect(isWhitelisted).to.be.false(\"listing should not be whitelisted\");\n    });\n\n    it(\"should apply, pass challenge (challenge vote fails), and whitelist listing\", async () => {\n      await registry.apply(listing28, minDeposit, ZERO_DATA, { from: applicant });\n\n      // Challenge and get back the pollID\n      const pollID = await utils.challengeAndGetPollID(listing28, challenger, registry);\n\n      // Make sure it\"s cool to commit\n      const cpa = await voting.commitPeriodActive(pollID);\n      expect(cpa).to.be.true(\"Commit period should be active\");\n\n      // Virgin commit\n      const tokensArg = \"10\";\n      const salt = \"420\";\n      const voteOption = \"1\";\n      await utils.commitVote(voting, pollID, voteOption, tokensArg, salt, voter);\n\n      const numTokens = await voting.getNumTokens(voter, pollID);\n      expect(numTokens).to.be.bignumber.equal(tokensArg, \"Should have committed the correct number of tokens\");\n\n      // Reveal\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n      // Make sure commit period is inactive\n      const commitPeriodActive = await voting.commitPeriodActive.call(pollID);\n      expect(commitPeriodActive).to.be.false(\"Commit period should be inactive\");\n      // Make sure reveal period is active\n      let rpa = await voting.revealPeriodActive.call(pollID);\n      expect(rpa).to.be.true(\"Reveal period should be active\");\n\n      await voting.revealVote(pollID, voteOption, salt, { from: voter });\n\n      // End reveal period\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      rpa = await voting.revealPeriodActive.call(pollID);\n      expect(rpa).to.be.false(\"Reveal period should not be active\");\n\n      // updateStatus\n      const pollResult = await voting.isPassed.call(pollID);\n      expect(pollResult).to.be.true(\"Poll should have failed\");\n\n      // Add to whitelist\n      await registry.updateStatus(listing28);\n      const [, isWhitelisted] = await registry.listings(listing28);\n      expect(isWhitelisted).to.be.true(\"Listing should be whitelisted\");\n    });\n\n    it(\"should allow someone to update their committed vote\", async () => {\n      await registry.apply(listing28, minDeposit, ZERO_DATA, { from: applicant });\n\n      // Challenge and get back the pollID\n      const pollID = await utils.challengeAndGetPollID(listing28, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"10\", \"420\", voter);\n      await utils.commitVote(voting, pollID, \"1\", \"15\", \"123\", voter);\n\n      const numTokens = await voting.getNumTokens(voter, pollID);\n      expect(numTokens).to.be.bignumber.equal(\"15\", \"Should have committed the correct number of tokens\");\n\n      // Reveal\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n      // Make sure commit period is inactive\n      const commitPeriodActive = await voting.commitPeriodActive.call(pollID);\n      expect(commitPeriodActive).to.be.false(\"Commit period should be inactive\");\n      // Make sure reveal period is active\n      let rpa = await voting.revealPeriodActive.call(pollID);\n      expect(rpa).to.be.true(\"Reveal period should be active\");\n\n      await voting.revealVote(pollID, \"1\", \"123\", { from: voter });\n\n      // End reveal period\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      rpa = await voting.revealPeriodActive.call(pollID);\n      expect(rpa).to.be.false(\"Reveal period should not be active\");\n\n      // updateStatus\n      const pollResult = await voting.isPassed.call(pollID);\n      expect(pollResult).to.be.true(\"Poll should have succeeded\");\n\n      // Add to whitelist\n      await registry.updateStatus(listing28);\n      const [, isWhitelisted] = await registry.listings(listing28);\n      expect(isWhitelisted).to.be.true(\"Listing should be whitelisted\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registry/withdraw.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: withdraw\", () => {\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    const withdrawAmount = minDeposit.div(utils.toBaseTenBigNumber(2));\n    const [applicant, challenger] = accounts;\n    const dontChallengeListing = \"0x76bc9e61a1904b82cbf70d1fd9c0f8a120483bbb\";\n    const listing13 = \"0xC257274276a4E539741Ca11b590B9447B26A8051\";\n    let registry: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestAddressRegistryInstance(accounts);\n    });\n\n    it(\"should be able to withdraw tokens if remaining tokens greater than minDeposit\", async () => {\n      await utils.addToWhitelist(dontChallengeListing, minDeposit.add(new BN(50)), applicant, registry);\n      await expect(registry.withdraw(dontChallengeListing, new BN(40), { from: applicant })).to.eventually.be.fulfilled(\n        \"should have allowed listing owner to withdraw tokens if remaing tokens greater than minDeposit\",\n      );\n    });\n\n    it(\"should be able to withdraw tokens if remaining tokens equal to minDeposit\", async () => {\n      await utils.addToWhitelist(dontChallengeListing, minDeposit.add(new BN(50)), applicant, registry);\n      await expect(registry.withdraw(dontChallengeListing, new BN(50), { from: applicant })).to.eventually.be.fulfilled(\n        \"should have allowed listing owner to withdraw tokens if remaing tokens equal to minDeposit\",\n      );\n    });\n\n    it(\"should not withdraw tokens from a listing that has a deposit === minDeposit\", async () => {\n      const errMsg = \"applicant was able to withdraw tokens\";\n\n      await utils.addToWhitelist(dontChallengeListing, minDeposit, applicant, registry);\n      const listing = await registry.listings(dontChallengeListing);\n      const origDeposit = listing[3];\n\n      await expect(\n        registry.withdraw(dontChallengeListing, withdrawAmount, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n\n      const listingAfterWithdraw = await registry.listings(dontChallengeListing);\n      const afterWithdrawDeposit = listingAfterWithdraw[3];\n\n      expect(afterWithdrawDeposit).to.be.bignumber.equal(origDeposit, errMsg);\n    });\n\n    it(\"should not withdraw tokens from a listing that is locked in a challenge\", async () => {\n      // Whitelist, then challenge\n      await utils.addToWhitelist(listing13, minDeposit, applicant, registry);\n      await registry.challenge(listing13, ZERO_DATA, { from: challenger });\n\n      // Attempt to withdraw; should fail\n      await expect(registry.withdraw(listing13, withdrawAmount, { from: applicant })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Applicant should not have been able to withdraw from a challenged, locked listing\",\n      );\n      // TODO: check balance\n      // TODO: apply, gets challenged, and then minDeposit lowers during challenge.\n      // still shouldn\"t be able to withdraw anything.\n      // when challenge ends, should be able to withdraw origDeposit - new minDeposit\n    });\n\n    it(\"should be able to withdraw unstakedDeposit from a listing that is locked in a challenge\", async () => {\n      // Whitelist, then challenge\n      await utils.addToWhitelist(listing13, minDeposit.mul(new BN(2)), applicant, registry);\n      await registry.challenge(listing13, ZERO_DATA, { from: challenger });\n\n      // Attempt to withdraw; should succeed\n      await expect(registry.withdraw(listing13, minDeposit, { from: applicant })).to.eventually.be.fulfilled(\n        \"Applicant should have been able to withdraw unstakedDeposit from a challenged listing\",\n      );\n    });\n\n    it(\"should not be able to withdraw unstakedDeposit+1 from a listing that is locked in a challenge\", async () => {\n      // Whitelist, then challenge\n      await utils.addToWhitelist(listing13, minDeposit.mul(new BN(2)), applicant, registry);\n      await registry.challenge(listing13, ZERO_DATA, { from: challenger });\n\n      // Attempt to withdraw; should succeed\n      await expect(\n        registry.withdraw(listing13, minDeposit.add(new BN(1)), { from: applicant }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Applicant should not have been able to withdraw unstakedDeposit+1 from a challenged listing\",\n      );\n    });\n\n    it(\"should not withdraw tokens if user making withdrawal is not listing owner\", async () => {\n      // Whitelist, then challenge\n      await utils.addToWhitelist(listing13, minDeposit, applicant, registry);\n\n      // Attempt to withdraw; should fail\n      await expect(registry.withdraw(listing13, withdrawAmount, { from: challenger })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Non-owner should not have been able to withdraw from a whitelisted listing\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/allUserRewards.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { REVERTED } from \"../../utils/constants\";\nimport { BN } from \"bn.js\";\n\nconst Token = artifacts.require(\"CVLToken\");\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Rewards for all participants\", () => {\n    const [JAB, applicant, challenger, voter, appealer, voter2, challenger2] = accounts;\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n    let token: any;\n    const minDeposit = new BN(utils.paramConfig.minDeposit);\n    const halfAppeal = new BN(utils.paramConfig.appealFeeAmount).div(new BN(2));\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    it(\"correct rewards when: challenge unsuccessful, appeal not requested\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with unsuccessful challenge if appeal requested but not granted\",\n      );\n      const reward = utils.getChallengeReward();\n      expect(unstakedDeposit).to.be.bignumber.equal(minDeposit.add(reward));\n      const voterBalanceBeforeClaiming = await token.balanceOf(voter);\n      await registry.claimReward(pollID, \"420\", { from: voter });\n      const voterBalanceAfterClaiming = await token.balanceOf(voter);\n      expect(voterBalanceAfterClaiming).to.be.bignumber.equal(\n        voterBalanceBeforeClaiming.add(utils.getTotalVoterReward()),\n      );\n    });\n\n    it(\"correct rewards when: challenge successful, appeal not requested\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with successful challenge if appeal requested but not granted\",\n      );\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      expect(challengerBalanceAfter).to.be.bignumber.equal(\n        challengerBalanceBefore.add(minDeposit).add(utils.getChallengeReward()),\n      );\n      const voterBalanceBeforeClaiming = await token.balanceOf(voter);\n      await registry.claimReward(pollID, \"420\", { from: voter });\n      const voterBalanceAfterClaiming = await token.balanceOf(voter);\n      expect(voterBalanceAfterClaiming).to.be.bignumber.equal(\n        voterBalanceBeforeClaiming.add(utils.getTotalVoterReward()),\n      );\n    });\n\n    it(\"correct rewards when: challenge unsuccessful, appeal requested, no granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with unsuccessful challenge if appeal requested but not granted\",\n      );\n      const reward = utils.getChallengeReward();\n      expect(unstakedDeposit).to.be.bignumber.equal(minDeposit.add(reward).add(halfAppeal));\n      const voterBalanceBeforeClaiming = await token.balanceOf(voter);\n      await registry.claimReward(pollID, \"420\", { from: voter });\n      const voterBalanceAfterClaiming = await token.balanceOf(voter);\n      expect(voterBalanceAfterClaiming).to.be.bignumber.equal(\n        voterBalanceBeforeClaiming.add(utils.getTotalVoterReward()).add(halfAppeal),\n      );\n    });\n\n    it(\"correct rewards when: challenge successful, appeal requested, no granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with successful challenge if appeal requested but not granted\",\n      );\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      expect(challengerBalanceAfter).to.be.bignumber.equal(\n        challengerBalanceBefore.add(minDeposit).add(utils.getChallengeReward().add(halfAppeal)),\n      );\n      const voterBalanceBeforeClaiming = await token.balanceOf(voter);\n      await registry.claimReward(pollID, \"420\", { from: voter });\n      const voterBalanceAfterClaiming = await token.balanceOf(voter);\n      expect(voterBalanceAfterClaiming).to.be.bignumber.equal(\n        voterBalanceBeforeClaiming.add(utils.getTotalVoterReward().add(halfAppeal)),\n      );\n    });\n\n    it(\"correct rewards when: challenge successful, granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: appealer });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n      const appealerBalanceBefore = await token.balanceOf(appealer);\n      await registry.updateStatus(newsroomAddress);\n      const appealerBalaceAfter = await token.balanceOf(appealer);\n      expect(appealerBalaceAfter).to.be.bignumber.equal(\n        appealerBalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount)),\n        \"appealer should have been refunded appeal fee\",\n      );\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with successful challenge if appeal granted and appeal not challenged\",\n      );\n      const reward = utils.getChallengeReward();\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        minDeposit.add(reward).add(utils.getTotalVoterReward()), // add voter reward since there are no \"winning voters\" now, so everything goes to challenge winner\n        \"listing should have received reward\",\n      );\n      await expect(registry.claimReward(pollID, \"420\", { from: voter })).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"correct rewards when: challenge unsuccessful, granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: appealer });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      const appealerBalanceBefore = await token.balanceOf(appealer);\n      await registry.updateStatus(newsroomAddress);\n      const appealerBalaceAfter = await token.balanceOf(appealer);\n      expect(appealerBalaceAfter).to.be.bignumber.equal(\n        appealerBalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount)),\n        \"appealer should have been refunded appeal fee\",\n      );\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with unsuccessful challenge if appeal granted and appeal not challenged\",\n      );\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      expect(challengerBalanceAfter).to.be.bignumber.equal(\n        challengerBalanceBefore\n          .add(minDeposit)\n          .add(utils.getChallengeReward())\n          .add(utils.getTotalVoterReward()),\n      );\n      await expect(registry.claimReward(pollID, \"420\", { from: voter })).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"correct rewards when: challenge success, granted appeal, appeal challenge success\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: appealer });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const pollID2 = await utils.simpleSuccessfulAppealChallenge(\n        registry,\n        newsroomAddress,\n        challenger2,\n        voter2,\n        \"123\",\n      );\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      const challenger2BalanceBefore = await token.balanceOf(challenger2);\n      const appealerBalanceBefore = await token.balanceOf(appealer);\n      const voterBalanceBefore = await token.balanceOf(voter);\n      const voter2BalanceBefore = await token.balanceOf(voter2);\n\n      await registry.updateStatus(newsroomAddress);\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      const challenger2BalanceAfter = await token.balanceOf(challenger2);\n      const appealerBalanceAfter = await token.balanceOf(appealer);\n      await registry.claimReward(pollID, \"420\", { from: voter });\n      const voterBalanceAfter = await token.balanceOf(voter);\n      expect(voterBalanceAfter).to.be.bignumber.equal(voterBalanceBefore.add(utils.getTotalVoterReward()));\n      await registry.claimReward(pollID2, \"123\", { from: voter2 });\n      const voter2BalanceAfter = await token.balanceOf(voter2);\n      expect(voter2BalanceAfter).to.be.bignumber.equal(\n        voter2BalanceBefore.add(utils.getTotalAppealChallengeVoterReward()),\n      );\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with successful challenge, granted appeal, successful appeal challenge\",\n      );\n      expect(appealerBalanceAfter).to.be.bignumber.equal(appealerBalanceBefore);\n      expect(challengerBalanceAfter).to.be.bignumber.equal(\n        challengerBalanceBefore.add(minDeposit).add(utils.getChallengeReward()),\n      );\n      expect(challenger2BalanceAfter).to.be.bignumber.equal(\n        challenger2BalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount)).add(utils.getAppealChallengeReward()),\n      );\n    });\n    it(\"correct rewards when: challenge success, granted appeal, appeal challenge failure\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: appealer });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const pollID2 = await utils.simpleUnsuccessfulAppealChallenge(\n        registry,\n        newsroomAddress,\n        challenger,\n        voter2,\n        \"123\",\n      );\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      const challenger2BalanceBefore = await token.balanceOf(challenger2);\n      const appealerBalanceBefore = await token.balanceOf(appealer);\n      const voterBalanceBefore = await token.balanceOf(voter);\n      const voter2BalanceBefore = await token.balanceOf(voter2);\n\n      await registry.updateStatus(newsroomAddress);\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      const challenger2BalanceAfter = await token.balanceOf(challenger2);\n      const appealerBalanceAfter = await token.balanceOf(appealer);\n      await expect(registry.claimReward(pollID, \"420\", { from: voter })).to.eventually.be.rejectedWith(REVERTED);\n      const voterBalanceAfter = await token.balanceOf(voter);\n      expect(voterBalanceAfter).to.be.bignumber.equal(voterBalanceBefore);\n      await registry.claimReward(pollID2, \"123\", { from: voter2 });\n      const voter2BalanceAfter = await token.balanceOf(voter2);\n      expect(voter2BalanceAfter).to.be.bignumber.equal(\n        voter2BalanceBefore.add(utils.getTotalAppealChallengeVoterReward()),\n      );\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with successful challenge, granted appeal, unsuccessful appeal challenge\",\n      );\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        minDeposit.add(utils.getChallengeReward()).add(utils.getTotalVoterReward()), // add voter reward since there are no \"winning voters\" now, so everything goes to challenge winner\n        \"listing should have received reward\",\n      );\n      expect(appealerBalanceAfter).to.be.bignumber.equal(\n        appealerBalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount)).add(utils.getAppealChallengeReward()),\n      );\n      expect(challengerBalanceAfter).to.be.bignumber.equal(challengerBalanceBefore);\n      expect(challenger2BalanceAfter).to.be.bignumber.equal(challenger2BalanceBefore);\n    });\n\n    it(\"correct rewards when: challenge failure, granted appeal, appeal challenge success\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: appealer });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const pollID2 = await utils.simpleSuccessfulAppealChallenge(\n        registry,\n        newsroomAddress,\n        challenger2,\n        voter2,\n        \"123\",\n      );\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      const challenger2BalanceBefore = await token.balanceOf(challenger2);\n      const appealerBalanceBefore = await token.balanceOf(appealer);\n      const voterBalanceBefore = await token.balanceOf(voter);\n      const voter2BalanceBefore = await token.balanceOf(voter2);\n      await registry.updateStatus(newsroomAddress);\n      await registry.claimReward(pollID, \"420\", { from: voter });\n\n      const voterBalanceAfter = await token.balanceOf(voter);\n      await registry.claimReward(pollID2, \"123\", { from: voter2 });\n      const voter2BalanceAfter = await token.balanceOf(voter2);\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      const challenger2BalanceAfter = await token.balanceOf(challenger2);\n      const appealerBalanceAfter = await token.balanceOf(appealer);\n      const [, isWhitelisted, , unstakedDeposit] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with unsuccessful challenge, granted appeal, successful appeal challenge\",\n      );\n      expect(unstakedDeposit).to.be.bignumber.equal(\n        minDeposit.add(utils.getChallengeReward()),\n        \"listing should have received reward\",\n      );\n      expect(appealerBalanceAfter).to.be.bignumber.equal(appealerBalanceBefore);\n      expect(challengerBalanceAfter).to.be.bignumber.equal(challengerBalanceBefore);\n      expect(challenger2BalanceAfter).to.be.bignumber.equal(\n        challenger2BalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount)).add(utils.getAppealChallengeReward()),\n      );\n      expect(voterBalanceAfter).to.be.bignumber.equal(voterBalanceBefore.add(utils.getTotalVoterReward()));\n      expect(voter2BalanceAfter).to.be.bignumber.equal(\n        voter2BalanceBefore.add(utils.getTotalAppealChallengeVoterReward()),\n      );\n    });\n\n    it(\"correct rewards when: challenge failure, granted appeal, appeal challenge failure\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter, \"420\");\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: appealer });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const pollID2 = await utils.simpleUnsuccessfulAppealChallenge(\n        registry,\n        newsroomAddress,\n        challenger,\n        voter2,\n        \"123\",\n      );\n      const challengerBalanceBefore = await token.balanceOf(challenger);\n      const challenger2BalanceBefore = await token.balanceOf(challenger2);\n      const appealerBalanceBefore = await token.balanceOf(appealer);\n      const voterBalanceBefore = await token.balanceOf(voter);\n      const voter2BalanceBefore = await token.balanceOf(voter2);\n      await registry.updateStatus(newsroomAddress);\n      await expect(registry.claimReward(pollID, \"420\", { from: voter })).to.eventually.be.rejectedWith(REVERTED);\n\n      const voterBalanceAfter = await token.balanceOf(voter);\n      expect(voterBalanceAfter).to.be.bignumber.equal(voterBalanceBefore);\n      await registry.claimReward(pollID2, \"123\", { from: voter2 });\n      const voter2BalanceAfter = await token.balanceOf(voter2);\n      const challengerBalanceAfter = await token.balanceOf(challenger);\n      const challenger2BalanceAfter = await token.balanceOf(challenger2);\n      const appealerBalanceAfter = await token.balanceOf(appealer);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with unsuccessful challenge, granted appeal, unsuccessful appeal challenge\",\n      );\n      expect(appealerBalanceAfter).to.be.bignumber.equal(\n        appealerBalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount)).add(utils.getAppealChallengeReward()),\n      );\n      expect(challengerBalanceAfter).to.be.bignumber.equal(\n        challengerBalanceBefore\n          .add(minDeposit)\n          .add(utils.getChallengeReward())\n          .add(utils.getTotalVoterReward()),\n      );\n      expect(challenger2BalanceAfter).to.be.bignumber.equal(challenger2BalanceBefore);\n      expect(voter2BalanceAfter).to.be.bignumber.equal(\n        voter2BalanceBefore.add(utils.getTotalAppealChallengeVoterReward()),\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/appealCanBeResolved.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n// import { REVERTED_CALL } from \"../../utils/constants\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: appealCanBeResolved\", () => {\n    const [JAB, applicant, challenger] = accounts;\n\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should return false if the challenge doesn't exist\", async () => {\n      // TODO(dankins): boolean calls that revert are still returning true, is this a web3 bug?\n      // await expect(registry.appealCanBeResolved(newsroomAddress)).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false if appeal not requested on challenge\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\"Should return false if appeal not requested on challenge\");\n    });\n\n    it(\"should return false if appeal not granted and appeal phase has not expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal not granted and appeal phase has not expired\",\n      );\n    });\n\n    it(\"should return true if appeal not granted and appeal phase expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.true(\"Should return true if appeal not granted and appeal phase has expired\");\n    });\n\n    it(\"should return false if appeal granted and appeal open challenge phase not expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal granted and appeal open challenge phase not expired\",\n      );\n    });\n\n    it(\"should return false if appeal granted and challenged\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal granted and appeal open challenge phase not expired\",\n      );\n    });\n\n    it(\"should return false if appeal granted and challenged even if we wait until can be challenged phase would have ended\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 100);\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal granted and appeal open challenge phase not expired\",\n      );\n    });\n\n    it(\"should return true if appeal granted and appeal open challenge phase expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 100);\n\n      const canBeResolved = await registry.appealCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.true(\n        \"Should return true if appeal granted and appeal open challenge phase expired\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/appealChallengeCanBeResolved.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n// import { REVERTED_CALL } from \"../../utils/constants\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: appealChallengeCanBeResolved\", () => {\n    const [JAB, applicant, challenger] = accounts;\n\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should return false if the challenge doesn't exist\", async () => {\n      // const result = registry.appealCanBeResolved(newsroomAddress);\n      // TODO(dankins): boolean calls that revert are still returning true, is this a web3 bug?\n      // await expect(result).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false if appeal not requested on challenge\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\"Should return false if appeal not requested on challenge\");\n    });\n\n    it(\"should return false if appeal not granted and appeal phase has not expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal not granted and appeal phase has not expired\",\n      );\n    });\n\n    it(\"should return true if appeal not granted and appeal phase expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\"Should return false if appeal not granted\");\n    });\n\n    it(\"should return false if appeal granted and appeal open challenge phase not expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal granted and appeal open challenge phase not expired\",\n      );\n    });\n\n    it(\"should return false if appeal granted and appeal open challenge phase expired\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 100);\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"Should return false if appeal granted and appeal open challenge phase expired\",\n      );\n    });\n\n    it(\"should return false if appeal granted and granted appeal just challenged\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.false(\n        \"should return false if appeal granted and granted appeal just challenged\",\n      );\n    });\n\n    it(\"should return true if appeal granted and granted appeal phase ended\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(\n        utils.paramConfig.appealChallengeCommitStageLength + utils.paramConfig.appealChallengeRevealStageLength + 1,\n      );\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      await expect(canBeResolved).to.be.true(\"should return true if appeal granted and granted appeal phase ended\");\n    });\n\n    it(\"should return false if appeal granted and granted appeal phase ended and status updated\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(\n        utils.paramConfig.appealChallengeCommitStageLength + utils.paramConfig.appealChallengeRevealStageLength + 1,\n      );\n      await registry.updateStatus(newsroomAddress);\n\n      const canBeResolved = await registry.appealChallengeCanBeResolved(newsroomAddress);\n      console.log(\"canBeResolved\", canBeResolved, typeof canBeResolved);\n      // TODO(dankins): boolean calls that revert are still returning true, is this a web3 bug?\n      // await expect(canBeResolved).to.be.false(\n      //   \"should return false if appeal granted and granted appeal phase ended and status updated\",\n      // );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/appealChallengeReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: determineAppealChallengeReward\", () => {\n    const [JAB, applicant, challenger, voter] = accounts;\n\n    let registry: any;\n    let voting: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should succeed if the challenge been issued and voting has ended with no votes\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const pollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await expect(registry.determineReward(pollID)).to.eventually.be.fulfilled(\n        \"Should have allowed determineReward to succeed\",\n      );\n      // TODO(PN): Add check to ensure value is returned as expected.\n    });\n\n    it(\"should succeed if the challenge been issued and voting has ended with a few votes\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const pollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"1\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(pollID, \"1\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await expect(registry.determineReward(pollID)).to.eventually.be.fulfilled(\n        \"Should have allowed determineReward to succeed\",\n      );\n      // TODO(PN): Add check to ensure value is returned as expected.\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/apply.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst AddressRegistry = artifacts.require(\"AddressRegistry\");\nconst ContractAddressRegistry = artifacts.require(\"ContractAddressRegistry\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(AddressRegistry, ContractAddressRegistry, PLCRVoting);\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: apply\", () => {\n    const [JAB, applicant, troll, challenger, voter] = accounts;\n    const unapproved = accounts[9];\n    const listing1 = \"0x0000000000000000000000000000000000000001\";\n    const minDeposit = utils.paramConfig.minDeposit;\n    let registry: any;\n    let voting: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    describe(\"with real newsroom\", () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(applicant);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should allow contract owner to apply on behalf of contract\", async () => {\n        await registry.apply(newsroomAddress, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n\n        // get struct from mapping\n        const [applicationExpiry, whitelisted, owner, unstakedDeposit] = await registry.listings(newsroomAddress);\n\n        // check that Application is initialized correctly\n        expect(applicationExpiry).to.be.bignumber.gt(0, \"challenge time < now\");\n        expect(whitelisted).to.be.false(\"whitelisted != false\");\n        expect(owner).to.be.equal(applicant, \"owner of application != address that applied\");\n        expect(unstakedDeposit).to.be.bignumber.equal(utils.paramConfig.minDeposit, \"incorrect unstakedDeposit\");\n      });\n\n      it(\"should fail if applicant has not approved registry as spender of token\", async () => {\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, ZERO_DATA, { from: unapproved }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"should not have allowed applicant to apply if they have not approved registry as spender\",\n        );\n      });\n\n      it(\"should not allow a listing to apply which has a pending application\", async () => {\n        await registry.apply(newsroomAddress, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant });\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"should add a listing to the whitelist which went unchallenged in its application period\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await utils.advanceEvmTime(utils.paramConfig.applyStageLength + 1);\n        await registry.updateStatus(newsroomAddress);\n        const [, whitelisted] = await registry.listings(newsroomAddress);\n\n        expect(whitelisted).to.be.true(\"listing didn't get whitelisted\");\n      });\n\n      it(\"should not allow a listing to apply which is already listed\", async () => {\n        await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n        await expect(\n          registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\n        \"should not allow a listing to re-apply after losing challenge, \" +\n          \"not being granted appeal, not updating status\",\n        async () => {\n          await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n          await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n          await utils.advanceEvmTime(utils.paramConfig.commitStageLength + utils.paramConfig.revealStageLength + 1);\n          await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n          await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n\n          const applyTx = registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n          await expect(applyTx).to.eventually.be.rejectedWith(\n            REVERTED,\n            \"should not have allowed new application after being denied appeal and not updating status\",\n          );\n        },\n      );\n\n      it(\"should allow a listing to re-apply after losing challenge (challenge vote successful), not being granted appeal, updating status\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n        await utils.commitVote(voting, pollID, \"0\", \"100\", \"1234\", voter);\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n        await voting.revealVote(pollID, \"0\", \"1234\", { from: voter });\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n        await registry.updateStatus(newsroomAddress);\n\n        await expect(\n          registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant }),\n        ).to.eventually.be.fulfilled(\"should have allowed new application after being denied appeal\");\n      });\n    });\n\n    describe(\"with troll newsroom\", () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(troll);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should not allow a non-contract owner to apply\", async () => {\n        await expect(\n          registry.apply(newsroomAddress, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"should prevent un-owned address from being listed when registry cast to ContractAddressRegistry\", async () => {\n        const parentRegistry = await ContractAddressRegistry.at(registry.address);\n        await expect(\n          parentRegistry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n    });\n\n    it(\"should prevent non-contract address from being listed\", async () => {\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should prevent non-contract address from being listed when registry cast to AddressRegistry\", async () => {\n      const parentRegistry = await AddressRegistry.at(registry.address);\n\n      await expect(\n        parentRegistry.apply(listing1, minDeposit, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/challenge.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst Parameterizer = artifacts.require(\"CivilParameterizer\");\nconst Token = artifacts.require(\"CVLToken\");\nutils.configureProviders(Parameterizer, Token);\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: apply\", () => {\n    const [JAB, applicant, challenger, proposer] = accounts;\n    const minDeposit = new BN(utils.paramConfig.minDeposit);\n    let registry: any;\n    let parameterizer: any;\n    let token: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const parameterizerAddress = await registry.parameterizer();\n      parameterizer = await Parameterizer.at(parameterizerAddress);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n    });\n\n    describe(\"with real newsroom\", () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(applicant);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should touch-and-remove a listing with a depost below the current minimum\", async () => {\n        const newMinDeposit = minDeposit.add(new BN(1));\n\n        const applicantStartingBal = await token.balanceOf(applicant);\n\n        await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n        const receipt = await parameterizer.proposeReparameterization(\"minDeposit\", newMinDeposit, { from: proposer });\n        const propID = utils.getReceiptValue(receipt, \"propID\");\n\n        await utils.advanceEvmTime(utils.paramConfig.pApplyStageLength + 1);\n\n        await parameterizer.processProposal(propID);\n\n        const challengerStartingBal = await token.balanceOf(challenger);\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n        const [, isWhitelisted] = await registry.listings(newsroomAddress);\n        expect(isWhitelisted).to.be.false(\"Listing was not removed\");\n\n        const challengerFinalBal = await token.balanceOf(challenger);\n        expect(challengerStartingBal).to.be.bignumber.equal(\n          challengerFinalBal,\n          \"Tokens were not returned to challenger\",\n        );\n\n        const applicantFinalBal = await token.balanceOf(applicant);\n        expect(applicantStartingBal).to.be.bignumber.equal(applicantFinalBal, \"Tokens were not returned to applicant\");\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/challengeCanBeResolved.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n// import { REVERTED_CALL } from \"../../utils/constants\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: challengeCanBeResolved\", () => {\n    const [JAB, applicant, challenger] = accounts;\n\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should return false if challenge doesn't exist\", async () => {\n      // web3.eth\n      //   .call({\n      //     to: registry.address,\n      //     data: registry.contract.methods.challengeCanBeResolved(newsroomAddress).encodeABI(),\n      //   })\n      //   .then((res: any) => {\n      //     console.log(\"result: \", res);\n      //   });\n      // TODO(dankins): boolean calls that revert are still returning true, is this a web3 bug?\n      // await expect(registry.challengeCanBeResolved(newsroomAddress)).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false if listings exists but challenge doesn't\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      // TODO(dankins): boolean calls that revert are still returning true, is this a web3 bug?\n      // await expect(registry.challengeCanBeResolved(newsroomAddress)).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false after challenge is resolved\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress, { from: applicant });\n      // const result = registry.challengeCanBeResolved(newsroomAddress);\n      // TODO(dankins): boolean calls that revert are still returning true, is this a web3 bug?\n      // expect(result).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\"should return false immediately after challenge is appealed\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\"Should return false immediately after challenge is appealed\");\n    });\n\n    it(\"should return false after challenge is appealed and judge appeal phase ends (have to resolve appeal, not challenge)\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength);\n\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\n        \"Should return false after challenge is appealed and appeal phase ends (have to resolve appeal, not challenge)\",\n      );\n    });\n\n    it(\"should return false immediately after challenge is appealed and granted\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\n        \"Should return false immdiately after challenge is appealed and appeal granted (have to resolve appeal, not challenge)\",\n      );\n    });\n\n    it(\"should return false  after challenge is appealed and granted\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\n        \"Should return false after challenge is appealed and appeal phase ends (have to resolve appeal, not challenge)\",\n      );\n    });\n\n    it(\"should return false  after challenge is appealed and granted and challenge appeal phase is over\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\n        \"Should return false after challenge is appealed and granted and challenge appeal phase ends\",\n      );\n    });\n\n    it(\"should return false immediately after challenge is appealed and granted and the appeal is challenged\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\n        \"Should return false immediately after challenge is appealed and granted and appeal is challenged\",\n      );\n    });\n\n    it(\"should return false after challenge is appealed and granted and the appeal is challenged and appeal challenge is over\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n      const result = await registry.challengeCanBeResolved(newsroomAddress);\n      await expect(result).to.be.false(\n        \"Should return false after challenge is appealed and granted and appeal is challenged and appeal challenge is over\",\n      );\n    });\n\n    it(\n      \"should return true if challenge request appeal expires, the challenge is \" +\n        \"unresolved, and appeal not requested\",\n      async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n\n        const result = await registry.challengeCanBeResolved(newsroomAddress);\n        await expect(result).to.be.true(\"Should return true if challenge request appeal expires\");\n      },\n    );\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/challengeGrantedAppeal.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: challengeGrantedAppeal\", () => {\n    const [JAB, applicant, challenger, voter, challenger2] = accounts;\n    const unapproved = accounts[9];\n\n    let registry: any;\n    let voting: any;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    describe(\"with real newsroom\", async () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(applicant);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should fail if no application has been made\", async () => {\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed grant appeal on non-existent application\");\n      });\n\n      it(\"should fail if application is in progress\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed grant appeal on application in progress\");\n      });\n\n      it(\"should fail if challenge is in progress\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with challenge in progress\",\n        );\n\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with challenge in progress\",\n        );\n\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with challenge not yet resolved\",\n        );\n      });\n\n      it(\"should fail if challenge is lost and status is updated, but appeal not requested\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed appeal on application with failed challenge that has been processed\",\n        );\n      });\n\n      it(\"should fail if challenge is lost, status is updated, and request phase has ended\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength + utils.paramConfig.revealStageLength + 1);\n        await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with failed challenge that has been processed\",\n        );\n      });\n\n      it(\"should fail if challenge is won by applicant, no appeal requested\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n        await utils.commitVote(voting, pollID, \"1\", \"10\", \"420\", voter);\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n        await voting.revealVote(pollID, 1, 420, { from: voter });\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(REVERTED, \"Should not allow grant appeal if challenge is won by applicant\");\n      });\n\n      it(\"should fail if challenge is lost and appeal requested, but not granted\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed appeal on application with failed challenge that has been processed\",\n        );\n      });\n\n      it(\"should succeed if challenge is lost, appeal requested, and granted\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.fulfilled(\n          \"Should have allowed appeal on application with challenge that has been appeal and had that appeal granted\",\n        );\n      });\n\n      it(\"should fail if try to challenge granted appeal while one already active\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.fulfilled(\"Should have allowed 1st challenge on granted appeal\");\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(REVERTED, \"Should have rejected 2nd challenge on granted appeal\");\n      });\n\n      it(\"should fail if challenge is lost, appeal requested, and granted, but challenger has not approved registry as token spender\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: unapproved }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed appeal on application with challenge that has been appeal and had that appeal granted if challenger has not approved registry as token spender\",\n        );\n      });\n\n      it(\"should succeed if challenge is lost, appeal requested, and granted, when appeal challenged by different challenger\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger2 }),\n        ).to.eventually.be.fulfilled(\n          \"Should have allowed appeal on application with challenge that has been appeal and had that appeal granted\",\n        );\n      });\n\n      it(\"should fail if challenge is lost, appeal requested, granted, but challenge appeal phase has ended\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n        await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed appeal on application with challenge that has been appeal and had that appeal granted\",\n        );\n      });\n\n      it(\"should fail if challenge is lost, appeal requested, granted, but challenge appeal phase has ended when appeal challenged by different challenger\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n        await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n\n        await expect(\n          registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger }),\n        ).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed appeal on application with challenge that has been appeal and had that appeal granted\",\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/checkAppealChallengeVoteOutcomes.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"check appeal challenge vote outcomes\", () => {\n    const [JAB, applicant, challenger, voterTim, voterGregg] = accounts;\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n    let voting: any;\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    it(\"should be whitelisted if challenge succeeds, appeal granted, appeal challenge gets less than supermajority\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voterTim);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n      await registry.updateStatus(newsroomAddress);\n\n      const isWhitelisted = await registry.isWhitelisted(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"should have been whitelisted after successful challenge, granted appeal, failed appeal challenge\",\n      );\n    });\n\n    it(\"should be whitelisted if challenge succeeds, appeal granted, appeal challenge gets equal votes for and against\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voterTim);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const appealChallengeID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengeID, \"1\", \"100\", \"420\", voterTim);\n      await utils.commitVote(voting, appealChallengeID, \"0\", \"100\", \"420\", voterGregg);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengeID, \"1\", \"420\", { from: voterTim });\n      await voting.revealVote(appealChallengeID, \"0\", \"420\", { from: voterGregg });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n      await registry.updateStatus(newsroomAddress);\n\n      const isWhitelisted = await registry.isWhitelisted(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"should have been whitelisted after successful challenge, granted appeal, failed appeal challenge\",\n      );\n    });\n\n    it(\"should be whitelisted if challenge succeeds, appeal granted, appeal challenge gets supermajority against\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voterTim);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const appealChallengeID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengeID, \"1\", \"100\", \"420\", voterTim);\n      await utils.commitVote(voting, appealChallengeID, \"0\", \"1000\", \"420\", voterGregg);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengeID, \"1\", \"420\", { from: voterTim });\n      await voting.revealVote(appealChallengeID, \"0\", \"420\", { from: voterGregg });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n      await registry.updateStatus(newsroomAddress);\n\n      const isWhitelisted = await registry.isWhitelisted(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"should have been whitelisted after successful challenge, granted appeal, failed appeal challenge\",\n      );\n    });\n\n    it(\"should be rejected if challenge succeeds, appeal granted, appeal challenge gets supermajority in favor\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voterTim);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const appealChallengeID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengeID, \"1\", \"1000\", \"420\", voterTim);\n      await utils.commitVote(voting, appealChallengeID, \"0\", \"100\", \"420\", voterGregg);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengeID, \"1\", \"420\", { from: voterTim });\n      await voting.revealVote(appealChallengeID, \"0\", \"420\", { from: voterGregg });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n      await registry.updateStatus(newsroomAddress);\n\n      const isWhitelisted = await registry.isWhitelisted(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"should have been rejected after successful challenge, granted appeal, sucessful appeal challenge\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/claimAppealChallengeReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst Token = artifacts.require(\"CVLToken\");\nutils.configureProviders(PLCRVoting, Token);\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry with Appeals\", accounts => {\n  describe(\"Function: claimAppealChallengeReward\", () => {\n    const [JAB, applicant, challenger, challenger2, voterAlice, voterBob] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    let registry: any;\n    let voting: any;\n    let token: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should transfer the correct number of tokens once an appeal challenge has been resolved\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: voterBob });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const appealChallengePollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengePollID, \"1\", \"500\", \"1337\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengePollID, \"1\", \"1337\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await registry.updateStatus(newsroomAddress);\n\n      await expect(registry.claimReward(appealChallengePollID, \"1337\", { from: voterBob })).to.eventually.be.fulfilled(\n        \"should have allowed voter in appeal challenge poll to claim reward after appeal challenge resolved\",\n      );\n    });\n\n    it(\"should transfer the correct number of tokens once an appeal challenge has been resolved that had no votes\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: voterBob });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.challengeAppealAndGetPollID(newsroomAddress, challenger2, registry);\n\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      const challenger2BalanceBefore = await token.balanceOf(challenger2);\n      const appealerBalanceBefore = await token.balanceOf(voterBob);\n      await registry.updateStatus(newsroomAddress);\n\n      const challenger2BalanceAfter = await token.balanceOf(challenger2);\n      const appealerBalanceAfter = await token.balanceOf(voterBob);\n\n      expect(challenger2BalanceAfter).to.be.bignumber.equal(\n        challenger2BalanceBefore,\n        \"appealer should not have gained money from losing\",\n      );\n      const expected = appealerBalanceBefore.add(new BN(utils.paramConfig.appealFeeAmount).mul(new BN(2)));\n\n      expect(appealerBalanceAfter).to.be.bignumber.equal(\n        expected,\n        \"appeal challenger should have received both deposits\",\n      );\n    });\n\n    it(\"should transfer the correct number of tokens once an appeal challenge has been resolved with different amount of votes in each\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: voterBob });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const appealChallengePollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengePollID, \"1\", \"50\", \"1337\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengePollID, \"1\", \"1337\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await registry.updateStatus(newsroomAddress);\n\n      const balanceBeforeClaiming = await token.balanceOf(voterBob);\n      await expect(registry.claimReward(appealChallengePollID, \"1337\", { from: voterBob })).to.eventually.be.fulfilled(\n        \"should have allowed voter in appeal challenge poll to claim reward after appeal challenge resolved\",\n      );\n      const balanceAfterClaiming = await token.balanceOf(voterBob);\n      const reward = new BN(100)\n        .sub(new BN(utils.paramConfig.appealSupermajorityPercentage))\n        .mul(new BN(utils.paramConfig.appealFeeAmount))\n        .div(new BN(100));\n      const expectedEndingBalance = balanceBeforeClaiming.add(reward);\n      expect(expectedEndingBalance).to.be.bignumber.equal(balanceAfterClaiming);\n    });\n\n    it(\"should transfer the correct number of tokens once an appeal challenge has been resolved with different amount of votes in each\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: voterBob });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const appealChallengePollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengePollID, \"0\", \"50\", \"1337\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengePollID, \"0\", \"1337\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await registry.updateStatus(newsroomAddress);\n\n      const balanceBeforeClaiming = await token.balanceOf(voterBob);\n      await expect(registry.claimReward(appealChallengePollID, \"1337\", { from: voterBob })).to.eventually.be.fulfilled(\n        \"should have allowed voter in appeal challenge poll to claim reward after appeal challenge resolved\",\n      );\n      const balanceAfterClaiming = await token.balanceOf(voterBob);\n      const reward = new BN(100)\n        .sub(new BN(utils.paramConfig.appealSupermajorityPercentage))\n        .mul(new BN(utils.paramConfig.appealFeeAmount))\n        .div(new BN(100));\n      const expectedEndingBalance = balanceBeforeClaiming.add(reward);\n      expect(expectedEndingBalance).to.be.bignumber.equal(balanceAfterClaiming);\n    });\n\n    it(\"should transfer the correct number of tokens once an appeal challenge has been resolved with different amount of votes in each challenge and 2 voters each\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"123\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await voting.revealVote(pollID, \"0\", \"123\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: voterBob });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const appealChallengePollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengePollID, \"1\", \"50\", \"1337\", voterBob);\n      await utils.commitVote(voting, appealChallengePollID, \"1\", \"450\", \"420420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n      await voting.revealVote(appealChallengePollID, \"1\", \"1337\", { from: voterBob });\n      await voting.revealVote(appealChallengePollID, \"1\", \"420420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await registry.updateStatus(newsroomAddress);\n\n      const balanceBeforeClaiming = await token.balanceOf(voterBob);\n      await expect(registry.claimReward(appealChallengePollID, \"1337\", { from: voterBob })).to.eventually.be.fulfilled(\n        \"should have allowed voter in appeal challenge poll to claim reward after appeal challenge resolved\",\n      );\n      const balanceAfterClaiming = await token.balanceOf(voterBob);\n\n      const appealAmount = new BN(utils.paramConfig.appealFeeAmount);\n      const superMajorityPercent = new BN(utils.paramConfig.appealSupermajorityPercentage);\n      const hundred = new BN(100);\n\n      const reward = hundred\n        .sub(superMajorityPercent)\n        .mul(appealAmount)\n        .div(hundred)\n        .div(new BN(10));\n\n      // const reward = new BN(100)\n      //   .sub()\n      //   .mul(new BN(utils.paramConfig.appealFeeAmount))\n      //   .div(new BN(100))\n      //   .mul(new BN(50).div(new BN(500)));\n      const expectedEndingBalance = balanceBeforeClaiming.add(reward);\n      expect(expectedEndingBalance).to.be.bignumber.equal(balanceAfterClaiming);\n    });\n\n    it(\"should revert if appeal challenge does not exist\", async () => {\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      const nonPollID = \"666\";\n      await expect(registry.claimReward(nonPollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/claimReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\n\nconst Token = artifacts.require(\"CVLToken\");\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(Token, PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry with Appeals\", accounts => {\n  describe(\"Function: claimReward\", () => {\n    const [JAB, applicant, challenger, voterAlice, voterBob] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    let registry: any;\n    let token: any;\n    let voting: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const tokenAddress = await registry.token();\n      token = await Token.at(tokenAddress);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should transfer the correct number of tokens once a challenge has been resolved\", async () => {\n      // Apply\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      // Pass Request Appeal Phase without requesting\n      const waitTime = utils.paramConfig.requestAppealPhaseLength + 1;\n      await utils.advanceEvmTime(waitTime);\n      await registry.updateStatus(newsroomAddress);\n\n      // Alice claims reward\n      const aliceVoterReward = await registry.voterReward(voterAlice, pollID, \"420\");\n      await registry.claimReward(pollID, \"420\", { from: voterAlice });\n\n      // Alice withdraws her voting rights\n      await voting.withdrawVotingRights(\"500\", { from: voterAlice });\n\n      const aliceExpected = aliceStartingBalance.add(aliceVoterReward);\n      const aliceFinalBalance = await token.balanceOf(voterAlice);\n\n      expect(aliceFinalBalance).to.be.bignumber.equal(\n        aliceExpected,\n        \"alice should have the same balance as she started\",\n      );\n    });\n\n    it(\"should revert if challenge does not exist\", async () => {\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      const nonPollID = \"666\";\n      await expect(registry.claimReward(nonPollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n      );\n    });\n\n    it(\"should revert if provided salt is incorrect\", async () => {\n      const applicantStartingBalance = await token.balanceOf(applicant);\n      const aliceStartBal = await token.balanceOf(voterAlice);\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      const applicantFinalBalance = await token.balanceOf(applicant);\n      const aliceFinalBalance = await token.balanceOf(voterAlice);\n      const expectedBalance = applicantStartingBalance.sub(minDeposit);\n\n      expect(applicantFinalBalance).to.be.bignumber.equal(\n        expectedBalance,\n        \"applicants final balance should be what they started with minus the minDeposit\",\n      );\n      expect(aliceFinalBalance).to.be.bignumber.equal(\n        aliceStartBal.sub(utils.toBaseTenBigNumber(500)),\n        \"alices final balance should be exactly the same as her starting balance\",\n      );\n\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n      // Update status\n      await registry.updateStatus(newsroomAddress, { from: applicant });\n\n      await expect(registry.claimReward(pollID, \"421\", { from: voterAlice })).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should not transfer tokens if msg.sender has already claimed tokens for a challenge\", async () => {\n      const applicantStartingBalance = await token.balanceOf(applicant);\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      const waitTime = utils.paramConfig.requestAppealPhaseLength + 1;\n      await utils.advanceEvmTime(waitTime);\n      await registry.updateStatus(newsroomAddress);\n\n      // Claim reward\n      await registry.claimReward(pollID, \"420\", { from: voterAlice });\n\n      await expect(registry.claimReward(pollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to call claimReward twice\",\n      );\n\n      const applicantEndingBalance = await token.balanceOf(applicant);\n      const appExpected = applicantStartingBalance.sub(minDeposit);\n\n      const aliceEndingBalance = await token.balanceOf(voterAlice);\n      const aliceExpected = aliceStartingBalance\n        .add(minDeposit.div(utils.toBaseTenBigNumber(2)))\n        .sub(utils.toBaseTenBigNumber(500));\n\n      expect(applicantEndingBalance).to.be.bignumber.equal(appExpected, \"applicants ending balance is incorrect\");\n      expect(aliceEndingBalance).to.be.bignumber.equal(aliceExpected, \"alices ending balance is incorrect\");\n    });\n\n    it(\"should not transfer tokens for an unresolved challenge\", async () => {\n      const applicantStartingBalance = await token.balanceOf(applicant);\n      const aliceStartingBalance = await token.balanceOf(voterAlice);\n\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      // Alice is so committed\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      // Alice is so revealing\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await expect(registry.claimReward(pollID, \"420\", { from: voterAlice })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to claimReward for unresolved challenge\",\n      );\n\n      const applicantEndingBalance = await token.balanceOf.call(applicant);\n      const appExpected = applicantStartingBalance.sub(minDeposit);\n\n      const aliceEndingBalance = await token.balanceOf.call(voterAlice);\n      const aliceExpected = aliceStartingBalance.sub(utils.toBaseTenBigNumber(500));\n\n      expect(applicantEndingBalance).to.be.bignumber.equal(appExpected, \"applicants ending balance is incorrect\");\n      expect(aliceEndingBalance).to.be.bignumber.equal(aliceExpected, \"alices ending balance is incorrect\");\n    });\n\n    it(\"should not transfer tokens to majority voters if challenge is overturned on appeal\", async () => {\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"50\", \"42\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"42\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const waitTime = utils.paramConfig.challengeAppealLength + 1;\n      await utils.advanceEvmTime(waitTime);\n\n      await registry.updateStatus(newsroomAddress);\n\n      // Claim reward\n      await expect(registry.claimReward(pollID, new BN(42), { from: voterAlice })).to.be.rejectedWith(\n        REVERTED,\n        \"should have reverted since voter commit hash does not match winning hash for salt\",\n      );\n    });\n\n    // TODO(nickreynolds)\n    // \"challenger\" should not be able to claim reward for overturned challenge\n    // \"applicant\" should be able to claim reward for overturned challenge\n\n    it(\"should transfer tokens to minority voters if challenge is overturned on appeal\", async () => {\n      const bobStartingBalance = await token.balanceOf(voterBob);\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"50\", \"42\", voterAlice);\n      await utils.commitVote(voting, pollID, \"1\", \"30\", \"32\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"42\", { from: voterAlice });\n      await voting.revealVote(pollID, \"1\", \"32\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const waitTime = utils.paramConfig.challengeAppealLength;\n      await utils.advanceEvmTime(waitTime + 1);\n\n      await registry.updateStatus(newsroomAddress);\n\n      // Claim reward\n      await expect(registry.claimReward(pollID, \"32\", { from: voterBob })).to.be.fulfilled(\n        \"should have allowed minority voter to claim reward\",\n      );\n\n      await voting.withdrawVotingRights(\"30\", { from: voterBob }); // get all tokens back\n      const bobEndingBalance = await token.balanceOf(voterBob);\n\n      // starting balance + (minDeposit * dispensationPct)\n      const expectedBobEndingBalance = utils.toBaseTenBigNumber(bobStartingBalance).add(\n        utils\n          .toBaseTenBigNumber(utils.paramConfig.minDeposit)\n          .mul(new BN(utils.paramConfig.dispensationPct))\n          .div(new BN(100)),\n      );\n\n      expect(bobEndingBalance).to.be.bignumber.equal(\n        expectedBobEndingBalance,\n        \"Bob's ending balance did not equal expected value\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/grantAppeal.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: grantAppeal\", () => {\n    const [JAB, applicant, challenger, voter] = accounts;\n\n    let registry: any;\n    let voting: any;\n\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n    });\n\n    describe(\"with real newsroom\", async () => {\n      let testNewsroom: any;\n      let newsroomAddress: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(applicant);\n        newsroomAddress = testNewsroom.address;\n      });\n\n      it(\"should fail if no application has been made\", async () => {\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on non-existent application\",\n        );\n      });\n\n      it(\"should fail if application is in progress\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application in progress\",\n        );\n      });\n\n      it(\"should fail if challenge is in progress\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with challenge in progress\",\n        );\n\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with challenge in progress\",\n        );\n\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with challenge not yet resolved\",\n        );\n      });\n\n      it(\"should fail if challenge is lost and status is updated, but appeal not requested\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed appeal on application with failed challenge that has been processed\",\n        );\n      });\n\n      it(\"should fail if challenge is lost, status is updated, and request phase has ended\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength + utils.paramConfig.revealStageLength + 1);\n        // hack. can't read directly from contract for some reason, was causing crash\n        await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength);\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed grant appeal on application with failed challenge that has been processed\",\n        );\n      });\n\n      it(\"should fail if challenge is won by applicant\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n        await utils.commitVote(voting, pollID, \"1\", \"10\", \"420\", voter);\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n        await voting.revealVote(pollID, 1, 420, { from: voter });\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not allow grant appeal if challenge is won by applicant\",\n        );\n      });\n\n      it(\"should succeed if challenge is lost and status is updated, and appeal requested\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.fulfilled(\n          \"Should not have allowed appeal on application with failed challenge that has been processed\",\n        );\n      });\n\n      it(\"should fail if not appellate granting appeal\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await expect(\n          registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed grant appeal if not granted from appellate\");\n      });\n\n      it(\"should fail if appeal has already been granted\", async () => {\n        await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n        await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n        await expect(registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB })).to.eventually.be.rejectedWith(\n          REVERTED,\n          \"Should not have allowed to be granted appeal twice\",\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/hasClaimedChallengeAppealTokens.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: hasClaimedChallengeAppealTokens\", () => {\n    const [JAB, applicant, challenger, voterAlice, voterBob] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    let registry: any;\n    let voting: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should be false every time we check until appeal challenge reward is claimed\", async () => {\n      // Apply\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"1\", \"500\", \"420\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"1\", \"420\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: voterBob });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      const appealChallengePollID = await utils.challengeAppealAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, appealChallengePollID, \"1\", \"500\", \"1337\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeCommitStageLength + 1);\n\n      await voting.revealVote(appealChallengePollID, \"1\", \"1337\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.appealChallengeRevealStageLength + 1);\n\n      await registry.updateStatus(newsroomAddress);\n\n      const hasClaimedBefore = await registry.tokenClaims(appealChallengePollID, voterBob);\n      expect(hasClaimedBefore).to.be.false(\"tokenClaims should have been false for unclaimed reward 2\");\n\n      await registry.claimReward(appealChallengePollID, \"1337\", { from: voterBob });\n\n      const hasClaimedAfter = await registry.tokenClaims(appealChallengePollID, voterBob);\n      expect(hasClaimedAfter).to.be.true(\n        \"tokenClaims should have been true for voter than has claimed challenge reward\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/isWhitelisted.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: isWhitelisted\", () => {\n    const [JAB, applicant, challenger, voter] = accounts;\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should whitelist if challenge unsuccessful, appeal not requested\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with unsuccessful challenge if appeal requested but not granted\",\n      );\n    });\n\n    it(\"should delist if challenge successful, appeal not requested\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with successful challenge if appeal requested but not granted\",\n      );\n    });\n\n    it(\"should whitelist if challenge unsuccessful, appeal requested, no granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with unsuccessful challenge if appeal requested but not granted\",\n      );\n    });\n\n    it(\"should delist if challenge successful, appeal requested, no granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with successful challenge if appeal requested but not granted\",\n      );\n    });\n\n    it(\"should whitelist if challenge successful, granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with successful challenge if appeal granted and appeal not challenged\",\n      );\n    });\n\n    it(\"should delist if challenge unsuccessful, granted appeal\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.advanceEvmTime(utils.paramConfig.challengeAppealLength + 1);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with unsuccessful challenge if appeal granted and appeal not challenged\",\n      );\n    });\n    it(\"should delist if challenge success, granted appeal, appeal challenge success\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.simpleSuccessfulAppealChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with successful challenge, granted appeal, successful appeal challenge\",\n      );\n    });\n    it(\"should whitelist if challenge success, granted appeal, appeal challenge failure\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleSuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.simpleUnsuccessfulAppealChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with successful challenge, granted appeal, unsuccessful appeal challenge\",\n      );\n    });\n    it(\"should whitelist if challenge failure, granted appeal, appeal challenge success\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.simpleSuccessfulAppealChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\n        \"Should have whitelisted newsroom with unsuccessful challenge, granted appeal, successful appeal challenge\",\n      );\n    });\n    it(\"should delist if challenge failure, granted appeal, appeal challenge failure\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.simpleUnsuccessfulChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      await utils.simpleUnsuccessfulAppealChallenge(registry, newsroomAddress, challenger, voter);\n      await registry.updateStatus(newsroomAddress);\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.false(\n        \"Should not have whitelisted newsroom with unsuccessful challenge, granted appeal, unsuccessful appeal challenge\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/requestAppeal.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: requestAppeal\", () => {\n    const [JAB, applicant, challenger, voter] = accounts;\n    const unapproved = accounts[9];\n    let registry: any;\n    let voting: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should fail if no application has been made\", async () => {\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed appeal on non-existent application\");\n    });\n\n    it(\"should fail if application is in progress\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed appeal on application in progress\");\n    });\n\n    it(\"should fail if appeal is already in progress\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED, \"Should not have allowed appeal on appeal in progress\");\n    });\n\n    it(\"should succeed if challenge is in after reveal phase\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed appeal on application with challenge in progress\",\n      );\n\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed appeal on application with challenge in progress\",\n      );\n\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await expect(registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant })).to.eventually.be.fulfilled(\n        \"Should have allowed appeal on application with challenge immediately post reveal phase\",\n      );\n    });\n\n    it(\"should succeed if challenge is lost and status is updated\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await expect(registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant })).to.eventually.be.fulfilled(\n        \"Should have allowed appeal on application with failed challenge that has been processed\",\n      );\n    });\n\n    it(\"should fail if requester has not approved registry as spender of token\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: unapproved }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed request to appeal if they did not approve registry as spender\",\n      );\n    });\n\n    it(\"should fail if challenge is lost, status is updated, but request phase has ended\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + utils.paramConfig.revealStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength); // hack. can't read directly from contract for some reason, was causing crash\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should have allowed appeal on application with failed challenge that has been processed\",\n      );\n    });\n\n    it(\"should succeed if challenge is won by applicant\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n      await utils.commitVote(voting, pollID, \"1\", \"10\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n      await voting.revealVote(pollID, 1, 420, { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await expect(registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant })).to.eventually.be.fulfilled(\n        \"Should allow appeal if challenge is won by applicant\",\n      );\n    });\n\n    it(\"should allow a listing to request appeal after going through process before and being denied\", async () => {\n      // 1st time\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1); // hack. should be getting value from registry contract\n      await registry.updateStatus(newsroomAddress);\n\n      // 2nd time around\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await expect(registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant })).to.eventually.be.fulfilled(\n        \"should have allowed appeal 2nd time around\",\n      );\n    });\n\n    it(\"should allow a listing to request appeal the 2nd time around but not requesting one the 1st time\", async () => {\n      // 1st time\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n      await utils.commitVote(voting, pollID, \"0\", \"500\", \"420\", voter);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n      await voting.revealVote(pollID, \"0\", \"420\", { from: voter });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength + 1); // hack. should be getting value from registry contract\n      await registry.updateStatus(newsroomAddress);\n\n      // 2nd time around\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await expect(registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant })).to.eventually.be.fulfilled(\n        \"should have allowed appeal 2nd time around\",\n      );\n    });\n\n    it(\"should fail if challenge is in after request appeal phase\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(\n        utils.paramConfig.commitStageLength +\n          utils.paramConfig.requestAppealPhaseLength +\n          utils.paramConfig.revealStageLength +\n          1,\n      );\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should have allowed appeal on application with challenge immediately post reveal phase\",\n      );\n    });\n\n    it(\"should fail if challenge is in after request appeal phase and updateStatus was called\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, ZERO_DATA, { from: applicant });\n      await registry.challenge(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(\n        utils.paramConfig.commitStageLength +\n          utils.paramConfig.requestAppealPhaseLength +\n          utils.paramConfig.revealStageLength +\n          1,\n      );\n      await registry.updateStatus(newsroomAddress);\n      await expect(\n        registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant }),\n      ).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should have allowed appeal on application with challenge immediately post reveal phase\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/transferGovernment.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\nconfigureChai(chai);\nconst expect = chai.expect;\n\ncontract(\"Government\", accounts => {\n  describe(\"Function: setAppellate\", () => {\n    const [JAB, troll, newAppellate] = accounts;\n    let registry: any;\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n    });\n\n    it(\"should be possible for JAB to transfer government\", async () => {\n      await expect(registry.transferGovernment(newAppellate, { from: JAB })).to.eventually.be.fulfilled(\n        \"Should have allowed JAB to transfer government\",\n      );\n    });\n\n    it(\"should not be possible for troll to transfer government\", async () => {\n      await expect(registry.transferGovernment(newAppellate, { from: troll })).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"Should not have allowed troll to transfer government\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/updateStatus.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst CHARTER_HASH = \"0x\";\nconst CHALLENGE_HASH = \"0x\";\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry With Appeals\", accounts => {\n  describe(\"Function: updateStatus\", () => {\n    const [JAB, applicant, challenger] = accounts;\n    let registry: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n    const minDeposit = utils.paramConfig.minDeposit;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"should whitelist listing if apply stage ended without a challenge\", async () => {\n      // note: this function calls registry.updateStatus at the end\n      await utils.addToWhitelist(newsroomAddress, utils.paramConfig.minDeposit, applicant, registry);\n\n      const [, isWhitelisted] = await registry.listings(newsroomAddress);\n      expect(isWhitelisted).to.be.true(\"Listing should have been whitelisted\");\n    });\n\n    it(\"should succeed if request appeal is over without one requested\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, CHARTER_HASH, { from: applicant });\n      await registry.challenge(newsroomAddress, CHALLENGE_HASH, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await utils.advanceEvmTime(utils.paramConfig.requestAppealPhaseLength);\n\n      await expect(registry.updateStatus(newsroomAddress)).to.eventually.be.fulfilled(\n        \"should have been able to update status after appeal challenge\",\n      );\n\n      const [, , , , challengeID] = await registry.listings(newsroomAddress);\n      await expect(challengeID.isZero()).to.be.true(\"challengeID should be 0 after successfully updating status\");\n    });\n\n    it(\"should fail if request appeal is over and one is requested\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, CHARTER_HASH, { from: applicant });\n      await registry.challenge(newsroomAddress, CHALLENGE_HASH, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n\n      await expect(registry.updateStatus(newsroomAddress)).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to update status before appeal challenge is over\",\n      );\n    });\n\n    it(\"should succeed if appeal is requested and that phase ends without one being granted \", async () => {\n      await registry.apply(newsroomAddress, minDeposit, CHARTER_HASH, { from: applicant });\n      await registry.challenge(newsroomAddress, CHALLENGE_HASH, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await utils.advanceEvmTime(utils.paramConfig.judgeAppealPhaseLength + 1);\n      await expect(registry.updateStatus(newsroomAddress)).to.eventually.be.fulfilled(\n        \"should not have been able to update status before appeal challenge is over\",\n      );\n\n      const [, , , , challengeID] = await registry.listings(newsroomAddress);\n      await expect(challengeID.isZero()).to.be.true(\"challengeID should be 0 after successfully updating status\");\n    });\n\n    it(\"should succeed if appealChallenge is over\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, CHARTER_HASH, { from: applicant });\n      await registry.challenge(newsroomAddress, CHALLENGE_HASH, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await utils.advanceEvmTime(\n        utils.paramConfig.appealChallengeCommitStageLength + utils.paramConfig.appealChallengeRevealStageLength + 1,\n      );\n\n      await expect(registry.updateStatus(newsroomAddress)).to.eventually.be.fulfilled(\n        \"should have been able to update status after appeal challenge\",\n      );\n\n      const [, , , , challengeID] = await registry.listings(newsroomAddress);\n      await expect(challengeID.isZero()).to.be.true(\"challengeID should be 0 after successfully updating status\");\n    });\n\n    it(\"should fail if appealChallenge is still in progress\", async () => {\n      await registry.apply(newsroomAddress, minDeposit, CHARTER_HASH, { from: applicant });\n      await registry.challenge(newsroomAddress, CHALLENGE_HASH, { from: challenger });\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength);\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n\n      await registry.challengeGrantedAppeal(newsroomAddress, ZERO_DATA, { from: challenger });\n\n      await expect(registry.updateStatus(newsroomAddress)).to.eventually.be.rejectedWith(\n        REVERTED,\n        \"should not have been able to update status before appeal challenge is over\",\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/registryWithAppeals/voterReward.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport * as utils from \"../../utils/contractutils\";\nimport { BN } from \"bn.js\";\nimport { REVERTED_CALL } from \"../../utils/constants\";\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nutils.configureProviders(PLCRVoting);\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst ZERO_DATA = \"0x\";\n\ncontract(\"Registry\", accounts => {\n  describe(\"Function: voterReward\", () => {\n    const [JAB, applicant, challenger, voterAlice, voterBob] = accounts;\n    const minDeposit = utils.toBaseTenBigNumber(utils.paramConfig.minDeposit);\n    let registry: any;\n    let voting: any;\n    let testNewsroom: any;\n    let newsroomAddress: string;\n\n    beforeEach(async () => {\n      registry = await utils.createAllCivilTCRInstance(accounts, JAB);\n      const votingAddress = await registry.voting();\n      voting = await PLCRVoting.at(votingAddress);\n\n      testNewsroom = await utils.createDummyNewsrom(applicant);\n      newsroomAddress = testNewsroom.address;\n    });\n\n    it(\"cannot call for majority voter if challenge is overturned\", async () => {\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"50\", \"42\", voterAlice);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"42\", { from: voterAlice });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n      const waitTime = utils.paramConfig.judgeAppealPhaseLength + 1;\n      await utils.advanceEvmTime(waitTime);\n\n      await registry.updateStatus(newsroomAddress);\n\n      expect(registry.voterReward(voterAlice, pollID, \"42\")).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n\n    it(\n      \"should return all tokens not reserved for applicant to the only \" +\n        \"minority voter if there is only 1 and challenge is overturned on appeal\",\n      async () => {\n        await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n        // Challenge\n        const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n        await utils.commitVote(voting, pollID, \"0\", \"50\", \"42\", voterAlice);\n        await utils.commitVote(voting, pollID, \"1\", \"30\", \"32\", voterBob);\n        await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n        await voting.revealVote(pollID, \"0\", \"42\", { from: voterAlice });\n        await voting.revealVote(pollID, \"1\", \"32\", { from: voterBob });\n        await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n        await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n        await registry.grantAppeal(newsroomAddress, ZERO_DATA, { from: JAB });\n        const waitTime = utils.paramConfig.judgeAppealPhaseLength + 1;\n        await utils.advanceEvmTime(waitTime);\n\n        await registry.updateStatus(newsroomAddress);\n\n        // Claim reward\n        const bobReward = await registry.voterReward(voterBob, pollID, \"32\");\n        const expectedBobReward = utils\n          .toBaseTenBigNumber(utils.paramConfig.minDeposit)\n          .mul(new BN(utils.paramConfig.dispensationPct))\n          .div(new BN(100));\n\n        expect(bobReward).to.be.bignumber.equal(expectedBobReward, \"voterReward did not match expected reward\");\n      },\n    );\n\n    it(\"should return extra tokens to majority voter if appeal not granted\", async () => {\n      await utils.addToWhitelist(newsroomAddress, minDeposit, applicant, registry);\n\n      // Challenge\n      const pollID = await utils.challengeAndGetPollID(newsroomAddress, challenger, registry);\n\n      await utils.commitVote(voting, pollID, \"0\", \"50\", \"42\", voterAlice);\n      await utils.commitVote(voting, pollID, \"1\", \"30\", \"32\", voterBob);\n      await utils.advanceEvmTime(utils.paramConfig.commitStageLength + 1);\n\n      await voting.revealVote(pollID, \"0\", \"42\", { from: voterAlice });\n      await voting.revealVote(pollID, \"1\", \"32\", { from: voterBob });\n      await utils.advanceEvmTime(utils.paramConfig.revealStageLength + 1);\n\n      await registry.requestAppeal(newsroomAddress, ZERO_DATA, { from: applicant });\n      const waitTime = utils.paramConfig.judgeAppealPhaseLength + 1;\n      await utils.advanceEvmTime(waitTime);\n\n      await registry.updateStatus(newsroomAddress);\n\n      const aliceReward = await registry.voterReward(voterAlice, pollID, \"42\");\n      const expectedAliceReward = utils\n        .toBaseTenBigNumber(utils.paramConfig.minDeposit)\n        .mul(new BN(utils.paramConfig.dispensationPct))\n        .div(new BN(100))\n        .add(utils.toBaseTenBigNumber(utils.paramConfig.appealFeeAmount).div(new BN(2)));\n\n      expect(aliceReward).to.be.bignumber.equal(expectedAliceReward, \"voterReward did not match expected reward\");\n\n      // Claim reward\n      expect(registry.voterReward(voterBob, pollID, \"32\")).to.eventually.be.rejectedWith(REVERTED_CALL);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/tcr/restrictedRegistry/apply.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { REVERTED } from \"../../utils/constants\";\nimport * as utils from \"../../utils/contractutils\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst AddressRegistry = artifacts.require(\"AddressRegistry\");\nconst ContractAddressRegistry = artifacts.require(\"ContractAddressRegistry\");\nutils.configureProviders(AddressRegistry, ContractAddressRegistry);\n\nconst CHARTER_HASH = \"0x\";\n\ncontract(\"RestrictedAddressRegistry\", accounts => {\n  describe(\"Function: apply\", () => {\n    const [applicant, troll] = accounts;\n    const listing1 = \"0x0000000000000000000000000000000000000001\";\n    let registry: any;\n\n    beforeEach(async () => {\n      registry = await utils.createAllTestRestrictedAddressRegistryInstance(accounts);\n    });\n\n    describe(\"with real newsroom\", () => {\n      let testNewsroom: any;\n      let address: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(applicant);\n        address = testNewsroom.address;\n      });\n\n      it(\"should allow contract owner to apply on behalf of contract\", async () => {\n        await registry.apply(testNewsroom.address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant });\n\n        // get the struct in the mapping\n        const [applicationExpiry, whitelisted, owner, unstakedDeposit] = await registry.listings(address);\n\n        // check that Application is initialized correctly\n        expect(applicationExpiry).to.be.bignumber.gt(0, \"challenge time < now\");\n        expect(whitelisted).to.be.false(\"whitelisted != false\");\n        expect(owner).to.be.equal(applicant, \"owner of application != address that applied\");\n        expect(unstakedDeposit).to.be.bignumber.equal(utils.paramConfig.minDeposit, \"incorrect unstakedDeposit\");\n      });\n\n      it(\"should not allow a listing to apply which has a pending application\", async () => {\n        await registry.apply(address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant });\n        await expect(\n          registry.apply(address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"should add a listing to the whitelist which went unchallenged in its application period\", async () => {\n        await registry.apply(address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant });\n        await utils.advanceEvmTime(utils.paramConfig.applyStageLength + 1);\n        await registry.updateStatus(address);\n        const [, isWhitelisted] = await registry.listings(address);\n        expect(isWhitelisted).to.be.true(\"listing didn't get whitelisted\");\n      });\n\n      it(\"should not allow a listing to apply which is already listed\", async () => {\n        await utils.addToWhitelist(address, utils.paramConfig.minDeposit, applicant, registry);\n        await expect(\n          registry.apply(address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n    });\n\n    describe(\"with fake newsroom\", () => {\n      let testNewsroom: any;\n      let address: string;\n\n      beforeEach(async () => {\n        testNewsroom = await utils.createDummyNewsrom(troll);\n        address = testNewsroom.address;\n      });\n\n      it(\"should not allow a non-contract owner to apply\", async () => {\n        await expect(\n          registry.apply(address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n\n      it(\"should prevent un-owned address from being listed when registry cast to ContractAddressRegistry\", async () => {\n        const parentRegistry = await ContractAddressRegistry.at(registry.address);\n        await expect(\n          parentRegistry.apply(address, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n        ).to.eventually.be.rejectedWith(REVERTED);\n      });\n    });\n\n    it(\"should prevent non-contract address from being listed\", async () => {\n      await expect(\n        registry.apply(listing1, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n\n    it(\"should prevent non-contract address from being listed when registry cast to AddressRegistry\", async () => {\n      const parentRegistry = await AddressRegistry.at(registry.address);\n      await expect(\n        parentRegistry.apply(listing1, utils.paramConfig.minDeposit, CHARTER_HASH, { from: applicant }),\n      ).to.eventually.be.rejectedWith(REVERTED);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/contracts/test/token/CVLToken.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\nimport { BN } from \"bn.js\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst NoOpTokenController = artifacts.require(\"NoOpTokenController\");\nconst CivilTokenController = artifacts.require(\"CivilTokenController\");\nconst Token = artifacts.require(\"CVLToken\");\n\ncontract(\"CVLToken\", accounts => {\n  let noOpController;\n  let civilTokenController: any;\n  let token: any;\n  const totalSupply = new BN(1000);\n  beforeEach(async () => {\n    noOpController = await NoOpTokenController.new();\n    civilTokenController = await CivilTokenController.new();\n    token = await Token.new(totalSupply, \"TestCoin\", \"18\", \"TEST\", noOpController.address);\n  });\n\n  it(\"should mint all tokens and give to the owner\", async () => {\n    const ownerBalance = await token.balanceOf.call(accounts[0]);\n    expect(ownerBalance.toNumber()).to.eql(totalSupply.toNumber());\n  });\n\n  it(\"should allow Owner to upgrade CVLToken with a new controller\", async () => {\n    // using the NoOp controller results in no restriction\n    let code = await token.detectTransferRestriction.call(accounts[1], accounts[5], 1);\n    expect(code.toNumber()).to.eql(0);\n\n    // change the controller and restrictions should now be put in place\n    await token.changeController(civilTokenController.address);\n    code = await token.detectTransferRestriction.call(accounts[1], accounts[5], 1);\n    expect(code.toNumber()).to.eql(1);\n  });\n  it(\"should prevent others from changing token controller\", async () => {\n    return expect(\n      token.changeController(civilTokenController.address, { from: accounts[5] }),\n    ).to.eventually.be.rejected();\n  });\n\n  it(\"should fail transfers when using the civil token controller\", async () => {\n    await token.changeController(civilTokenController.address);\n    await civilTokenController.addToCore(accounts[0]);\n    // this should be successful\n    await token.transfer(accounts[1], 1000);\n    const account1Balance = await token.balanceOf.call(accounts[1]);\n    expect(account1Balance.toNumber()).to.eql(1000);\n\n    // token transfers with restrictions should fail\n    return expect(token.transfer(accounts[6], 100, { from: accounts[1] })).to.eventually.be.rejected();\n  });\n\n  it(\"should fail transferFrom when using the civil token controller\", async () => {\n    await token.changeController(civilTokenController.address);\n    await civilTokenController.addToCore(accounts[0]);\n    // this should be successful\n    await token.transfer(accounts[1], 1000);\n    const account1Balance = await token.balanceOf.call(accounts[1]);\n    expect(account1Balance.toNumber()).to.eql(1000);\n\n    // allow account[0] to transfer account[1] tokens\n    await token.approve(accounts[1], 100, { from: accounts[0] });\n\n    // token transfers with restrictions should fail\n    return expect(token.transferFrom(accounts[1], accounts[6], 100, { from: accounts[0] })).to.eventually.be.rejected();\n  });\n\n  it(\"should succeed transfers when using the no op token controller\", async () => {\n    // token uses NoOp controller, so all transfers should be successfull\n    await token.transfer(accounts[1], 1000);\n    await token.transfer(accounts[6], 100, { from: accounts[1] });\n\n    const account6Balance = await token.balanceOf.call(accounts[6]);\n    expect(account6Balance.toNumber()).to.eql(100);\n  });\n\n  it(\"should allow a user to send tokens to their multisig\");\n});\n"
  },
  {
    "path": "packages/contracts/test/token/CivilTokenController.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\n\nimport * as chai from \"chai\";\nimport { BN } from \"bn.js\";\n\nconfigureChai(chai);\nconst expect = chai.expect;\n\nconst MultiSigWalletFactory = artifacts.require(\"MultiSigWalletFactory\");\nconst CivilTokenController = artifacts.require(\"CivilTokenController\");\nconst Newsroom = artifacts.require(\"Newsroom\");\nconst NewsroomFactory = artifacts.require(\"NewsroomFactory\");\nconst CreateNewsroomInGroup = artifacts.require(\"CreateNewsroomInGroup\");\n\n// needed for proof of use tests\nconst CVLToken = artifacts.require(\"CVLToken\");\nconst CivilPLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst AttributeStore = artifacts.require(\"AttributeStore\");\nconst DLL = artifacts.require(\"DLL\");\n\n/*\nMANAGERS - addresses that are allowed to add and remove addresses from lists\nCORE - addresses that are controller by Civil Foundation, Civil Media, or Civil Newsrooms\nCIVILIAN - addresses that have completed the tutorial\nUNLOCKED - addresses that have completed \"proof of use\" requirements\nVERIFIED - addresses that have completed KYC verification\nSTOREFRONT - addresses that will sell tokens on behalf of the Civil Foundation. these addresses can only transfer to VERIFIED users\n*/\ncontract(\"CivilTokenController\", accounts => {\n  const SUPER_ADMIN = accounts[0];\n  const MANAGER = accounts[1];\n  const MANAGER2 = accounts[2];\n  const CORE_CONTRACT = accounts[3];\n  const NEW_USER = accounts[4];\n  const NEW_USER2 = accounts[5];\n  const CIVILIAN_USER = accounts[5];\n  const UNLOCKED_USER = accounts[6];\n  const VERIFIED_USER = accounts[7];\n  const STOREFRONT_WALLET = accounts[8];\n\n  let multiSigWalletFactory: any;\n  let newsroomFactory: any;\n  let createNewsroomInGroup: any;\n  let controller: any;\n  beforeEach(async () => {\n    multiSigWalletFactory = await MultiSigWalletFactory.new();\n    newsroomFactory = await NewsroomFactory.new(multiSigWalletFactory.address);\n    controller = await CivilTokenController.new();\n    createNewsroomInGroup = await CreateNewsroomInGroup.new(newsroomFactory.address, controller.address);\n    await controller.addManager(createNewsroomInGroup.address);\n    await controller.addManager(MANAGER);\n    await controller.addToCore(SUPER_ADMIN);\n    await controller.addToCore(CORE_CONTRACT);\n    await controller.addToCivilians(CIVILIAN_USER);\n    await controller.addToCivilians(UNLOCKED_USER);\n    await controller.addToUnlocked(UNLOCKED_USER);\n    await controller.addToVerified(VERIFIED_USER);\n    await controller.addToStorefront(STOREFRONT_WALLET);\n  });\n\n  describe(\"Managers\", () => {\n    it(\"should allow Owner to add Managers\", async () => {\n      await controller.addManager(MANAGER2);\n      const isManager = await controller.checkManagerStatus.call(MANAGER);\n      expect(isManager).to.eql(true);\n    });\n    it(\"should not allow Managers to add Managers\", async () => {\n      await controller.addManager(MANAGER);\n      await expect(controller.addManager(MANAGER2, { from: MANAGER })).to.eventually.be.rejected();\n\n      const isManager = await controller.checkManagerStatus.call(MANAGER2);\n\n      expect(isManager).to.eql(false);\n    });\n\n    it(\"should allow Managers to ADD or REMOVE addresses from lists\", async () => {\n      await controller.addManager(MANAGER);\n      // ADD\n      await controller.addToCore(NEW_USER, { from: MANAGER });\n      await controller.addToCivilians(NEW_USER, { from: MANAGER });\n      await controller.addToUnlocked(NEW_USER, { from: MANAGER });\n      await controller.addToVerified(NEW_USER, { from: MANAGER });\n      await controller.addToStorefront(NEW_USER, { from: MANAGER });\n\n      // REMOVE\n      await controller.removeFromCore(NEW_USER, { from: MANAGER });\n      await controller.removeFromCivilians(NEW_USER, { from: MANAGER });\n      await controller.removeFromUnlocked(NEW_USER, { from: MANAGER });\n      await controller.removeFromVerified(NEW_USER, { from: MANAGER });\n      await controller.removeFromStorefront(NEW_USER, { from: MANAGER });\n    });\n    it(\"should not allow Others to ADD or REMOVE addresses from LISTS\", async () => {\n      await expectFailure(controller.addToCore(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.addToCivilians(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.addToUnlocked(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.addToVerified(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.addToStorefront(NEW_USER, { from: NEW_USER2 }));\n\n      await expectFailure(controller.removeFromCore(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.removeFromCivilians(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.removeFromUnlocked(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.removeFromVerified(NEW_USER, { from: NEW_USER2 }));\n      await expectFailure(controller.removeFromStorefront(NEW_USER, { from: NEW_USER2 }));\n    });\n  });\n\n  describe(\"Non-Civilians\", () => {\n    it(\"should prevent SEND to anyone\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(NEW_USER, NEW_USER2, 1), 1);\n      await expectTransferCode(controller.detectTransferRestriction.call(NEW_USER, CORE_CONTRACT, 1), 1);\n      await expectTransferCode(controller.detectTransferRestriction.call(NEW_USER, MANAGER, 1), 1);\n    });\n  });\n\n  describe(\"Civilians\", () => {\n    it(\"should allow SEND to CORE list\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(CIVILIAN_USER, CORE_CONTRACT, 1), 0);\n    });\n    it(\"should prevent SEND to anyone else\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(CIVILIAN_USER, NEW_USER2, 1), 2);\n      await expectTransferCode(controller.detectTransferRestriction.call(CIVILIAN_USER, MANAGER, 1), 2);\n    });\n  });\n\n  describe(\"Unlocked Civilians\", () => {\n    it(\"should allow SEND to anybody\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(UNLOCKED_USER, CORE_CONTRACT, 1), 0);\n      await expectTransferCode(controller.detectTransferRestriction.call(UNLOCKED_USER, CIVILIAN_USER, 1), 0);\n      await expectTransferCode(controller.detectTransferRestriction.call(UNLOCKED_USER, STOREFRONT_WALLET, 1), 0);\n      await expectTransferCode(controller.detectTransferRestriction.call(UNLOCKED_USER, MANAGER, 1), 0);\n      await expectTransferCode(controller.detectTransferRestriction.call(UNLOCKED_USER, NEW_USER, 1), 0);\n      await expectTransferCode(controller.detectTransferRestriction.call(UNLOCKED_USER, NEW_USER2, 1), 0);\n    });\n  });\n\n  describe(\"Storefront\", () => {\n    it(\"should allow SEND to VERIFIED and CORE list\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(STOREFRONT_WALLET, VERIFIED_USER, 1), 0);\n      await expectTransferCode(controller.detectTransferRestriction.call(STOREFRONT_WALLET, CORE_CONTRACT, 1), 0);\n    });\n    it(\"should prevent SEND to anyone else\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(STOREFRONT_WALLET, NEW_USER, 1), 3);\n      await expectTransferCode(controller.detectTransferRestriction.call(STOREFRONT_WALLET, CIVILIAN_USER, 1), 3);\n      await expectTransferCode(controller.detectTransferRestriction.call(STOREFRONT_WALLET, UNLOCKED_USER, 1), 3);\n      await expectTransferCode(controller.detectTransferRestriction.call(STOREFRONT_WALLET, MANAGER, 1), 3);\n    });\n  });\n\n  describe(\"Newsrooms\", () => {\n    let newsroom: any;\n    let newsroomMultisig: any;\n    beforeEach(async () => {\n      const name = \"Test Newsroom\";\n      const charterUri = \"http://civil.co\";\n      const charterHash = web3.utils.sha3(\"foo\");\n      const initialOwners = [MANAGER];\n      const initialRequired = 1;\n      await createNewsroomInGroup.create(name, charterUri, charterHash, initialOwners, initialRequired);\n      const newsroomAddress = await newsroomFactory.instantiations.call(createNewsroomInGroup.address, 0);\n      newsroom = await Newsroom.at(newsroomAddress);\n      newsroomMultisig = await newsroom.owner.call();\n    });\n    it(\"should allow CIVILIANS to send to NEWSROOM MULTISIGS\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(CIVILIAN_USER, newsroomMultisig, 1), 0);\n    });\n    it(\"should allow NEWSROOM MULTISIGS to send to CIVILIANS\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(newsroomMultisig, CIVILIAN_USER, 1), 0);\n    });\n    it(\"should allow NEWSROOM MULTISIGS to send to CORE\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(newsroomMultisig, CORE_CONTRACT, 1), 0);\n    });\n    it(\"should prevent SEND from NEWSROOM MULTISIGS to send to anyone else\", async () => {\n      await expectTransferCode(controller.detectTransferRestriction.call(newsroomMultisig, NEW_USER, 1), 2);\n    });\n  });\n\n  describe(\"Proof of Use\", () => {\n    it(\"should have PLCR add CIVILIANS to UNLOCKED list using Telemetry\", async () => {\n      const token = await CVLToken.new(new BN(10000), \"TestCoin\", \"18\", \"TEST\", controller.address);\n      await token.transfer(CIVILIAN_USER, 1000);\n      CivilPLCRVoting.link(AttributeStore);\n      CivilPLCRVoting.link(DLL);\n      const plcr = await CivilPLCRVoting.new(token.address, controller.address);\n      await token.approve(plcr.address, 200, { from: CIVILIAN_USER });\n      await controller.addManager(plcr.address);\n      await controller.addToCore(plcr.address);\n      await plcr.requestVotingRights(100, { from: CIVILIAN_USER });\n      const ok = await controller.unlockedList(CIVILIAN_USER);\n\n      expect(ok).to.be.true();\n    });\n  });\n});\n\nasync function expectFailure(p: Promise<any>): Promise<any> {\n  let caught: boolean = false;\n  try {\n    await p;\n  } catch (e) {\n    caught = true;\n  }\n\n  if (!caught) {\n    throw new Error(\"was expecting an error to be thrown\");\n  }\n}\n\nasync function expectTransferCode(p: Promise<any>, expectedCode: number): Promise<any> {\n  const code = await p;\n\n  if (code.toNumber() !== expectedCode) {\n    throw new Error(`was expecting code to be ${expectedCode} but it is ${code}`);\n  }\n}\n"
  },
  {
    "path": "packages/contracts/test/token/DisbursementHander.ts",
    "content": "import { configureChai } from \"@joincivil/dev-utils\";\nimport * as chai from \"chai\";\n\nconfigureChai(chai);\n// const expect = chai.expect;\n\n// const CivilTokenController = artifacts.require(\"CivilTokenController\");\n\ncontract(\"DisbursementHandler\", accounts => {\n  it(\"should write tests for this\");\n});\n"
  },
  {
    "path": "packages/contracts/test/utils/constants.ts",
    "content": "export const REVERTED = \"revert\";\nexport const REVERTED_CALL = \"Returned values aren't valid, did it run Out of Gas?\";\nexport const INVALID_ADDRESS = `invalid address (arg=\"author\", coderType=\"address\", value=\"0x0\")`;\nexport const events = {\n  ACL_ROLE_ADDED: \"RoleAdded\",\n  ACL_ROLE_REMOVED: \"RoleRemoved\",\n  ACL_SUPERUSER_ADDDED: \"SuperuserAdded\",\n  ACL_SUPERUSER_REMOVED: \"SuperuserRemoved\",\n  NEWSROOM_PUBLISHED: \"ContentPublished\",\n  NEWSROOM_SIGNED: \"RevisionSigned\",\n  NEWSROOM_UPDATED: \"RevisionUpdated\",\n  EVENTSTORAGE_STORED: \"StringStored\",\n};\nexport const ACL_TEST_ROLE = \"testrole\";\nexport const NEWSROOM_ROLE_EDITOR = \"editor\";\nexport const POU_SUPER_GROUP = \"0x1\";\nexport const POU_GLOBAL_GROUP = \"0x2\";\n"
  },
  {
    "path": "packages/contracts/test/utils/contractutils.ts",
    "content": "import { advanceEvmTime } from \"@joincivil/dev-utils\";\nimport { DecodedLogEntry } from \"@joincivil/typescript-types\";\nimport { getVoteSaltHash } from \"@joincivil/utils\";\nimport * as fs from \"fs\";\nimport { promisify } from \"util\";\n// We're just using types from web3\nimport Web3 from \"web3\";\nimport ethApi from \"./getethapi\";\nimport { TransactionReceipt } from \"web3-core\";\nimport { Block } from \"web3-eth\";\n\nimport { BN } from \"bn.js\";\n\n// advanceEvmTime was moved to dev-utils\n// We would need to update ALL the tests, this is a workaround\nexport { advanceEvmTime } from \"@joincivil/dev-utils\";\n\nconst NoOpTokenController = artifacts.require(\"NoOpTokenController\");\nconst Token = artifacts.require(\"CVLToken\");\n\nconst PLCRVoting = artifacts.require(\"CivilPLCRVoting\");\nconst CivilParameterizer = artifacts.require(\"CivilParameterizer\");\nconst AddressRegistry = artifacts.require(\"AddressRegistry\");\nconst RestrictedAddressRegistry = artifacts.require(\"RestrictedAddressRegistry\");\nconst ContractAddressRegistry = artifacts.require(\"ContractAddressRegistry\");\nconst CivilTCR = artifacts.require(\"CivilTCR\");\nconst Government = artifacts.require(\"Government\");\nconst Newsroom = artifacts.require(\"Newsroom\");\nconst DummyTokenTelemetry = artifacts.require(\"DummyTokenTelemetry\");\n\nconfigureProviders(\n  PLCRVoting,\n  CivilParameterizer,\n  AddressRegistry,\n  RestrictedAddressRegistry,\n  ContractAddressRegistry,\n  CivilTCR,\n  Government,\n  Newsroom,\n  DummyTokenTelemetry,\n);\n\nconst config = JSON.parse(fs.readFileSync(\"./conf/config.json\").toString());\nexport const paramConfig = config.nets.ganache.paramDefaults; // always ganache when testing\n\nexport function findEvent<T = any>(tx: any, eventName: string): DecodedLogEntry<T> | undefined {\n  return tx.logs.find((log: any) => log.event === eventName);\n}\n\nexport function getReceiptValue(receipt: any, arg: any): any {\n  return receipt.logs[0].args[arg];\n}\n\nexport async function getBlockTimestamp(): Promise<any> {\n  const blockNumberPromise = promisify<number>(web3.eth.getBlockNumber.bind(web3.eth));\n  const blockNumber = await blockNumberPromise();\n  const getBlock = promisify<number, Block>(web3.eth.getBlock.bind(web3.eth));\n  return (await getBlock(blockNumber)).timestamp;\n}\n\nexport async function timestampFromTx(web3: Web3, tx: TransactionReceipt): Promise<number> {\n  if (tx.blockNumber === null) {\n    throw new Error(\"Transaction not yet mined\");\n  }\n\n  return (await web3.eth.getBlock(tx.blockNumber)).timestamp as number;\n}\n\nexport async function proposeReparamAndGetPropID(\n  propName: string,\n  propValue: BN,\n  parameterizer: any,\n  account: string,\n): Promise<any> {\n  const receipt = await parameterizer.proposeReparameterization(propName, propValue, { from: account });\n  return receipt.logs[0].args.propID;\n}\n\nexport async function challengeAndGetPollID(listing: string, account: string, registry: any): Promise<string> {\n  const receipt = await registry.challenge(listing, \"0x\", { from: account });\n  return receipt.logs[0].args.challengeID;\n}\n\nexport async function challengeAppealAndGetPollID(listing: string, account: string, registry: any): Promise<string> {\n  const receipt = await registry.challengeGrantedAppeal(listing, \"0x\", { from: account });\n  return receipt.logs[0].args.appealChallengeID;\n}\n\nexport async function challengeReparamAndGetPollID(\n  propID: string,\n  account: string,\n  parameterizer: any,\n): Promise<string> {\n  const receipt = await parameterizer.challengeReparameterization(propID, { from: account });\n  return receipt.logs[0].args.challengeID;\n}\n\nexport async function simpleSuccessfulChallenge(\n  registry: any,\n  listing: string,\n  challenger: string,\n  voter: string,\n  salt: string = \"123\",\n): Promise<string> {\n  const votingAddress = await registry.voting();\n  const voting = await PLCRVoting.at(votingAddress);\n  const pollID = await challengeAndGetPollID(listing, challenger, registry);\n  await commitVote(voting, pollID, \"0\", \"100\", salt, voter);\n  await advanceEvmTime(paramConfig.commitStageLength + 1);\n  await voting.revealVote(pollID, \"0\", salt, { from: voter });\n  await advanceEvmTime(paramConfig.revealStageLength + 1);\n  return pollID;\n}\n\nexport async function simpleUnsuccessfulChallenge(\n  registry: any,\n  listing: string,\n  challenger: string,\n  voter: string,\n  salt: string = \"420\",\n): Promise<string> {\n  const votingAddress = await registry.voting();\n  const voting = await PLCRVoting.at(votingAddress);\n  const pollID = await challengeAndGetPollID(listing, challenger, registry);\n  await commitVote(voting, pollID, \"1\", \"100\", salt, voter);\n  await advanceEvmTime(paramConfig.commitStageLength + 1);\n  await voting.revealVote(pollID, \"1\", salt, { from: voter });\n  await advanceEvmTime(paramConfig.revealStageLength + 1);\n  return pollID;\n}\n\nexport async function simpleSuccessfulAppealChallenge(\n  registry: any,\n  listing: string,\n  challenger: string,\n  voter: string,\n  salt: string = \"123\",\n): Promise<string> {\n  const votingAddress = await registry.voting();\n  const voting = await PLCRVoting.at(votingAddress);\n  const pollID = await challengeAppealAndGetPollID(listing, challenger, registry);\n  await commitVote(voting, pollID, \"1\", \"100\", salt, voter);\n  await advanceEvmTime(paramConfig.appealChallengeCommitStageLength + 1);\n  await voting.revealVote(pollID, \"1\", salt, { from: voter });\n  await advanceEvmTime(paramConfig.appealChallengeRevealStageLength + 1);\n  return pollID;\n}\n\nexport async function simpleUnsuccessfulAppealChallenge(\n  registry: any,\n  listing: string,\n  challenger: string,\n  voter: string,\n  salt: string = \"420\",\n): Promise<string> {\n  const votingAddress = await registry.voting();\n  const voting = await PLCRVoting.at(votingAddress);\n  const pollID = await challengeAppealAndGetPollID(listing, challenger, registry);\n  await commitVote(voting, pollID, \"0\", \"100\", salt, voter);\n  await advanceEvmTime(paramConfig.appealChallengeCommitStageLength + 1);\n  await voting.revealVote(pollID, \"0\", salt, { from: voter });\n  await advanceEvmTime(paramConfig.appealChallengeRevealStageLength + 1);\n  return pollID;\n}\n\nexport async function addToWhitelist(\n  listingAddress: string,\n  deposit: BN,\n  account: string,\n  registry: any,\n): Promise<void> {\n  await registry.apply(listingAddress, deposit, \"0x\", { from: account });\n  await advanceEvmTime(paramConfig.applyStageLength + 1);\n  await registry.updateStatus(listingAddress, { from: account });\n}\n\nexport function getChallengeReward(): BN {\n  const reward = new BN(100)\n    .sub(new BN(paramConfig.dispensationPct))\n    .mul(new BN(paramConfig.minDeposit))\n    .div(new BN(100));\n\n  return reward;\n}\n\nexport function getAppealChallengeReward(): BN {\n  const fee = new BN(paramConfig.appealFeeAmount);\n  const reward = new BN(100)\n    .sub(new BN(paramConfig.appealChallengeVoteDispensationPct))\n    .mul(fee)\n    .div(new BN(100));\n\n  return fee.sub(reward);\n}\n\nexport function getTotalVoterReward(): BN {\n  const totalVoterReward = new BN(paramConfig.minDeposit).sub(getChallengeReward());\n  return totalVoterReward;\n}\n\nexport function getTotalAppealChallengeVoterReward(): BN {\n  const totalVoterReward = new BN(paramConfig.appealFeeAmount).sub(getAppealChallengeReward());\n  return totalVoterReward;\n}\n\nexport function toBaseTenBigNumber(p: number): BN {\n  return new BN(p.toString(10));\n}\n\nexport async function commitVote(\n  voting: any,\n  pollID: any,\n  voteOption: string,\n  tokensArg: string,\n  salt: string,\n  voter: string,\n): Promise<void> {\n  const hash = getVoteSaltHash(voteOption, salt);\n  await voting.requestVotingRights(tokensArg, { from: voter });\n\n  const prevPollID = await voting.getInsertPointForNumTokens.call(voter, tokensArg, pollID);\n  await voting.commitVote(pollID, hash, tokensArg, prevPollID, { from: voter });\n}\n\nexport function divideAndGetWei(numerator: number | BN, denominator: number): BN {\n  const weiNumerator = new BN(web3.utils.toWei(numerator.toString(), \"gwei\"));\n  return weiNumerator.div(new BN(denominator));\n}\n\nexport function multiplyFromWei(x: number | BN, weiBN: BN): BN {\n  const xBN = typeof x === \"number\" ? new BN(x) : x;\n  const weiProduct = xBN.mul(weiBN);\n  return new BN(web3.utils.fromWei(weiProduct.toString(), \"gwei\"));\n}\n\nexport function multiplyByPercentage(x: number | BN, y: number | BN, z: number = 100): BN {\n  const weiQuotient = divideAndGetWei(y, z);\n  return multiplyFromWei(x, weiQuotient);\n}\n\nasync function giveTokensTo(totalSupply: BN, addresses: string[], accounts: string[], token: any): Promise<boolean> {\n  const user = addresses[0];\n  const allocation = totalSupply.div(new BN(accounts.length));\n  await token.transfer(user, allocation);\n\n  if (addresses.length === 1) {\n    return true;\n  }\n  return giveTokensTo(totalSupply, addresses.slice(1), accounts, token);\n}\n\nasync function createAndDistributeToken(totalSupply: BN, decimals: string, addresses: string[]): Promise<any> {\n  const controller = await NoOpTokenController.new();\n  const token = await Token.new(totalSupply, \"TestCoin\", decimals, \"TEST\", controller.address);\n  await giveTokensTo(totalSupply, addresses, addresses, token);\n  return token;\n}\n\nasync function createTestRegistryInstance(registryContract: any, parameterizer: any, accounts: string[]): Promise<any> {\n  async function approveRegistryFor(addresses: string[]): Promise<boolean> {\n    const user = addresses[0];\n    const balanceOfUser = await token.balanceOf(user);\n    await token.approve(registry.address, balanceOfUser, { from: user });\n    if (addresses.length === 1) {\n      return true;\n    }\n    return approveRegistryFor(addresses.slice(1));\n  }\n\n  const tokenAddress = await parameterizer.token();\n  const plcrAddress = await parameterizer.voting();\n  const parameterizerAddress = await parameterizer.address;\n  const token = await Token.at(tokenAddress);\n\n  const registry = await registryContract.new(tokenAddress, plcrAddress, parameterizerAddress, \"registry\");\n\n  await approveRegistryFor(accounts.slice(0, 8));\n  return registry;\n}\n\nasync function createTestCivilTCRInstance(\n  parameterizer: any,\n  telemetry: any,\n  accounts: string[],\n  appellateEntity: string,\n): Promise<any> {\n  async function approveRegistryFor(addresses: string[]): Promise<boolean> {\n    const user = addresses[0];\n    const balanceOfUser = await token.balanceOf(user);\n    await token.approve(registry.address, balanceOfUser, { from: user });\n    await token.approve(government.address, balanceOfUser, { from: user });\n    if (addresses.length === 1) {\n      return true;\n    }\n    return approveRegistryFor(addresses.slice(1));\n  }\n  const parameterizerConfig = config.nets.ganache.paramDefaults; // always ganache when testing\n  const tokenAddress = await parameterizer.token();\n  const plcrAddress = await parameterizer.voting();\n  const parameterizerAddress = await parameterizer.address;\n  const token = await Token.at(tokenAddress);\n  const government = await Government.new(\n    appellateEntity,\n    appellateEntity,\n    plcrAddress,\n    parameterizerConfig.appealFeeAmount,\n    parameterizerConfig.requestAppealPhaseLength,\n    parameterizerConfig.judgeAppealPhaseLength,\n    parameterizerConfig.appealSupermajorityPercentage,\n    parameterizerConfig.appealChallengeVoteDispensationPct,\n    0,\n    parameterizerConfig.govtPCommitStageLength,\n    parameterizerConfig.govtPRevealStageLength,\n    parameterizerConfig.constitutionHash,\n    parameterizerConfig.constitutionURI,\n  );\n\n  const registry = await CivilTCR.new(tokenAddress, plcrAddress, parameterizerAddress, government.address);\n\n  await approveRegistryFor(accounts.slice(0, 8));\n  return registry;\n}\n\nasync function createTestTokenInstance(accounts: string[]): Promise<any> {\n  return createAndDistributeToken(new BN(\"1000000000000000000000000\"), \"18\", accounts);\n}\n\nasync function createTestPLCRInstance(token: any, telemetry: any, accounts: string[]): Promise<any> {\n  async function approvePLCRFor(addresses: string[]): Promise<boolean> {\n    const user = addresses[0];\n    const balanceOfUser = await token.balanceOf(user);\n\n    await token.approve(plcr.address, balanceOfUser, { from: user });\n    if (addresses.length === 1) {\n      return true;\n    }\n    return approvePLCRFor(addresses.slice(1));\n  }\n  const telemetryAddress = await telemetry.address;\n  const plcr = await PLCRVoting.new(token.address, telemetryAddress);\n  await approvePLCRFor(accounts);\n\n  return plcr;\n}\n\nasync function createTestParameterizerInstance(accounts: string[], token: any, plcr: any): Promise<any> {\n  async function approveParameterizerFor(addresses: string[]): Promise<boolean> {\n    const user = addresses[0];\n    const balanceOfUser = await token.balanceOf(user);\n    await token.approve(parameterizer.address, balanceOfUser, { from: user });\n    if (addresses.length === 1) {\n      return true;\n    }\n    return approveParameterizerFor(addresses.slice(1));\n  }\n  const parameterizerConfig = config.nets.ganache.paramDefaults; // always ganache when testing\n\n  const params = [\n    parameterizerConfig.minDeposit,\n    parameterizerConfig.pMinDeposit,\n    parameterizerConfig.applyStageLength,\n    parameterizerConfig.pApplyStageLength,\n    parameterizerConfig.commitStageLength,\n    parameterizerConfig.pCommitStageLength,\n    parameterizerConfig.revealStageLength,\n    parameterizerConfig.pRevealStageLength,\n    parameterizerConfig.dispensationPct,\n    parameterizerConfig.pDispensationPct,\n    parameterizerConfig.voteQuorum,\n    parameterizerConfig.pVoteQuorum,\n    parameterizerConfig.challengeAppealLength,\n    parameterizerConfig.appealChallengeCommitStageLength,\n    parameterizerConfig.appealChallengeRevealStageLength,\n  ];\n  const parameterizer = await CivilParameterizer.new(token.address, plcr.address, params);\n\n  await approveParameterizerFor(accounts);\n  return parameterizer;\n}\n\nexport async function createAllTestParameterizerInstance(accounts: string[]): Promise<any> {\n  const telemetry = await DummyTokenTelemetry.new();\n  const token = await createTestTokenInstance(accounts);\n  const plcr = await createTestPLCRInstance(token, telemetry, accounts);\n  const parameterizer = await createTestParameterizerInstance(accounts, token, plcr);\n  return [parameterizer, telemetry];\n}\n\nexport async function createAllTestAddressRegistryInstance(accounts: string[]): Promise<any> {\n  const [parameterizer] = await createAllTestParameterizerInstance(accounts);\n  return createTestRegistryInstance(AddressRegistry, parameterizer, accounts);\n}\n\nexport async function createAllTestRestrictedAddressRegistryInstance(accounts: string[]): Promise<any> {\n  const [parameterizer] = await createAllTestParameterizerInstance(accounts);\n  return createTestRegistryInstance(RestrictedAddressRegistry, parameterizer, accounts);\n}\n\nexport async function createAllTestContractAddressRegistryInstance(accounts: string[]): Promise<any> {\n  const [parameterizer] = await createAllTestParameterizerInstance(accounts);\n  return createTestRegistryInstance(ContractAddressRegistry, parameterizer, accounts);\n}\n\nexport async function createAllCivilTCRInstance(accounts: string[], appellateEntity: string): Promise<any> {\n  const [parameterizer, telemetry] = await createAllTestParameterizerInstance(accounts);\n  return createTestCivilTCRInstance(parameterizer, telemetry, accounts, appellateEntity);\n}\n\nexport async function createDummyNewsrom(from?: string): Promise<any> {\n  return Newsroom.new(\"Fake newsroom name\", \"http://fakenewsroomcharter.com\", web3.utils.sha3(\"hello\"), { from });\n}\n\nexport function configureProviders(...contracts: any[]): void {\n  // TODO(ritave): Use our own contracts\n  contracts.forEach(contract => contract.setProvider(ethApi.currentProvider));\n}\n"
  },
  {
    "path": "packages/contracts/test/utils/coverage.ts",
    "content": "// import { CoverageSubprovider, TruffleArtifactAdapter } from \"@0x/sol-coverage\";\n// import * as process from \"process\";\n\n// const SOLC_VERSION = \"0.4.24\";\n// // Default ganache account from root package.json mnemonic\n// const DEFAULT_ACCOUNT = \"0xaa28645c500e644ab3195b58820adc437268e4c3\";\n\n// let coverageProvider: CoverageSubprovider;\n\n// export function inCoverage(): boolean {\n//   const coveragEnv = process.env.SOLIDITY_COVERAGE;\n//   return !!coveragEnv && coveragEnv.toLowerCase() === \"true\";\n// }\n\n// export function coverageProviderSingleton(): CoverageSubprovider {\n//   if (!coverageProvider) {\n//     const truffleAdapter = new TruffleArtifactAdapter(\"./\", SOLC_VERSION);\n//     coverageProvider = new CoverageSubprovider(truffleAdapter, DEFAULT_ACCOUNT);\n//     return coverageProvider;\n//   }\n//   return coverageProvider;\n// }\n"
  },
  {
    "path": "packages/contracts/test/utils/getethapi.ts",
    "content": "import { EthApi, DEFAULT_HTTP_NODE } from \"@joincivil/ethapi\";\nimport \"@joincivil/utils\";\nimport Web3 = require(\"web3\");\n\nfunction getEthApi(): EthApi {\n  // @ts-ignore\n  const provider = new Web3.providers.HttpProvider(DEFAULT_HTTP_NODE);\n  const ethApi = new EthApi(provider as any, []);\n  return ethApi;\n}\n\nexport default getEthApi();\n\n// import { RPCSubprovider } from \"@0x/subproviders\";\n// import { EthApi, Provider, DEFAULT_HTTP_NODE } from \"@joincivil/ethapi\";\n// import \"@joincivil/utils\";\n// import { coverageProviderSingleton, inCoverage } from \"./coverage\";\n// import ProviderEngine = require(\"web3-provider-engine\");\n// import Subprovider = require(\"web3-provider-engine/subproviders/subprovider\");\n\n// function prependSubprovider(engine: Provider, provider: Subprovider): void {\n//   provider.setEngine(engine);\n//   const castedEngine = engine as any;\n//   if (castedEngine._providers) {\n//     castedEngine._providers = [provider, ...castedEngine._providers];\n//   } else {\n//     throw new Error(\"Provider engine hack failed, update the hack\");\n//   }\n// }\n\n// function addNode(ethApi: EthApi): void {\n//   // TODO(ritave): Add ganache in process provider\n//   const rpcProvider = new RPCSubprovider(DEFAULT_HTTP_NODE, 10000);\n//   prependSubprovider(ethApi.currentProvider, rpcProvider);\n// }\n\n// function addCoverage(ethApi: EthApi): void {\n//   if (inCoverage()) {\n//     console.log(\"Enabling coverage\");\n//     prependSubprovider(ethApi.currentProvider, coverageProviderSingleton());\n//   }\n// }\n\n// function getEthApi(): EthApi {\n//   const providerEngine = new ProviderEngine();\n//   // @ts-ignore\n//   const ethApi = new EthApi(providerEngine, []);\n//   // Order is important\n//   addNode(ethApi);\n//   addCoverage(ethApi);\n//   providerEngine.start();\n//   return ethApi;\n// }\n\n// export default getEthApi();\n"
  },
  {
    "path": "packages/contracts/truffle-config.js",
    "content": "const path = require(\"path\");\nconst HDWalletProvider = require(\"@truffle/hdwallet-provider\");\n\nconsole.log(\"INIT_CWD\", __dirname);\n\nmodule.exports = {\n  // See <http://truffleframework.com/docs/advanced/configuration>\n  // to customize your Truffle configuration!\n  migrations_directory: \"build/migrations\",\n  test_directory: \"build/test\",\n  contracts_build_directory: path.join(__dirname, process.env.CONTRACT_BUILDS_DIRECTORY || \"./build/contracts\"),\n  compilers: {\n    solc: {\n      version: \"0.4.24\",\n      settings: {\n        optimizer: {\n          enabled: true,\n          runs: 200,\n        },\n      },\n    },\n  },\n\n  networks: {\n    develop: {\n      host: \"localhost\",\n      port: 8545,\n      network_id: \"*\", // Match any network id\n    },\n    ganache: {\n      host: \"localhost\",\n      port: 8545,\n      network_id: \"50\",\n    },\n    rinkeby: {\n      provider: function() {\n        const mnemonic = process.env.MNEMONIC;\n        const infura_key = process.env.INFURA_KEY;\n        return new HDWalletProvider(mnemonic, \"https://rinkeby.infura.io/v3/\" + infura_key);\n      },\n      network_id: 4,\n    },\n    ropsten: {\n      provider: function() {\n        const mnemonic = process.env.MNEMONIC;\n        const infura_key = process.env.INFURA_KEY;\n        return new HDWalletProvider(mnemonic, \"https://ropsten.infura.io/v3/\" + infura_key);\n      },\n      network_id: 5,\n    },\n    mainnet: {\n      provider: function() {\n        const mnemonic = process.env.MNEMONIC;\n        const infura_key = process.env.INFURA_KEY;\n        return new HDWalletProvider(mnemonic, \"https://mainnet.infura.io/v3/\" + infura_key);\n      },\n      network_id: 1,\n    },\n  },\n  mocha: {\n    bail: true,\n  },\n};\n"
  },
  {
    "path": "packages/contracts/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"declaration\": false,\n    \"outDir\": \"build/\"\n  },\n  \"include\": [\n    \"./test/**/*.ts\",\n    \"./utils/**/*.ts\",\n    \"./migrations/**/*.ts\",\n    \"./scripts/**.ts\",\n    \"../dev-utils/src/test/test.d.ts\"\n  ]\n}\n"
  },
  {
    "path": "packages/contracts/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\"]\n  }\n}\n"
  },
  {
    "path": "packages/core/.gitignore",
    "content": "src/contracts/generated/\n"
  },
  {
    "path": "packages/core/.npmignore",
    "content": "tsconfig.json\ntslint.json\ndoc\nbuild/test\nbuild/junit\n"
  },
  {
    "path": "packages/core/LICENSE",
    "content": "                  GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL.  It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it.  You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n  When we speak of free software, we are referring to freedom of use,\nnot price.  Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n  To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights.  These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library.  Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\f\n  Finally, software patents pose a constant threat to the existence of\nany free program.  We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder.  Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n  Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License.  This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License.  We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n  When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library.  The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom.  The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n  We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License.  It also provides other free software developers Less\nof an advantage over competing non-free programs.  These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries.  However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n  For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard.  To achieve this, non-free programs must be\nallowed to use the library.  A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries.  In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n  In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software.  For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n  Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\f\n                  GNU LESSER GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\f\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\f\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\f\n  6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Use a suitable shared library mechanism for linking with the\n    Library.  A suitable mechanism is one that (1) uses at run time a\n    copy of the library already present on the user's computer system,\n    rather than copying library functions into the executable, and (2)\n    will operate properly with a modified version of the library, if\n    the user installs one, as long as the modified version is\n    interface-compatible with the version that the work was made with.\n\n    c) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    d) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    e) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\f\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\f\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\f\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n                            NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/core/README.md",
    "content": "# @joincivil/core\n\nThis library is the main-entry point for any developer wanting to work with the Civil ecosystem. It abstracts communication with the Ethereum blockchain as well as storing and loading articles from file storage servers.\n\n[![license](https://img.shields.io/badge/license-LGPL%20v2.1-green.svg)](./LICENSE)\n\n## Installation\n\n```bash\nyarn add @joincivil/core\n```\n\n## Usage\n\n```typescript\nimport { Civil } from \"@joincivil/core\";\n\nconst MY_NEWSROOM_NAME = \"Example Newsroom\";\nconst MY_CONTENT_URI = \"https://example.com/article/123\";\nconst MY_CONTENT_HASH = \"0x123abc\";\n\n(async () => {\n  const civil = new Civil();\n\n  // This will launch web3 wallet, e.g. MetaMask, to confirm transaction:\n  const newsroomTx = await civil.newsroomDeployTrusted(MY_NEWSROOM_NAME);\n  console.log(\"Waiting for newsroom creation tx\", newsroomTx.txHash, \"to complete...\");\n\n  const newsroom = await newsroomTx.awaitReceipt();\n  console.log(\"Newsroom created with name\", await newsroom.getName(), \"at address\", newsroom.address);\n\n  const pendingTx = await newsroom.publishURIAndHash(MY_CONTENT_URI, MY_CONTENT_HASH);\n  console.log(\"Waiting for publish tx\", pendingTx.txHash, \"to complete...\");\n\n  const contentId = await pendingTx.awaitReceipt();\n  console.log(\"Content published with ID\", contentId);\n  console.log(\"Content:\", await newsroom.loadArticle(contentId));\n})().catch(console.error);\n```\n\nCheck the [documentation directory](./doc) for more\n\n## Contributing\n\nCivil's ecosystem is free and open-source, we're all part of it and you're encouraged to be a part of it with us.\nBest place to start hacking would be to use this package and build some application on top of the protocol.\n\nIf you're itching to dwelve deeper inside, [**help wanted**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\nand [**good first issue**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) labels are good places to get started and learn the architecture.\n\n### Developing on ganache\n\nThis package has artifacts with singleton addresses of smart-contracts deployed on multiple Ethereum networks, one of which is our Ganache instance, that is set-up to be completely predictable.\nThis means that whenever we run migrations on [`@joincivil/contracts`](../contracts) in Ganache, the addresses are gonna be the same as the ones included in this packages.\n\nMigrations are run automatically when `yarn ganache` in the root of monorepo is called.\n\n### Code generation\n\nCivil.ts uses auto-generated code from Smart-Contract .json artifacts.\nRun `yarn build` or explicitly `yarn generate` to create them in the `src/contracts/generated/` directory, afterwards develop as normal.\n\n#### Adding new smart-contracts\n\n- [ ] Write new or change some smart-contracts in [`@joincivil/contracts`](../contracts)\n- [ ] Add migration files and build.\n- [ ] Run `yarn ganache` in the root to make migrations\n- [ ] `cp ../contracts/build/artifacts/MyContract.json ./src/artifacts/` (merge manually if deployed on Rinkeby or Mainnet)\n- [ ] Run `yarn generate`\n- [ ] Enjoy automatically generated code\n\nThe templates for code generation can be found [`src/templates/`](./src/templates).\n"
  },
  {
    "path": "packages/core/doc/examples/example.ts",
    "content": "// import * as process from \"process\";\n\n(() => {\n  console.log(\"done\");\n})();\n\n// import { Civil } from \"../../src\";\n// import { NewsroomRoles } from \"../../src/types\";\n// import { InMemoryProvider } from \"../../src/content/inmemoryprovider\";\n\n// (async () => {\n//   const civil = new Civil({ ContentProvider: InMemoryProvider });\n\n//   console.log(\"Deploying newsroom...\");\n//   const newsroom = await (await civil.newsroomDeployTrusted(\"My new newsroom\")).awaitReceipt();\n//   console.log(\"Newsroom at: \", newsroom.address);\n\n//   console.log(\"Subscribing to new articles\");\n//   const articleSubscription = newsroom\n//     .revisions()\n//     .do(header => console.log(\"\\tProposed article, uri: \" + header.uri))\n//     .flatMap(async header => newsroom.resolveContent(header))\n//     .subscribe(article => {\n//       console.log(\"\\tContent for article id: \" + article.id, article.content);\n//       console.log(\"\\tUnsubscribing\");\n//       articleSubscription.unsubscribe();\n//     });\n\n//   console.log(\"Subscribing to latest name changes\");\n//   const nameSubscription = newsroom.nameChanges(\"latest\").subscribe(name => {\n//     console.log(\"\\tThe name of the Newsroom changed to\", name);\n//   });\n\n//   console.log(\"Am I the owner:\", await newsroom.isOwner());\n\n//   console.log(\"Setting myself to be editor\");\n//   await (await newsroom.addRole(civil.userAccount!, NewsroomRoles.Editor)).awaitReceipt();\n\n//   console.log(\"publishing a new article...\");\n//   const id = await (await newsroom.publishRevision(\"This is example content that I want to post\")).awaitReceipt();\n//   console.log(\"Article proposed: \", id);\n\n//   console.log(\"Changing names\");\n//   await Promise.all(\n//     [\"Second name\", \"Third name\", \"Last name\"].map(async name => {\n//       console.log(\"Changing name to:\", name);\n//       await (await newsroom.setName(name)).awaitReceipt();\n//     }),\n//   );\n//   nameSubscription.unsubscribe();\n// })().catch(err => {\n//   console.trace(err);\n//   process.exit(1);\n// });\n"
  },
  {
    "path": "packages/core/doc/examples/low-level/multisig.ts",
    "content": "// import { currentAccount, EthApi } from \"@joincivil/ethapi\";\n// import { BigNumber } from \"@joincivil/typescript-types\";\n// import * as process from \"process\";\n// import \"rxjs/add/operator/distinctUntilChanged\";\n// import { Artifact, artifacts } from \"../../../src/contracts/generated/artifacts\";\n// import { MultiSigWalletContract } from \"../../../src/contracts/generated/wrappers/multi_sig_wallet\";\n// import { Multisig } from \"../../../src/contracts/multisig/multisig\";\n// import Web3 = require(\"web3\");\n\n// const web3 = new EthApi(\n//   new Web3.providers.HttpProvider(\"http://localhost:8545\"),\n//   Object.values<Artifact>(artifacts).map(a => a.abi),\n// );\n\n(async () => {\n  console.log(\"muted\");\n  // tslint:disable-next-line:no-non-null-assertion\n  // const account = (await currentAccount(web3))!;\n  // console.log(\"Deploying multisig\");\n  // console.log(\"account: \", account);\n  // const deployTxHash = await MultiSigWalletContract.deployTrusted.sendTransactionAsync(\n  //   web3,\n  //   [account],\n  //   new BigNumber(1),\n  //   { from: account },\n  // );\n  // const deployReceipt = await web3.awaitReceipt(deployTxHash);\n  // const multisig = Multisig.atUntrusted(web3, deployReceipt.contractAddress!);\n  // console.log(\"Sending some money\");\n  // await (await multisig.transferEther(new BigNumber(1))).awaitReceipt();\n  // console.log(\"Sending money back\");\n  // console.log(\"\\tSubmitting and executing transaction\");\n  // await (await multisig.submitTransaction(account, new BigNumber(72), \"\")).awaitReceipt();\n  // console.log(\"Adding owner\");\n  // await (await multisig.addOwner(\"0x12345678901234567890123456789012345678901234567890\")).awaitReceipt();\n  // console.log(\"Upping required\");\n  // await (await multisig.changeRequirement(2)).awaitReceipt();\n  // console.log(\"Owners\", await multisig.owners());\n  // console.log(\"Required\", await multisig.required());\n  // console.log(\"Sending more money back\");\n  // let transaction = await (await multisig.submitTransaction(account, new BigNumber(42), \"\")).awaitReceipt();\n  // console.log(\"\\tTransaction nonce\", transaction.id);\n  // console.log(\"\\tConfirmations:\", await transaction.confirmations());\n  // console.log(\"\\tCan execute transfer:\", await transaction.canBeExecuted());\n  // console.log(\"\\tExecuting transaction\");\n  // transaction = await (await transaction.execute()).awaitReceipt();\n  // console.log(\"\\tTransaction shouldn't be executed:\", transaction.information.executed);\n  // if (transaction.information.executed) {\n  //   throw new Error(\"Ouch, transaction was executed after all\");\n  // }\n})().catch(err => {\n  console.error(err);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/core/doc/examples/low-level/typed_contracts.ts",
    "content": "import { currentAccount, EthApi } from \"@joincivil/ethapi\";\nimport * as process from \"process\";\nimport \"rxjs/add/operator/distinctUntilChanged\";\nimport { Artifact, artifacts } from \"../../../src/contracts/generated/artifacts\";\nimport { NewsroomContract } from \"../../../src/contracts/generated/wrappers/newsroom\";\nimport Web3 = require(\"web3\");\nimport { sha3 } from \"web3-utils\";\n\nconst web3 = new EthApi(\n  // @ts-ignore\n  new Web3.providers.HttpProvider(\"http://localhost:8545\"),\n  Object.values<Artifact>(artifacts).map(a => a.abi),\n);\n\n(async () => {\n  const account = (await currentAccount(web3))!;\n\n  const gas = await web3.getGasPriceString();\n  const data = {\n    from: account,\n    gasPrice: gas,\n  };\n  // tslint:disable-next-line:no-non-null-assertion\n  console.log(\"Deploying contract\");\n  const deployTxHash = await NewsroomContract.deployTrusted.sendTransactionAsync(\n    web3,\n    \"My Test Newsroom\",\n    \"http://foo.bar\",\n    sha3(\"test\"),\n    data,\n  );\n\n  console.log(\"deployed contract\", deployTxHash);\n\n  // const receipt = await web3.awaitReceipt(deployTxHash);\n  // console.log(\"got receipt\", receipt);\n  // const newsroom = NewsroomContract.atUntrusted(web3, receipt.contractAddress!);\n  // console.log(\"Contract at: \", newsroom.address);\n  // console.log(account);\n  // console.log(\"Name: \", await newsroom.name.callAsync());\n  // console.log(\"Am I owner: \", await newsroom.isOwner.callAsync(account));\n\n  // const subscription = newsroom.RevisionUpdatedStream().subscribe(async event => {\n  //   console.log(\"Content proposed\");\n  //   console.log(\"\\tContent id:\", event.returnValues.contentId.toString());\n  //   console.log(\"\\tGot an article, unsubscribing\");\n  //   subscription.unsubscribe();\n  // });\n\n  // for (let i = 0; i < 3; i++) {\n  //   console.log(\"Publishing content\");\n  //   const proposeOptions = await newsroom.publishContent.getRaw(\"http://someuirhere.com\", \"hash\", \"0x\", \"0x\", data);\n  //   const proposeTxHash = await web3.sendTransaction(proposeOptions);\n  //   await web3.awaitReceipt(proposeTxHash);\n  // }\n\n  // console.log(\"Historic events about published articles\");\n  // newsroom.ContentPublishedStream(undefined, { fromBlock: 0, toBlock: \"latest\" }).subscribe(event => {\n  //   console.log(\"\\tContent id:\", event.returnValues.contentId.toString());\n  // });\n\n  // newsroom\n  //   .ContentPublishedStream(undefined, { fromBlock: 0, toBlock: \"latest\" })\n  //   .last()\n  //   .subscribe(event => {\n  //     console.log(\"Only last publish\");\n  //     console.log(\"\\tContent id:\", event.returnValues.contentId.toString());\n  //   });\n})().catch(err => {\n  console.error(err);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/core/package.json",
    "content": "{\n  \"name\": \"@joincivil/core\",\n  \"version\": \"4.8.11\",\n  \"description\": \"The core library allowing for interfacing with the whole Civil ecosystem\",\n  \"main\": \"build/src/index.js\",\n  \"types\": \"build/src/index.d.ts\",\n  \"scripts\": {\n    \"build\": \"run-s generate tsc build:copyArtifacts\",\n    \"build:copyArtifacts\": \"copyfiles -u 2 './src/artifacts/**/*.json' ./build/src/artifacts\",\n    \"build:watch\": \"tsc -w\",\n    \"lint\": \"tslint --project ./\",\n    \"test\": \"run-s examples\",\n    \"examples\": \"run-p --aggregate-output examples:*\",\n    \"examples:basic\": \"node build/doc/examples/example.js\",\n    \"examples:typed\": \"node build/doc/examples/low-level/typed_contracts.js\",\n    \"examples:multisig\": \"node build/doc/examples/low-level/multisig.js\",\n    \"generate\": \"run-p generate:*\",\n    \"generate:contracts\": \"abi-gen --abis '../artifacts/v1/'\\\"${npm_package_config_contractsGlob}\\\"'.json' --template 'src/templates/contract/contract.handlebars' --partials 'src/templates/contract/partials/**/*.handlebars' --output 'src/contracts/generated/wrappers'\",\n    \"generate:artifacts\": \"node ../dev-utils/build/scripts/generate-from-files/bin.js '../artifacts/v1/'\\\"${npm_package_config_contractsGlob}\\\"'.json' 'src/templates/artifacts.handlebars' 'src/contracts/generated/artifacts.ts'\",\n    \"generate:events\": \"node ../dev-utils/build/scripts/generate-from-files/bin.js '../artifacts/v1/'\\\"${npm_package_config_contractsGlob}\\\"'.json' 'src/templates/events.handlebars' 'src/contracts/generated/events.ts'\",\n    \"generate:multisig\": \"abi-gen --abis '../artifacts/v1/'\\\"${npm_package_config_multisigGlob}\\\"'.json' --template 'src/templates/contract/multisigproxy.handlebars' --partials 'src/templates/contract/partials/**/*.handlebars' --output 'src/contracts/generated/multisig'\",\n    \"tsc\": \"tsc\",\n    \"prepublishOnly\": \"run-s build lint\",\n    \"clean\": \"rimraf build/ src/contracts/generated/*\"\n  },\n  \"config\": {\n    \"multisigGlob\": \"@(Newsroom|CVLToken|CivilTCR)\",\n    \"contractsGlob\": \"@(CivilTCR|CivilPLCRVoting|CivilParameterizer|CVLToken|EventStorage|Government|MultiSigWallet|Newsroom|NewsroomFactory|CivilTokenController|CreateNewsroomInGroup|NoOpTokenController)\"\n  },\n  \"author\": \"The Civil Media Company\",\n  \"bugs\": {\n    \"url\": \"https://github.com/joincivil/Civil/issues\"\n  },\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"license\": \"LGPL-2.1\",\n  \"devDependencies\": {\n    \"@0x/abi-gen\": \"^3.1.2\",\n    \"@joincivil/dev-utils\": \"^1.6.9\",\n    \"@joincivil/tslint-rules\": \"^2.7.1\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@types/debug\": \"0.0.30\",\n    \"@types/ethereumjs-util\": \"^5.2.0\",\n    \"@types/underscore\": \"^1.8.6\",\n    \"copyfiles\": \"^2.1.0\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"rimraf\": \"^2.6.2\",\n    \"tslint\": \"^5.17.0\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"dependencies\": {\n    \"@joincivil/artifacts\": \"^1.1.8\",\n    \"@joincivil/ethapi\": \"^0.4.8\",\n    \"@joincivil/utils\": \"^1.9.8\",\n    \"debug\": \"^4.1.0\",\n    \"ethereumjs-util\": \"^5.2.0\",\n    \"ethers\": \"^4.0.27\",\n    \"events\": \"^3.0.0\",\n    \"ipfs-http-client\": \"^29.1.1\",\n    \"rxjs\": \"^5.5.6\",\n    \"web3\": \"^1.2.4\",\n    \"web3-core\": \"^1.2.4\",\n    \"web3-eth-contract\": \"^1.2.4\",\n    \"web3-providers-http\": \"^1.2.4\",\n    \"web3-utils\": \"^1.2.4\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/core/src/FeatureFlagService.ts",
    "content": "import { getAllUrlSearchParam } from \"@joincivil/utils\";\n\nexport class FeatureFlagService {\n  public featureFlags: string[];\n  constructor(featureFlags?: string[]) {\n    this.featureFlags = (featureFlags || []).concat(getAllUrlSearchParam(\"feature-flag\"));\n  }\n  public featureEnabled(feature: string): boolean {\n    return this.featureFlags.includes(feature);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/UniswapService.ts",
    "content": "import { ethers } from \"ethers\";\nimport { BigNumber } from \"ethers/utils\";\n\nimport * as UniswapExchangeArtifact from \"@joincivil/artifacts/v1/UniswapExchange.json\";\nimport * as UniswapFactoryArtifact from \"@joincivil/artifacts/v1/UniswapFactory.json\";\nimport * as CVLTokenArtifact from \"@joincivil/artifacts/v1/CVLToken.json\";\n\n// const ALLOWED_SLIPPAGE = 0.025;\n// const TOKEN_ALLOWED_SLIPPAGE = 0.04;\n\nexport class UniswapService {\n  private signer: ethers.Signer | undefined;\n  private networkID: number;\n  private factory: ethers.Contract;\n  private exchange: ethers.Contract;\n  private token: ethers.Contract;\n  private provider: ethers.providers.Provider;\n  public constructor(provider: ethers.providers.Provider, signer: ethers.Signer | undefined, networkID: number) {\n    this.provider = provider;\n    this.networkID = networkID;\n    if (!(CVLTokenArtifact as any).networks[this.networkID]) {\n      throw new Error(\"unsupported network: \" + this.networkID);\n    }\n    const exchangeAddress = (UniswapExchangeArtifact as any).networks[this.networkID].address;\n    const cvlAddress = (CVLTokenArtifact as any).networks[this.networkID].address;\n    const factoryAddress = (UniswapFactoryArtifact as any).networks[this.networkID].address;\n    this.factory = new ethers.Contract(factoryAddress, (UniswapFactoryArtifact as any).abi, provider);\n\n    this.exchange = new ethers.Contract(exchangeAddress, (UniswapExchangeArtifact as any).abi, provider);\n\n    this.token = new ethers.Contract(cvlAddress, (CVLTokenArtifact as any).abi, provider);\n    this.signer = signer;\n    if (signer) {\n      this.factory = this.factory.connect(signer);\n      this.exchange = this.exchange.connect(signer);\n      this.token = this.token.connect(signer);\n    }\n  }\n\n  public createExchange(): any {\n    const cvlAddr = (CVLTokenArtifact as any).networks[this.networkID].address;\n\n    return this.factory.createExchange(cvlAddr);\n  }\n\n  public async priceToBuyCVL(tokensToBuy: BigNumber): Promise<BigNumber> {\n    // Buy ERC20 with ETH\n\n    const outputAmount = tokensToBuy;\n    const inputReserve = await this.provider.getBalance(this.exchange.address);\n    const outputReserve = await this.token.balanceOf(this.exchange.address);\n\n    // Cost\n    const numerator = outputAmount.mul(inputReserve).mul(1000);\n    const denominator = outputReserve.sub(outputAmount).mul(997);\n    const etherToPay = numerator.div(denominator).add(1);\n\n    return etherToPay;\n  }\n  public async quoteETHToCVL(etherToSpend: BigNumber): Promise<BigNumber> {\n    // Sell ETH for ERC20\n    const inputAmount = etherToSpend;\n    const inputReserve = await this.provider.getBalance(this.exchange.address);\n    const outputReserve = await this.token.balanceOf(this.exchange.address);\n\n    // Output amount bought\n    const numerator = inputAmount.mul(outputReserve).mul(997);\n    const denominator = inputReserve.mul(1000).add(inputAmount.mul(997));\n    const cvlToReceive = numerator.div(denominator);\n\n    return cvlToReceive;\n  }\n\n  // returns the amount of ETH (in wei) you would receive if you sold `cvlToSell` CVL (in wei)\n  public async quoteCVLToETH(cvlToSell: BigNumber): Promise<BigNumber> {\n    // Sell CVL for ETH\n    const inputAmount = cvlToSell;\n    const inputReserve = await this.token.balanceOf(this.exchange.address);\n    const outputReserve = await this.provider.getBalance(this.exchange.address);\n\n    // Output amount bought\n    const numerator = inputAmount.mul(outputReserve).mul(997);\n    const denominator = inputReserve.mul(1000).add(inputAmount.mul(997));\n    const ethToReceive = numerator.div(denominator);\n\n    return ethToReceive;\n  }\n\n  public async approvedSellAmountForAddress(address: string): Promise<BigNumber> {\n    return this.token.allowance(address, this.exchange.address);\n  }\n\n  public async getApprovedSellAmount(): Promise<BigNumber> {\n    if (!this.signer) {\n      throw new Error(\"no signer on UniswapService\");\n    }\n    const address = await this.signer.getAddress();\n    return this.token.allowance(address, this.exchange.address);\n  }\n\n  public async setApprovedSellAmount(amount: BigNumber): Promise<BigNumber> {\n    return this.token.approve(this.exchange.address, amount);\n  }\n\n  public async executeETHToCVL(ethToSpend: BigNumber, minTokensToReceive: BigNumber): Promise<void> {\n    console.log(\"executeETHToCVL\", ethers.utils.formatEther(ethToSpend), ethers.utils.formatEther(minTokensToReceive));\n    const deadline = await this.getBlockDeadline();\n    console.log(\"block deadline: \", deadline);\n    const overrides = {\n      value: ethToSpend,\n      gasLimit: 100000,\n    };\n\n    return this.exchange.ethToTokenSwapInput(\n      // TODO: price might move before mined\n      // tokens are in WEI, so make sure slippage relevative to ether amount\n      // minTokensToReceive.mul(1 - TOKEN_ALLOWED_SLIPPAGE),\n      minTokensToReceive,\n      deadline,\n      overrides,\n    );\n  }\n\n  public async executeCVLToETH(cvlToSpend: BigNumber, minETHToReceive: BigNumber): Promise<any> {\n    const deadline = await this.getBlockDeadline();\n    console.log(\n      \"executeCVLToETH\",\n      ethers.utils.formatEther(cvlToSpend),\n      minETHToReceive.toString(),\n      deadline.toString(),\n    );\n\n    const overrides = {\n      gasLimit: 100000,\n    };\n    return this.exchange.tokenToEthSwapInput(cvlToSpend, minETHToReceive, deadline, overrides);\n  }\n\n  public parseEther(amount: string): BigNumber {\n    return ethers.utils.parseEther(amount);\n  }\n  public weiToEtherNumber(amount: BigNumber): number {\n    const etherAmountString = ethers.utils.formatEther(amount);\n    const etherAmountNumber = Number.parseFloat(etherAmountString);\n    return Math.round(etherAmountNumber * 1000) / 1000;\n  }\n\n  private async getBlockDeadline(): Promise<number> {\n    const deadline = 600;\n    const blockNumber = await this.provider.getBlockNumber();\n    if (!blockNumber && blockNumber !== 0) {\n      throw new Error(\"invalid block number\");\n    }\n\n    const block = await this.provider.getBlock(blockNumber);\n    if (!block) {\n      throw new Error(\"invalid block\");\n    }\n\n    return block.timestamp + deadline;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/civil.ts",
    "content": "import { currentNetwork, EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport {\n  BigNumber,\n  EthAddress,\n  EthSignedMessage,\n  TxHash,\n  parseEther,\n  ContentData,\n  StorageHeader,\n} from \"@joincivil/typescript-types\";\nimport { CivilErrors, networkNames } from \"@joincivil/utils\";\nimport * as Debug from \"debug\";\nimport { Observable } from \"rxjs/Observable\";\nimport { CivilTransactionReceipt, FallbackProvider, TwoStepEthTransaction } from \".\";\nimport { ContentProvider, ContentProviderCreator } from \"./content/contentprovider\";\nimport { IPFSProvider } from \"./content/ipfsprovider\";\nimport { Artifact, artifacts } from \"./contracts/generated/artifacts\";\nimport { Newsroom } from \"./contracts/newsroom\";\nimport { CivilTCR } from \"./contracts/tcr/civilTCR\";\nimport { Council } from \"./contracts/tcr/council\";\nimport { createTwoStepSimple } from \"./contracts/utils/contracts\";\nimport { CVLToken } from \"./contracts/tcr/cvltoken\";\n\nimport { provider as Provider } from \"web3-core\";\n\n// See debug in npm, you can use `localStorage.debug = \"civil:*\" to enable logging\nconst debug = Debug(\"civil:main\");\n\nexport interface CivilOptions {\n  web3Provider?: Provider;\n  ContentProvider?: ContentProviderCreator;\n  debug?: true;\n}\n\n/**\n * Single entry-point to the civil.ts library\n * It abstracts most of the web3 and Ethereum communication.\n * Since all the calls to the Ethereum network take time, it is written using Promises,\n * and all of them can fail (for eg. when the connection to the node drops)\n */\nexport class Civil {\n  private ethApi: EthApi;\n  private contentProvider: ContentProvider;\n\n  /**\n   * An optional object, conforming to Web3 provider interface can be provided.\n   * If no provider is given, civil.ts shall try to automagically infer which provider to use.\n   * First by checking for any injected ones (such as Metamask) and in the last case defaulting\n   * to default http on localhost.\n   * @param web3Provider Explicitly provide an Ethereum Node connection provider\n   */\n  constructor(options?: CivilOptions) {\n    const opts: CivilOptions = { ...options };\n\n    if (opts.debug === true) {\n      Debug.enable(\"civil:*\");\n      debug('Enabled debug for \"civil:*\" namespace');\n    }\n\n    if (!opts.web3Provider) {\n      throw new Error(\"no web3Provider in options\");\n    }\n    const provider = opts.web3Provider;\n    this.ethApi = new EthApi(provider, Object.values<Artifact>(artifacts).map(a => a.abi));\n\n    const providerConstructor = opts.ContentProvider || FallbackProvider.build([IPFSProvider]);\n    this.contentProvider = new providerConstructor({ ethApi: this.ethApi });\n  }\n\n  public toBigNumber(num: number | string | BigNumber): any {\n    return this.ethApi.toBigNumber(num);\n  }\n  public toWei(num: number): BigNumber {\n    return this.ethApi.toWei(num);\n  }\n  public toChecksumAddress(address: string): any {\n    return this.ethApi.toChecksumAddress(address);\n  }\n\n  public async signMessage(message: string, account?: EthAddress): Promise<EthSignedMessage> {\n    return this.ethApi.signMessage(message, account);\n  }\n\n  public async currentProviderEnable(): Promise<boolean> {\n    if (this.ethApi.currentProvider && (this.ethApi.currentProvider as any).enable) {\n      try {\n        await (this.ethApi.currentProvider as any).enable();\n        return true;\n      } catch (e) {\n        return false;\n      }\n    } else {\n      return true;\n    }\n  }\n\n  /**\n   * @returns Currently default user account used, undefined if none unlocked/found\n   */\n  public get accountStream(): Observable<EthAddress | undefined> {\n    return this.ethApi.accountStream;\n  }\n\n  public get networkStream(): Observable<number> {\n    return this.ethApi.networkStream;\n  }\n\n  public get networkNameStream(): Observable<string> {\n    return this.ethApi.networkStream.map((item: number): string => networkNames[item] || \"unknown\");\n  }\n\n  /**\n   * Returns the current provider that is used by all things Civil in the Core\n   */\n  public get currentProvider(): Provider {\n    return this.ethApi.currentProvider;\n  }\n\n  /**\n   * Changes the web3 provider that is used by the Civil library.\n   * All existing smart-contract object will switch to the new library behind the scenes.\n   * This may invalidate any Ethereum calls in transit or event listening\n   * @param web3Provider The new provider that shall replace the old one\n   */\n  public set currentProvider(web3Provider: Provider) {\n    this.ethApi.currentProvider = web3Provider;\n  }\n\n  /**\n   * Create a new Newsroom owned by a multisig on the current Ethereum network with the\n   * bytecode included in this library\n   * The smart contract is trusted since it comes from a trusted source (us).\n   * This call may require user input - such as approving a transaction in Metamask\n   */\n  public async newsroomDeployTrusted(\n    newsroomName: string,\n    charterUri: string = \"\",\n    charterHash: string = \"\",\n  ): Promise<TwoStepEthTransaction<Newsroom>> {\n    return Newsroom.deployTrusted(this.ethApi, this.contentProvider, newsroomName, charterUri, charterHash);\n  }\n\n  public async estimateNewsroomDeployTrusted(\n    newsroomName: string,\n    charterUri: string,\n    charterHash: string,\n  ): Promise<number> {\n    return Newsroom.estimateDeployTrusted(this.ethApi, newsroomName, charterUri, charterHash);\n  }\n\n  /**\n   * Create a new Newsroom which is not owned by a multisig on the current Ethereum network with the\n   * bytecode included in this library\n   * The smart contract is trusted since it comes from a trusted source (us).\n   * This call may require user input - such as approving a transaction in Metamask\n   */\n  public async newsroomDeployNonMultisigTrusted(newsroomName: string): Promise<TwoStepEthTransaction<Newsroom>> {\n    return Newsroom.deployNonMultisigTrusted(this.ethApi, this.contentProvider, newsroomName);\n  }\n\n  /**\n   * Returns a Newsroom object, that was beforehand put into blockchain's mempool,\n   * or already mined into a block.\n   * If the Newsroom was already mined, returns it immediately, otherwise\n   * waits until it's put onto blockchain.\n   * @see {@link Civil.awaitReceipt}\n   * @param transactionHash The transaction hash which creates the Newsroom\n   * @param blockConfirmations How many blocks should be mined before the Newsroom is considered immutabely created\n   * @throws {CivilErrors.MalformedParams} If the transaction is not a Newsroom creation transaction\n   */\n  public async newsroomFromTxHashUntrusted(transactionHash: TxHash, blockConfirmations?: number): Promise<Newsroom> {\n    const receipt = await this.awaitReceipt(transactionHash, blockConfirmations);\n    if (!receipt.contractAddress) {\n      throw new Error(CivilErrors.MalformedParams);\n    }\n    return this.newsroomAtUntrusted(receipt.contractAddress);\n  }\n\n  /**\n   * Returns a Newsroom object, that was beforehand put into blockchain's mempool using the factory method,\n   * or already mined into a block.\n   * If the Newsroom was already mined, returns it immediately, otherwise\n   * waits until it's put onto blockchain.\n   * @see {@link Civil.awaitReceipt}\n   * @param transactionHash The transaction hash which creates the Newsroom\n   * @param blockConfirmations How many blocks should be mined before the Newsroom is considered immutabely created\n   */\n  public async newsroomFromFactoryTxHashUntrusted(\n    transactionHash: TxHash,\n    blockConfirmations?: number,\n  ): Promise<Newsroom> {\n    const receipt = await this.awaitReceipt(transactionHash, blockConfirmations);\n    return Newsroom.fromFactoryReceipt(receipt, this.ethApi, this.contentProvider);\n  }\n\n  /**\n   * Returns a Newsroom object, which is an abstraction layer to\n   * the smart-contract located a Ethereum on `address` in the current network.\n   * No sanity checks are done concerning that smart-contracts, and so the contract\n   * might a bad actor or not implementing Newsroom ABIs at all.\n   * @param address The address on current Ethereum network where the smart-contract is located\n   */\n  public async newsroomAtUntrusted(address: EthAddress): Promise<Newsroom> {\n    return Newsroom.atUntrusted(this.ethApi, this.contentProvider, address);\n  }\n\n  /**\n   * Only one TCR is needed for in each network, a singleton living at a specific\n   * Ethereum address, used by everyone.\n   * @returns A singleton instance of TCR living on the current network\n   * @throws {CivilErrors.UnsupportedNetwork} In case we're trying to get a non-deployed singleton\n   */\n  public async tcrSingletonTrusted(): Promise<CivilTCR> {\n    return CivilTCR.singleton(this.ethApi, this.contentProvider);\n  }\n\n  public async councilSingletonTrusted(): Promise<Council> {\n    return Council.singleton(this.ethApi);\n  }\n\n  public async cvlTokenSingletonTrusted(multisigAddress?: EthAddress): Promise<CVLToken> {\n    return CVLToken.singletonTrusted(this.ethApi, multisigAddress);\n  }\n\n  /**\n   * Same as `tcrSingletonTrusted` but is async and supports (but does not require) a multisig proxy. This is a separate function because most TCR instances don't need multisig and can continue to use synchronous `tcrSingletonTrusted` function.\n   * @param multisigAddress (optional) Multisig through which to proxy interactions with this TCR\n   * @returns Promise containing singleton instance of TCR living on the current network\n   * @throws {CivilErrors.UnsupportedNetwork} In case we're trying to get a non-deployed singleton\n   */\n  public async tcrSingletonTrustedMultisigSupport(multisigAddress?: EthAddress): Promise<CivilTCR> {\n    return CivilTCR.singletonMultisigProxy(this.ethApi, this.contentProvider, multisigAddress);\n  }\n\n  /**\n   * Waits for the transaction located through the hash gets into the blockchain\n   * and returns it's receipt after it gets in.\n   * Optionally, since Blockchain can reorganize sometimes and transactions are revoked,\n   * you can wait for some blocks, which exponentionally decreases reorg chances, until\n   * the transaction is considered confirmed.\n   * @param transactionHash The hash of transaction you wanna confirm got into blockchain\n   * @param blockConfirmations How man blocks after the block with transaction should wait before confirming\n   */\n  public async awaitReceipt(transactionHash: TxHash, blockConfirmations?: number): Promise<CivilTransactionReceipt> {\n    return this.ethApi.awaitReceipt<CivilTransactionReceipt>(transactionHash, blockConfirmations);\n  }\n\n  /**\n   * Stores content on a content provider (defaults to IPFS)\n   * @param content The the data that you want to store, in the future, probably a JSON\n   * @param options Options to be passed to the provider\n   * @returns StorageHeader with info about published content\n   */\n  public async publishContent(content: string, options?: object): Promise<StorageHeader> {\n    return this.contentProvider.put(content, options);\n  }\n\n  public async getContent(header: StorageHeader): Promise<ContentData | undefined> {\n    try {\n      const content = await this.contentProvider.get(header);\n      return content;\n    } catch (e) {\n      debug(`Resolving Content failed for EthContentHeader: ${header}`, e);\n      return;\n    }\n  }\n\n  public async getBareContent(uri: string): Promise<ContentData | undefined> {\n    try {\n      const content = await this.contentProvider.get({\n        uri,\n        contentHash: \"\",\n      });\n      return content;\n    } catch (e) {\n      debug(`Resolving Content failed for uri: ${uri}`, e);\n      return;\n    }\n  }\n\n  public async currentBlock(): Promise<number> {\n    return this.ethApi.getLatestBlockNumber();\n  }\n\n  public async networkName(): Promise<string> {\n    return networkNames[await currentNetwork(this.ethApi)] || \"unknown network\";\n  }\n\n  public async getGasPrice(): Promise<BigNumber> {\n    return this.ethApi.getGasPrice();\n  }\n\n  public async accountBalance(account: EthAddress): Promise<number> {\n    return this.ethApi.accountBalace(account);\n  }\n\n  public async simplePayment(recipient: EthAddress, amountInETH: string): Promise<TwoStepEthTransaction> {\n    const wei = parseEther(amountInETH);\n    const account = await requireAccount(this.ethApi).toPromise();\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.ethApi.sendTransaction({ from: account, to: recipient, value: wei.toString(), gas: 26000 }),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/core/src/content/contentprovider.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { ContentData, StorageHeader } from \"@joincivil/typescript-types\";\n\nexport interface ContentProvider {\n  scheme(): string;\n  get(what: StorageHeader): Promise<ContentData>;\n  put(content: ContentData, variables?: object): Promise<StorageHeader>;\n}\n\nexport interface ContentProviderOptions {\n  ethApi: EthApi;\n}\n\nexport type ContentProviderCreator = new (options: ContentProviderOptions) => ContentProvider;\n"
  },
  {
    "path": "packages/core/src/content/eventstorageprovider.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { CivilErrors, getDefaultFromBlock } from \"@joincivil/utils\";\nimport { EventStorage, EventStorageContract } from \"../contracts/generated/wrappers/event_storage\";\nimport { findEventOrThrow } from \"../contracts/utils/contracts\";\nimport { ContentData, StorageHeader } from \"@joincivil/typescript-types\";\nimport { ContentProvider, ContentProviderOptions } from \"./contentprovider\";\n\nexport class EventStorageProvider implements ContentProvider {\n  private ethApi: EthApi;\n  private instance?: EventStorageContract;\n\n  constructor(options: ContentProviderOptions) {\n    this.ethApi = options.ethApi;\n  }\n\n  public scheme(): string {\n    return \"eventstorage\";\n  }\n\n  public async get(what: StorageHeader): Promise<ContentData> {\n    // TODO(ritave): If the hash doesn't exist, this will never finish\n    //               Add web3.filter.get to abi-gen, not only watch\n    return (await this.eventStorage())\n      .StringStoredStream(\n        { dataHash: what.contentHash },\n        { fromBlock: getDefaultFromBlock(await this.ethApi.network()) },\n      )\n      .first() // Closes the stream on first event\n      .map(event => event.returnValues.data)\n      .toPromise();\n  }\n\n  public async put(content: string): Promise<StorageHeader> {\n    const txHash = await (await this.eventStorage()).store.sendTransactionAsync(content);\n    const receipt = await this.ethApi.awaitReceipt(txHash);\n    const event = findEventOrThrow<EventStorage.Logs.StringStored>(receipt, EventStorage.Events.StringStored);\n\n    const uri = this.scheme() + \"://\" + event.returnValues.dataHash;\n    return { uri, contentHash: event.returnValues.dataHash };\n  }\n\n  private async eventStorage(): Promise<EventStorageContract> {\n    if (!this.instance) {\n      this.instance = await EventStorageContract.singletonTrusted(this.ethApi);\n      if (!this.instance) {\n        throw new Error(CivilErrors.UnsupportedNetwork);\n      }\n    }\n    return this.instance;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/content/fallbackprovider.ts",
    "content": "import * as Debug from \"debug\";\n\nimport { ContentProvider, ContentProviderOptions, ContentProviderCreator } from \"./contentprovider\";\nimport { StorageHeader, ContentData } from \"@joincivil/typescript-types\";\n\nconst debug = Debug(\"civil:fallbackprovider\");\n\nexport class FallbackProvider implements ContentProvider {\n  public static build(providers: ContentProviderCreator[]): ContentProviderCreator {\n    return FallbackProvider.bind(null, providers);\n  }\n\n  private providers: ContentProvider[];\n\n  public constructor(providers: ContentProviderCreator[], options: ContentProviderOptions) {\n    this.providers = providers.map(creator => new creator(options));\n  }\n\n  public scheme(): string {\n    throw new Error(\"Method not supported.\");\n  }\n\n  public async get(what: StorageHeader): Promise<ContentData> {\n    for (const provider of this.providers) {\n      try {\n        return await provider.get(what);\n      } catch (e) {\n        debug(`Provider ${provider.scheme()} failed, trying next`, e);\n      }\n    }\n    throw new Error(\"All providers in FallbackProvider failed to find content\");\n  }\n\n  public async put(content: string | object, variables?: object | undefined): Promise<StorageHeader> {\n    const headers = await Promise.all(this.providers.map(async provider => provider.put(content, variables)));\n    return headers[0];\n  }\n}\n"
  },
  {
    "path": "packages/core/src/content/index.ts",
    "content": "// TODO(ritave): Split provider architecture into seperate packages / into @joincivil/utils\nexport { EventStorageProvider } from \"./eventstorageprovider\";\nexport { InMemoryProvider } from \"./inmemoryprovider\";\nexport { IPFSProvider } from \"./ipfsprovider\";\nexport { FallbackProvider } from \"./fallbackprovider\";\n"
  },
  {
    "path": "packages/core/src/content/inmemoryprovider.ts",
    "content": "import { hashContent } from \"@joincivil/utils\";\n\nimport { MapObject, StorageHeader } from \"@joincivil/typescript-types\";\nimport { ContentProvider } from \"./contentprovider\";\n\nexport class InMemoryProvider implements ContentProvider {\n  private data: MapObject<string> = {};\n\n  public scheme(): string {\n    return \"memory\";\n  }\n\n  public async get(what: StorageHeader): Promise<string> {\n    const uri = what.uri;\n    if (this.data.uri === undefined) {\n      throw new Error(\"No such URI (\" + uri + \") found in InMemoryProvider\");\n    }\n    return this.data[uri];\n  }\n\n  public async put(content: string): Promise<StorageHeader> {\n    const contentHash = hashContent(content);\n    const uri = this.scheme() + \"://\" + contentHash;\n    this.data[uri] = content;\n    return { uri, contentHash };\n  }\n}\n"
  },
  {
    "path": "packages/core/src/content/ipfsprovider.ts",
    "content": "import { StorageHeader } from \"@joincivil/typescript-types\";\nimport { ContentProvider } from \"./contentprovider\";\n// tslint:disable-next-line\nimport * as IPFS from \"ipfs-http-client\";\nimport { hashContent, promisify } from \"@joincivil/utils\";\n\nconst ipfs = new IPFS({ host: \"ipfs.infura.io\", port: 5001, protocol: \"https\" });\n\nconst ipfsAsync = {\n  get: promisify<[{ path: string; content: Buffer }]>(ipfs.get),\n  add: promisify<[{ path: string; hash: string; size: number }]>(ipfs.add),\n  pin: promisify<[{ hash: string }]>(ipfs.pin.add),\n};\n\nexport interface IpfsStorageHeader extends StorageHeader {\n  ipfsHash: string;\n}\n\nexport class IPFSProvider implements ContentProvider {\n  public scheme(): string {\n    return \"ipfs\";\n  }\n\n  public async get(what: StorageHeader): Promise<string> {\n    let uri = what.uri;\n    uri = uri.replace(\"ipfs://\", \"/ipfs/\");\n    return (await ipfsAsync.get(uri)).reduce((acc, file) => acc + file.content.toString(\"utf8\"), \"\");\n  }\n\n  public async put(content: string, options?: { hash: string }): Promise<IpfsStorageHeader> {\n    const files = await ipfsAsync.add(Buffer.from(content), options);\n    await ipfsAsync.pin(files[0].hash);\n    return {\n      uri: this.scheme() + \"://\" + files[0].path,\n      ipfsHash: files[0].hash,\n      contentHash: hashContent(content),\n    };\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/basecontract.ts",
    "content": "import { Contract as IContract } from \"./interfaces/contract\";\n\nimport { Contract } from \"web3-eth-contract\";\nimport { TransactionConfig as SendOptions } from \"web3-core\";\nimport { EthApi } from \"@joincivil/ethapi\";\n\nexport interface ContractConfiguration {\n  estimationMultiplier: number;\n  txDefaults: Partial<SendOptions>;\n}\n\nconst DEFAULT_CONFIG: ContractConfiguration = {\n  estimationMultiplier: 1.5,\n  txDefaults: {},\n};\n\nexport class BaseContract implements IContract {\n  protected configuration: ContractConfiguration;\n  protected instance: Contract;\n  protected ethApi: EthApi;\n\n  constructor(instance: Contract, ethApi: EthApi, config: Partial<ContractConfiguration> = {}) {\n    this.instance = instance;\n    this.configuration = {\n      ...DEFAULT_CONFIG,\n      ...config,\n    };\n    this.ethApi = ethApi;\n  }\n\n  public get address(): string {\n    return this.instance.options.address;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/basewrapper.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { BaseContract } from \"./basecontract\";\n\nexport class BaseWrapper<InstanceType extends BaseContract> {\n  protected instance: InstanceType;\n  protected ethApi: EthApi;\n  protected defaultBlock: number;\n\n  constructor(ethApi: EthApi, instance: InstanceType, defaultBlock: number) {\n    this.instance = instance;\n    this.ethApi = ethApi;\n    this.defaultBlock = defaultBlock;\n  }\n\n  /**\n   * @returns An addess of the wrapped smart-contract\n   */\n  public get address(): EthAddress {\n    return this.instance.address;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/interfaces/contract.ts",
    "content": "import { EthAddress } from \"../../types\";\n\nexport interface Contract {\n  readonly address: EthAddress;\n}\n"
  },
  {
    "path": "packages/core/src/contracts/interfaces/ownable.ts",
    "content": "import { EthAddress } from \"../../types\";\nimport { Contract } from \"./contract\";\n\nexport interface OwnableContract extends Contract {\n  owner: { callAsync(): Promise<EthAddress> };\n}\n"
  },
  {
    "path": "packages/core/src/contracts/multisig/basemultisigproxy.ts",
    "content": "import { isDefined, isDeployedBytecodeEqual } from \"@joincivil/utils\";\nimport { TwoStepEthTransaction } from \"../../types\";\nimport { BigNumber, EthAddress, TxHash } from \"@joincivil/typescript-types\";\n\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { artifacts } from \"../generated/artifacts\";\nimport { MultiSigWallet } from \"../generated/wrappers/multi_sig_wallet\";\nimport { Contract } from \"../interfaces/contract\";\nimport { createTwoStepSimple, isDecodedLog, isOwnableContract } from \"../utils/contracts\";\nimport { Multisig } from \"./multisig\";\n\n/**\n * Proxies functionionality to a contract instance via multisig wallet. Also supports instantiation *without* multisig proxy, in which case calls are passed directly to the contract. If the wrapped contract has an `owner` property, it will be checked to see if the owner is a multisig wallet.\n */\nexport class BaseMultisigProxy {\n  protected ethApi: EthApi;\n  protected multisig?: Multisig;\n  // TODO(ritave): Add support for lowercase newsroom contract in abi-gen\n  protected instance: Contract;\n\n  protected constructor(ethApi: EthApi, instance: Contract) {\n    this.ethApi = ethApi;\n    this.instance = instance;\n  }\n\n  public get multisigEnabled(): boolean {\n    return isDefined(this.multisig);\n  }\n\n  public requireMultisig(): Multisig {\n    if (!this.multisig) {\n      throw new Error(\"Unexpected state happened, multisig not found but required\");\n    }\n    return this.multisig;\n  }\n\n  public async owners(): Promise<EthAddress[]> {\n    if (isDefined(this.multisig)) {\n      return this.multisig.owners();\n    } else if (isOwnableContract(this.instance) && this.instance.owner) {\n      return [await this.instance.owner.callAsync()];\n    } else {\n      return [];\n    }\n  }\n\n  public async isOwner(address: EthAddress): Promise<boolean> {\n    if (isDefined(this.multisig)) {\n      return this.multisig.isOwner(address);\n    } else if (isOwnableContract(this.instance) && this.instance.owner) {\n      return address === (await this.instance.owner.callAsync());\n    } else {\n      return false;\n    }\n  }\n\n  public async getMultisigAddress(): Promise<EthAddress | undefined> {\n    if (isDefined(this.multisig)) {\n      return this.multisig.address;\n    }\n    return undefined;\n  }\n\n  public async isAddressMultisigWallet(address: EthAddress): Promise<boolean> {\n    const code = await this.ethApi.getCode(address);\n    // TODO(ritave): Have backwards compatibillity for older Multisig wallets and bytecodes\n    return isDeployedBytecodeEqual(artifacts.MultiSigWallet.deployedBytecode, code);\n  }\n\n  /**\n   * Instantiate `this.multisig` if appropriate.\n   * @param multisigAddress (optional) If supplied, instantiate multisig from that, otherwise instance contract will be checked for multisig owner, and if none found, `this.multisig` remains undefined\n   */\n  protected async resolveMultisig(multisigAddress?: EthAddress): Promise<void> {\n    if (multisigAddress) {\n      if (!(await this.isAddressMultisigWallet(multisigAddress))) {\n        throw new Error(\"Expected multisig at address \" + multisigAddress + \" but none found\");\n      }\n      this.multisig = Multisig.atUntrusted(this.ethApi, multisigAddress);\n    } else if (isOwnableContract(this.instance) && this.instance.owner) {\n      const ownerAddress = await this.instance.owner.callAsync();\n      if (await this.isAddressMultisigWallet(ownerAddress)) {\n        this.multisig = Multisig.atUntrusted(this.ethApi, ownerAddress);\n      }\n    }\n  }\n\n  protected createProxyTransaction(txHash: TxHash): MultisigProxyTransaction {\n    const twoStep = createTwoStepSimple(this.ethApi, txHash);\n    return {\n      ...twoStep,\n      isProxied: true,\n      proxiedId: async () => {\n        const receipt = await twoStep.awaitReceipt();\n        const submissionLogs = receipt.logs\n          .filter(log => isDecodedLog(log) && log.event === MultiSigWallet.Events.Submission)\n          .map(log => log as MultiSigWallet.Logs.Submission);\n        if (submissionLogs.length !== 1) {\n          throw new Error(\"Too many Submission events than expected in multisig\");\n        }\n        const idFromReceipt = (submissionLogs[0].returnValues || submissionLogs[0].args).transactionId;\n        let id: number;\n        try {\n          id = new BigNumber(idFromReceipt).toNumber();\n        } catch (err) {\n          // @TODO We used to get transaction ID from `submissionLogs[0].returnValues.transactionId` and convert it to number and return. Since web3 update, `returnValues` doesn't exist, but there is `args.transactionId`, but it's too big a number to be converted into a number. Not sure how this return value is being used or if it'll be an issue to leave it as a string, but just leaving it for now to get multisig transactions to work. Also an issue in `core/src/contracts/multisig/multisig.ts`.\n          console.warn(\n            \"Failed to convert receipt log event transaction ID into number to create MultisigTransaction to return in receipt. Error:\",\n            err,\n            \"Log event:\",\n            submissionLogs[0],\n          );\n          id = idFromReceipt as any; // it's a string with a very long number\n        }\n        return id;\n      },\n    };\n  }\n}\n\nexport interface MultisigProxyTransaction extends TwoStepEthTransaction {\n  readonly isProxied?: true;\n  proxiedId?(): Promise<number>;\n}\n"
  },
  {
    "path": "packages/core/src/contracts/multisig/multisig.ts",
    "content": "import { EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport { CivilErrors } from \"@joincivil/utils\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { Observable } from \"rxjs\";\nimport { EthAddress, TwoStepEthTransaction } from \"../../types\";\nimport { BaseWrapper } from \"../basewrapper\";\nimport { MultiSigWallet, MultiSigWalletContract } from \"../generated/wrappers/multi_sig_wallet\";\nimport { createTwoStepSimple, createTwoStepTransaction, isDecodedLog } from \"../utils/contracts\";\nimport { MultisigTransaction } from \"./multisigtransaction\";\nimport { TransactionConfig } from \"web3-core\";\nimport { ethers } from \"ethers\";\n\nexport class Multisig extends BaseWrapper<MultiSigWalletContract> {\n  public static atUntrusted(ethApi: EthApi, address: EthAddress): Multisig {\n    const instance = MultiSigWalletContract.atUntrusted(ethApi, address);\n    return new Multisig(ethApi, instance, 0);\n  }\n\n  public static async deployTrusted(\n    ethApi: EthApi,\n    owners: EthAddress[],\n    required: number,\n  ): Promise<TwoStepEthTransaction<Multisig>> {\n    return createTwoStepTransaction(\n      ethApi,\n      await MultiSigWalletContract.deployTrusted.sendTransactionAsync(ethApi, owners, ethApi.toBigNumber(required), {\n        from: \"\",\n      }),\n      receipt => new Multisig(ethApi, MultiSigWalletContract.atUntrusted(ethApi, receipt.contractAddress!), 0),\n    );\n  }\n\n  private constructor(ethApi: EthApi, instance: MultiSigWalletContract, defaultBlock: number) {\n    super(ethApi, instance, defaultBlock);\n  }\n\n  /**\n   * A list of current owners that can submit, confirm and execute transactions\n   * in this wallet\n   */\n  public async owners(): Promise<EthAddress[]> {\n    return this.instance.getOwners.callAsync();\n  }\n\n  /**\n   * Returns whether the provided address is one of the owners of the Wallet\n   * @param address If null, checks your account, othwerise checks the provided address\n   */\n  public async isOwner(address?: EthAddress): Promise<boolean> {\n    const who = address || (await requireAccount(this.ethApi).toPromise());\n    return this.instance.isOwner.callAsync(who);\n  }\n\n  /**\n   * How many owners need to confirm a submited transaction before it's allowed to be executed\n   */\n  public async required(): Promise<number> {\n    return new BigNumber(await this.instance.required.callAsync()).toNumber();\n  }\n\n  /**\n   * Adds an additional owner to the Wallet\n   * This transaction can be only done by the wallet itself - this means it's multistep.\n   * First a current owner submits a new transaction to the wallet, not actually adding owner.\n   * When that transaction is executed by the required number of owners, then the new owner is added\n   * @param owner New owner in the Wallet\n   */\n  public async addOwner(owner: EthAddress): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    await this.requireOwner();\n\n    const options = await this.instance.addOwner.getRaw(owner, { gas: 0 });\n    return this.submitTransaction(this.address, this.ethApi.toBigNumber(0), options.data!);\n  }\n\n  public async estimateAddOwner(owner: EthAddress): Promise<number> {\n    await this.requireOwner();\n    const options = await this.instance.addOwner.getRaw(owner, { gas: 0 });\n    return this.estimateTransaction(this.address, this.ethApi.toBigNumber(0), options.data!);\n  }\n\n  /**\n   * Removes an owner from the Wallet\n   * This transaction can be only done by the wallet itself - this means it's multistep.\n   * First a current owner submits a new transaction to the wallet, not actually removing owner.\n   * When that transaciton is executed by the required number of owners, then the owner is removed.\n   *\n   * Additionally, there can't be less owners then the number of required confirmations of the transaction\n   *\n   * @param owner New owner in the Wallet\n   */\n  public async removeOwner(owner: EthAddress): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    await this.requireOwner();\n\n    const options = await this.instance.removeOwner.getRaw(owner, { gas: 0 });\n    return this.submitTransaction(this.address, this.ethApi.toBigNumber(0), options.data!);\n  }\n\n  /**\n   * Swaps some existing owner in the Wallet for a new address\n   * This transaction can be only done by the wallet itself - this means it's multistep.\n   * First a current owner submits a new transaction to the wallet, not actually swapping.\n   * When that transaction is executed by the required number of owners, then the owners are swapped.\n   *\n   * This can be used to minimize the amount of transactions, or to ensure proper balacne of power during exchange\n   *\n   * @param owner New owner in the Wallet\n   */\n  public async replaceOwner(\n    oldOwner: EthAddress,\n    newOwner: EthAddress,\n  ): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    await this.requireOwner();\n\n    const options = await this.instance.replaceOwner.getRaw(oldOwner, newOwner, { gas: 0 });\n    return this.submitTransaction(this.address, this.ethApi.toBigNumber(0), options.data!);\n  }\n\n  /**\n   * Sends money from the current active account to the multisig wallet\n   * @param ethers How many ethers to send\n   */\n  public async transferEther(ether: BigNumber): Promise<TwoStepEthTransaction> {\n    const wei = ethers.utils.parseEther(ether.toString());\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.ethApi.sendTransaction({ to: this.address, value: wei.toString() }),\n    );\n  }\n\n  /**\n   * Changes how many confirmations the transaction needs to have before it can be executed\n   * This transaction can be only done by the wallet itself - this means it's multistep.\n   * First a current owner submits a new transaction to the wallet, not actually changing.\n   * When that transaction is executed by the required number of owners, then the requirement is changed.\n   *\n   * Additionally, the required number of confirmations can't be higher than number of owners\n   *\n   * @param newRequired New required number of confirmations\n   */\n  public async changeRequirement(newRequired: number): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    await this.requireOwner();\n\n    const options = await this.instance.changeRequirement.getRaw(this.ethApi.toBigNumber(newRequired), { gas: 0 });\n    return this.submitTransaction(this.address, this.ethApi.toBigNumber(0), options.data!);\n  }\n\n  /**\n   * Low-level call\n   * Requests that a transaction is sent from this Multisignature wallet.\n   * If the amount of required owners is 1, it is executed immediately.\n   * Otherwise it's put in the list of awaiting transactions.\n   * The required number of owners need to confirm that they approve this transaction.\n   * With the last transaction, it is sent out to the world.\n   * @param address Who is the receipent of this transaction\n   * @param weiToSend How much value to you want to send through this transaction\n   * @param payload What bytes do you want to send along as the payload\n   */\n  public async submitTransaction(\n    address: EthAddress,\n    weiToSend: BigNumber,\n    payload: string,\n  ): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    return createTwoStepTransaction(\n      this.ethApi,\n      await this.instance.submitTransaction.sendTransactionAsync(address, weiToSend.toString(), payload),\n      async receipt => {\n        const event = receipt.logs.filter(isDecodedLog).find(log => log.event === MultiSigWallet.Events.Submission);\n        if (!event) {\n          throw new Error(\"No Submisison event found when adding transaction to Multisig\");\n        }\n\n        const idFromReceipt = ((event.returnValues || event.args) as MultiSigWallet.Args.Submission).transactionId;\n        let id: number;\n        try {\n          id = new BigNumber(idFromReceipt).toNumber();\n        } catch (err) {\n          // @TODO We used to get transaction ID from `event.returnValues.transactionId` and convert it to number and pass into `this.transaction`. Since web3 update, `event.returnValues` doesn't exist, but there is `event.args.transactionId`, but it's too big a number to be converted into a number. Not sure how this return value is being used or if it'll be an issue to leave it as a string, but just leaving it for now to get newsroom withdraw to work. Also an issue in `core/src/contracts/multisig/basemultisigproxy.ts`.\n          console.warn(\n            \"Failed to convert receipt log event transaction ID into number to create MultisigTransaction to return in receipt. Error:\",\n            err,\n            \"Log event:\",\n            event,\n          );\n          id = idFromReceipt as any;\n        }\n        return this.transaction(id);\n      },\n    );\n  }\n\n  public async confirmTransaction(txId: number): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    return createTwoStepTransaction(\n      this.ethApi,\n      await this.instance.confirmTransaction.sendTransactionAsync(this.ethApi.toBigNumber(txId)),\n      async receipt => {\n        const event = receipt.logs.filter(isDecodedLog).find(log => log.event === MultiSigWallet.Events.Confirmation);\n        if (!event) {\n          throw new Error(\"No Confirmation event found when confirming transaction to Multisig\");\n        }\n        return this.transaction(\n          new BigNumber((event.returnValues as MultiSigWallet.Args.Confirmation).transactionId).toNumber(),\n        );\n      },\n    );\n  }\n\n  public async estimateTransaction(address: EthAddress, weiToSend: BigNumber, payload: string): Promise<number> {\n    return this.instance.submitTransaction.estimateGasAsync(address, weiToSend.toString(), payload, {});\n  }\n\n  public async getRawTransaction(\n    address: EthAddress,\n    weiToSend: BigNumber,\n    payload: string,\n  ): Promise<TransactionConfig> {\n    return this.instance.submitTransaction.getRaw(address, weiToSend.toString(), payload, { gas: 0 });\n  }\n\n  /**\n   * Counts how many transactions, with those specific criteria set by filters are in this multisig\n   * @param filters Change which transactions are counted.\n   */\n  public async transactionCount(filters: TransactionFilters = { pending: true }): Promise<number> {\n    return parseInt(\n      await this.instance.getTransactionCount.callAsync(filters.pending || false, filters.executed || false),\n      10,\n    );\n  }\n\n  // TODO(ritave): Support pagination\n  /**\n   * Returns a finite stream of transactions according to the filters.\n   * This call takes quite a long time due to network communication, and thus\n   * is a RXJS stream. The transactions will show up in the subscription as they come, in the increasing\n   * order of ids, starting from id 0.\n   * @param filters What kind of transactions to return\n   */\n  public transactions(filters: TransactionFilters = { pending: true }): Observable<MultisigTransaction> {\n    // Notice that we're using transactionCount smart-contract variable, not getTransactonCount func\n    return Observable.fromPromise(\n      this.instance.getTransactionCount.callAsync(filters.pending || false, filters.executed || false),\n    )\n      .concatMap(async numTransactions =>\n        this.instance.getTransactionIds.callAsync(\n          this.ethApi.toBigNumber(0).toString(),\n          this.ethApi.toBigNumber(numTransactions).toString(),\n          filters.pending || false,\n          filters.executed || false,\n        ),\n      )\n      .concatMap(ids => Observable.from(ids))\n      .concatMap(async id => {\n        const bn = new BigNumber(id);\n        return this.transaction(bn.toNumber());\n      });\n  }\n\n  /**\n   * Returns a singular transaction\n   * @param id Id the of the wanted transaction\n   */\n  public async transaction(id: number): Promise<MultisigTransaction> {\n    return MultisigTransaction.fromId(this.ethApi, this.instance, id);\n  }\n\n  private async requireOwner(who?: EthAddress): Promise<void> {\n    const owner = who || (await requireAccount(this.ethApi).toPromise());\n    if (!(await this.isOwner(owner))) {\n      throw new Error(CivilErrors.NoPrivileges);\n    }\n  }\n}\n\nexport interface TransactionFilters {\n  pending?: boolean;\n  executed?: boolean;\n}\n"
  },
  {
    "path": "packages/core/src/contracts/multisig/multisigtransaction.ts",
    "content": "import { BigNumber } from \"@joincivil/typescript-types\";\n\nimport { EthAddress, TwoStepEthTransaction } from \"../../types\";\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { MultiSigWalletContract } from \"../generated/wrappers/multi_sig_wallet\";\nimport { createTwoStepTransaction } from \"../utils/contracts\";\n\n// TODO(ritave): Move to ABI v2 to get support for structs\nexport class MultisigTransaction {\n  public static async fromId(\n    ethApi: EthApi,\n    instance: MultiSigWalletContract,\n    id: number,\n  ): Promise<MultisigTransaction> {\n    const data = await instance.transactions.callAsync(ethApi.toBigNumber(id).toString());\n\n    return new MultisigTransaction(ethApi, instance, id, {\n      destination: data[0],\n      value: new BigNumber(data[1]),\n      data: data[2],\n      executed: data[3],\n    });\n  }\n\n  public readonly id: number;\n  public readonly information: Readonly<MultisigTransactionStruct>;\n\n  private readonly ethApi: EthApi;\n  private readonly instance: MultiSigWalletContract;\n\n  private constructor(\n    ethApi: EthApi,\n    instance: MultiSigWalletContract,\n    id: number,\n    transactionData: MultisigTransactionStruct,\n  ) {\n    this.ethApi = ethApi;\n    this.instance = instance;\n\n    this.id = id;\n    this.information = transactionData;\n  }\n\n  /**\n   * Returns whether this transaction can be executed:\n   *  - Wasn't executed beforehand\n   *  - Has enough confirmations\n   */\n  public async canBeExecuted(): Promise<boolean> {\n    return !this.information.executed && this.instance.isConfirmed.callAsync(this.ethApi.toBigNumber(this.id));\n  }\n\n  /**\n   * Returns how many confirmations this Transaction needs to be executed\n   * This is a sugar function, which is the same as the one in the main Multisig wrapper\n   */\n  public async requiredConfirmations(): Promise<number> {\n    return new BigNumber(await this.instance.required.callAsync()).toNumber();\n  }\n\n  /**\n   * How many owners (and who) have confirmed this transaction\n   */\n  public async confirmations(): Promise<EthAddress[]> {\n    return this.instance.getConfirmations.callAsync(this.ethApi.toBigNumber(this.id));\n  }\n\n  /**\n   * Execute a transaction.\n   * Most of the time, the transaction is executed during confirmation or submition.\n   * This call is mostly useful when you change owners or requirements\n   * and then need to execute transactions\n   * @returns This transaction with the updated state\n   */\n  public async execute(): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    return createTwoStepTransaction(\n      this.ethApi,\n      await this.instance.executeTransaction.sendTransactionAsync(this.ethApi.toBigNumber(this.id)),\n      async receipt => MultisigTransaction.fromId(this.ethApi, this.instance, this.id),\n    );\n  }\n\n  /**\n   * Confirms that you as an owner want to send this transaction\n   * If after this confirmation, the requirements are met, the transaction is additionally executed\n   * @returns This transaction with the updated state\n   */\n  public async confirmTransaction(): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    return createTwoStepTransaction(\n      this.ethApi,\n      await this.instance.confirmTransaction.sendTransactionAsync(this.ethApi.toBigNumber(this.id)),\n      receipt => this,\n    );\n  }\n  /**\n   * Revokes your confirmation before the transaction is executed.\n   * @returns This transaciton with the updated state\n   */\n  public async revokeConfirmation(): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    return createTwoStepTransaction(\n      this.ethApi,\n      await this.instance.revokeConfirmation.sendTransactionAsync(this.ethApi.toBigNumber(this.id)),\n      receipt => this,\n    );\n  }\n}\n\nexport interface MultisigTransactionStruct {\n  destination: EthAddress;\n  value: BigNumber;\n  data: string;\n  executed: boolean;\n}\n"
  },
  {
    "path": "packages/core/src/contracts/newsroom.ts",
    "content": "import { currentAccount, EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport {\n  CivilErrors,\n  estimateRawHex,\n  getDefaultFromBlock,\n  hashContent,\n  hashPersonalMessage,\n  is0x0Address,\n  is0x0Hash,\n  prepareNewsroomMessage,\n  prepareUserFriendlyNewsroomMessage,\n  promisify,\n  recoverSigner,\n  NewsroomRoles,\n} from \"@joincivil/utils\";\nimport * as Debug from \"debug\";\nimport { addHexPrefix, bufferToHex, setLengthLeft, toBuffer } from \"ethereumjs-util\";\nimport { Observable } from \"rxjs\";\nimport { TransactionReceipt, TransactionConfig, TransactionConfig as SendOptions, Transaction } from \"web3-core\";\nimport * as zlib from \"zlib\";\nimport { ContentProvider } from \"../content/contentprovider\";\nimport {\n  BigNumber,\n  parseEther,\n  ApprovedRevision,\n  CharterContent,\n  ContentId,\n  EthAddress,\n  EthContentHeader,\n  Hex,\n  NewsroomContent,\n  NewsroomData,\n  NewsroomWrapper,\n  RevisionId,\n  StorageHeader,\n  TxHash,\n  Uri,\n} from \"@joincivil/typescript-types\";\nimport { CivilTransactionReceipt, TwoStepEthTransaction } from \"../types\";\nimport { BaseWrapper } from \"./basewrapper\";\nimport { NewsroomMultisigProxy } from \"./generated/multisig/newsroom\";\nimport { MultiSigWallet as MultisigEvents } from \"./generated/wrappers/multi_sig_wallet\";\nimport { Newsroom as Events, NewsroomContract } from \"./generated/wrappers/newsroom\";\nimport { NewsroomFactory, NewsroomFactoryContract } from \"./generated/wrappers/newsroom_factory\";\nimport { CreateNewsroomInGroupContract } from \"./generated/wrappers/create_newsroom_in_group\";\nimport { MultisigProxyTransaction } from \"./multisig/basemultisigproxy\";\nimport { Multisig } from \"./multisig/multisig\";\nimport { MultisigTransaction } from \"./multisig/multisigtransaction\";\nimport {\n  createTwoStepSimple,\n  createTwoStepTransaction,\n  findEvent,\n  findEventOrThrow,\n  findEvents,\n} from \"./utils/contracts\";\n\nconst deflate = promisify<Buffer>(zlib.deflate);\n\nconst debug = Debug(\"civil:newsroom\");\n\nconst findContentId = (receipt: CivilTransactionReceipt) =>\n  new BigNumber(\n    findEventOrThrow<Events.Logs.ContentPublished>(receipt, Events.Events.ContentPublished).returnValues.contentId,\n  ).toNumber();\n\nconst findRevisionId = (receipt: CivilTransactionReceipt) =>\n  new BigNumber(\n    findEventOrThrow<Events.Logs.RevisionUpdated>(receipt, Events.Events.RevisionUpdated).returnValues.revisionId,\n  ).toNumber();\n\n/**\n * A Newsroom can be thought of an organizational unit with a sole goal of providing content\n * in an organized way.\n *\n * Newsroom is controlled by access-control pattern, with multiple roles (see [[NewsroomRoles]]) that allow governing\n * what get's published and what isn't.\n *\n * All of the logic exists on the Ethereum network, with the data of articles living outside.\n * The smart-contracts doesn't limit _where_ the articles lives, as it accepts an URI with a schema.\n * And so articles can live in IPFS, Filecoin, Whisper, or just a simple HTTP server.\n * Right now the only supported systems are HTTP and [[InMemoryProvider]] for debugging purpouses\n */\nexport class Newsroom extends BaseWrapper<NewsroomContract> {\n  //#region constructors\n  public static async deployTrusted(\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n    newsroomName: string,\n    charterUri: Uri = \"\",\n    charterHash: Hex = \"\",\n  ): Promise<TwoStepEthTransaction<Newsroom>> {\n    if ((charterUri.length === 0) !== (charterHash.length === 0)) {\n      throw new Error(\"Both charter URI and Hash need to be set, or both empty\");\n    }\n    const account = await requireAccount(ethApi).toPromise();\n    const txData: any = { from: account };\n\n    const factory = await CreateNewsroomInGroupContract.singletonTrusted(ethApi);\n    if (!factory) {\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    return createTwoStepTransaction(\n      ethApi,\n      await factory.create.sendTransactionAsync(\n        newsroomName,\n        charterUri,\n        charterHash,\n        [account],\n        ethApi.toBigNumber(1),\n        txData,\n      ),\n      async factoryReceipt => {\n        return Newsroom.fromFactoryReceipt(factoryReceipt, ethApi, contentProvider);\n      },\n    );\n  }\n\n  public static async fromFactoryReceipt(\n    factoryReceipt: TransactionReceipt,\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n  ): Promise<Newsroom> {\n    const factory = await CreateNewsroomInGroupContract.singletonTrusted(ethApi);\n    const newsroomFactory = await NewsroomFactoryContract.singletonTrusted(ethApi);\n    if (!factory) {\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const createdNewsroom = findEvents<NewsroomFactory.Logs.ContractInstantiation>(\n      factoryReceipt,\n      NewsroomFactory.Events.ContractInstantiation,\n    ).find(log => log.address === newsroomFactory!.address);\n\n    if (!createdNewsroom) {\n      throw new Error(\"No Newsroom created during deployment through factory\");\n    }\n\n    const contract = NewsroomContract.atUntrusted(ethApi, createdNewsroom.args.instantiation);\n    const multisigProxy = await NewsroomMultisigProxy.create(ethApi, contract);\n    const defaultBlock = getDefaultFromBlock(await ethApi.network());\n    return new Newsroom(ethApi, contentProvider, contract, multisigProxy, defaultBlock);\n  }\n\n  public static async estimateDeployTrusted(\n    ethApi: EthApi,\n    newsroomName: string,\n    charterUri: string = \"\",\n    charterHash: string = \"\",\n  ): Promise<number> {\n    const account = await requireAccount(ethApi).toPromise();\n    const txData: TransactionConfig = { from: account };\n    const factory = await CreateNewsroomInGroupContract.singletonTrusted(ethApi);\n    if (!factory) {\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    return factory.create.estimateGasAsync(\n      newsroomName,\n      charterUri,\n      charterHash,\n      [account],\n      ethApi.toBigNumber(1),\n      txData,\n    );\n  }\n\n  public static async deployNonMultisigTrusted(\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n    newsroomName: string,\n    charterUri: Uri = \"\",\n    charterHash: Hex = \"\",\n  ): Promise<TwoStepEthTransaction<Newsroom>> {\n    if ((charterUri.length === 0) !== (charterHash.length === 0)) {\n      throw new Error(\"Both charter URI and Hash need to be set, or both empty\");\n    }\n    const from = await currentAccount(ethApi);\n    const txData: SendOptions = { from: from! };\n    return createTwoStepTransaction(\n      ethApi,\n      await NewsroomContract.deployTrusted.sendTransactionAsync(ethApi, newsroomName, charterUri, charterHash, txData),\n      async receipt => Newsroom.atUntrusted(ethApi, contentProvider, receipt.contractAddress!),\n    );\n  }\n\n  public static async atUntrusted(\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n    address: EthAddress,\n  ): Promise<Newsroom> {\n    const instance = NewsroomContract.atUntrusted(ethApi, address);\n    const multisigProxy = await NewsroomMultisigProxy.create(ethApi, instance);\n    const defaultBlock = getDefaultFromBlock(await ethApi.network());\n    return new Newsroom(ethApi, contentProvider, instance, multisigProxy, defaultBlock);\n  }\n\n  public static async recoverArchiveTx(tx: Transaction): Promise<string> {\n    const inflate = promisify<string>(zlib.inflate);\n    const txDataLength = parseInt(addHexPrefix(tx.input.substr(tx.input.length - 16)), 16);\n    const content = addHexPrefix(tx.input.substring(txDataLength, tx.input.length - 16));\n    return (await inflate(toBuffer(content))).toString();\n  }\n\n  private multisigProxy: NewsroomMultisigProxy;\n  private contentProvider: ContentProvider;\n\n  private constructor(\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n    instance: NewsroomContract,\n    multisigProxy: NewsroomMultisigProxy,\n    defaultBlock: number,\n  ) {\n    super(ethApi, instance, defaultBlock);\n    this.contentProvider = contentProvider;\n    this.multisigProxy = multisigProxy;\n  }\n  //#endregion\n\n  //#region streams\n  public editors(): Observable<EthAddress> {\n    return this.instance\n      .RoleAddedStream({ role: NewsroomRoles.Editor }, { fromBlock: this.defaultBlock })\n      .map(e => e.returnValues.grantee)\n      .concatFilter(async e => this.isEditor(e));\n  }\n\n  /**\n   * An unending stream of all the content, both signed as well as unsigned.\n   * @param fromBlock Starting block in history for events concerning content being proposed.\n   *                  Set to \"latest\" for only new events\n   * @returns Metadata about the content from Ethereum. Use [[resolveContent]] to get actual contents\n   */\n  public content(fromBlock: number = this.defaultBlock): Observable<EthContentHeader> {\n    return this.instance\n      .ContentPublishedStream({}, { fromBlock })\n      .map(e => new BigNumber(e.returnValues.contentId))\n      .concatMap(this.loadContentHeader.bind(this));\n  }\n\n  /**\n   * An unending stream of all revsions\n   * @param contentId Optional parameter to get revisions of only specific content\n   * @param fromBlock Starting block in history for events concerning content being proposed.\n   *                  Set to \"latest\" for only new events\n   * @returns Metadata about the content from Ethereum. Use [[resolveContent]] to get actual contents\n   */\n  public revisions(\n    contentId?: number | BigNumber | undefined,\n    fromBlock: number = this.defaultBlock,\n  ): Observable<EthContentHeader> {\n    const myContentId = contentId ? this.ethApi.toBigNumber(contentId) : undefined;\n    return this.instance.RevisionUpdatedStream({ contentId: myContentId }, { fromBlock }).concatMap(async e => {\n      const contentHeader = await this.loadContentHeader(\n        new BigNumber(e.returnValues.contentId),\n        new BigNumber(e.returnValues.revisionId),\n      );\n      return {\n        blockNumber: e.blockNumber,\n        transactionHash: e.transactionHash,\n        ...contentHeader,\n      };\n    });\n  }\n\n  /**\n   * An unending stream of all names this Newsroom had ever had.\n   * @param fromBlock Starting block in history for events.\n   *                  Set to \"latest\" to only listen for new events\n   * @returns Name history of this Newsroom\n   */\n  public nameChanges(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance.NameChangedStream({}, { fromBlock }).map(e => e.returnValues.newName);\n  }\n  //#endregion\n\n  //#region views\n\n  /**\n   * Returns NewsroomWrapper (address + data) for this newsroom\n   */\n  public async getNewsroomWrapper(): Promise<NewsroomWrapper> {\n    const data = await this.getNewsroomData();\n    return {\n      address: this.instance.address,\n      data,\n    };\n  }\n\n  /**\n   * Returns NewsroomData for this newsroom\n   */\n  public async getNewsroomData(): Promise<NewsroomData> {\n    const name = await this.getName();\n    const owner = await this.instance.owner.callAsync();\n    const owners = await this.owners();\n    const charterHeader = await this.getCharterHeader();\n    return {\n      name,\n      owner,\n      owners,\n      charterHeader,\n    };\n  }\n\n  /**\n   * Returns a list of Board of Directors with superuser powers over this\n   * newsroom.\n   */\n  public async owners(): Promise<EthAddress[]> {\n    return this.multisigProxy.owners();\n  }\n\n  public async addOwner(owner: EthAddress): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    const address = await this.multisigProxy.getMultisigAddress();\n    const contract = await Multisig.atUntrusted(this.ethApi, address!);\n    return contract.addOwner(owner);\n  }\n\n  public async estimateAddOwner(owner: EthAddress): Promise<number> {\n    const address = await this.multisigProxy.getMultisigAddress();\n    const contract = await Multisig.atUntrusted(this.ethApi, address!);\n    return contract.estimateAddOwner(owner);\n  }\n\n  /**\n   * Returns the address of the multisig that controls this newsroom if one is defined\n   */\n  public async getMultisigAddress(): Promise<EthAddress | undefined> {\n    return this.multisigProxy.getMultisigAddress();\n  }\n\n  /**\n   * Transfers ETH from multisig to a given address\n   * @param eth Amount to transfer, in ether\n   * @param to Address to transfer to\n   */\n  public async transferEthFromMultisig(\n    eth: string,\n    to: EthAddress,\n  ): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    const wei = parseEther(eth);\n    const address = await this.multisigProxy.getMultisigAddress();\n    const multisig = await Multisig.atUntrusted(this.ethApi, address!);\n    return multisig.submitTransaction(to, wei, \"0x\");\n  }\n\n  /**\n   * Checks if the user is the owner of the newsroom\n   * @param address Address for the ownership check, leave empty for current user\n   * @throws {CivilErrors.NoUnlockedAccount} Requires the node to have at least one account if no address provided\n   */\n  public async isOwner(address?: EthAddress): Promise<boolean> {\n    let who = address;\n\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.multisigProxy.isOwner(who);\n  }\n\n  /**\n   * Checks if the user can assign roles and approve/deny content\n   * @param address Address for the role check, leave empty for current user\n   * @throws {CivilErrors.NoUnlockedAccount} Requires the node to have at least one account if no address provided\n   */\n  public async isEditor(address?: EthAddress): Promise<boolean> {\n    let who = address;\n\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.instance.hasRole.callAsync(who, NewsroomRoles.Editor);\n  }\n\n  /**\n   * Checks if the user can assign roles and approve/deny content\n   * Also returns true if user has director super powers\n   * @param address Address for the role check, leave empty for current user\n   * @throws {CivilErrors.NoUnlockedAccount} Requires the node to have at least one account if no address provided\n   */\n  public async hasEditorCapabilities(address?: EthAddress): Promise<boolean> {\n    if (await this.isOwner(address)) {\n      return true;\n    }\n    let who = address;\n\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.instance.hasRole.callAsync(who, NewsroomRoles.Editor);\n  }\n\n  public async getArticleHeader(articleId: BigNumber): Promise<EthContentHeader> {\n    return this.loadContentHeader(articleId);\n  }\n\n  public async getCharterHeader(): Promise<EthContentHeader> {\n    return this.getArticleHeader(new BigNumber(0));\n  }\n\n  /**\n   * Gets newsroom charter data.\n   * @throws {CivilErrors.MalformedCharter} Charter data is malformed.\n   */\n  public async getCharter(): Promise<CharterContent | undefined> {\n    const charterData = await this.loadArticle(new BigNumber(0));\n    if (!charterData) {\n      return charterData;\n    }\n\n    if (typeof charterData.content !== \"object\") {\n      try {\n        charterData.content = JSON.parse(charterData.content);\n      } catch (e) {\n        debug(`Charter content not in expected format: ${charterData}`, e);\n        throw CivilErrors.MalformedCharter;\n      }\n    }\n\n    return charterData as CharterContent;\n  }\n\n  /**\n   * Loads everything concerning one article needed to read it fully.\n   * Accesess both Ethereum network as well as the active ContentProvider\n   * @param articleId Id of the article that you want to read\n   */\n  public async loadArticle(articleId: BigNumber): Promise<NewsroomContent | undefined> {\n    const header = await this.loadContentHeader(articleId);\n    if (header.contentHash && !is0x0Hash(header.contentHash)) {\n      return this.resolveContent(header);\n    } else {\n      return undefined;\n    }\n  }\n\n  /**\n   * Converts metadata gathered from Ethereum network into a fully fledged Article all the\n   * text needed for display\n   * @param header Metadata you get from Ethereum\n   */\n  public async resolveContent(header: EthContentHeader): Promise<NewsroomContent | undefined> {\n    // TODO(ritave): Choose ContentProvider based on schema\n    try {\n      const content = await this.contentProvider.get(header);\n      return {\n        ...header,\n        content,\n      };\n    } catch (e) {\n      debug(`Resolving Content failed for EthContentHeader: ${header}`, e);\n      return;\n    }\n  }\n\n  /**\n   * Accesses the Ethereum network and loads basic metatadata about the content\n   * @param articleId Id of the article whose metadata you need\n   */\n  public async loadContentHeader(contentId: BigNumber, revisionId?: number | BigNumber): Promise<EthContentHeader> {\n    let revision = revisionId;\n    if (!revision) {\n      revision = new BigNumber(await this.instance.revisionCount.callAsync(new BigNumber(contentId).toString())).sub(\n        new BigNumber(1).toString(),\n      );\n    }\n    const myContentId = this.ethApi.toBigNumber(contentId);\n    let contentHash: string;\n    let uri: string;\n    let timestamp: string;\n    let author: EthAddress;\n    let signature: string;\n    let myRevisionId: string | undefined;\n    if (revision) {\n      myRevisionId = this.ethApi.toBigNumber(revision);\n      [contentHash, uri, timestamp, author, signature] = await this.instance.getRevision.callAsync(\n        myContentId,\n        myRevisionId!,\n      );\n    } else {\n      [contentHash, uri, timestamp, author, signature] = await this.instance.getContent.callAsync(\n        myContentId.toNumber(),\n      );\n    }\n    return {\n      contentId: myContentId.toNumber(),\n      revisionId: myRevisionId ? new BigNumber(myRevisionId).toNumber() : 0,\n      timestamp: new Date(parseInt(timestamp, 10) * 1000),\n      uri,\n      contentHash,\n      author,\n      signature,\n      verifySignature: () => {\n        if (is0x0Address(author)) {\n          return false;\n        }\n        const message = prepareNewsroomMessage(this.address, contentHash);\n        const hashedPersonal = hashPersonalMessage(message);\n        const recovered = recoverSigner({ signature, messageHash: hashedPersonal.messageHash });\n        if (recovered !== author) {\n          throw new Error(`The signature for ${contentId} is invalid`);\n        }\n        return true;\n      },\n    };\n  }\n\n  public async getName(): Promise<string> {\n    return this.instance.name.callAsync();\n  }\n  //#endregion\n\n  //#region mutators\n  /**\n   * Sets an Access-Control-List role to a specified address\n   * @param actor The address that shall be granted a role\n   * @param role What privilige the address should be given\n   * @throws {Civil.NoPrivileges} Requires editor privilege\n   * @throws {CivilErrors.NoUnlockedAccount} Needs at least one account for editor role check\n   */\n  public async addRole(actor: EthAddress, role: NewsroomRoles): Promise<MultisigProxyTransaction> {\n    if (await this.isOwner()) {\n      return this.multisigProxy.addRole.sendTransactionAsync(actor, role);\n    }\n\n    await this.requireEditor();\n    return createTwoStepSimple(this.ethApi, await this.instance.addRole.sendTransactionAsync(actor, role));\n  }\n\n  /**\n   * Removes an Access-Control-List role to a specified address\n   * Silently succeeds if the role isn't set\n   * @param actor The address that shall have the role removed\n   * @param role What privilege will be removed\n   * @throws {Civil.NoPrivileges} Requires editor privilege\n   * @throws {CivilErrors.NoUnlockedAccount} Needs at least one account for editor role check\n   */\n  public async removeRole(actor: EthAddress, role: NewsroomRoles): Promise<MultisigProxyTransaction> {\n    if (await this.isOwner()) {\n      return this.multisigProxy.removeRole.sendTransactionAsync(actor, role);\n    }\n\n    await this.requireEditor();\n    return createTwoStepSimple(this.ethApi, await this.instance.removeRole.sendTransactionAsync(actor, role));\n  }\n\n  public async removeOwner(actor: EthAddress): Promise<TwoStepEthTransaction<MultisigTransaction>> {\n    await this.requireOwner();\n    const address = await this.getMultisigAddress();\n    const contract = await Multisig.atUntrusted(this.ethApi, address!);\n    return contract.removeOwner(actor);\n  }\n\n  /**\n   * Changes the name of the Newsroom.\n   * The name can be any string, but when applying to a TCR, it must be unique in that TCR\n   * @param newName The new name of this Newsroom\n   * @throws {CivilErrors.NoPrivileges} Requires owner permission\n   * @throws {CivilErrors.NoUnlockedAccount} Needs the unlocked to check privileges\n   */\n  public async setName(newName: string): Promise<MultisigProxyTransaction> {\n    await this.requireOwner();\n\n    return this.multisigProxy.setName.sendTransactionAsync(newName);\n  }\n\n  public txArchiveForContentId(contentId: number, revisionId: number): Observable<any> {\n    const myContentId = this.ethApi.toBigNumber(contentId);\n    const myRevisionId = this.ethApi.toBigNumber(revisionId);\n    return this.instance\n      .RevisionUpdatedStream({ contentId: myContentId, revisionId: myRevisionId }, { fromBlock: this.defaultBlock })\n      .concatMap(async item => {\n        const transaction = await this.ethApi.getTransaction(item.transactionHash);\n        return Newsroom.recoverArchiveTx(transaction);\n      });\n  }\n\n  public async estimatePublishURIAndHash(\n    uriOrContent: any,\n    hash: string,\n    author: string = \"0x\",\n    signature: string = \"0x\",\n    archive?: boolean,\n  ): Promise<number> {\n    const uriForEstimate = archive ? \"self-tx:1.0\" : uriOrContent;\n    const data = await this.instance.publishContent.getRaw(uriForEstimate, hash, author, signature, { gas: 0 });\n    if (!(await this.isEditor()) && (await this.isOwner())) {\n      if (archive) {\n        return this.estimateFromDataMultiSig(data, uriOrContent);\n      } else {\n        return this.estimateFromDataMultiSig(data);\n      }\n    } else {\n      const baseGas = await this.instance.publishContent.estimateGasAsync(uriForEstimate, hash, author, signature, {});\n      let additionalGas = 0;\n      if (archive) {\n        additionalGas = await this.estimateFromContent(uriOrContent, data.data!.length);\n      }\n      return baseGas + additionalGas;\n    }\n  }\n\n  public async estimateUpdateURIAndHash(\n    contentId: number,\n    uriOrContent: any,\n    hash: string,\n    signature: string = \"0x\",\n    archive?: boolean,\n  ): Promise<number> {\n    const uriForEstimate = archive ? \"self-tx:1.0\" : uriOrContent;\n    const data = await this.instance.updateRevision.getRaw(\n      this.ethApi.toBigNumber(contentId),\n      uriForEstimate,\n      hash,\n      signature,\n      { gas: 0 },\n    );\n    if (!(await this.isEditor()) && (await this.isOwner())) {\n      if (archive) {\n        return this.estimateFromDataMultiSig(data, uriOrContent);\n      } else {\n        return this.estimateFromDataMultiSig(data);\n      }\n    } else {\n      const baseGas = await this.instance.updateRevision.estimateGasAsync(\n        this.ethApi.toBigNumber(contentId),\n        uriForEstimate,\n        hash,\n        signature,\n        {},\n      );\n      let additionalGas = 0;\n      if (archive) {\n        additionalGas = await this.estimateFromContent(uriOrContent, data.data!.length);\n      }\n      return baseGas + additionalGas;\n    }\n  }\n\n  public async estimateFromDataMultiSig(data: TransactionConfig, content?: any): Promise<number> {\n    const address = await this.multisigProxy.getMultisigAddress();\n    const contract = await Multisig.atUntrusted(this.ethApi, address!);\n    const baseGas = await contract.estimateTransaction(address!, this.ethApi.toBigNumber(0), data.data!);\n    let additionalGas = 0;\n    if (content) {\n      const multiSigData = await contract.getRawTransaction(address!, this.ethApi.toBigNumber(0), data.data!);\n      additionalGas = await this.estimateFromContent(content, multiSigData.data!.length);\n    }\n    return baseGas + additionalGas;\n  }\n\n  public async estimateFromContent(content: any, dataLength: number): Promise<number> {\n    const revision = typeof content === \"string\" ? content : JSON.stringify(content);\n    const buffer = await deflate(revision);\n    const hex = bufferToHex(buffer);\n    // @ts-ignore\n    // TODO(dankins): ignoring typescript error, make sure this works\n    const length = bufferToHex(setLengthLeft(toBuffer(dataLength), 8));\n    const extra = hex.substr(2) + length.substr(2);\n    return estimateRawHex(extra);\n  }\n\n  public async publishURIAndHash(\n    uri: string,\n    hash: string,\n    author: string = \"0x\",\n    signature: string = \"0x\",\n  ): Promise<TwoStepEthTransaction<ContentId | MultisigTransaction>> {\n    if (!(await this.isEditor()) && (await this.isOwner())) {\n      return this.twoStepOrMulti(\n        await this.multisigProxy.publishContent.sendTransactionAsync(uri, hash, author, signature),\n        findContentId,\n      );\n    } else {\n      await this.requireEditor();\n\n      return createTwoStepTransaction(\n        this.ethApi,\n        await this.instance.publishContent.sendTransactionAsync(uri, hash, author, signature),\n        findContentId,\n      );\n    }\n  }\n\n  public async updateRevisionURIAndHash(\n    contentId: ContentId,\n    uri: string,\n    hash: string,\n    signature: string = \"0x\",\n  ): Promise<TwoStepEthTransaction<RevisionId | MultisigTransaction>> {\n    if (contentId === 0) {\n      await this.requireOwner();\n\n      return this.twoStepOrMulti(\n        await this.multisigProxy.updateRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          uri,\n          hash,\n          signature,\n        ),\n        findRevisionId,\n      );\n    } else if (!(await this.isEditor()) && (await this.isOwner())) {\n      return this.twoStepOrMulti(\n        await this.multisigProxy.updateRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          uri,\n          hash,\n          signature,\n        ),\n        findRevisionId,\n      );\n    } else {\n      await this.requireEditor();\n\n      return createTwoStepTransaction(\n        this.ethApi,\n        await this.instance.updateRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          uri,\n          hash,\n          signature,\n        ),\n        findRevisionId,\n      );\n    }\n  }\n\n  public async addArchiveToMultisig(data: TransactionConfig, hex: string, gas: number): Promise<TransactionConfig> {\n    const multiSigAddress = await this.multisigProxy.getMultisigAddress();\n    const contract = await Multisig.atUntrusted(this.ethApi, multiSigAddress!);\n    const multiSigTxData = await contract.getRawTransaction(this.address, this.ethApi.toBigNumber(0), data.data!);\n    // @ts-ignore\n    // TODO(dankins): ignoring typescript error, make sure this works\n    const length = bufferToHex(setLengthLeft(toBuffer(multiSigTxData.data!.length), 8));\n    const extra = hex.substr(2) + length.substr(2);\n    multiSigTxData.gas = gas;\n    multiSigTxData.data = multiSigTxData.data + extra;\n    return multiSigTxData;\n  }\n\n  public async publishWithArchive(\n    content: any,\n    hash: string,\n    author: string = \"0x\",\n    signature: string = \"0x\",\n  ): Promise<TwoStepEthTransaction<MultisigTransaction | ContentId>> {\n    const revision = typeof content === \"string\" ? content : JSON.stringify(content);\n    const gas = await this.estimatePublishURIAndHash(content, hash, author, signature, true);\n    const data = await this.instance.publishContent.getRaw(\"self-tx:1.0\", hash, author, signature, { gas });\n    const buffer = await deflate(revision);\n    const hex = bufferToHex(buffer);\n    if (!(await this.isEditor()) && (await this.isOwner())) {\n      const multiSigData = await this.addArchiveToMultisig(data, hex, gas);\n      return createTwoStepTransaction(this.ethApi, await this.ethApi.sendTransaction(multiSigData), findContentId);\n    } else {\n      await this.requireEditor();\n      const txData = await this.instance.publishContent.getRaw(\"self-tx:1.0\", hash, author, signature, { gas });\n\n      // @ts-ignore\n      // TODO(dankins): ignoring typescript error, make sure this works\n      const length = bufferToHex(setLengthLeft(toBuffer(txData.data!.length), 8));\n\n      // @ts-ignore\n      // TODO(dankins): ignoring typescript error, make sure this works\n      const extra = hex.substr(2) + length.substr(2);\n      txData.data = txData.data + extra;\n      txData.gas = gas;\n      return createTwoStepTransaction(this.ethApi, await this.ethApi.sendTransaction(txData), findContentId);\n    }\n  }\n\n  public async updateRevisionURIAndHashWithArchive(\n    contentId: ContentId,\n    content: any,\n    hash: string,\n    signature: string = \"0x\",\n  ): Promise<TwoStepEthTransaction<RevisionId | MultisigTransaction>> {\n    const revision = typeof content === \"string\" ? content : JSON.stringify(content);\n    const gas = await this.estimateUpdateURIAndHash(contentId, content, hash, signature, true);\n    const data = await this.instance.updateRevision.getRaw(\n      this.ethApi.toBigNumber(contentId),\n      \"self-tx:1.0\",\n      hash,\n      signature,\n      { gas },\n    );\n    const buffer = await deflate(revision);\n    const hex = bufferToHex(buffer);\n    if (!(await this.isEditor()) && (await this.isOwner())) {\n      const multiSigData = await this.addArchiveToMultisig(data, hex, gas);\n      return createTwoStepTransaction(this.ethApi, await this.ethApi.sendTransaction(multiSigData), findRevisionId);\n    } else {\n      await this.requireEditor();\n      const txData = await this.instance.updateRevision.getRaw(\n        this.ethApi.toBigNumber(contentId),\n        \"self-tx:1.0\",\n        hash,\n        signature,\n        { gas },\n      );\n      // @ts-ignore\n      // TODO(dankins): ignoring typescript error, make sure this works\n      const length = bufferToHex(setLengthLeft(toBuffer(txData.data!.length), 8));\n      const extra = hex.substr(2) + length.substr(2);\n      txData.data = txData.data + extra;\n      txData.gas = gas;\n      return createTwoStepTransaction(this.ethApi, await this.ethApi.sendTransaction(txData), findRevisionId);\n    }\n  }\n\n  public async contentIdFromTxHash(txHash: TxHash): Promise<number> {\n    const publishReceipt = await this.ethApi.awaitReceipt<CivilTransactionReceipt>(txHash);\n\n    return findContentId(publishReceipt);\n  }\n\n  /**\n   * Allows editor to publish content on the ethereum storage and record it in the\n   * Blockchain Newsroom.\n   * The content can also be pre-approved by the author through their signature using their private key\n   * @param content The content that should be put in the content provider\n   * @param signedData An object representing author's approval concerning this content\n   * @returns An id assigned on Ethereum to the uri, or a multig transaction if it requires more confirmations\n   */\n  public async publishContent(\n    content: string,\n    signedData?: ApprovedRevision,\n  ): Promise<TwoStepEthTransaction<ContentId | MultisigTransaction>> {\n    const { storageHeader, author, signature } = await this.uploadToStorage(content, signedData);\n    if (this.isOwner()) {\n      return this.twoStepOrMulti(\n        await this.multisigProxy.publishContent.sendTransactionAsync(\n          storageHeader.uri,\n          storageHeader.contentHash!,\n          author,\n          signature,\n        ),\n        findContentId,\n      );\n    } else {\n      await this.requireEditor();\n\n      return createTwoStepTransaction(\n        this.ethApi,\n        await this.instance.publishContent.sendTransactionAsync(\n          storageHeader.uri,\n          storageHeader.contentHash!,\n          author,\n          signature,\n        ),\n        findContentId,\n      );\n    }\n  }\n\n  public async revisionFromTxHash(txHash: TxHash): Promise<RevisionId> {\n    const revisionReceipt = await this.ethApi.awaitReceipt<CivilTransactionReceipt>(txHash);\n    return findRevisionId(revisionReceipt);\n  }\n\n  /**\n   * Allows editor to create a new revision to already existing content.\n   * The revision can be unsigned. If the revision is signed,\n   * the author has to match the author defined when publishing in the first place.\n   * If there was no author during publishing [[signRevision]] can update them.\n   * @param contentId The id of the already published content\n   * @param content The data that should be stored in content storage\n   * @param signedData Optional pre-approval from the author concerning this article\n   */\n  public async updateRevision(\n    contentId: ContentId,\n    content: string,\n    signedData?: ApprovedRevision,\n  ): Promise<TwoStepEthTransaction<RevisionId | MultisigTransaction>> {\n    const { storageHeader, signature } = await this.uploadToStorage(content, signedData);\n\n    if (this.isOwner()) {\n      return this.twoStepOrMulti(\n        await this.multisigProxy.updateRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          storageHeader.uri,\n          storageHeader.contentHash!,\n          signature,\n        ),\n        findRevisionId,\n      );\n    } else {\n      await this.requireEditor();\n\n      return createTwoStepTransaction(\n        this.ethApi,\n        await this.instance.updateRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          storageHeader.uri,\n          storageHeader.contentHash!,\n          signature,\n        ),\n        findRevisionId,\n      );\n    }\n  }\n\n  /**\n   * Allows editor to back-sign a revision which was previously unsigned.\n   * Additionally if the content was published without the author, this function will allow to set the author.\n   * If the author was set previously, the signature also needs to be from the same author.\n   * @param contentId The id of already published content\n   * @param revisionId The id of already published revision for that content\n   * @param signedData Data needed to back-sign the revision\n   */\n  public async signRevision(\n    contentId: ContentId,\n    revisionId: RevisionId,\n    signedData: ApprovedRevision,\n  ): Promise<TwoStepEthTransaction<CivilTransactionReceipt | MultisigTransaction>> {\n    const contentHeader = await this.loadContentHeader(new BigNumber(contentId), revisionId);\n    this.verifyApprovedRevision(contentHeader, signedData);\n    if (!is0x0Address(contentHeader.author) && contentHeader.author !== signedData.author) {\n      throw new Error(CivilErrors.MalformedParams);\n    }\n\n    if (this.isOwner()) {\n      return this.twoStepOrMulti(\n        await this.multisigProxy.signRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          this.ethApi.toBigNumber(revisionId),\n          signedData.author,\n          signedData.signature,\n        ),\n        receipt => receipt,\n      );\n    } else {\n      await this.requireEditor();\n\n      return createTwoStepSimple(\n        this.ethApi,\n        await this.instance.signRevision.sendTransactionAsync(\n          this.ethApi.toBigNumber(contentId),\n          this.ethApi.toBigNumber(revisionId),\n          signedData.author,\n          signedData.signature,\n        ),\n      );\n    }\n  }\n  //#endregion\n\n  /**\n   * Signs that specific content with the current private key of the user of this library with their approval\n   * @param content Data to sign\n   * @returns An object containing all information to represent what has the author approved\n   */\n  public async approveByAuthor(content: string): Promise<ApprovedRevision> {\n    const author = await requireAccount(this.ethApi).toPromise();\n\n    const contentHash = hashContent(content);\n    const message = prepareNewsroomMessage(this.address, contentHash);\n\n    const { signature } = await this.ethApi.signMessage(message, author);\n    return {\n      author,\n      contentHash,\n      signature,\n      date: new Date().toISOString(),\n      newsroomAddress: this.address,\n    };\n  }\n\n  public async approveByAuthorPersonalSign(contentHash: Hex): Promise<ApprovedRevision> {\n    const author = await requireAccount(this.ethApi).toPromise();\n    const name = await this.getName();\n    const message = prepareUserFriendlyNewsroomMessage(this.address, contentHash, name);\n    const { signature } = await this.ethApi.signMessage(message, author);\n    const date = new Date().toISOString();\n    return {\n      author,\n      contentHash,\n      signature,\n      date,\n      newsroomAddress: this.address,\n    };\n  }\n\n  private async requireEditor(): Promise<void> {\n    await this.requireRole(NewsroomRoles.Editor);\n  }\n\n  private async requireRole(role: NewsroomRoles): Promise<void> {\n    const account = await requireAccount(this.ethApi).toPromise();\n    if ((await this.instance.owner.callAsync()) !== account) {\n      if (!(await this.instance.hasRole.callAsync(account, role))) {\n        throw new Error(CivilErrors.NoPrivileges);\n      }\n    }\n  }\n\n  private async requireOwner(): Promise<void> {\n    if (!(await this.isOwner())) {\n      throw new Error(CivilErrors.NoPrivileges);\n    }\n  }\n\n  private verifyApprovedRevision(storageHeader: StorageHeader, signedData: ApprovedRevision): void {\n    if (signedData.newsroomAddress !== this.address) {\n      throw new Error(CivilErrors.MalformedParams);\n    }\n    if (storageHeader.contentHash !== signedData.contentHash) {\n      throw new Error(CivilErrors.NoPrivileges);\n    }\n  }\n\n  private async uploadToStorage(\n    content: string,\n    signedData?: ApprovedRevision,\n  ): Promise<{ storageHeader: StorageHeader; author: EthAddress; signature: Hex }> {\n    const storageHeader = await this.contentProvider.put(content);\n\n    let author: EthAddress = \"0x\";\n    let signature: Hex = \"0x\";\n\n    if (signedData) {\n      this.verifyApprovedRevision(storageHeader, signedData);\n      author = signedData.author;\n      signature = signedData.signature;\n    }\n    return {\n      storageHeader,\n      author,\n      signature,\n    };\n  }\n\n  /**\n   * Used when the transaction might go through a multisig wallet\n   * In that case, more confirmations might be needed from other owners\n   */\n  private twoStepOrMulti<T>(\n    tx: MultisigProxyTransaction,\n    transformation: (receipt: CivilTransactionReceipt) => T | Promise<T>,\n  ): TwoStepEthTransaction<T | MultisigTransaction> {\n    return createTwoStepTransaction(this.ethApi, tx.txHash, async receipt => {\n      if (tx.isProxied && !findEvent<MultisigEvents.Logs.Execution>(receipt, MultisigEvents.Events.Execution)) {\n        const transactionId = await tx.proxiedId!();\n        return this.multisigProxy.requireMultisig().transaction(transactionId);\n      }\n      return transformation(receipt);\n    });\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/appeal.ts",
    "content": "import { BigNumber, AppealData } from \"@joincivil/typescript-types\";\nimport * as Debug from \"debug\";\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { getDefaultFromBlock } from \"@joincivil/utils\";\nimport { CivilTCRContract } from \"../generated/wrappers/civil_t_c_r\";\nimport { AppealChallenge } from \"./appealChallenge\";\n\nconst debug = Debug(\"civil:appeal\");\n\nexport class Appeal {\n  private ethApi: EthApi;\n  private tcrInstance: CivilTCRContract;\n  private challengeId: BigNumber;\n\n  constructor(ethApi: EthApi, instance: CivilTCRContract, challengeId: BigNumber) {\n    this.ethApi = ethApi;\n    this.tcrInstance = instance;\n    this.challengeId = challengeId;\n  }\n\n  public async getAppealData(): Promise<AppealData> {\n    const [\n      requester,\n      appealFeePaid,\n      appealPhaseExpiry,\n      appealGranted,\n      appealOpenToChallengeExpiry,\n      appealChallengeID,\n    ] = await this.tcrInstance.appeals.callAsync(this.challengeId.toString());\n    let appealChallenge;\n    if (!new BigNumber(appealChallengeID).isZero()) {\n      const appealChallengeInstance = new AppealChallenge(\n        this.ethApi,\n        this.tcrInstance,\n        new BigNumber(appealChallengeID),\n      );\n      appealChallenge = await appealChallengeInstance.getAppealChallengeData();\n    }\n    let appealStatementURI;\n    if (!new BigNumber(appealPhaseExpiry).isZero()) {\n      appealStatementURI = await this.getAppealURI();\n    }\n    let appealGrantedStatementURI;\n    if (appealGranted) {\n      appealGrantedStatementURI = await this.getAppealGrantedURI();\n    }\n    return {\n      requester,\n      appealFeePaid: new BigNumber(appealFeePaid),\n      appealPhaseExpiry: new BigNumber(appealPhaseExpiry),\n      appealGranted,\n      appealOpenToChallengeExpiry: new BigNumber(appealOpenToChallengeExpiry),\n      appealChallengeID: new BigNumber(appealChallengeID),\n      appealChallenge,\n      appealStatementURI,\n      appealGrantedStatementURI,\n    };\n  }\n\n  private async getAppealURI(): Promise<string | undefined> {\n    const currentBlock = await this.ethApi.getLatestBlockNumber();\n\n    try {\n      const appealRequestedEvent = await this.tcrInstance\n        ._AppealRequestedStream(\n          { challengeID: this.challengeId },\n          { fromBlock: getDefaultFromBlock(await this.ethApi.network()), toBlock: currentBlock },\n        )\n        .first()\n        .toPromise();\n      return appealRequestedEvent.returnValues.data;\n    } catch (e) {\n      debug(`Getting AppealURI failed for ChallengeID: ${this.challengeId}`, e);\n      return;\n    }\n  }\n\n  private async getAppealGrantedURI(): Promise<string | undefined> {\n    const currentBlock = await this.ethApi.getLatestBlockNumber();\n\n    try {\n      const appealGrantedEvent = await this.tcrInstance\n        ._AppealGrantedStream(\n          { challengeID: this.challengeId },\n          { fromBlock: getDefaultFromBlock(await this.ethApi.network()), toBlock: currentBlock },\n        )\n        .first()\n        .toPromise();\n      return appealGrantedEvent.returnValues.data;\n    } catch (e) {\n      debug(`Getting GrantedAppealURI failed for ChallengeID: ${this.challengeId}`, e);\n      return;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/appealChallenge.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { BigNumber, AppealChallengeData } from \"@joincivil/typescript-types\";\nimport * as Debug from \"debug\";\nimport { CivilTCRContract } from \"../generated/wrappers/civil_t_c_r\";\nimport { Voting } from \"./voting\";\nimport { getDefaultFromBlock } from \"@joincivil/utils\";\n\nconst debug = Debug(\"civil:appeal\");\n\nexport class AppealChallenge {\n  private ethApi: EthApi;\n  private tcrInstance: CivilTCRContract;\n  private challengeId: BigNumber;\n  private voting: Promise<Voting>;\n\n  constructor(ethApi: EthApi, instance: CivilTCRContract, challengeId: BigNumber) {\n    this.ethApi = ethApi;\n    this.tcrInstance = instance;\n    this.challengeId = challengeId;\n    this.voting = Voting.singleton(ethApi);\n  }\n\n  public async getAppealChallengeData(): Promise<AppealChallengeData> {\n    const resolvedVoting = await this.voting;\n    const [rewardPool, challenger, resolved, stake, totalTokens] = await this.tcrInstance.challenges.callAsync(\n      this.challengeId.toString(),\n    );\n    const poll = await resolvedVoting.getPoll(this.challengeId);\n    const appealChallengeStatementURI = await this.getAppealChallengeURI();\n\n    return {\n      rewardPool: new BigNumber(rewardPool),\n      challenger,\n      resolved,\n      stake: new BigNumber(stake),\n      totalTokens: new BigNumber(totalTokens),\n      poll,\n      appealChallengeStatementURI,\n    };\n  }\n\n  private async getAppealChallengeURI(): Promise<string | undefined> {\n    const currentBlock = await this.ethApi.getLatestBlockNumber();\n\n    try {\n      const appealChallengeMadeEvent = await this.tcrInstance\n        ._GrantedAppealChallengedStream(\n          { challengeID: this.challengeId },\n          { fromBlock: getDefaultFromBlock(await this.ethApi.network()), toBlock: currentBlock },\n        )\n        .first()\n        .toPromise();\n      return appealChallengeMadeEvent.returnValues.data;\n    } catch (e) {\n      debug(`Getting ChallengeAppealURI failed for ChallengeID: ${this.challengeId}`, e);\n      return;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/challenge.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { getDefaultFromBlock } from \"@joincivil/utils\";\nimport { BigNumber, ChallengeData, EthAddress } from \"@joincivil/typescript-types\";\nimport { CivilTCRContract } from \"../generated/wrappers/civil_t_c_r\";\nimport { Appeal } from \"./appeal\";\nimport { Voting } from \"./voting\";\n\nexport class Challenge {\n  private ethApi: EthApi;\n  private tcrInstance: CivilTCRContract;\n  private challengeId: BigNumber;\n  private voting: Promise<Voting>;\n  private listingAddress?: EthAddress;\n\n  constructor(ethApi: EthApi, instance: CivilTCRContract, challengeId: BigNumber, listingAddress?: EthAddress) {\n    this.ethApi = ethApi;\n    this.tcrInstance = instance;\n    this.challengeId = challengeId;\n    this.listingAddress = listingAddress;\n    this.voting = Voting.singleton(ethApi);\n  }\n\n  public async getChallengeData(): Promise<ChallengeData> {\n    const resolvedVoting = await this.voting;\n    const [rewardPool, challenger, resolved, stake, totalTokens] = await this.tcrInstance.challenges.callAsync(\n      this.challengeId.toString(),\n    );\n    const challengeStatementURI = await this.getChallengeURI();\n\n    const poll = await resolvedVoting.getPoll(this.challengeId);\n    const requestAppealExpiry = await this.tcrInstance.challengeRequestAppealExpiries.callAsync(\n      this.challengeId.toString(),\n    );\n\n    let listingAddress = this.listingAddress;\n    if (!listingAddress) {\n      listingAddress = await this.getListingIdForChallenge();\n    }\n    const appealInstance = new Appeal(this.ethApi, this.tcrInstance, this.challengeId);\n    const appeal = await appealInstance.getAppealData();\n\n    return {\n      challengeStatementURI,\n      rewardPool: new BigNumber(rewardPool),\n      challenger,\n      resolved,\n      stake: new BigNumber(stake),\n      totalTokens: new BigNumber(totalTokens),\n      poll,\n      requestAppealExpiry: new BigNumber(requestAppealExpiry),\n      appeal,\n    };\n  }\n\n  public async getListingIdForChallenge(): Promise<EthAddress> {\n    const challengeEvent = await this.tcrInstance\n      ._ChallengeStream(\n        { challengeID: this.challengeId },\n        { fromBlock: getDefaultFromBlock(await this.ethApi.network()) },\n      )\n      .first()\n      .toPromise();\n    return challengeEvent.returnValues.listingAddress;\n  }\n\n  private async getChallengeURI(): Promise<EthAddress> {\n    const challengeEvent = await this.tcrInstance\n      ._ChallengeStream(\n        { challengeID: this.challengeId },\n        { fromBlock: getDefaultFromBlock(await this.ethApi.network()) },\n      )\n      .first()\n      .toPromise();\n    return challengeEvent.returnValues.data;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/civilTCR.ts",
    "content": "import { EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport { CivilErrors, getDefaultFromBlock, is0x0Address, pollHelpers, listingHelpers } from \"@joincivil/utils\";\nimport {\n  EthAddress,\n  ListingWrapper,\n  BigNumber,\n  UserChallengeData,\n  WrappedChallengeData,\n  WrappedAppealChallengeID,\n  WrappedChallengeID,\n} from \"@joincivil/typescript-types\";\n\nimport * as Debug from \"debug\";\nimport { Observable } from \"rxjs/Observable\";\nimport { ContentProvider } from \"../../content/contentprovider\";\nimport { TwoStepEthTransaction } from \"../../types\";\nimport { BaseWrapper } from \"../basewrapper\";\nimport { CivilTCRMultisigProxy } from \"../generated/multisig/civil_t_c_r\";\nimport { CivilTCRContract } from \"../generated/wrappers/civil_t_c_r\";\nimport { MultisigProxyTransaction } from \"../multisig/basemultisigproxy\";\nimport { Challenge } from \"./challenge\";\nimport { Council } from \"./council\";\nimport { CVLToken } from \"./cvltoken\";\nimport { Government } from \"./government\";\nimport { Listing } from \"./listing\";\nimport { Parameterizer } from \"./parameterizer\";\nimport { Voting } from \"./voting\";\nimport { TransactionConfig } from \"web3-core\";\n\nconst debug = Debug(\"civil:tcr\");\n\n/**\n * The CivilTCR tracks the status of addresses that have been applied and allows\n * users to make transactions that modify the state of the TCR.\n *\n * Users can get stream of currently approved addresses, as well as specific information\n * about individual listings (may or may not be approved)\n *\n * Users can also apply to the registry, challenge applications or listings, as well\n * as collect winnings related to challenges, or withdraw/deposit tokens from listings.\n *\n * NOTE: If instantiated with a multisig wallet, *all* transactions are proxied through multisig.\n */\nexport class CivilTCR extends BaseWrapper<CivilTCRContract> {\n  public static async singleton(ethApi: EthApi, contentProvider: ContentProvider): Promise<CivilTCR> {\n    const instance = await CivilTCRContract.singletonTrusted(ethApi);\n    if (!instance) {\n      debug(\"Smart-contract wrapper for TCR returned null, unsupported network\");\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    // We create this dummy proxy so that `this.multisigProxy` is always available and can be used without knowing if this is a multisig instance or not - the proxy handles non-multisig instances as well.\n    const multisigProxyDummy = CivilTCRMultisigProxy.createNonMultisig(ethApi, instance);\n\n    const network = await ethApi.network();\n    const defaultBlock = getDefaultFromBlock(network);\n    return new CivilTCR(\n      ethApi,\n      contentProvider,\n      instance,\n      multisigProxyDummy,\n      await Voting.singleton(ethApi),\n      defaultBlock,\n    );\n  }\n\n  public static async singletonMultisigProxy(\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n    multisigAddress?: EthAddress,\n  ): Promise<CivilTCR> {\n    const instance = await CivilTCRContract.singletonTrusted(ethApi);\n    if (!instance) {\n      debug(\"Smart-contract wrapper for TCR returned null, unsupported network\");\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const multisigProxy = await CivilTCRMultisigProxy.create(ethApi, instance, multisigAddress);\n\n    const defaultBlock = getDefaultFromBlock(await ethApi.network());\n    return new CivilTCR(ethApi, contentProvider, instance, multisigProxy, await Voting.singleton(ethApi), defaultBlock);\n  }\n\n  private contentProvider: ContentProvider;\n  private voting: Voting;\n  /** If instantiated with `multisigAddress` undefined, proxy will send transactions directly to the contract instance. */\n  private multisigProxy: CivilTCRMultisigProxy;\n\n  private constructor(\n    ethApi: EthApi,\n    contentProvider: ContentProvider,\n    instance: CivilTCRContract,\n    multisigProxy: CivilTCRMultisigProxy,\n    voting: Voting,\n    defaultBlock: number,\n  ) {\n    super(ethApi, instance, defaultBlock);\n    this.contentProvider = contentProvider;\n    this.multisigProxy = multisigProxy;\n    this.voting = voting;\n    this.defaultBlock = defaultBlock;\n  }\n\n  /**\n   * Get address for voting contract used with this TCR\n   */\n  public async getVotingAddress(): Promise<EthAddress> {\n    return this.instance.voting.callAsync();\n  }\n\n  /**\n   * Get Voting instance used with this TCR\n   */\n  public getVoting(): Voting {\n    return this.voting;\n  }\n\n  /**\n   * Returns Parameterizer instance associated with this TCR\n   */\n  public async getParameterizer(): Promise<Parameterizer> {\n    return Parameterizer.atUntrusted(this.ethApi, await this.getParameterizerAddress());\n  }\n\n  public async getGovernment(): Promise<Government> {\n    return Government.atUntrusted(this.ethApi, await this.getGovernmentAddress());\n  }\n\n  public async getCouncil(): Promise<Council> {\n    return Council.singleton(this.ethApi);\n  }\n\n  /**\n   * Get address for token used with this TCR\n   */\n  public async getTokenAddress(): Promise<EthAddress> {\n    return this.instance.token.callAsync();\n  }\n\n  public async getGovernmentAddress(): Promise<EthAddress> {\n    return this.instance.government.callAsync();\n  }\n\n  /**\n   * Get Token instance used with this TCR\n   */\n  public async getToken(): Promise<CVLToken> {\n    if (this.multisigProxy.multisigEnabled) {\n      return CVLToken.atUntrusted(\n        this.ethApi,\n        await this.getTokenAddress(),\n        await this.multisigProxy.getMultisigAddress(),\n      );\n    } else {\n      return CVLToken.atUntrusted(this.ethApi, await this.getTokenAddress());\n    }\n  }\n\n  /**\n   * Get address for parameterizer contract used with this TCR\n   */\n  public async getParameterizerAddress(): Promise<EthAddress> {\n    return this.instance.parameterizer.callAsync();\n  }\n\n  //#region EventStreams\n  /**\n   * An unending stream of all events that change the state of a listing\n   * @param fromBlock Starting block in history for events concerning whitelisted addresses.\n   *                  Set to \"latest\" for only new events\n   * @returns currently listings as new events get triggered\n   */\n  public allEventsExceptWhitelistFromBlock(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return Observable.merge(\n      this.instance\n        ._ApplicationStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n      this.instance\n        ._AppealRequestedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._AppealGrantedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._FailedChallengeOverturnedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._SuccessfulChallengeOverturnedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._GrantedAppealChallengedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._GrantedAppealOverturnedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._GrantedAppealConfirmedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._ChallengeStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._DepositStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._WithdrawalStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._ApplicationRemovedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._ListingRemovedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._ListingWithdrawnStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._TouchAndRemovedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._ChallengeFailedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n\n      this.instance\n        ._ChallengeSucceededStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock)),\n    ).concatMap(async l => l.getListingWrapper());\n  }\n\n  /**\n   * An unending stream of all events that change the state of a listing\n   * @param fromBlock Starting block in history for events concerning whitelisted addresses.\n   *                  Set to \"latest\" for only new events\n   * @returns currently listings as new events get triggered\n   */\n  public allEventsFromBlock(fromBlock: number = this.defaultBlock, toBlock?: number): Observable<ListingWrapper> {\n    return Observable.merge(\n      this.allEventsExceptWhitelistFromBlock(fromBlock, toBlock),\n      this.instance\n        ._ApplicationWhitelistedStream({}, { fromBlock, toBlock })\n        .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n\n        .concatMap(async l => l.getListingWrapper()),\n    );\n  }\n\n  /**\n   * An unending stream of all addresses that have been whitelisted\n   * @param fromBlock Starting block in history for events concerning whitelisted addresses.\n   *                  Set to \"latest\" for only new events\n   * @returns currently whitelisted addresses\n   */\n  public whitelistedListings(fromBlock: number = this.defaultBlock, toBlock?: number): Observable<ListingWrapper> {\n    return this.instance\n      ._ApplicationWhitelistedStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper());\n  }\n\n  /**\n   * An unending stream of all addresses that have applied\n   * @param fromBlock Starting block in history for events concerning applied addresses.\n   *                  Set to \"latest\" for only new events\n   * @returns listings currently in application stage\n   */\n  public listingsInApplicationStage(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ApplicationStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper());\n  }\n\n  /**\n   * An unending stream of all addresses currently able to be whitelisted\n   * @param fromBlock Starting block in history for events concerning ready to whitelist addresses.\n   *                  Set to \"latest\" for only new events\n   * @returns addresses ready to be whitelisted\n   */\n  public readyToBeWhitelistedListings(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ApplicationStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.canBeWhitelisted(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in commit vote phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in commit vote phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in commit vote phase\n   */\n  public currentChallengedCommitVotePhaseListings(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isInChallengedCommitVotePhase(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in reveal vote phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in reveal vote phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in reveal vote phase\n   */\n  public currentChallengedRevealVotePhaseListings(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isInChallengedRevealVotePhase(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in request appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in request appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in request appeal phase\n   */\n  public listingsAwaitingAppealRequest(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isAwaitingAppealRequest(l.data));\n  }\n\n  public listingsWithChallengeToResolve(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.canChallengeBeResolved(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in appeal phase\n   */\n  public listingsAwaitingAppealJudgment(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isListingAwaitingAppealJudgment(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in appeal phase\n   */\n  public listingsAwaitingAppealChallenge(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isListingAwaitingAppealChallenge(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in appeal phase\n   */\n  public listingsInAppealChallengeCommitPhase(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isInAppealChallengeCommitPhase(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in appeal phase\n   */\n  public listingsInAppealChallengeRevealPhase(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.isInAppealChallengeRevealPhase(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in appeal phase\n   */\n  public listingsWithAppealToResolve(\n    fromBlock: number = this.defaultBlock,\n    toBlock?: number,\n  ): Observable<ListingWrapper> {\n    return this.instance\n      ._ChallengeStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => listingHelpers.canListingAppealBeResolved(l.data));\n  }\n\n  /**\n   * An unending stream of all addresses currently challenged in appeal phase\n   * @param fromBlock Starting block in history for events concerning challenged addresses in appeal phase.\n   *                  Set to \"latest\" for only new events\n   * @returns currently challenged addresses in appeal phase\n   */\n  public rejectedListings(fromBlock: number = this.defaultBlock, toBlock?: number): Observable<ListingWrapper> {\n    return this.instance\n      ._ApplicationStream({}, { fromBlock, toBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper())\n      .concatFilter(l => l.data.appExpiry.isZero());\n  }\n\n  public allApplicationsEver(): Observable<ListingWrapper> {\n    return this.instance\n      ._ApplicationStream({}, { fromBlock: this.defaultBlock })\n      .map(e => new Listing(this.ethApi, this.instance, e.returnValues.listingAddress, this.defaultBlock))\n      .concatMap(async l => l.getListingWrapper());\n  }\n\n  public allChallengeIDsEver(): Observable<WrappedChallengeID> {\n    return this.instance._ChallengeStream({}, { fromBlock: this.defaultBlock }).map(e => {\n      return {\n        listingAddress: e.returnValues.listingAddress,\n        challengeID: new BigNumber(e.returnValues.challengeID),\n      };\n    });\n  }\n\n  public allAppealChallengeIDsEver(): Observable<WrappedAppealChallengeID> {\n    return this.instance._GrantedAppealChallengedStream({}, { fromBlock: this.defaultBlock }).map(e => {\n      return {\n        listingAddress: e.returnValues.listingAddress,\n        appealChallengeToChallengeID: {\n          appealChallengeID: new BigNumber(e.returnValues.appealChallengeID),\n          challengeID: new BigNumber(e.returnValues.challengeID),\n        },\n      };\n    });\n  }\n\n  public challengesStartedByUser(user: EthAddress): Observable<BigNumber> {\n    return this.instance\n      ._ChallengeStream({ challenger: user }, { fromBlock: this.defaultBlock })\n      .map(e => new BigNumber(e.returnValues.challengeID));\n  }\n\n  /**\n   * An unending stream of all pollIDs of polls the user has collected rewards on\n   * @param fromBlock Starting block in history for events concerning new polls\n   *                  Set to \"latest\" for only new events\n   * @param user the user to check\n   */\n  public rewardsCollected(\n    fromBlock: number = this.defaultBlock,\n    user?: EthAddress,\n    toBlock?: number,\n  ): Observable<BigNumber> {\n    return this.instance\n      ._RewardClaimedStream({ voter: user }, { fromBlock, toBlock })\n      .map(e => new BigNumber(e.returnValues.challengeID));\n  }\n\n  //#endregion\n\n  public getListing(listingAddress: EthAddress): Listing {\n    return new Listing(this.ethApi, this.instance, listingAddress, this.defaultBlock);\n  }\n\n  public async getRawGrantAppealTxData(listingAddress: EthAddress): Promise<TransactionConfig> {\n    return this.instance.grantAppeal.getRaw(listingAddress, \"\", { gas: 0 });\n  }\n\n  /*\n   * It is possible to have a pollID without knowing if it corresponds to a challenge or an appeal challenge\n   * (e.g., if you subscribed to an event stream on the voting contract)\n   * This function checks event streams on the CivilTCR contract (only one of which will ever fire) in order to\n   * return the challengeID associated with the poll. If the pollID corresponds to a challenge, the returned value will\n   * equal the poll ID. If the pollID corresponds to an appeal challenge, the returned value will be the challengeID\n   * of the original challenge that was appealed.\n   * @param pollID an ID of a poll which can correspond to either a challenge or an appeal challenge\n   * @return the challengeID associated with the pollID passed in\n   */\n  public async getChallengeIDForPollID(pollID: BigNumber): Promise<BigNumber> {\n    const [, challenger] = await this.instance.challenges.callAsync(pollID.toString());\n    if (challenger && challenger !== \"\" && !is0x0Address(challenger)) {\n      const challengeStream = this.instance._ChallengeStream({ challengeID: pollID }, { fromBlock: this.defaultBlock });\n      const appealChallengeStream = this.instance._GrantedAppealChallengedStream(\n        { appealChallengeID: pollID },\n        { fromBlock: this.defaultBlock },\n      );\n      const event = await challengeStream\n        .merge(appealChallengeStream)\n        .first() // only one will ever emit an event and it will emit exactly one\n        .toPromise();\n\n      return new BigNumber(event.returnValues.challengeID); // both events have this argument\n    } else {\n      return this.ethApi.toBigNumber(0);\n    }\n  }\n\n  public async getChallengeData(challengeID: BigNumber, listingAddr?: string): Promise<WrappedChallengeData> {\n    const challenge = new Challenge(this.ethApi, this.instance, challengeID);\n    let listingAddress = listingAddr;\n    if (!listingAddress) {\n      listingAddress = await challenge.getListingIdForChallenge();\n    }\n    const challengeData = await challenge.getChallengeData();\n    return {\n      listingAddress,\n      challengeID: new BigNumber(challengeID),\n      challenge: challengeData,\n    };\n  }\n\n  public async getUserAppealChallengeData(appealChallengeID: BigNumber, user: EthAddress): Promise<UserChallengeData> {\n    let didUserCommit;\n    let didUserReveal;\n    let didUserCollect;\n    let didUserRescue = false;\n    let didCollectAmount;\n    let isVoterWinner;\n    let salt;\n    let numTokens;\n    let choice;\n    let voterReward;\n    const [, , resolved] = await this.instance.challenges.callAsync(appealChallengeID.toString());\n    const pollData = await this.voting.getPoll(appealChallengeID);\n    let canUserReveal;\n    let canUserRescue;\n    let canUserCollect;\n    if (user) {\n      didUserCommit = await this.voting.didCommitVote(user, appealChallengeID);\n      if (didUserCommit) {\n        didUserReveal = await this.voting.didRevealVote(user, appealChallengeID);\n        if (resolved) {\n          if (didUserReveal) {\n            const reveal = await this.voting.getRevealedVoteEvent(appealChallengeID, user);\n            salt = reveal!.returnValues.salt;\n            numTokens = reveal!.returnValues.numTokens;\n            choice = reveal!.returnValues.choice;\n            didUserCollect = await this.instance.tokenClaims.callAsync(appealChallengeID.toString(), user);\n            isVoterWinner = await this.voting.isVoterWinner(appealChallengeID, user);\n            canUserCollect = isVoterWinner && !didUserCollect;\n          } else {\n            didUserRescue = !(await this.voting.canRescueTokens(user, appealChallengeID));\n          }\n        } else {\n          canUserReveal = !didUserReveal && (await pollHelpers.isInRevealStage(pollData));\n        }\n        canUserRescue =\n          !didUserReveal &&\n          !didUserRescue &&\n          !(await pollHelpers.isInCommitStage(pollData)) &&\n          !(await pollHelpers.isInRevealStage(pollData));\n      }\n    }\n\n    if (didUserCollect) {\n      didCollectAmount = await this.getRewardClaimed(appealChallengeID, user);\n    }\n\n    if (isVoterWinner && !didUserCollect) {\n      voterReward = await this.voterReward(appealChallengeID, new BigNumber(salt as string), user);\n    }\n\n    return {\n      didUserCommit,\n      didUserReveal,\n      canUserReveal,\n      didUserCollect,\n      canUserCollect,\n      didUserRescue,\n      canUserRescue,\n      didCollectAmount,\n      isVoterWinner,\n      salt: new BigNumber(salt as string),\n      numTokens: new BigNumber(numTokens as string),\n      choice: new BigNumber(choice as string),\n      voterReward,\n    };\n  }\n\n  public async getUserChallengeData(challengeID: BigNumber, user: EthAddress): Promise<UserChallengeData> {\n    let didUserCommit;\n    let didUserReveal;\n    let didUserCollect;\n    let didUserRescue = false;\n    let didCollectAmount;\n    let isVoterWinner;\n    let salt;\n    let numTokens;\n    let choice;\n    let voterReward;\n    const challenge = new Challenge(this.ethApi, this.instance, challengeID);\n    const challengeData = await challenge.getChallengeData();\n    const resolved = challengeData.resolved;\n    const pollData = await this.voting.getPoll(challengeID);\n    let canUserReveal;\n    let canUserRescue;\n    let canUserCollect;\n    if (user) {\n      didUserCommit = await this.voting.didCommitVote(user, challengeID);\n      if (didUserCommit) {\n        didUserReveal = await this.voting.didRevealVote(user, challengeID);\n        if (resolved) {\n          if (didUserReveal) {\n            const reveal = await this.voting.getRevealedVoteEvent(challengeID, user);\n            salt = reveal!.returnValues.salt;\n            numTokens = reveal!.returnValues.numTokens;\n            choice = reveal!.returnValues.choice;\n            didUserCollect = await this.instance.tokenClaims.callAsync(challengeID.toString(), user);\n            if (challengeData.appeal && challengeData.appeal.appealGranted) {\n              if (\n                challengeData.appeal.appealChallenge &&\n                challengeData.appeal.appealChallenge.resolved &&\n                (await this.voting.isPollPassed(new BigNumber(challengeData.appeal.appealChallengeID)))\n              ) {\n                isVoterWinner = await this.voting.isVoterWinner(challengeID, user);\n              } else {\n                isVoterWinner = !(await this.voting.isVoterWinner(challengeID, user));\n              }\n            } else {\n              isVoterWinner = await this.voting.isVoterWinner(challengeID, user);\n            }\n            canUserCollect = isVoterWinner && !didUserCollect;\n          } else {\n            didUserRescue = !(await this.voting.canRescueTokens(user, challengeID));\n          }\n        } else {\n          canUserReveal = !didUserReveal && (await pollHelpers.isInRevealStage(pollData));\n        }\n        canUserRescue =\n          !didUserReveal &&\n          !didUserRescue &&\n          !(await pollHelpers.isInCommitStage(pollData)) &&\n          !(await pollHelpers.isInRevealStage(pollData));\n      }\n    }\n\n    if (didUserCollect) {\n      didCollectAmount = await this.getRewardClaimed(challengeID, user);\n    }\n\n    if (isVoterWinner && !didUserCollect) {\n      voterReward = await this.voterReward(challengeID, new BigNumber(salt as string), user);\n    }\n\n    return {\n      didUserCommit,\n      didUserReveal,\n      canUserReveal,\n      didUserCollect,\n      canUserCollect,\n      didUserRescue,\n      canUserRescue,\n      didCollectAmount,\n      isVoterWinner,\n      salt: new BigNumber(salt as string),\n      numTokens: new BigNumber(numTokens as string),\n      choice: new BigNumber(choice as string),\n      voterReward,\n    };\n  }\n\n  public async getRewardClaimed(challengeID: BigNumber, user: EthAddress): Promise<BigNumber> {\n    const reward = await this.instance\n      ._RewardClaimedStream({ challengeID, voter: user }, { fromBlock: this.defaultBlock })\n      .first()\n      .toPromise();\n    return new BigNumber(reward.returnValues.reward);\n  }\n\n  /**\n   * Contract Getters\n   */\n\n  /**\n   * Gets reward for voter\n   * @param challengeID ID of challenge to check\n   * @param salt Salt of vote associated with voter for specified challenge\n   * @param voter Voter of which to check reward\n   */\n  public async voterReward(challengeID: BigNumber, salt: BigNumber, voter?: EthAddress): Promise<BigNumber> {\n    let who = voter;\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.instance.voterReward\n      .callAsync(who, challengeID.toString(), salt.toString())\n      .then(e => new BigNumber(e));\n  }\n\n  /**\n   * Determines number of tokens to award winning party in challenge\n   * @param address ID of challenge to determine reward for\n   */\n  public async determineReward(challengeID: BigNumber): Promise<BigNumber> {\n    return this.instance.determineReward.callAsync(challengeID.toString()).then(e => new BigNumber(e));\n  }\n\n  /**\n   * Gets whether or not specified user has a token claim for specified challenge\n   * @param challengeID ID of challenge to check\n   * @param address Address of voter to check\n   */\n  public async hasClaimedTokens(challengeID: BigNumber, voter?: EthAddress): Promise<boolean> {\n    let who = voter;\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.instance.tokenClaims.callAsync(challengeID.toString(), who);\n  }\n\n  /**\n   * Contract Transactions\n   */\n\n  /**\n   * Starts an application for a listing\n   * @param address Address of new listing\n   * @param deposit How many tokens to deposit to start application\n   * @param applicationContent Content associated with application\n   */\n  public async apply(\n    listingAddress: EthAddress,\n    deposit: BigNumber,\n    applicationContent: string,\n  ): Promise<MultisigProxyTransaction> {\n    // const { uri } = await this.contentProvider.put(applicationContent);\n\n    return this.applyWithURI(listingAddress, deposit, \"\");\n  }\n\n  /**\n   * Starts an application for a listing\n   * @param address Address of new listing\n   * @param deposit How many tokens to deposit to start application\n   * @param applicationContentURI (URI that points to data object)\n   */\n  public async applyWithURI(\n    listingAddress: EthAddress,\n    deposit: BigNumber,\n    applicationContentURI: string,\n  ): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.apply.sendTransactionAsync(listingAddress, deposit.toString(), applicationContentURI);\n  }\n\n  /**\n   * Deposits more tokens into a listing\n   * @param address Address of listing to deposit to\n   * @param depositAmount How many tokens to deposit\n   */\n  public async deposit(listingAddress: EthAddress, depositAmount: BigNumber): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.deposit.sendTransactionAsync(listingAddress, depositAmount.toString());\n  }\n\n  /**\n   * Withdraw tokens from a listing\n   * @param address Address of listing to withdraw from\n   * @param withdrawalAmount How many tokens to withdraw\n   */\n  public async withdraw(listingAddress: EthAddress, withdrawalAmount: BigNumber): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.withdraw.sendTransactionAsync(listingAddress, withdrawalAmount.toString());\n  }\n\n  /**\n   * Exits a listing, returning deposited tokens\n   * @param address Address of listing to exit\n   */\n  public async exitListing(listingAddress: EthAddress): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.exit.sendTransactionAsync(listingAddress);\n  }\n\n  /**\n   * Challenges an application or whitelisted listing\n   * @param listingAddress Address of listing to challenge\n   * @param data Data associated with challenge\n   */\n  public async challenge(listingAddress: EthAddress, data: string = \"\"): Promise<TwoStepEthTransaction> {\n    const { uri } = await this.contentProvider.put(data);\n    return this.challengeWithURI(listingAddress, uri);\n  }\n\n  public async requestAppeal(listingAddress: EthAddress, data: string = \"\"): Promise<TwoStepEthTransaction> {\n    const { uri } = await this.contentProvider.put(data);\n    return this.requestAppealWithURI(listingAddress, uri);\n  }\n\n  public async grantAppeal(listingAddress: EthAddress, data: string = \"\"): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.grantAppeal.sendTransactionAsync(listingAddress, data);\n  }\n\n  public async challengeGrantedAppeal(\n    listingAddress: EthAddress,\n    data: string = \"\",\n  ): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.challengeGrantedAppeal.sendTransactionAsync(listingAddress, data);\n  }\n\n  public async challengeGrantedAppealWithURI(\n    listingAddress: EthAddress,\n    uri: string = \"\",\n  ): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.challengeGrantedAppeal.sendTransactionAsync(listingAddress, uri);\n  }\n\n  /**\n   * This is a low-level call and assumes you stored your content on your own\n   * Challenges an application or whitelisted listing\n   * @param address Address of listing to challenge\n   * @param data Data associated with challenge (URI that points to data object)\n   */\n  public async challengeWithURI(listingAddress: EthAddress, data: string = \"\"): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.challenge.sendTransactionAsync(listingAddress, data);\n  }\n\n  /**\n   * This is a low-level call and assumes you stored your content on your own\n   * Requests an appeal on a challenged application\n   * @param address Address of listing to request appeal\n   * @param data Data associated with requested appeal (URI that points to data object)\n   */\n  public async requestAppealWithURI(listingAddress: EthAddress, data: string = \"\"): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.requestAppeal.sendTransactionAsync(listingAddress, data);\n  }\n\n  /**\n   * Updates status of a listing\n   * @param address Address of new listing\n   */\n  public async updateStatus(listingAddress: EthAddress): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.updateStatus.sendTransactionAsync(listingAddress);\n  }\n\n  /**\n   * Claims reward associated with challenge\n   * @param challengeID ID of challenge to claim reward of\n   * @param salt Salt for user's vote on specified challenge\n   */\n  public async claimReward(challengeID: BigNumber, salt: BigNumber): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.claimReward.sendTransactionAsync(challengeID.toString(), salt.toString());\n  }\n\n  /**\n   * Claims multiple rewards associated with challenges\n   * @param challengeIDs IDs of challenges to claim rewards of\n   * @param salts Salts for user's votes on specified challenges\n   */\n  public async multiClaimReward(challengeIDs: BigNumber[], salts: BigNumber[]): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.claimRewards.sendTransactionAsync(\n      challengeIDs.map(e => e.toString()),\n      salts.map(e => e.toString()),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/council.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { CivilErrors } from \"@joincivil/utils\";\nimport * as Debug from \"debug\";\nimport { EthAddress, TwoStepEthTransaction } from \"../../types\";\nimport { CivilTCRContract } from \"../generated/wrappers/civil_t_c_r\";\nimport { GovernmentContract } from \"../generated/wrappers/government\";\nimport { Multisig, TransactionFilters } from \"../multisig/multisig\";\nimport { MultisigTransaction } from \"../multisig/multisigtransaction\";\nimport { Observable } from \"rxjs\";\nimport { TransactionConfig } from \"web3-core\";\n\nconst debug = Debug(\"civil:tcr\");\n\n/**\n * The Government contract is where parameters related to appeals are stored and where\n * the controlling entities can update them and update the controlling entities as well\n */\nexport class Council {\n  public static async singleton(ethApi: EthApi): Promise<Council> {\n    const tcr = await CivilTCRContract.singletonTrusted(ethApi);\n    const govt = GovernmentContract.atUntrusted(ethApi, await tcr!.government.callAsync());\n    if (!govt || !tcr) {\n      debug(\"Smart-contract wrapper for Parameterizer returned null, unsupported network\");\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const appellateAddr = await govt.getAppellate.callAsync();\n    const multisig = Multisig.atUntrusted(ethApi, appellateAddr);\n    return new Council(govt, tcr, multisig, ethApi);\n  }\n\n  private govtInstance: GovernmentContract;\n  private civilInstance: CivilTCRContract;\n  private multisig: Multisig;\n  private ethApi: EthApi;\n\n  private constructor(govt: GovernmentContract, tcr: CivilTCRContract, multi: Multisig, api: EthApi) {\n    this.govtInstance = govt;\n    this.civilInstance = tcr;\n    this.multisig = multi;\n    this.ethApi = api;\n  }\n\n  public async getRawGrantAppeal(listingAddress: EthAddress, data: string = \"\"): Promise<TransactionConfig> {\n    return this.civilInstance.grantAppeal.getRaw(listingAddress, data, { gas: 0 });\n  }\n\n  public async grantAppeal(listingAddress: EthAddress, data: string = \"\"): Promise<TwoStepEthTransaction<any>> {\n    const txdata = await this.civilInstance.grantAppeal.getRaw(listingAddress, data, { gas: 0 });\n    return this.multisig.submitTransaction(this.civilInstance.address, this.ethApi.toBigNumber(0), txdata.data!);\n  }\n\n  public async confirmAppeal(txId: number): Promise<TwoStepEthTransaction<any>> {\n    return this.multisig.confirmTransaction(txId);\n  }\n\n  public async transferAppellate(newAppellate: EthAddress): Promise<TwoStepEthTransaction<any>> {\n    const txdata = await this.govtInstance.setAppellate.getRaw(newAppellate);\n    return this.multisig.submitTransaction(this.govtInstance.address, this.ethApi.toBigNumber(0), txdata.data!);\n  }\n\n  public async getAppellateMembers(): Promise<string[]> {\n    return this.multisig.owners();\n  }\n\n  public transactions(filters: TransactionFilters = { pending: true }): Observable<MultisigTransaction> {\n    return this.multisig.transactions(filters);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/cvltoken.ts",
    "content": "import { EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport { CivilErrors, getDefaultFromBlock } from \"@joincivil/utils\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { Observable } from \"rxjs\";\nimport { EthAddress } from \"../../types\";\nimport { BaseWrapper } from \"../basewrapper\";\nimport { CVLTokenMultisigProxy } from \"../generated/multisig/c_v_l_token\";\nimport { CVLTokenContract } from \"../generated/wrappers/c_v_l_token\";\nimport { CivilTokenControllerContract } from \"../generated/wrappers/civil_token_controller\";\nimport { MultisigProxyTransaction } from \"../multisig/basemultisigproxy\";\n\n/**\n * CVLToken allows user to interface with token.\n *\n * NOTE: If instantiated with a multisig wallet, all transactions are proxied through multisig, and all functions default to multisig address as the \"current\" user.\n */\nexport class CVLToken extends BaseWrapper<CVLTokenContract> {\n  public static async atUntrusted(\n    web3wrapper: EthApi,\n    address: EthAddress,\n    multisigAddress?: EthAddress,\n  ): Promise<CVLToken> {\n    const instance = CVLTokenContract.atUntrusted(web3wrapper, address);\n    const multisigProxy = await CVLTokenMultisigProxy.create(web3wrapper, instance, multisigAddress);\n    const tokenController = await CivilTokenControllerContract.singletonTrusted(web3wrapper);\n    if (!tokenController) {\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const defaultBlock = getDefaultFromBlock(await web3wrapper.network());\n    return new CVLToken(web3wrapper, instance, multisigProxy, tokenController, defaultBlock);\n  }\n\n  public static async singletonTrusted(web3wrapper: EthApi, multisigAddress?: EthAddress): Promise<CVLToken> {\n    const instance = (await CVLTokenContract.singletonTrusted(web3wrapper))!;\n    const multisigProxy = await CVLTokenMultisigProxy.create(web3wrapper, instance, multisigAddress);\n    const tokenController = await CivilTokenControllerContract.singletonTrusted(web3wrapper);\n    if (!tokenController) {\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n\n    const defaultBlock = getDefaultFromBlock(await web3wrapper.network());\n    return new CVLToken(web3wrapper, instance, multisigProxy, tokenController, defaultBlock);\n  }\n\n  /** If instantiated with `multisigAddress` undefined, proxy will send transactions directly to the contract instance. */\n  private multisigProxy: CVLTokenMultisigProxy;\n  private tokenController: CivilTokenControllerContract;\n\n  private constructor(\n    ethApi: EthApi,\n    instance: CVLTokenContract,\n    multisigProxy: CVLTokenMultisigProxy,\n    tokenController: CivilTokenControllerContract,\n    defaultBlock: number,\n  ) {\n    super(ethApi, instance, defaultBlock);\n    this.multisigProxy = multisigProxy;\n    this.tokenController = tokenController;\n  }\n\n  /**\n   * Contract Transactions\n   */\n\n  /**\n   * Approve spender to spend certain amount of tokens on user's behalf\n   * @param spender address to approve as spender of tokens\n   * @param numTokens number of tokens to approve for spender to spend on user's behalf\n   */\n  public async approveSpender(spender: EthAddress, numTokens: BigNumber): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.approve.sendTransactionAsync(spender, numTokens.toString());\n  }\n\n  public balanceUpdate(fromBlock: number = this.defaultBlock, user: EthAddress): Observable<BigNumber> {\n    return this.instance\n      .TransferStream({ from: user }, { fromBlock })\n      .merge(this.instance.TransferStream({ to: user }, { fromBlock }))\n      .concatMap(async () => this.getBalance(user));\n  }\n\n  /**\n   * Contract Getters\n   */\n\n  /**\n   * Get number of approved tokens for spender\n   * @param spender spender to check approved tokens for\n   * @param tokenOwner address whose tokens we check approval for (defaults to current user, or multisig if instantiated with multisig)\n   */\n  public async getApprovedTokensForSpender(spender: EthAddress, tokenOwner?: EthAddress): Promise<BigNumber> {\n    let who = tokenOwner;\n    if (!who) {\n      who = await this.getDefaultCurrentAddress();\n    }\n    return this.instance.allowance.callAsync(who, spender).then(e => new BigNumber(e));\n  }\n\n  /**\n   * Check the token balance of an address\n   * @param tokenOwner address to check balance of (defaults to current user, or multisig if instantiated with multisig)\n   */\n  public async getBalance(tokenOwner?: EthAddress): Promise<BigNumber> {\n    let who = tokenOwner;\n    if (!who) {\n      who = await this.getDefaultCurrentAddress();\n    }\n    return this.instance.balanceOf.callAsync(who).then(e => new BigNumber(e));\n  }\n\n  public async isTransferAllowed(to: EthAddress, from?: EthAddress): Promise<boolean> {\n    let who = from;\n    if (!who) {\n      who = await this.getDefaultCurrentAddress();\n    }\n    const code = await this.tokenController.detectTransferRestriction.callAsync(who, to, \"1\");\n\n    return code === \"0\";\n  }\n\n  public async isCivilian(user: EthAddress): Promise<boolean> {\n    return this.tokenController.civilianList.callAsync(user);\n  }\n\n  public async isUnlocked(user: EthAddress): Promise<boolean> {\n    return this.tokenController.unlockedList.callAsync(user);\n  }\n\n  /**\n   * Transfer tokens from user or multisig to another wallet\n   * @param recipient address to send tokens to\n   * @param numTokens number of tokens to send\n   */\n  public async transfer(recipient: EthAddress, numTokens: BigNumber): Promise<MultisigProxyTransaction> {\n    return this.multisigProxy.transfer.sendTransactionAsync(recipient, numTokens.toString());\n  }\n\n  public async transferToSelf(numTokens: BigNumber): Promise<MultisigProxyTransaction> {\n    const recipient = await requireAccount(this.ethApi).toPromise();\n    return this.multisigProxy.transfer.sendTransactionAsync(recipient, numTokens.toString());\n  }\n\n  private async getDefaultCurrentAddress(): Promise<EthAddress> {\n    let who;\n    if (this.multisigProxy.multisigEnabled) {\n      who = await this.multisigProxy.getMultisigAddress();\n    }\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return who;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/government.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { CivilErrors, getDefaultFromBlock } from \"@joincivil/utils\";\nimport { EthAddress, Param, BigNumber, ParamProposalState } from \"@joincivil/typescript-types\";\nimport * as Debug from \"debug\";\nimport { Observable } from \"rxjs\";\nimport { TwoStepEthTransaction } from \"../../types\";\nimport { BaseWrapper } from \"../basewrapper\";\nimport { GovernmentContract } from \"../generated/wrappers/government\";\nimport { Multisig } from \"../multisig/multisig\";\nimport { Voting } from \"./voting\";\nimport { createTwoStepSimple } from \"../utils/contracts\";\n\nconst debug = Debug(\"civil:tcr\");\n\nexport const enum GovtParameters {\n  requestAppealLen = \"requestAppealLen\",\n  judgeAppealLen = \"judgeAppealLen\",\n  appealFee = \"appealFee\",\n  appealVotePercentage = \"appealVotePercentage\",\n  govtPCommitStageLen = \"govtPCommitStageLen\",\n  govtPRevealStageLen = \"govtPRevealStageLen\",\n}\n\n/**\n * The Government contract is where parameters related to appeals are stored and where\n * the controlling entities can update them and update the controlling entities as well\n */\nexport class Government extends BaseWrapper<GovernmentContract> {\n  public static async singleton(ethApi: EthApi, multisigAddress: EthAddress): Promise<Government> {\n    const instance = await GovernmentContract.singletonTrusted(ethApi);\n    if (!instance) {\n      debug(\"Smart-contract wrapper for Parameterizer returned null, unsupported network\");\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const multisig = Multisig.atUntrusted(ethApi, multisigAddress);\n    const defaultBlock = getDefaultFromBlock(await ethApi.network());\n    return new Government(ethApi, instance, multisig, defaultBlock);\n  }\n\n  public static async atUntrusted(web3wrapper: EthApi, address: EthAddress): Promise<Government> {\n    const instance = GovernmentContract.atUntrusted(web3wrapper, address);\n    const appellateAddr = await instance.appellate.callAsync();\n    const multisig = Multisig.atUntrusted(web3wrapper, appellateAddr);\n    const defaultBlock = getDefaultFromBlock(await web3wrapper.network());\n    return new Government(web3wrapper, instance, multisig, defaultBlock);\n  }\n\n  private multisig: Multisig;\n\n  private constructor(ethApi: EthApi, instance: GovernmentContract, multisig: Multisig, defaultBlock: number) {\n    super(ethApi, instance, defaultBlock);\n    this.multisig = multisig;\n  }\n\n  /**\n   * Returns Voting instance associated with this Government\n   */\n  public async getVoting(): Promise<Voting> {\n    return Voting.atUntrusted(this.ethApi, await this.getVotingAddress());\n  }\n\n  /**\n   * Get address for voting contract used with this Government\n   */\n  public async getVotingAddress(): Promise<EthAddress> {\n    return this.instance.voting.callAsync();\n  }\n\n  /**\n   * Gets an unending stream of parameters being set\n   */\n  public getParameterSet(fromBlock: number = this.defaultBlock): Observable<Param> {\n    return this.instance._ParameterSetStream({}, { fromBlock }).map(e => {\n      return {\n        paramName: e.returnValues.name,\n        value: new BigNumber(e.returnValues.value),\n      };\n    });\n  }\n\n  public async getAppealFee(): Promise<BigNumber> {\n    return this.getParameterValue(\"appealFee\");\n  }\n  /**\n   * Gets the current value of the specified parameter\n   * @param parameter key of parameter to check\n   */\n  public async getParameterValue(parameter: string): Promise<BigNumber> {\n    return this.instance.get.callAsync(parameter).then(d => new BigNumber(d));\n  }\n\n  /**\n   * Set value of Government Parameter\n   * @param paramName name of parameter you intend to change\n   * @param newValue value you want parameter to be changed to\n   */\n  public async set(paramName: GovtParameters | string, newValue: BigNumber): Promise<TwoStepEthTransaction<any>> {\n    const txdata = await this.instance.proposeReparameterization.getRaw(paramName, newValue.toString(), { gas: 0 });\n    return this.multisig.submitTransaction(this.instance.address, this.ethApi.toBigNumber(0), txdata.data!);\n  }\n\n  public async processProposal(propID: string): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(this.ethApi, await this.instance.processProposal.sendTransactionAsync(propID));\n  }\n\n  /**\n   * Get the URI of the Civil Constitution\n   */\n  public async getConstitutionURI(): Promise<string> {\n    return this.instance.constitutionURI.callAsync();\n  }\n\n  /**\n   * Get the hash of the Civil Constitution\n   */\n  public async getConstitutionHash(): Promise<string> {\n    return this.instance.constitutionHash.callAsync();\n  }\n\n  public async getAppellate(): Promise<EthAddress> {\n    return this.instance.getAppellate.callAsync();\n  }\n\n  public async getController(): Promise<EthAddress> {\n    return this.instance.getGovernmentController.callAsync();\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals currently in\n   * Challenge Commit Phase\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events.\n   * @returns currently active proposals in Challenge Commit Phase propIDs\n   */\n  public propIDsInCommitPhase(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance\n      ._GovtReparameterizationProposalStream({}, { fromBlock })\n      .map(e => e.returnValues.propID)\n      .concatFilter(async propID => this.isPropInCommitPhase(propID));\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals currently in\n   * Challenge Reveal Phase\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events\n   * @returns currently active proposals in Challenge Reveal Phase propIDs\n   */\n  public propIDsInRevealPhase(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance\n      ._GovtReparameterizationProposalStream({}, { fromBlock })\n      .map(e => e.returnValues.propID)\n      .concatFilter(async propID => this.isPropInRevealPhase(propID));\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals that can be\n   * processed right now. Includes unchallenged applications that have passed their application\n   * expiry time, and proposals with challenges that can be resolved.\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events\n   * @returns propIDs for proposals that can be updated\n   */\n  public propIDsToProcess(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance\n      ._GovtReparameterizationProposalStream({}, { fromBlock })\n      .map(e => e.returnValues.propID)\n      .concatFilter(async propID => this.isPropInResolvePhase(propID));\n  }\n\n  public async getPropState(propID: string): Promise<ParamProposalState> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return ParamProposalState.NOT_FOUND;\n    } else if (await this.isPropInCommitPhase(propID)) {\n      return ParamProposalState.CHALLENGED_IN_COMMIT_VOTE_PHASE;\n    } else if (await this.isPropInRevealPhase(propID)) {\n      return ParamProposalState.CHALLENGED_IN_REVEAL_VOTE_PHASE;\n    } else if (await this.isPropInResolvePhase(propID)) {\n      return ParamProposalState.READY_TO_RESOLVE_CHALLENGE;\n    } else {\n      return ParamProposalState.NOT_FOUND;\n    }\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Challenge Commit Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInCommitPhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [challengeID] = await this.instance.proposals.callAsync(propID);\n    if (new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const voting = await this.getVoting();\n    return voting.isCommitPeriodActive(new BigNumber(challengeID));\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Challenge Reveal Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInRevealPhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [challengeID] = await this.instance.proposals.callAsync(propID);\n    if (new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const voting = await this.getVoting();\n    return voting.isRevealPeriodActive(new BigNumber(challengeID));\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Challenge Resolve Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInResolvePhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [challengeID] = await this.instance.proposals.callAsync(propID);\n    if (new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const voting = await this.getVoting();\n    return voting.hasPollEnded(new BigNumber(challengeID));\n  }\n\n  /**\n   * Gets the current ChallengeID of the specified parameter\n   * @param parameter key of parameter to check\n   */\n  public async getChallengeID(parameter: string): Promise<BigNumber> {\n    const [challengeID] = await this.instance.proposals.callAsync(parameter);\n    return new BigNumber(challengeID);\n  }\n\n  /**\n   *\n   * @param propID id of proposal to check\n   * @throws {CivilErrors.NoChallenge}\n   */\n  public async getPropCommitExpiry(propID: string): Promise<Date> {\n    const challengeID = await this.getChallengeID(propID);\n    if (challengeID.isZero()) {\n      throw CivilErrors.NoChallenge;\n    }\n    const voting = await this.getVoting();\n    const poll = await voting.getPoll(challengeID);\n    const expiryTimestamp = poll.commitEndDate;\n    return new Date(expiryTimestamp.toNumber() * 1000);\n  }\n\n  /**\n   *\n   * @param propID id of proposal to check\n   * @throws {CivilErrors.NoChallenge}\n   */\n  public async getPropRevealExpiry(propID: string): Promise<Date> {\n    const challengeID = await this.getChallengeID(propID);\n    if (challengeID.isZero()) {\n      throw CivilErrors.NoChallenge;\n    }\n    const voting = await this.getVoting();\n    const poll = await voting.getPoll(challengeID);\n    const expiryTimestamp = poll.revealEndDate;\n    return new Date(expiryTimestamp.toNumber() * 1000);\n  }\n\n  /**\n   * Returns the date by which a proposal must be processed. Successful proposals must\n   * be processed within a certain timeframe, to avoid gaming the parameterizer.\n   * @param propID ID of prop to check\n   */\n  public async getPropProcessBy(propID: string): Promise<Date> {\n    const [, , expiryTimestamp] = await this.instance.proposals.callAsync(propID);\n    return new Date(new BigNumber(expiryTimestamp).toNumber() * 1000);\n  }\n\n  /**\n   * Returns the name of the paramater associated with the given proposal\n   * @param propID ID of prop to check\n   */\n  public async getPropName(propID: string): Promise<string> {\n    const [, name] = await this.instance.proposals.callAsync(propID);\n    return name;\n  }\n\n  /**\n   * Returns the value proposed associated with the given proposal\n   * @param propID ID of prop to check\n   */\n  public async getPropValue(propID: string): Promise<BigNumber> {\n    const [, , , value] = await this.instance.proposals.callAsync(propID);\n    return new BigNumber(value);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/listing.ts",
    "content": "import { Observable, Subscription, BehaviorSubject } from \"rxjs\";\nimport { CivilTCRContract, CivilTCR } from \"../generated/wrappers/civil_t_c_r\";\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { TimestampedEvent } from \"../../types\";\nimport { createTimestampedEvent } from \"../../utils/events\";\nimport { Challenge } from \"./challenge\";\nimport { BigNumber, EthAddress, ListingWrapper, ListingData } from \"@joincivil/typescript-types\";\n\nexport class Listing {\n  private ethApi: EthApi;\n  private tcrInstance: CivilTCRContract;\n  private listingAddress: EthAddress;\n  private defaultBlock: number;\n\n  constructor(ethApi: EthApi, instance: CivilTCRContract, address: EthAddress, defaultBlock: number) {\n    this.ethApi = ethApi;\n    this.tcrInstance = instance;\n    this.listingAddress = address;\n    this.defaultBlock = defaultBlock;\n  }\n\n  public async getListingWrapper(): Promise<ListingWrapper> {\n    const data = await this.getListingData();\n    return {\n      address: this.listingAddress,\n      data,\n    };\n  }\n\n  public async getListingData(): Promise<ListingData> {\n    const [appExpiry, isWhitelisted, owner, unstakedDeposit, challengeID] = await this.tcrInstance.listings.callAsync(\n      this.listingAddress,\n    );\n    let challenge;\n    if (!new BigNumber(challengeID).isZero()) {\n      const c = new Challenge(this.ethApi, this.tcrInstance, new BigNumber(challengeID), this.listingAddress);\n      challenge = await c.getChallengeData();\n    }\n    return {\n      appExpiry: new BigNumber(appExpiry),\n      isWhitelisted,\n      owner,\n      unstakedDeposit: new BigNumber(unstakedDeposit),\n      challengeID: new BigNumber(challengeID),\n      challenge,\n    };\n  }\n\n  //#region EventStreams\n\n  public applications(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._Application>> {\n    return this.tcrInstance._ApplicationStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._Application>(this.ethApi, e);\n    });\n  }\n\n  public challenges(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._Challenge>> {\n    return this.tcrInstance._ChallengeStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._Challenge>(this.ethApi, e);\n    });\n  }\n\n  public deposits(fromBlock: number = this.defaultBlock): Observable<TimestampedEvent<CivilTCR.LogEvents._Deposit>> {\n    return this.tcrInstance._DepositStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._Deposit>(this.ethApi, e);\n    });\n  }\n\n  public withdrawls(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._Withdrawal>> {\n    return this.tcrInstance._WithdrawalStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._Withdrawal>(this.ethApi, e);\n    });\n  }\n\n  public whitelisteds(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._ApplicationWhitelisted>> {\n    return this.tcrInstance\n      ._ApplicationWhitelistedStream({ listingAddress: this.listingAddress }, { fromBlock })\n      .map(e => {\n        return createTimestampedEvent<CivilTCR.LogEvents._ApplicationWhitelisted>(this.ethApi, e);\n      });\n  }\n\n  public applicationRemoveds(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._ApplicationRemoved>> {\n    return this.tcrInstance._ApplicationRemovedStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._ApplicationRemoved>(this.ethApi, e);\n    });\n  }\n\n  public listingRemoveds(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._ListingRemoved>> {\n    return this.tcrInstance._ListingRemovedStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._ListingRemoved>(this.ethApi, e);\n    });\n  }\n\n  public failedChallenges(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._ChallengeFailed>> {\n    return this.tcrInstance._ChallengeFailedStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._ChallengeFailed>(this.ethApi, e);\n    });\n  }\n\n  public successfulChallenges(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._ChallengeSucceeded>> {\n    return this.tcrInstance._ChallengeSucceededStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._ChallengeSucceeded>(this.ethApi, e);\n    });\n  }\n\n  public touchedAndRemoves(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._TouchAndRemoved>> {\n    return this.tcrInstance._TouchAndRemovedStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._TouchAndRemoved>(this.ethApi, e);\n    });\n  }\n\n  public appealChallenges(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._GrantedAppealChallenged>> {\n    return this.tcrInstance\n      ._GrantedAppealChallengedStream({ listingAddress: this.listingAddress }, { fromBlock })\n      .map(e => {\n        return createTimestampedEvent<CivilTCR.LogEvents._GrantedAppealChallenged>(this.ethApi, e);\n      });\n  }\n\n  public appealGranteds(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._AppealGranted>> {\n    return this.tcrInstance._AppealGrantedStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._AppealGranted>(this.ethApi, e);\n    });\n  }\n\n  public appealRequesteds(\n    fromBlock: number = this.defaultBlock,\n  ): Observable<TimestampedEvent<CivilTCR.LogEvents._AppealRequested>> {\n    return this.tcrInstance._AppealRequestedStream({ listingAddress: this.listingAddress }, { fromBlock }).map(e => {\n      return createTimestampedEvent<CivilTCR.LogEvents._AppealRequested>(this.ethApi, e);\n    });\n  }\n\n  public compositeObservables(start: number = 0): Observable<any> {\n    const appealChallenges = this.appealChallenges(start);\n    const appealGranteds = this.appealGranteds(start);\n    const appealRequesteds = this.appealRequesteds(start);\n    const applicationRemoveds = this.applicationRemoveds(start);\n    const applications = this.applications(start);\n    const challenges = this.challenges(start);\n    const deposits = this.deposits(start);\n    const failedChallenges = this.failedChallenges(start);\n    const listingRemoveds = this.listingRemoveds(start);\n    const successfulChallenges = this.successfulChallenges(start);\n    const touchedAndRemoves = this.touchedAndRemoves(start);\n    const whitelisteds = this.whitelisteds(start);\n    const withdrawls = this.withdrawls(start);\n\n    return Observable.merge(\n      appealChallenges,\n      appealGranteds,\n      appealRequesteds,\n      applicationRemoveds,\n      applications,\n      challenges,\n      deposits,\n      failedChallenges,\n      listingRemoveds,\n      successfulChallenges,\n      touchedAndRemoves,\n      whitelisteds,\n      withdrawls,\n    );\n  }\n  public compositeEventsSubscription(start: number = 0): Subscription {\n    return this.compositeObservables(start).subscribe();\n  }\n\n  public latestChallengeSucceeded(): BehaviorSubject<\n    TimestampedEvent<CivilTCR.LogEvents._ChallengeSucceeded> | undefined\n  > {\n    const subject = new BehaviorSubject<TimestampedEvent<CivilTCR.LogEvents._ChallengeSucceeded> | undefined>(\n      undefined,\n    );\n    this.successfulChallenges().subscribe(subject);\n    return subject;\n  }\n\n  public latestWhitelisted(): BehaviorSubject<\n    TimestampedEvent<CivilTCR.LogEvents._ApplicationWhitelisted> | undefined\n  > {\n    const subject = new BehaviorSubject<TimestampedEvent<CivilTCR.LogEvents._ApplicationWhitelisted> | undefined>(\n      undefined,\n    );\n    this.whitelisteds().subscribe(subject);\n    return subject;\n  }\n\n  public latestListingRemoved(): BehaviorSubject<TimestampedEvent<CivilTCR.LogEvents._ListingRemoved> | undefined> {\n    const subject = new BehaviorSubject<TimestampedEvent<CivilTCR.LogEvents._ApplicationRemoved> | undefined>(\n      undefined,\n    );\n    this.listingRemoveds().subscribe(subject);\n    return subject;\n  }\n\n  //#endregion\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/parameterizer.ts",
    "content": "import {\n  Bytes32,\n  EthAddress,\n  BigNumber,\n  ParamProposalState,\n  ParamProp,\n  PollID,\n  ParamPropChallengeData,\n  UserChallengeData,\n  WrappedPropID,\n} from \"@joincivil/typescript-types\";\nimport { Observable } from \"rxjs\";\nimport * as Debug from \"debug\";\nimport { CivilErrors, getDefaultFromBlock, pollHelpers } from \"@joincivil/utils\";\n\nimport { TwoStepEthTransaction } from \"../../types\";\nimport { EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport { BaseWrapper } from \"../basewrapper\";\nimport { CivilParameterizerContract } from \"../generated/wrappers/civil_parameterizer\";\nimport { createTwoStepSimple } from \"../utils/contracts\";\nimport { Voting } from \"./voting\";\n\nconst debug = Debug(\"civil:tcr\");\n\nexport const enum Parameters {\n  minDeposit = \"minDepost\",\n  pMinDeposit = \"pMinDeposit\",\n  applyStageLen = \"applyStageLen\",\n  pApplyStageLen = \"pApplyStageLen\",\n  commitStageLen = \"commitStageLen\",\n  pCommitStageLen = \"pCommitStageLen\",\n  revealStageLen = \"revealStageLen\",\n  pRevealStageLen = \"pRevealStageLen\",\n  dispensationPct = \"dispensationPct\",\n  pDispensationPct = \"pDispensationPct\",\n  voteQuorum = \"voteQuorum\",\n  pVoteQuorum = \"pVoteQuorum\",\n  challengeAppealLen = \"challengeAppealLen\",\n  challengeAppealCommitLen = \"challengeAppealCommitLen\",\n  challengeAppealRevealLen = \"challengeAppealRevealLen\",\n}\n\nfunction extractPropID(e: any): string {\n  return e.returnValues.propID;\n}\n\n/**\n * The Parameterizer is where we store and update values associated with \"parameters\", variables\n * needed for logic of the Registry.\n * Users can propose new values for parameters, as well as challenge and then vote on those proposals\n */\nexport class Parameterizer extends BaseWrapper<CivilParameterizerContract> {\n  public static async singleton(ethApi: EthApi): Promise<Parameterizer> {\n    const instance = await CivilParameterizerContract.singletonTrusted(ethApi);\n    if (!instance) {\n      debug(\"Smart-contract wrapper for Parameterizer returned null, unsupported network\");\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const defaultBlock = getDefaultFromBlock(await ethApi.network());\n    return new Parameterizer(ethApi, instance, await Voting.singleton(ethApi), defaultBlock);\n  }\n\n  public static async atUntrusted(web3wrapper: EthApi, address: EthAddress): Promise<Parameterizer> {\n    const instance = CivilParameterizerContract.atUntrusted(web3wrapper, address);\n    const defaultBlock = getDefaultFromBlock(await web3wrapper.network());\n    return new Parameterizer(web3wrapper, instance, await Voting.singleton(web3wrapper), defaultBlock);\n  }\n\n  private voting: Voting;\n  private constructor(ethApi: EthApi, instance: CivilParameterizerContract, voting: Voting, defaultBlock: number) {\n    super(ethApi, instance, defaultBlock);\n    this.voting = voting;\n    this.defaultBlock = defaultBlock;\n  }\n\n  /**\n   * Returns Voting instance associated with this TCR\n   */\n  public async getVoting(): Promise<Voting> {\n    return Voting.atUntrusted(this.ethApi, await this.getVotingAddress());\n  }\n\n  /**\n   * Get address for voting contract used with this TCR\n   */\n  public async getVotingAddress(): Promise<EthAddress> {\n    return this.instance.voting.callAsync();\n  }\n\n  public async getPropState(propID: string): Promise<ParamProposalState> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return ParamProposalState.NOT_FOUND;\n    } else if (await this.isPropInUnchallengedApplicationPhase(propID)) {\n      return ParamProposalState.APPLYING;\n    } else if (await this.isPropInUnchallengedApplicationUpdatePhase(propID)) {\n      return ParamProposalState.READY_TO_PROCESS;\n    } else if (await this.isPropInChallengeCommitPhase(propID)) {\n      return ParamProposalState.CHALLENGED_IN_COMMIT_VOTE_PHASE;\n    } else if (await this.isPropInChallengeRevealPhase(propID)) {\n      return ParamProposalState.CHALLENGED_IN_REVEAL_VOTE_PHASE;\n    } else if (await this.isPropInChallengeResolvePhase(propID)) {\n      return ParamProposalState.READY_TO_RESOLVE_CHALLENGE;\n    } else {\n      return ParamProposalState.NOT_FOUND;\n    }\n  }\n\n  /**\n   * Event Streams\n   */\n\n  /**\n   * An unending stream of the propIDs of all active Parameterizer proposals\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events.\n   * @returns currently active proposals propIDs\n   */\n  public propIDsInApplicationPhase(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance\n      ._ReparameterizationProposalStream({}, { fromBlock })\n      .map(extractPropID)\n      .concatFilter(async propID => this.isPropInUnchallengedApplicationPhase(propID));\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals currently in\n   * Challenge Commit Phase\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events.\n   * @returns currently active proposals in Challenge Commit Phase propIDs\n   */\n  public propIDsInChallengeCommitPhase(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance\n      ._NewChallengeStream({}, { fromBlock })\n      .map(extractPropID)\n      .concatFilter(async propID => this.isPropInChallengeCommitPhase(propID));\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals currently in\n   * Challenge Reveal Phase\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events\n   * @returns currently active proposals in Challenge Reveal Phase propIDs\n   */\n  public propIDsInChallengeRevealPhase(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance\n      ._NewChallengeStream({}, { fromBlock })\n      .map(extractPropID)\n      .concatFilter(async propID => this.isPropInChallengeRevealPhase(propID));\n  }\n\n  public propIDsInChallenge(fromBlock: number = this.defaultBlock): Observable<string> {\n    return this.instance._NewChallengeStream({}, { fromBlock }).map(extractPropID);\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals that can be\n   * processed right now. Includes unchallenged applications that have passed their application\n   * expiry time, and proposals with challenges that can be resolved.\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events\n   * @returns propIDs for proposals that can be updated\n   */\n  public propIDsToProcess(fromBlock: number = this.defaultBlock): Observable<string> {\n    const applicationsToProcess = this.instance\n      ._ReparameterizationProposalStream({}, { fromBlock })\n      .map(extractPropID)\n      .concatFilter(async propID => this.isPropInUnchallengedApplicationUpdatePhase(propID));\n\n    const challengesToResolve = this.instance\n      ._NewChallengeStream({}, { fromBlock })\n      .map(extractPropID)\n      .concatFilter(async propID => this.isPropInChallengeResolvePhase(propID));\n\n    return Observable.merge(applicationsToProcess, challengesToResolve).distinct();\n  }\n\n  /**\n   * An unending stream of the pollIDs of all Reparametization proposals that have\n   * been challenged and had those challenges resolved.\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events\n   * @returns pollIDs for proposals that have been challenged and resolved\n   */\n  public pollIDsForResolvedChallenges(propID: string, fromBlock: number = this.defaultBlock): Observable<PollID> {\n    return this.instance\n      ._NewChallengeStream({ propID }, { fromBlock })\n      .concatFilter(async e => this.isChallengeResolved(new BigNumber(e.returnValues.challengeID)))\n      .map(e => new BigNumber(e.returnValues.challengeID));\n  }\n\n  /**\n   * An unending stream of the propIDs of all Reparametization proposals that have\n   * been challenged and had those challenges resolved.\n   * @param fromBlock Starting block in history for events. Set to \"latest\" for only new events\n   * @returns propIDs for proposals that have been challenged and resolved\n   */\n  public propIDsForResolvedChallenges(fromBlock: number = this.defaultBlock): Observable<EthAddress> {\n    return this.instance\n      ._NewChallengeStream({}, { fromBlock })\n      .concatFilter(async e => this.isChallengeResolved(new BigNumber(e.returnValues.challengeID)))\n      .map(extractPropID);\n  }\n\n  public allProposalChallengeIDsEver(): Observable<WrappedPropID> {\n    return this.instance._NewChallengeStream({}, { fromBlock: this.defaultBlock }).map(e => {\n      return {\n        propID: extractPropID(e),\n        challengeID: new BigNumber(e.returnValues.challengeID),\n      };\n    });\n  }\n\n  /**\n   * Contract Transactions\n   */\n\n  /**\n   * Propose a \"reparameterization\" (change the value of a parameter)\n   * @param paramName name of parameter you intend to change\n   * @param newValue value you want parameter to be changed to\n   */\n  public async proposeReparameterization(\n    paramName: Parameters | string,\n    newValue: BigNumber,\n  ): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.proposeReparameterization.sendTransactionAsync(paramName, newValue.toString()),\n    );\n  }\n\n  /**\n   * Challenge a \"reparameterization\"\n   * @param propID the ID of the proposed reparameterization you wish to challenge\n   */\n  public async challengeReparameterization(propID: Bytes32): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.challengeReparameterization.sendTransactionAsync(propID),\n    );\n  }\n\n  /**\n   * Update state of proposal. Changes value of parameter if proposal passes without\n   * challenge or wins challenge. Deletes it if it loses. Distributes tokens correctly.\n   * @param propID the ID of the proposed reparameterization to process\n   */\n  public async processProposal(propID: Bytes32): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(this.ethApi, await this.instance.processProposal.sendTransactionAsync(propID));\n  }\n\n  /**\n   * Claims reward associated with challenge\n   * @param challengeID ID of challenge to claim reward of\n   * @param salt Salt for user's vote on specified challenge\n   */\n  public async claimReward(challengeID: BigNumber, salt: BigNumber): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.claimReward.sendTransactionAsync(challengeID.toString(), salt.toString()),\n    );\n  }\n\n  /**\n   * Contract Getters\n   */\n\n  /**\n   * Get ParamProp for proposal\n   * @param propID ID of proposal to get\n   */\n  public async getProposal(propID: string): Promise<ParamProp> {\n    const [, challengeID, , name, , , value] = await this.instance.proposals.callAsync(propID);\n    return {\n      propID,\n      paramName: name,\n      proposedValue: new BigNumber(value),\n      pollID: new BigNumber(challengeID),\n    };\n  }\n\n  /**\n   * Gets reward for voter\n   * @param challengeID ID of challenge to check\n   * @param salt Salt of vote associated with voter for specified challenge\n   * @param voter Voter of which to check reward\n   */\n  public async voterReward(challengeID: BigNumber, salt: BigNumber, voter?: EthAddress): Promise<BigNumber> {\n    let who = voter;\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.instance.voterReward\n      .callAsync(who, challengeID.toString(), salt.toString())\n      .then(e => new BigNumber(e));\n  }\n\n  /**\n   * Gets the current value of the specified parameter\n   * @param parameter key of parameter to check\n   */\n  public async getParameterValue(parameter: string): Promise<BigNumber> {\n    return this.instance.get.callAsync(parameter).then(e => new BigNumber(e));\n  }\n\n  /**\n   * Gets the current ChallengeID of the specified parameter\n   * @param parameter key of parameter to check\n   */\n  public async getChallengeID(parameter: string): Promise<BigNumber> {\n    const [, challengeID] = await this.instance.proposals.callAsync(parameter);\n    return new BigNumber(challengeID);\n  }\n\n  /**\n   * Gets the challenge data for the specified proposal challenge ID\n   * @param challenge ID of prop challenge to check\n   */\n  public async getChallengeData(challengeID: BigNumber): Promise<ParamPropChallengeData> {\n    const [rewardPool, challenger, resolved, stake, totalTokens] = await this.instance.challenges.callAsync(\n      challengeID.toString(),\n    );\n\n    const voting = await this.getVoting();\n    const poll = await voting.getPoll(challengeID);\n\n    return {\n      rewardPool: new BigNumber(rewardPool),\n      challenger,\n      resolved,\n      stake: new BigNumber(stake),\n      totalTokens: new BigNumber(totalTokens),\n      poll,\n    };\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Unchallenged Applicaton Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInUnchallengedApplicationPhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [appExpiry, challengeID] = await this.instance.proposals.callAsync(propID);\n    if (!new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const appExpiryDate = new Date(new BigNumber(appExpiry).toNumber() * 1000);\n\n    if (appExpiryDate < new Date()) {\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Returns whether or not a Proposal Application can be Updated (has passed Application\n   * phase without being challenged)\n   * @param propID ID of prop to check\n   */\n  public async isPropInUnchallengedApplicationUpdatePhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [appExpiry, challengeID] = await this.instance.proposals.callAsync(propID);\n    if (!new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const appExpiryDate = new Date(new BigNumber(appExpiry).toNumber() * 1000);\n    if (appExpiryDate > new Date()) {\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Challenge Commit Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInChallengeCommitPhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [, challengeID] = await this.instance.proposals.callAsync(propID);\n    if (new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const voting = await this.getVoting();\n    return voting.isCommitPeriodActive(new BigNumber(challengeID));\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Challenge Reveal Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInChallengeRevealPhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [, challengeID] = await this.instance.proposals.callAsync(propID);\n    if (new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const voting = await this.getVoting();\n    return voting.isRevealPeriodActive(new BigNumber(challengeID));\n  }\n\n  /**\n   * Returns whether or not a Proposal is in the Challenge Resolve Phase\n   * @param propID ID of prop to check\n   */\n  public async isPropInChallengeResolvePhase(propID: string): Promise<boolean> {\n    if (!(await this.instance.propExists.callAsync(propID))) {\n      return false;\n    }\n    const [, challengeID] = await this.instance.proposals.callAsync(propID);\n    if (new BigNumber(challengeID).isZero()) {\n      return false;\n    }\n\n    const voting = await this.getVoting();\n    return voting.hasPollEnded(new BigNumber(challengeID));\n  }\n\n  /**\n   * Returns whether or not a Challenge has been resolved\n   * @param propID ID of poll (challenge) to check\n   */\n  public async isChallengeResolved(pollID: BigNumber): Promise<boolean> {\n    const [, , resolved] = await this.instance.challenges.callAsync(pollID.toString());\n    return resolved;\n  }\n\n  /**\n   * Returns the Application Expiry date for a proposal\n   * @param propID ID of prop to check\n   */\n  public async getPropApplicationExpiry(propID: string): Promise<Date> {\n    const expiryTimestamp = await this.getPropApplicationExpiryTimestamp(propID);\n    return new Date(expiryTimestamp.toNumber() * 1000);\n  }\n\n  /**\n   *\n   * @param propID id of proposal to check\n   * @throws {CivilErrors.NoChallenge}\n   */\n  public async getPropChallengeCommitExpiry(propID: string): Promise<Date> {\n    const challengeID = await this.getChallengeID(propID);\n    if (challengeID.isZero()) {\n      throw CivilErrors.NoChallenge;\n    }\n    const voting = await this.getVoting();\n    const poll = await voting.getPoll(challengeID);\n    const expiryTimestamp = poll.commitEndDate;\n    return new Date(expiryTimestamp.toNumber() * 1000);\n  }\n\n  /**\n   *\n   * @param propID id of proposal to check\n   * @throws {CivilErrors.NoChallenge}\n   */\n  public async getPropChallengeRevealExpiry(propID: string): Promise<Date> {\n    const challengeID = await this.getChallengeID(propID);\n    if (challengeID.isZero()) {\n      throw CivilErrors.NoChallenge;\n    }\n    const voting = await this.getVoting();\n    const poll = await voting.getPoll(challengeID);\n    const expiryTimestamp = poll.revealEndDate;\n    return new Date(expiryTimestamp.toNumber() * 1000);\n  }\n\n  /**\n   * Returns the date by which a proposal must be processed. Successful proposals must\n   * be processed within a certain timeframe, to avoid gaming the parameterizer.\n   * @param propID ID of prop to check\n   */\n  public async getPropProcessBy(propID: string): Promise<Date> {\n    const [, , , , , expiryTimestamp] = await this.instance.proposals.callAsync(propID);\n    return new Date(new BigNumber(expiryTimestamp).toNumber() * 1000);\n  }\n\n  /**\n   * Returns the timestamp of the Application Expiry\n   * @param propID ID of prop to check\n   */\n  public async getPropApplicationExpiryTimestamp(propID: string): Promise<BigNumber> {\n    const [appExpiry] = await this.instance.proposals.callAsync(propID);\n    return new BigNumber(appExpiry);\n  }\n\n  /**\n   * Returns the name of the paramater associated with the given proposal\n   * @param propID ID of prop to check\n   */\n  public async getPropName(propID: string): Promise<string> {\n    const [, , , name] = await this.instance.proposals.callAsync(propID);\n    return name;\n  }\n\n  /**\n   * Returns the value proposed associated with the given proposal\n   * @param propID ID of prop to check\n   */\n  public async getPropValue(propID: string): Promise<BigNumber> {\n    const [, , , , , , value] = await this.instance.proposals.callAsync(propID);\n    return new BigNumber(value);\n  }\n\n  public async getUserProposalChallengeData(propChallengeID: BigNumber, user: EthAddress): Promise<UserChallengeData> {\n    let didUserCommit;\n    let didUserReveal;\n    let didUserCollect;\n    let didUserRescue = false;\n    let didCollectAmount;\n    let isVoterWinner;\n    let salt: string;\n    let numTokens;\n    let choice;\n    let voterReward;\n    const [, , resolved] = await this.instance.challenges.callAsync(propChallengeID.toString());\n    const pollData = await this.voting.getPoll(propChallengeID);\n    let canUserReveal;\n    let canUserRescue;\n    let canUserCollect;\n    if (user) {\n      didUserCommit = await this.voting.didCommitVote(user, propChallengeID);\n      if (didUserCommit) {\n        didUserReveal = await this.voting.didRevealVote(user, propChallengeID);\n        if (resolved) {\n          if (didUserReveal) {\n            const reveal = await this.voting.getRevealedVoteEvent(propChallengeID, user);\n            salt = reveal!.returnValues.salt;\n            numTokens = reveal!.returnValues.numTokens;\n            choice = reveal!.returnValues.choice;\n            didUserCollect = await this.instance.tokenClaims.callAsync(propChallengeID.toString(), user);\n            isVoterWinner = await this.voting.isVoterWinner(propChallengeID, user);\n            canUserCollect = isVoterWinner && !didUserCollect;\n          } else {\n            didUserRescue =\n              !(await this.voting.canRescueTokens(user, propChallengeID)) &&\n              !(await pollHelpers.isInCommitStage(pollData)) &&\n              !(await pollHelpers.isInRevealStage(pollData));\n          }\n        } else {\n          canUserReveal = !didUserReveal && (await pollHelpers.isInRevealStage(pollData));\n        }\n        canUserRescue =\n          !didUserReveal &&\n          !didUserRescue &&\n          !(await pollHelpers.isInCommitStage(pollData)) &&\n          !(await pollHelpers.isInRevealStage(pollData));\n      }\n    }\n\n    if (didUserCollect) {\n      didCollectAmount = await this.getRewardClaimed(propChallengeID, user);\n    }\n\n    if (isVoterWinner && !didUserCollect) {\n      voterReward = await this.voterReward(propChallengeID, new BigNumber(salt!), user);\n    }\n\n    return {\n      didUserCommit,\n      didUserReveal,\n      canUserReveal,\n      didUserCollect,\n      canUserCollect,\n      didUserRescue,\n      canUserRescue,\n      didCollectAmount,\n      isVoterWinner,\n      salt: new BigNumber(salt!),\n      numTokens: new BigNumber(numTokens as string),\n      choice: new BigNumber(choice as string),\n      voterReward,\n    };\n  }\n\n  public async getRewardClaimed(challengeID: BigNumber, user: EthAddress): Promise<BigNumber> {\n    const reward = await this.instance\n      ._RewardClaimedStream({ challengeID, voter: user }, { fromBlock: this.defaultBlock })\n      .first()\n      .toPromise();\n    return new BigNumber(reward.returnValues.reward);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/tcr/voting.ts",
    "content": "import { EthApi, requireAccount } from \"@joincivil/ethapi\";\nimport { CivilErrors, getDefaultFromBlock } from \"@joincivil/utils\";\nimport { Bytes32, EthAddress, PollData, BigNumber, DecodedLogEntryEvent } from \"@joincivil/typescript-types\";\nimport * as Debug from \"debug\";\nimport { Observable } from \"rxjs\";\nimport { TwoStepEthTransaction } from \"../../types\";\nimport { BaseWrapper } from \"../basewrapper\";\nimport { CivilPLCRVotingContract, CivilPLCRVoting } from \"../generated/wrappers/civil_p_l_c_r_voting\";\nimport { createTwoStepSimple } from \"../utils/contracts\";\n\nconst debug = Debug(\"civil:tcr\");\n\n/**\n * Voting allows user to interface with polls, either from the\n * Parameterizer or the Registry\n */\nexport class Voting extends BaseWrapper<CivilPLCRVotingContract> {\n  public static async singleton(ethApi: EthApi): Promise<Voting> {\n    const instance = await CivilPLCRVotingContract.singletonTrusted(ethApi);\n    if (!instance) {\n      debug(\"Smart-contract wrapper for Voting returned null, unsupported network\");\n      throw new Error(CivilErrors.UnsupportedNetwork);\n    }\n    const defaultBlock = getDefaultFromBlock(await ethApi.network());\n    return new Voting(ethApi, instance, defaultBlock);\n  }\n\n  public static async atUntrusted(web3wrapper: EthApi, address: EthAddress): Promise<Voting> {\n    const instance = CivilPLCRVotingContract.atUntrusted(web3wrapper, address);\n    const defaultBlock = getDefaultFromBlock(await web3wrapper.network());\n    return new Voting(web3wrapper, instance, defaultBlock);\n  }\n\n  private constructor(ethApi: EthApi, instance: CivilPLCRVotingContract, defaultBlock: number) {\n    super(ethApi, instance, defaultBlock);\n  }\n\n  /**\n   * Event Streams\n   */\n\n  /**\n   * An unending stream of all IDs of active Polls\n   * @param fromBlock Starting block in history for events concerning new polls\n   *                  Set to \"latest\" for only new events\n   * @returns currently active polls (by id)\n   */\n  public activePolls(fromBlock: number = this.defaultBlock, toBlock?: number): Observable<BigNumber> {\n    return this.instance\n      ._PollCreatedStream({}, { fromBlock, toBlock })\n      .map(e => e.returnValues.pollID)\n      .concatFilter(async pollID => this.instance.pollExists.callAsync(pollID))\n      .map(e => new BigNumber(e));\n  }\n\n  /**\n   * An unending stream of all pollIDs of polls the user has committed votes on\n   * @param fromBlock Starting block in history for events concerning new polls\n   *                  Set to \"latest\" for only new events\n   * @param user the user to check\n   */\n  public votesCommitted(\n    fromBlock: number = this.defaultBlock,\n    user?: EthAddress,\n    toBlock?: number,\n  ): Observable<BigNumber> {\n    return this.instance\n      ._VoteCommittedStream({ voter: user }, { fromBlock, toBlock })\n      .map(e => new BigNumber(e.returnValues.pollID));\n  }\n\n  /**\n   * An unending stream of all pollIDs of polls the user has revealed votes on\n   * @param fromBlock Starting block in history for events concerning new polls\n   *                  Set to \"latest\" for only new events\n   * @param user the user to check\n   */\n  public votesRevealed(\n    fromBlock: number = this.defaultBlock,\n    user?: EthAddress,\n    toBlock?: number,\n  ): Observable<BigNumber> {\n    return this.instance\n      ._VoteRevealedStream({ voter: user }, { fromBlock, toBlock })\n      .map(e => new BigNumber(e.returnValues.pollID));\n  }\n\n  /**\n   * An unending stream of all pollIDs of polls the user has rescued votes on\n   * @param fromBlock Starting block in history for events concerning new polls\n   *                  Set to \"latest\" for only new events\n   * @param user the user to check\n   */\n  public votesRescued(\n    fromBlock: number = this.defaultBlock,\n    user?: EthAddress,\n    toBlock?: number,\n  ): Observable<BigNumber> {\n    return this.instance\n      ._TokensRescuedStream({ voter: user }, { fromBlock, toBlock })\n      .map(e => new BigNumber(e.returnValues.pollID));\n  }\n\n  public balanceUpdate(fromBlock: number = this.defaultBlock, user: EthAddress): Observable<BigNumber> {\n    return this.instance\n      ._VotingRightsGrantedStream({ voter: user }, { fromBlock })\n      .merge(this.instance._VotingRightsWithdrawnStream({ voter: user }, { fromBlock }))\n      .concatMap(async e => this.getNumVotingRights(user));\n  }\n\n  /**\n   * Contract Transactions\n   */\n\n  /**\n   * Withdraw tokens from voting contract (thus withdrawing voting rights)\n   * @param numTokens number of tokens to withdraw from voting contract\n   */\n  public async withdrawVotingRights(numTokens: BigNumber): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.withdrawVotingRights.sendTransactionAsync(this.ethApi.toBigNumber(numTokens)),\n    );\n  }\n\n  /**\n   * Deposits tokens into voting contract (thus requesting voting rights)\n   * @param numTokens number of tokens to deposit into voting contract\n   */\n  public async requestVotingRights(numTokens: BigNumber): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.requestVotingRights.sendTransactionAsync(numTokens.toString()),\n    );\n  }\n\n  /**\n   * Checks whether or not a user can rescue tokens from a poll by trying to estimate gas cost of the transaction.\n   * If estimate succeeds, it should be true. If the estimate fails, it means the transaction would result in an EVM\n   * exception and should be false.\n   * @param user user to check\n   * @param pollID poll to check\n   */\n  public async canRescueTokens(user: EthAddress, pollID: BigNumber): Promise<boolean> {\n    return new Promise<boolean>(async (res, rej) => {\n      try {\n        await this.instance.rescueTokens.estimateGasAsync(pollID.toString(), { from: user });\n        console.log(\"can rescue tokens. pollID: \" + pollID);\n        res(true);\n      } catch (ex) {\n        console.log(\"cannot rescue tokens. pollID:\" + pollID);\n        res(false);\n      }\n    });\n  }\n\n  /**\n   * Unlocks tokens from unrevealed vote where poll has ended\n   * @param pollID ID of poll to unlock unrevealed vote of\n   */\n  public async rescueTokens(pollID: BigNumber): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.rescueTokens.sendTransactionAsync(this.ethApi.toBigNumber(pollID)),\n    );\n  }\n\n  /**\n   * Unlocks tokens from unrevealed vote from multiple polls that have ended\n   * @param pollIDs List of IDs of polls to unlock unrevealed vote of\n   */\n  public async rescueTokensInMultiplePolls(pollIDs: BigNumber[]): Promise<TwoStepEthTransaction> {\n    const pollIDsBN = pollIDs.map((pollID, index) => this.ethApi.toBigNumber(pollID));\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.rescueTokensInMultiplePolls.sendTransactionAsync(pollIDsBN),\n    );\n  }\n\n  /**\n   * Commits user's votes for poll\n   * @param pollID ID of poll to commit votes to\n   * @param secretHash keccak256 hash of voter's choice and salt (tightly packed in this order)\n   * @param numTokens How many tokens to be committed to poll\n   * @param prevPollID ID of poll that the user has committed the maximum\n   * number of tokens to (less than or equal to numTokens)\n   */\n  public async commitVote(\n    pollID: BigNumber,\n    secretHash: Bytes32,\n    numTokens: BigNumber,\n    prevPollID: BigNumber,\n  ): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.commitVote.sendTransactionAsync(\n        pollID.toString(),\n        secretHash,\n        numTokens.toString(),\n        prevPollID.toString(),\n      ),\n    );\n  }\n\n  /**\n   * Reveals user's vote for specified poll\n   * @param pollID ID of poll to reveal votes in\n   * @param voteOption Vote choice used to generate commitHash for poll\n   * @param salt Secret number used to generate commitHash for poll\n   */\n  public async revealVote(pollID: BigNumber, voteOption: BigNumber, salt: BigNumber): Promise<TwoStepEthTransaction> {\n    return createTwoStepSimple(\n      this.ethApi,\n      await this.instance.revealVote.sendTransactionAsync(pollID.toString(), voteOption.toString(), salt.toString()),\n    );\n  }\n\n  public async getRevealedVote(pollID: BigNumber, voter: EthAddress): Promise<BigNumber | undefined> {\n    if (await this.didRevealVote(voter, pollID)) {\n      const reveal = await this.instance\n        ._VoteRevealedStream({ pollID, voter }, { fromBlock: this.defaultBlock })\n        .first()\n        .toPromise();\n      return new BigNumber(reveal.returnValues.choice);\n    }\n    return undefined;\n  }\n\n  public async isVoterWinner(pollID: BigNumber, voter: EthAddress): Promise<boolean> {\n    const vote = await this.getRevealedVote(pollID, voter);\n    if (vote) {\n      const isPollPassed = await this.instance.isPassed.callAsync(pollID.toString());\n      if (vote.eq(this.ethApi.toBigNumber(1)) && isPollPassed) {\n        return true;\n      } else if (vote.eq(this.ethApi.toBigNumber(0)) && !isPollPassed) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  public async getRevealedVoteEvent(\n    pollID: BigNumber,\n    voter: EthAddress,\n  ): Promise<\n    DecodedLogEntryEvent<CivilPLCRVoting.Args._VoteRevealed, CivilPLCRVoting.Events._VoteRevealed> | undefined\n  > {\n    if (await this.didRevealVote(voter, pollID)) {\n      const reveal = await this.instance\n        ._VoteRevealedStream({ pollID, voter }, { fromBlock: this.defaultBlock })\n        .first()\n        .toPromise();\n\n      return reveal;\n    }\n    return undefined;\n  }\n\n  /**\n   * Contract Getters\n   */\n\n  /**\n   * Gets number of tokens held as voting rights by the Voting contract\n   * Voting contract may hold more tokens than can be withdrawn if some tokens\n   * are currently locked in a vote\n   * @param tokenOwner Address of token owner to check voting rights of\n   */\n  public async getNumVotingRights(tokenOwner?: EthAddress): Promise<BigNumber> {\n    let who = tokenOwner;\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    const balance = await this.instance.voteTokenBalance.callAsync(who);\n    return new BigNumber(balance);\n  }\n\n  /**\n   * Has a vote been revealed for given voter in specified poll?\n   * @param voterAddress voter to check vote status of\n   * @param pollID ID of poll to check\n   */\n  public async hasVoteBeenRevealed(pollID: BigNumber, voter?: EthAddress): Promise<boolean> {\n    let who = voter;\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.didRevealVote(who, pollID);\n  }\n\n  /**\n   * Is this poll in reveal period?\n   * @param pollID ID of poll to check\n   */\n  public async isRevealPeriodActive(pollID: BigNumber): Promise<boolean> {\n    return this.instance.revealPeriodActive.callAsync(pollID.toString());\n  }\n\n  /**\n   * Is this poll in commit period?\n   * @param pollID ID of poll to check\n   */\n  public async isCommitPeriodActive(pollID: BigNumber): Promise<boolean> {\n    return this.instance.commitPeriodActive.callAsync(pollID.toString());\n  }\n\n  public async didCommitVote(user: EthAddress, pollID: BigNumber): Promise<boolean> {\n    return this.instance.didCommit.callAsync(user, pollID.toString());\n  }\n  public async didRevealVote(user: EthAddress, pollID: BigNumber): Promise<boolean> {\n    return this.instance.didReveal.callAsync(user, pollID.toString());\n  }\n\n  /**\n   * Has this poll ended?\n   * @param pollID ID of poll to check\n   */\n  public async hasPollEnded(pollID: BigNumber): Promise<boolean> {\n    return this.instance.pollEnded.callAsync(pollID.toString());\n  }\n\n  /**\n   * Gets total number of tokens from winning side of poll\n   * @param pollID ID of poll to check\n   */\n  public async getTotalTokensForWinners(pollID: BigNumber): Promise<BigNumber> {\n    const tokens = await this.instance.getTotalNumberOfTokensForWinningOption.callAsync(pollID.toString());\n    return new BigNumber(tokens);\n  }\n\n  /**\n   * Returns number of tokens this user committed & revealed for given poll\n   * @param voterAddress address of voter to check\n   * @param pollID ID of poll to check\n   * @param salt Salt used by voter for this poll\n   */\n  public async getNumPassingTokens(pollID: BigNumber, salt: BigNumber, voter: EthAddress): Promise<BigNumber> {\n    return this.instance.getNumPassingTokens\n      .callAsync(voter, pollID.toString(), salt.toString())\n      .then(e => new BigNumber(e));\n  }\n\n  public async getNumLosingTokens(pollID: BigNumber, salt: BigNumber, voter: EthAddress): Promise<BigNumber> {\n    return this.instance.getNumLosingTokens\n      .callAsync(voter, pollID.toString(), salt.toString())\n      .then(e => new BigNumber(e));\n  }\n\n  public async getNumTokens(pollID: BigNumber, voter: EthAddress): Promise<BigNumber> {\n    return this.instance.getNumTokens.callAsync(voter, pollID.toString()).then(e => new BigNumber(e));\n  }\n\n  /**\n   * Did this poll pass?\n   * @param pollID ID of poll to check\n   */\n  public async isPollPassed(pollID: BigNumber): Promise<boolean> {\n    return this.instance.isPassed.callAsync(pollID.toString());\n  }\n\n  /**\n   * Gets the pollID of the poll with most tokens less than tokens specified.\n   * This is used to insert the new pollID in the correct position of list.\n   * @param tokens number of tokens being committed this vote\n   * @param account account to check pollID for\n   */\n  public async getPrevPollID(tokens: BigNumber, pollID: BigNumber, account?: EthAddress): Promise<BigNumber> {\n    let who = account;\n    if (!who) {\n      who = await requireAccount(this.ethApi).toPromise();\n    }\n    return this.instance.getInsertPointForNumTokens\n      .callAsync(who, tokens.toString(), pollID.toString())\n      .then(e => new BigNumber(e));\n  }\n\n  public async getPoll(pollID: BigNumber): Promise<PollData> {\n    const [commitEndDate, revealEndDate, voteQuorum, votesFor, votesAgainst] = await this.instance.pollMap.callAsync(\n      pollID.toString(),\n    );\n    return {\n      commitEndDate: new BigNumber(commitEndDate),\n      revealEndDate: new BigNumber(revealEndDate),\n      voteQuorum: new BigNumber(voteQuorum),\n      votesFor: new BigNumber(votesFor),\n      votesAgainst: new BigNumber(votesAgainst),\n    };\n  }\n}\n"
  },
  {
    "path": "packages/core/src/contracts/utils/contracts.ts",
    "content": "import { EthApi } from \"@joincivil/ethapi\";\nimport { DecodedLogEntry, DecodedLogEntryEvent, TxHash, EthAddress } from \"@joincivil/typescript-types\";\nimport { isDefined, isDeployedBytecodeEqual } from \"@joincivil/utils\";\nimport { Observable, Subscriber } from \"rxjs\";\nimport { CivilTransactionReceipt, TwoStepEthTransaction } from \"../../types\";\nimport { artifacts } from \"../generated/artifacts\";\nimport { OwnableContract } from \"../interfaces/ownable\";\nimport { Contract as IContract } from \"../interfaces/contract\";\nimport { EventLog as EventData, TransactionReceipt, Log, TransactionConfig } from \"web3-core\";\nimport { Contract } from \"web3-eth-contract\";\n\n// https://github.com/ethereum/web3.js/blob/2.x/packages/web3-eth-contract/types/index.d.ts#L108\nexport interface EventOptions {\n  filter?: {};\n  fromBlock?: number;\n  toBlock?: number | \"latest\" | \"pending\" | \"genesis\" | undefined;\n  topics?: any[];\n}\n\nexport function findEvent<T extends DecodedLogEntry>(tx: TransactionReceipt, eventName: string): T | undefined {\n  if (tx.events && tx.events[eventName]) {\n    return tx.events[eventName] as T | undefined;\n  }\n  // return tx.events!.find(log => isDecodedLog(log) && log.event === eventName) as T | undefined;\n}\n\nexport function findEventOrThrow<T extends DecodedLogEntry>(tx: TransactionReceipt, eventName: string): T {\n  const event = findEvent<T>(tx, eventName);\n  if (!event) {\n    throw new Error(`Log with event == \"${eventName}\" not found`);\n  }\n  return event;\n}\n\nexport function findEvents<T extends DecodedLogEntry>(tx: TransactionReceipt, eventName: string): T[] {\n  return tx.logs!.filter(log => isDecodedLog(log) && log.event === eventName) as T[];\n}\n\nexport function isContract<T extends Contract>(what: any): what is T {\n  // TODO(dankins): ignoring typescript error, make sure this works\n  // @ts-ignore\n  return (what as T).abi !== undefined;\n}\n\nexport function isOwnableContract(contract: IContract | OwnableContract): contract is OwnableContract {\n  return (contract as OwnableContract).owner !== undefined;\n}\n\nexport function isDecodedLog(what: Log | EventData): what is DecodedLogEntry {\n  return typeof (what as any).event === \"string\" && isDefined(what as any);\n}\n\nexport type TypedEventFilter<T> = { [P in keyof T]?: T[P] | Array<T[P]> };\nexport type DecodedFilterCallback<L extends DecodedLogEntryEvent> = (err: Error, result: L) => void;\nexport interface DecodedFilterResult<L extends DecodedLogEntryEvent> {\n  get(callback: (err: Error, logs: L[]) => void): void;\n  watch(callback: DecodedFilterCallback<L>): void;\n  stopWatching(callback?: () => void): void;\n}\nexport type EventFunction<A, L extends DecodedLogEntryEvent<A>> = (\n  paramFilters?: TypedEventFilter<A>,\n  filterObject?: EventOptions,\n  callback?: DecodedFilterCallback<L>,\n) => DecodedFilterResult<L>;\n\n// TODO(ritave): Think how to solve race condition in filters, concat get/watch perhaps?\nexport function streamifyEvent<A, L extends DecodedLogEntryEvent<A>>(\n  instance: Contract,\n  eventName: string,\n): (paramFilters?: TypedEventFilter<any>, filterObject?: EventOptions) => Observable<L> {\n  return (paramFilters?: TypedEventFilter<A>, filterObject?: EventOptions) => {\n    return new Observable<L>((subscriber: Subscriber<L>) => {\n      if (filterObject && filterObject.toBlock) {\n        instance\n          .getPastEvents(eventName, filterObject)\n          .then(logs => {\n            for (const log of logs) {\n              // @ts-ignore\n              subscriber.next(log);\n            }\n            subscriber.complete();\n          })\n          .catch(err => {\n            subscriber.error(err);\n          });\n      } else {\n        // Infinite stream of historic and future events\n        const eventStream = instance.events[eventName](filterObject);\n        eventStream\n          .on(\"data\", (event: any) => {\n            subscriber.next(event);\n          })\n          .on(\"error\", (err: Error) => {\n            subscriber.error(err);\n            subscriber.complete();\n          });\n      }\n    }).distinctUntilChanged((a, b) => {\n      return a.blockNumber === b.blockNumber && a.logIndex === b.logIndex;\n    }); // https://github.com/ethereum/web3.js/issues/573;\n  };\n}\n\nexport function isTxData(data: any): data is TransactionConfig {\n  return (\n    data.gas !== undefined ||\n    data.gasPrice !== undefined ||\n    data.nonce !== undefined ||\n    data.from !== undefined ||\n    data.value !== undefined ||\n    data.to !== undefined\n  );\n}\n\nexport function createTwoStepTransaction<T>(\n  ethApi: EthApi,\n  txHash: TxHash,\n  transform: (receipt: CivilTransactionReceipt) => Promise<T> | T,\n): TwoStepEthTransaction<T> {\n  return {\n    txHash,\n    awaitReceipt: async (blockConfirmations?: number) =>\n      ethApi.awaitReceipt<CivilTransactionReceipt>(txHash, blockConfirmations).then(transform),\n  };\n}\n\nexport function createTwoStepSimple(ethApi: EthApi, txHash: TxHash): TwoStepEthTransaction {\n  return {\n    txHash,\n    // @ts-ignore\n    awaitReceipt: ethApi.awaitReceipt.bind(ethApi, txHash),\n  };\n}\n\nexport function isEthAddress(what: any): what is EthAddress {\n  return typeof what === \"string\";\n}\n\nexport async function isAddressMultisigWallet(ethApi: EthApi, address: EthAddress): Promise<boolean> {\n  const code = await ethApi.getCode(address);\n  // TODO(ritave): Have backwards compatibillity for older Multisig wallets and bytecodes\n  return isDeployedBytecodeEqual(artifacts.MultiSigWallet.deployedBytecode, code);\n}\n"
  },
  {
    "path": "packages/core/src/globals.d.ts",
    "content": "// declare module \"bn.js\";\ndeclare module \"ipfs-http-client\";\n\ndeclare module \"*.json\" {\n  const json: any;\n  export default json;\n}\n\n//////////////////////\n// Test definitions //\n//////////////////////\ndeclare module \"dirty-chai\";\ndeclare module \"chai-bignumber\";\n\ndeclare namespace Chai {\n  interface Assertion {\n    (message?: string): Assertion;\n    bignumber: Assertion;\n  }\n  // dirty-chai and chai-as-promised working together\n  interface PromisedAssertion {\n    (message?: string): PromisedAssertion;\n    bignumber: PromisedAssertion;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/index.ts",
    "content": "export { Civil } from \"./civil\";\nexport { UniswapService } from \"./UniswapService\";\nexport { FeatureFlagService } from \"./FeatureFlagService\";\nexport * from \"./types\";\nexport * from \"./utils/ethersHelpers\";\nexport * from \"./contracts/generated/events\";\nexport * from \"./content\";\nexport * from \"./contracts/multisig/multisigtransaction\";\n// Renaming to avoid conflict with namespace in generated wrapper for newsroom contract. Only exporting for purpose of typechecking:\nexport { Newsroom as NewsroomInstance } from \"./contracts/newsroom\";\n"
  },
  {
    "path": "packages/core/src/templates/artifacts.handlebars",
    "content": "/*\n * This file is auto-generated using generate-artifacts script. Any changes will be reverted\n */\nimport {AbiItem} from \"web3-utils\";\n\n{{#each files}}\nimport * as {{capitalize this.name}}Artifact from \"@joincivil/artifacts/v1/{{capitalize this.name}}.json\";\n{{/each}}\n\nexport interface Artifact {\n  contractName: string;\n  abi: AbiItem[];\n  bytecode: string;\n  deployedBytecode: string;\n  networks: {\n    [id: string]: {\n      address: string;\n    };\n  };\n}\n\nexport const artifacts = {\n  {{#each files}}\n  {{capitalize this.name}}: {{capitalize this.name}}Artifact as any as Artifact,\n  {{/each}}\n};\n"
  },
  {
    "path": "packages/core/src/templates/contract/contract.handlebars",
    "content": "/*\n* This file is auto-generated using abi-gen. Any changes will be reverted\n*/\n\n// Needed for the promisifed events, some contracts don't have events\n// tslint:disable:no-unused-variable\nimport { DecodedLogEntryEvent, DecodedLogEntry, DecodedTransactionReceipt } from \"@joincivil/typescript-types\";\n// tslint:enable:no-unused-variable\nimport \"rxjs/add/operator/distinctUntilChanged\";\n\nimport {Contract} from \"web3-eth-contract\";\nimport {TransactionConfig, TransactionConfig as SendOptions} from \"web3-core\";\n\nimport { bindNestedAll, isDefined, CivilErrors } from \"@joincivil/utils\";\nimport * as Debug from \"debug\";\n\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { streamifyEvent } from \"../../../contracts/utils/contracts\";\nimport { EthApi, currentNetwork } from \"@joincivil/ethapi\";\nimport { BaseContract } from \"../../basecontract\";\nimport { artifacts } from \"../artifacts\";\n\n\n// hack(dankins): abi-gen things these are bignumber.js, but they are actually returned as strings\n// https://github.com/0xProject/0x-monorepo/blob/development/packages/abi-gen/src/utils.ts#L64\ntype BigNumber = string;\n\nconst debug = Debug(\"civil:contracts:{{contractName}}Contract\");\nexport class {{contractName}}Contract extends BaseContract {\n// tslint:disable:member-ordering\n{{> constructor}}\n\n// tslint:disable:variable-name\n{{#each methods}}\n{{#this.constant}}\n{{> call contractName=../contractName}}\n{{/this.constant}}\n{{^this.constant}}\n{{> tx contractName=../contractName}}\n{{/this.constant}}\n\n{{/each}}\n{{#each events}}\n{{> event contractName=../contractName}}\n\n{{/each}}\n// tslint:enable:variable-name\n\nprivate constructor(instance: Contract, ethApi: EthApi) {\nsuper(instance, ethApi);\n// Call methods access this instance while being in a sub-object, we're rebinding what\n// \"this\" means for everything in this class, this also requires \"noImplicitThis\" to be false\nbindNestedAll(this, [\"constructor\", \"instance\", \"defaults\", \"ethApi\"]);\n}\n// tslint:enable:member-ordering\n}\n\n{{> event_types }}\n"
  },
  {
    "path": "packages/core/src/templates/contract/multisigproxy.handlebars",
    "content": "/*\n* This file is auto-generated using abi-gen. Any changes will be reverted\n*/\n\n{{!-- Some contracts have inputs like `_value` which run afoul of linter, so: --}}\n/* tslint:disable:variable-name */\n\nimport { isDefined, bindNestedAll } from \"@joincivil/utils\";\nimport {TransactionConfig} from \"web3-core\";\n\nimport { createTwoStepSimple } from \"../../utils/contracts\";\nimport { BaseMultisigProxy, MultisigProxyTransaction } from \"../../multisig/basemultisigproxy\";\nimport { Contract as IContract } from \"../../interfaces/contract\";\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { EthAddress } from \"../../../types\";\n\n// hack(dankins): abi-gen things these are bignumber.js, but they are actually returned as strings\n// https://github.com/0xProject/0x-monorepo/blob/development/packages/abi-gen/src/utils.ts#L64\ntype BigNumber = string;\n\n// TODO(ritave): Abi-Gen doesn't support lowercase contractName so we can't\n// import the Contract wrappers, we're using generics instead\n// This means calls to instance are untyped inside are using (this: any) type\nexport class {{contractName}}MultisigProxy extends BaseMultisigProxy {\n/**\n * Creates a multisig wrapper around a contract\n * @param ethApi Web3 API\n * @param instance Contract we are wrapping\n * @param multisigAddress (optional) Address of multisig wallet - if not supplied, will check if contract is owned by a\n * multisig wallet and use that instead\n */\npublic static async create(\nethApi: EthApi,\ninstance: IContract,\nmultisigAddress?: EthAddress,\n): Promise<{{contractName}}MultisigProxy> {\n  const proxy = new {{contractName}}MultisigProxy(ethApi, instance);\n  await proxy.resolveMultisig(multisigAddress);\n  return proxy;\n  }\n\n  /**\n   * Creates a wrapper around a contract with identical API to multisig wrapper, but all transactions are passed directly\n   * to contract. Essentially just a helper for when we know multisig isn't needed and want a synchronous call.\n   * @param ethApi Web3 API\n   * @param instance Contract we are wrapping\n   */\n  public static createNonMultisig(\n  ethApi: EthApi,\n  instance: IContract,\n  ): {{contractName}}MultisigProxy {\n  const proxy = new {{contractName}}MultisigProxy(ethApi, instance);\n  // No call to `proxy.resolveMultisig`, `proxy.multisig` will remain undefined\n  return proxy;\n  }\n\n  {{#each methods}}\n  {{^this.constant}}\n  {{> proxy_tx contractName=../contractName}}\n  {{/this.constant}}\n  {{/each}}\n\n  private constructor(\n  ethApi: EthApi,\n  instance: IContract,\n  ) {\n  super(ethApi, instance);\n  bindNestedAll(this, [\"constructor\", \"instance\", \"multisig\", \"ethApi\"]);\n  }\n  }\n"
  },
  {
    "path": "packages/core/src/templates/contract/partials/call.handlebars",
    "content": "public {{this.name}} = {\n  async callAsync(  {{> typed_inputs inputs=inputs}} ): Promise<{{> return_type outputs=outputs }}> {\n    const self = this as {{contractName}}Contract;\n    return self.instance.methods.{{this.name}}({{> params inputs=inputs}}).call();\n  }\n}"
  },
  {
    "path": "packages/core/src/templates/contract/partials/constructor.handlebars",
    "content": "public static async singletonTrusted(ethApi: EthApi): Promise<{{contractName}}Contract|undefined> {\n  if (!artifacts.{{contractName}}.networks) {\n  debug(\"Trying to get singleton from contract without any singleton data\");\n  return undefined;\n  }\n  const networkId = (await currentNetwork(ethApi)).toString();\n  const networkData = artifacts.{{contractName}}.networks[networkId];\n  if (!networkData) {\n  debug(\"Failed to find network data for network ID \" + networkId + \". Supported networks: \" +\n  Object.keys(artifacts.{{contractName}}.networks));\n  return undefined;\n  }\n  return {{contractName}}Contract.atUntrusted(ethApi, networkData.address);\n  }\n  public static atUntrusted(ethApi: EthApi, address: EthAddress): {{contractName}}Contract {\n    const contract = ethApi.getContractClass(artifacts.{{contractName}}.abi, address);\n    return new {{contractName}}Contract(contract, ethApi);\n  }\n  // TODO(ritave): This code won't work with smart-contracts with library links\n  // see [ch429] in Clubhouse\n  public static deployTrusted = {\n  async sendTransactionAsync(\n  ethApi: EthApi,\n  {{> typed_inputs inputs=ctor.inputs }}\n  options: SendOptions): Promise<string> {\n    if (!options.gas) {\n    options.gas = await {{contractName}}Contract.deployTrusted\n    .estimateGasAsync(\n    ethApi,\n    {{> params inputs=ctor.inputs }}\n    );\n    }\n    if (!options.gasPrice) {\n      options.gasPrice = (await ethApi.getGasPrice()).toString();\n    }\n    const clazz = ethApi.getContractClass(artifacts.{{contractName}}.abi);\n\n\n    return new Promise( (resolve, reject) => {\n      /* There's a bug in Metamask, this callback should be called twice, first when the transaction\n      * gets into mempool, and second when it's mined. But it's called only once, so we have to resolve\n      * the contract on our own\n      */\n      const tx = clazz.deploy({data: artifacts.{{contractName}}.bytecode, arguments: [{{> params inputs=ctor.inputs}}]}).send(options);\n\n      return tx.once(\"transactionHash\", resolve)\n    })\n\n\n        },\n        async estimateGasAsync(\n        ethApi: EthApi,\n        {{> typed_inputs inputs=ctor.inputs }}\n        ): Promise<number> {\n          const clazz = ethApi.getContractClass(artifacts.{{contractName}}.abi);\n          const contractData = clazz.deploy({\n            data: artifacts.{{contractName}}.bytecode, \n            arguments: [{{> params inputs=ctor.inputs}}]\n          }).encodeABI();\n\n          return ethApi.estimateGas({data: contractData});\n          },\n          };"
  },
  {
    "path": "packages/core/src/templates/contract/partials/event.handlebars",
    "content": "public {{name}}Stream = streamifyEvent<{{contractName}}.Args.{{name}}, {{contractName}}.LogEvents.{{name}}>\n    (this.instance, \"{{name}}\");"
  },
  {
    "path": "packages/core/src/templates/contract/partials/event_types.handlebars",
    "content": "// tslint:disable:no-namespace\nexport namespace {{contractName}} {\n  export enum Events {\n    {{#each events}}\n    {{this.name}} = \"{{this.name}}\",\n    {{/each}}\n  }\n\n  // tslint:disable:class-name\n  export namespace Args {\n    {{#each events}}\n    export interface {{this.name}} {\n      {{#each inputs}}\n      {{name}}: {{#parameterType type}}{{/parameterType}};\n      {{/each}}\n    }\n    {{/each}}\n  }\n  // tslint:enable:class-name\n\n  export namespace Logs {\n    {{#each events}}\n    export type {{this.name}} = DecodedLogEntry<Args.{{this.name}}, Events.{{this.name}}>;\n    {{/each}}\n\n    export type All =\n    {{#each events}}\n      Logs.{{name}}{{#unless @last}} |{{/unless}}{{^unless @last}};{{/unless}}\n    {{else}}\n      never;\n    {{/each}}\n  }\n\n  export namespace LogEvents {\n    {{#each events}}\n    export type {{this.name}} = DecodedLogEntryEvent<Args.{{this.name}}, Events.{{this.name}}>;\n    {{/each}}\n\n    export type All =\n    {{#each events}}\n      LogEvents.{{name}}{{#unless @last}} |{{/unless}}{{^unless @last}};{{/unless}}\n    {{else}}\n      never;\n    {{/each}}\n  }\n\n  export type Receipt = DecodedTransactionReceipt<Logs.All>;\n  export type EventReceipt = DecodedTransactionReceipt<LogEvents.All>;\n}\n// tslint:enable:no-namespace\n"
  },
  {
    "path": "packages/core/src/templates/contract/partials/params.handlebars",
    "content": "{{#each inputs}}\n{{name}},\n{{/each}}"
  },
  {
    "path": "packages/core/src/templates/contract/partials/proxy_tx.handlebars",
    "content": "public {{this.name}} = {\n  async sendTransactionAsync(\n    {{> typed_inputs inputs=inputs}}\n    {{#this.payable}}\n    txData: TransactionConfig = {},\n    {{/this.payable}}\n    {{^this.payable}}\n    txData: TransactionConfig = {},\n    {{/this.payable}}\n  ): Promise<MultisigProxyTransaction> {\n    const self = this as {{contractName}}MultisigProxy;\n    if (!isDefined(self.multisig)) {\n      try {\n        const tx = await (self.instance as any).{{this.name}}.sendTransactionAsync(\n            {{> params inputs=inputs}}\n            txData,\n        )\n        return createTwoStepSimple(\n          self.ethApi,\n          tx,\n        );\n      } catch (err) {\n        return Promise.reject(err)\n      }\n    }\n    const raw = await (self.instance as any).{{this.name}}.getRaw(\n      {{> params inputs=inputs}}\n      {...txData, gas: 0},\n    );\n    return self.createProxyTransaction(\n      (await self.multisig.submitTransaction(\n        self.instance.address,\n        {{#this.payable}}\n        txData.value,\n        {{/this.payable}}\n        {{^this.payable}}\n        self.ethApi.toBigNumber(0),\n        {{/this.payable}}\n        raw.data!,\n      )).txHash,\n    );\n  },\n};\n"
  },
  {
    "path": "packages/core/src/templates/contract/partials/return_type.handlebars",
    "content": "{{#singleReturnValue}}\n{{#returnType outputs.0.type}}{{/returnType}}{{/singleReturnValue}}{{^singleReturnValue}}\n[{{#each outputs}}{{#returnType type}}{{/returnType}}{{#unless @last}}, {{/unless}}{{/each}}]{{/singleReturnValue}}"
  },
  {
    "path": "packages/core/src/templates/contract/partials/tx.handlebars",
    "content": "public {{this.name}} = {\n  async sendTransactionAsync(\n    {{> typed_inputs inputs=inputs}}\n    {{#this.payable}}\n    txData?: TransactionConfig,\n    {{/this.payable}}\n    {{^this.payable}}\n    txData?: TransactionConfig,\n    {{/this.payable}}\n  ): Promise<TxHash> {\n    const self = this as {{contractName}}Contract;\n    const txOptions: TransactionConfig = { ...self.configuration.txDefaults, ...txData };\n    debug(`{{this.name}}({{>typed_inputs inputs=inputs}})`);\n    debug(\"{{this.name}}: txOptions:\", txOptions);\n    debug(\"{{this.name}}: Sending with:\",  {{> params inputs=inputs}}  );\n    txOptions.to = self.instance.options.address;\n    txOptions.data = self.instance.methods.{{this.name}}({{> params inputs=inputs}}).encodeABI();\n\n    if (!isDefined(txOptions.gas)) {\n      txOptions.gas = await self.ethApi.estimateGas(txOptions);\n    }\n    if (!isDefined(txOptions.gasPrice)) {\n      const gasPricePromise = self.ethApi.getGasPriceString()\n      txOptions.gasPrice = (await gasPricePromise).toString(); \n      debug(\"{{this.name}}: new gas price: \", txOptions.gasPrice);\n    }\n\n    return self.ethApi.sendTransaction(txOptions)\n  },\n  async estimateGasAsync(\n    {{> typed_inputs inputs=inputs}}\n    {{#this.payable}}\n    txData?: TransactionConfig,\n    {{/this.payable}}\n    {{^this.payable}}\n    txData?: TransactionConfig,\n    {{/this.payable}}\n  ): Promise<number> {\n    const self = this as {{contractName}}Contract;\n    const estimateGas = self.instance.methods.{{this.name}}({{> params inputs=inputs}}).estimateGas\n\n    try {\n      const estimate = Math.floor(await estimateGas(txData) * self.configuration.estimationMultiplier);\n      debug(\"{{this.name}}: Gas estimation:\", estimate);\n      return estimate;\n    } catch (e) {\n      debug(\"{{this.name}}: Gas estimation failed, only sensible error is EVM error\", e);\n      throw new Error(CivilErrors.EvmException);\n    }\n  },\n  async getRaw(\n    {{> typed_inputs inputs=inputs}}\n    {{#this.payable}}\n    txData?: TransactionConfig,\n    {{/this.payable}}\n    {{^this.payable}}\n    txData?: TransactionConfig,\n    {{/this.payable}}\n  ): Promise<TransactionConfig> {\n      const self = this as {{contractName}}Contract;\n      const options: TransactionConfig = {... txData};\n      if (!isDefined(options.gas)) {\n        options.gas = await self.{{name}}.estimateGasAsync(\n      {{> params inputs=inputs}}\n      options,\n      );\n      }\n      options.data = self.instance.methods.{{this.name}}({{> params inputs=inputs}}).encodeABI();\n      return options;\n  },\n};"
  },
  {
    "path": "packages/core/src/templates/contract/partials/typed_inputs.handlebars",
    "content": "{{#each inputs}}\n{{name}}: {{#parameterType type}}{{/parameterType}},\n{{/each}}"
  },
  {
    "path": "packages/core/src/templates/events.handlebars",
    "content": "/*\n * This file is auto-generated using generate-artifacts script. Any changes will be reverted\n */\n\n{{#each files}}\nimport { {{capitalize this.name}} } from \"./wrappers/{{snakecase this.name}}\";\nexport * from \"./wrappers/{{snakecase this.name}}\";\n{{/each}}\n\nexport type CivilEvents =\n  {{#each files}}\n    {{capitalize this.name}}.Events{{#unless @last}} |{{/unless}}{{^unless @last}};{{/unless}}\n  {{/each}}\n\nexport type CivilLogs =\n  {{#each files}}\n    {{capitalize this.name}}.Logs.All{{#unless @last}} |{{/unless}}{{^unless @last}};{{/unless}}\n  {{/each}}\n\nexport type CivilLogEvents =\n  {{#each files}}\n    {{capitalize this.name}}.LogEvents.All{{#unless @last}} |{{/unless}}{{^unless @last}};{{/unless}}\n  {{/each}}"
  },
  {
    "path": "packages/core/src/types.ts",
    "content": "import { DecodedLogEntryEvent, DecodedTransactionReceipt, TxHash } from \"@joincivil/typescript-types\";\nimport { CivilLogs } from \"./contracts/generated/events\";\n\n// For backwards compatibillity\nexport { Bytes32, DecodedTransactionReceipt, EthAddress, Hex, Uri } from \"@joincivil/typescript-types\";\nexport { ContentProvider, ContentProviderCreator, ContentProviderOptions } from \"./content/contentprovider\";\n\nexport type CivilTransactionReceipt = DecodedTransactionReceipt<CivilLogs>;\n\nexport interface TwoStepEthTransaction<T = CivilTransactionReceipt> {\n  txHash: TxHash;\n  awaitReceipt(blockConfirmations?: number): Promise<T>;\n}\n\n// tslint:disable-next-line\nexport interface TimestampedEvent<T extends DecodedLogEntryEvent> extends DecodedLogEntryEvent {\n  timestamp(): Promise<number>;\n}\n"
  },
  {
    "path": "packages/core/src/utils/ethersHelpers.ts",
    "content": "import { ethers } from \"ethers\";\n\nexport interface EthersProviderResult {\n  provider: ethers.providers.Provider;\n  signer?: ethers.Signer;\n}\n\nexport function makeEthersProvider(web3Provider: any, network: number): EthersProviderResult {\n  const provider = new ethers.providers.Web3Provider(web3Provider, network === 1 ? \"mainnet\" : \"rinkeby\");\n  const signer = provider.getSigner();\n  return {\n    provider,\n    signer,\n  };\n}\n"
  },
  {
    "path": "packages/core/src/utils/events.ts",
    "content": "import { DecodedLogEntryEvent } from \"@joincivil/typescript-types\";\nimport { EthApi } from \"@joincivil/ethapi\";\nimport { TimestampedEvent } from \"../types\";\n\nexport function createTimestampedEvent<T extends DecodedLogEntryEvent>(ethApi: EthApi, event: T): TimestampedEvent<T> {\n  // tslint:disable-next-line\n  return Object.assign({}, event, {\n    timestamp: async () => (await ethApi.getBlock(event.blockNumber!)).timestamp as number,\n  });\n}\n"
  },
  {
    "path": "packages/core/test/.gitkeep",
    "content": ""
  },
  {
    "path": "packages/core/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declarationDir\": \"build/\",\n    \"typeRoots\": [\"./node_modules/@types\", \"./types/\"]\n  },\n  \"include\": [\"./doc/**/*.ts\", \"./src/**/*.ts\", \"./test/**/*.ts\"]\n}\n"
  },
  {
    "path": "packages/core/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"linterOptions\": {\n    \"exclude\": [\"src/contracts/generated/wrappers/**/*\"]\n  }\n}\n"
  },
  {
    "path": "packages/dapp/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/dapp/README.md",
    "content": "# @joincivil/dapp\n\nThis package contains a React + Typescript app that functions as a DApp for the Civil platform. It is intended to have a nice UX for users to interact with the TCR and Newsrooms.\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n\n## To Build for Production\n\nRun `yarn build`\n\n## To Run Development Server\n\nRun `yarn start`\n\nEnjoy your server responsibly on localhost:3000\n"
  },
  {
    "path": "packages/dapp/config-overrides.js",
    "content": "/** Selectively update react-create-app's react-scripts webpack config without ejecting the app. */\n\nconst path = require(\"path\");\n\nmodule.exports = function override(config, env) {\n  return {\n    ...config,\n    resolve: {\n      ...config.resolve,\n      alias: {\n        ...config.resolve.alias,\n        // When resolving styled-components even from external dependencies, look in monorepo node-modules before the dependency's own imported version. This is needed for @joincivil/civil-sdk, as per https://www.styled-components.com/docs/faqs#why-am-i-getting-a-warning-about-several-instances-of-module-on-the-page.\n        // @TODO(tobek) this could maybe be resolved instead on the civil-sdk side by both a) moving styled-components into peerDependencies, and b) building civil-sdk with webpack and adding styled-components into `externals`, as per https://www.styled-components.com/docs/faqs#i-am-a-library-author-should-i-bundle-styledcomponents-with-my-library\n        \"styled-components\": path.resolve(\"..\", \"..\", \"node_modules\", \"styled-components\"),\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/dapp/devops/nginx.conf",
    "content": "map $request_uri $redirect_uri {\n    /credibility-indicators         https://learn.civil.co/credibility-indicators;\n    /about                          https://learn.civil.co/about;\n    /about/                         https://learn.civil.co/about;\n    /contact                        https://learn.civil.co/contact;\n    /contact/                       https://learn.civil.co/contact;\n    /constitution                   https://learn.civil.co/constitution;\n    /constitution/                  https://learn.civil.co/constitution;\n    /help                           https://learn.civil.co/help;\n    /help/                          https://learn.civil.co/help;\n    /our-team                       https://learn.civil.co/team;\n    /our-team/                      https://learn.civil.co/team;\n}\n\nserver {\n  listen 3000 default_server;\n  root /usr/share/nginx/html;\n  index index.html index.htm;\n\n  gzip on;\n  gzip_disable \"msie6\";\n\n  gzip_vary on;\n  gzip_proxied any;\n  gzip_comp_level 6;\n  gzip_buffers 16 8k;\n  gzip_http_version 1.1;\n  gzip_min_length 256;\n  gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;\n\n  if ( $redirect_uri ) {\n      return 301 $redirect_uri;\n  }\n\n  location / {\n    try_files $uri @prerender;\n  }\n\n   ### force utf-8 and content type\n  location = /.well-known/apple-developer-merchantid-domain-association {\n    types { } default_type \"text/plain;charset=utf-8\";\n    add_header x-robots-tag \"noindex, nofollow\";\n  }\n\n  location @prerender {\n        proxy_set_header X-Prerender-Token $PRERENDER_TOKEN;\n        \n        set $prerender 0;\n        if ($http_user_agent ~* \"googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\\/0\\.|pinterestbot|slackbot|vkShare|W3C_Validator\") {\n            set $prerender 1;\n        }\n        if ($args ~ \"_escaped_fragment_\") {\n            set $prerender 1;\n        }\n        if ($http_user_agent ~ \"Prerender\") {\n            set $prerender 0;\n        }\n        if ($uri ~* \"\\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)\") {\n            set $prerender 0;\n        }\n        \n        #resolve using Google's DNS server to force DNS resolution and prevent caching of IPs\n        resolver 8.8.8.8;\n \n        if ($prerender = 1) {\n            \n            #setting prerender as a variable forces DNS resolution since nginx caches IPs and doesnt play well with load balancing\n            set $prerender \"service.prerender.io\";\n            rewrite .* /https://$host$request_uri? break;\n            proxy_pass https://$prerender;\n        }\n        if ($prerender = 0) {\n            add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';\n            rewrite .* /index.html break;\n        }\n    }\n\n  location /static/ { \n    autoindex off;\n    alias /usr/share/nginx/html/static/;\n  }\n\n}\n"
  },
  {
    "path": "packages/dapp/devops/start.sh",
    "content": "#!/bin/sh\necho \"ENVIRONMENT: $ENVIRONMENT\"\necho \"GA_TRACKING_ID\\: $GA_TRACKING_ID\"\necho \"PRERENDER_TOKEN\\: $PRERENDER_TOKEN\"\nenvsubst '\\$ENVIRONMENT:\\$GA_TRACKING_ID' < /usr/share/nginx/html/index.html > /usr/share/nginx/html/index.html.tmp\nenvsubst '\\$PRERENDER_TOKEN' < /etc/nginx/conf.d/default.conf > /etc/nginx/conf.d/default.conf.tmp\nmv  /usr/share/nginx/html/index.html.tmp  /usr/share/nginx/html/index.html\nmv  /etc/nginx/conf.d/default.conf.tmp  /etc/nginx/conf.d/default.conf\ncat /etc/nginx/conf.d/default.conf\nexec nginx -g 'daemon off;'\n"
  },
  {
    "path": "packages/dapp/package.json",
    "content": "{\n  \"name\": \"@joincivil/dapp\",\n  \"version\": \"0.9.11\",\n  \"homepage\": \"https://civil.co\",\n  \"private\": false,\n  \"dependencies\": {\n    \"@joincivil/components\": \"^1.9.10\",\n    \"@joincivil/core\": \"^4.8.11\",\n    \"@joincivil/elements\": \"^0.0.1\",\n    \"@joincivil/ethapi\": \"^0.4.9\",\n    \"@joincivil/kirby\": \"^0.1.0\",\n    \"@joincivil/newsroom-manager\": \"^1.8.11\",\n    \"@joincivil/newsroom-signup\": \"^1.8.11\",\n    \"@joincivil/sdk\": \"^2.0.0\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@joincivil/utils\": \"^1.9.9\",\n    \"@kirby-web3/ethereum-react\": \"^1.2.17\",\n    \"@redux-beacon/google-analytics\": \"^1.2.0\",\n    \"@sentry/browser\": \"^5.0.5\",\n    \"@sentry/integrations\": \"^5.8.0\",\n    \"@types/diff\": \"^4.0.2\",\n    \"@types/highlight.js\": \"^9.12.2\",\n    \"@types/react-redux\": \"^7.1.1\",\n    \"@types/redux\": \"^3.6.0\",\n    \"@types/sanitize-html\": \"^1.14.0\",\n    \"@types/storejs\": \"^2.0.2\",\n    \"apollo-boost\": \"^0.1.16\",\n    \"apollo-client\": \"^2.6.8\",\n    \"connected-react-router\": \"^6.3.1\",\n    \"diff\": \"^4.0.1\",\n    \"graphql\": \"^14.0.2\",\n    \"graphql-tag\": \"^2.9.2\",\n    \"history\": \"^4.7.2\",\n    \"iframe-resizer\": \"^4.2.6\",\n    \"immutable\": \"^3.8.2\",\n    \"json-loader\": \"^0.5.7\",\n    \"react\": \"^16.11.0\",\n    \"react-apollo\": \"^2.3.3\",\n    \"react-async-script\": \"^1.1.1\",\n    \"react-dom\": \"^16.11.0\",\n    \"react-ellipsis-text\": \"^1.2.1\",\n    \"react-helmet\": \"^5.2.0\",\n    \"react-markdown\": \"^3.3.0\",\n    \"react-redux\": \"^7.1.1\",\n    \"react-router\": \"^5.1.2\",\n    \"react-router-dom\": \"^5.1.2\",\n    \"react-router-named-routes\": \"^0.0.23\",\n    \"react-rte\": \"^0.16.1\",\n    \"react-scripts\": \"^2.1.8\",\n    \"react-stripe-elements\": \"^6.0.0\",\n    \"redux\": \"^4.0.0\",\n    \"redux-beacon\": \"^2.0.5\",\n    \"redux-thunk\": \"^2.2.0\",\n    \"reselect\": \"^4.0.0\",\n    \"rxjs\": \"^5.5.7\",\n    \"sanitize-html\": \"^1.18.2\",\n    \"semantic-ui-react\": \"~0.82.0\",\n    \"sort-by\": \"^1.2.0\",\n    \"store\": \"^2.0.12\",\n    \"styled-components\": \"^5.0.0-beta.8\",\n    \"web3\": \"^1.2.4\",\n    \"web3-providers-http\": \"^1.2.4\",\n    \"web3-providers-ws\": \"^1.2.4\"\n  },\n  \"resolutions\": {\n    \"styled-components\": \"5.0.0-beta.8\"\n  },\n  \"scripts\": {\n    \"start\": \"react-app-rewired --max_old_space_size=5120 start\",\n    \"build\": \"CI=false react-app-rewired --max_old_space_size=5120 build\",\n    \"test\": \"echo \\\"no tests\\\"\",\n    \"eject\": \"react-scripts eject\",\n    \"lint\": \"tslint --project ./\",\n    \"clean\": \"rimraf build/\",\n    \"analyze\": \"source-map-explorer 'build/static/js/*.js'\",\n    \"predeploy\": \"npm run build\",\n    \"deploy\": \"gh-pages -d build\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^10.12.0\",\n    \"@types/react\": \"^16.8\",\n    \"@types/react-dom\": \"^16.8\",\n    \"@types/react-router-dom\": \"^4.2.5\",\n    \"gh-pages\": \"^1.1.0\",\n    \"react-app-rewired\": \"^2.1.3\",\n    \"source-map-explorer\": \"^2.0.1\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"browserslist\": [\n    \">0.2%\",\n    \"not dead\",\n    \"not ie <= 11\",\n    \"not op_mini all\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/dapp/public/.well-known/apple-developer-merchantid-domain-association",
    "content": "7B227073704964223A2239373943394538343346343131343044463144313834343232393232313734313034353044314339464446394437384337313531303944334643463542433731222C2276657273696F6E223A312C22637265617465644F6E223A313536363233343735303036312C227369676E6174757265223A22333038303036303932613836343838366637306430313037303261303830333038303032303130313331306633303064303630393630383634383031363530333034303230313035303033303830303630393261383634383836663730643031303730313030303061303830333038323033653333303832303338386130303330323031303230323038346333303431343935313964353433363330306130363038326138363438636533643034303330323330376133313265333032633036303335353034303330633235343137303730366336353230343137303730366336393633363137343639366636653230343936653734363536373732363137343639366636653230343334313230326432303437333333313236333032343036303335353034306230633164343137303730366336353230343336353732373436393636363936333631373436393666366532303431373537343638366637323639373437393331313333303131303630333535303430613063306134313730373036633635323034393665363332653331306233303039303630333535303430363133303235353533333031653137306433313339333033353331333833303331333333323335333735613137306433323334333033353331333633303331333333323335333735613330356633313235333032333036303335353034303330633163363536333633326437333664373032643632373236663662363537323264373336393637366535663535343333343264353035323466343433313134333031323036303335353034306230633062363934663533323035333739373337343635366437333331313333303131303630333535303430613063306134313730373036633635323034393665363332653331306233303039303630333535303430363133303235353533333035393330313330363037326138363438636533643032303130363038326138363438636533643033303130373033343230303034633231353737656465626436633762323231386636386464373039306131323138646337623062643666326332383364383436303935643934616634613534313162383334323065643831316633343037653833333331663163353463336637656233323230643662616435643465666634393238393839336537633066313361333832303231313330383230323064333030633036303335353164313330313031666630343032333030303330316630363033353531643233303431383330313638303134323366323439633434663933653465663237653663346636323836633366613262626664326534623330343530363038326230363031303530353037303130313034333933303337333033353036303832623036303130353035303733303031383632393638373437343730336132663266366636333733373032653631373037303663363532653633366636643266366636333733373033303334326436313730373036633635363136393633363133333330333233303832303131643036303335353164323030343832303131343330383230313130333038323031306330363039326138363438383666373633363430353031333038316665333038316333303630383262303630313035303530373032303233303831623630633831623335323635366336393631366536333635323036663665323037343638363937333230363336353732373436393636363936333631373436353230363237393230363136653739323037303631373237343739323036313733373337353664363537333230363136333633363537303734363136653633363532303666363632303734363836353230373436383635366532303631373037303663363936333631363236633635323037333734363136653634363137323634323037343635373236643733323036313665363432303633366636653634363937343639366636653733323036663636323037353733363532633230363336353732373436393636363936333631373436353230373036663663363936333739323036313665363432303633363537323734363936363639363336313734363936663665323037303732363136333734363936333635323037333734363137343635366436353665373437333265333033363036303832623036303130353035303730323031313632613638373437343730336132663266373737373737326536313730373036633635326536333666366432663633363537323734363936363639363336313734363536313735373436383666373236393734373932663330333430363033353531643166303432643330326233303239613032376130323538363233363837343734373033613266326636333732366332653631373037303663363532653633366636643266363137303730366336353631363936333631333332653633373236633330316430363033353531643065303431363034313439343537646236666435373438313836383938393736326637653537383530376537396235383234333030653036303335353164306630313031666630343034303330323037383033303066303630393261383634383836663736333634303631643034303230353030333030613036303832613836343863653364303430333032303334393030333034363032323130306265303935373166653731653165373335623535653561666163623463373266656234343566333031383532323263373235313030326236316562643666353530323231303064313862333530613564643664643665623137343630333562313165623263653837636661336536616636636264383338303839306463383263646461613633333038323032656533303832303237356130303330323031303230323038343936643266626633613938646139373330306130363038326138363438636533643034303330323330363733313162333031393036303335353034303330633132343137303730366336353230353236663666373432303433343132303264323034373333333132363330323430363033353530343062306331643431373037303663363532303433363537323734363936363639363336313734363936663665323034313735373436383666373236393734373933313133333031313036303335353034306130633061343137303730366336353230343936653633326533313062333030393036303335353034303631333032353535333330316531373064333133343330333533303336333233333334333633333330356131373064333233393330333533303336333233333334333633333330356133303761333132653330326330363033353530343033306332353431373037303663363532303431373037303663363936333631373436393666366532303439366537343635363737323631373436393666366532303433343132303264323034373333333132363330323430363033353530343062306331643431373037303663363532303433363537323734363936363639363336313734363936663665323034313735373436383666373236393734373933313133333031313036303335353034306130633061343137303730366336353230343936653633326533313062333030393036303335353034303631333032353535333330353933303133303630373261383634386365336430323031303630383261383634386365336430333031303730333432303030346630313731313834313964373634383564353161356532353831303737366538383061326566646537626165346465303864666334623933653133333536643536363562333561653232643039373736306432323465376262613038666437363137636538386362373662623636373062656338653832393834666635343435613338316637333038316634333034363036303832623036303130353035303730313031303433613330333833303336303630383262303630313035303530373330303138363261363837343734373033613266326636663633373337303265363137303730366336353265363336663664326636663633373337303330333432643631373037303663363537323666366637343633363136373333333031643036303335353164306530343136303431343233663234396334346639336534656632376536633466363238366333666132626266643265346233303066303630333535316431333031303166663034303533303033303130316666333031663036303335353164323330343138333031363830313462626230646561313538333338383961613438613939646562656264656261666461636232346162333033373036303335353164316630343330333032653330326361303261613032383836323636383734373437303361326632663633373236633265363137303730366336353265363336663664326636313730373036633635373236663666373436333631363733333265363337323663333030653036303335353164306630313031666630343034303330323031303633303130303630613261383634383836663736333634303630323065303430323035303033303061303630383261383634386365336430343033303230333637303033303634303233303361636637323833353131363939623138366662333563333536636136326266663431376564643930663735346461323865626566313963383135653432623738396638393866373962353939663938643534313064386639646539633266653032333033323264643534343231623061333035373736633564663333383362393036376664313737633263323136643936346663363732363938323132366635346638376137643162393963623962303938393231363130363939306630393932316430303030333138323031386233303832303138373032303130313330383138363330376133313265333032633036303335353034303330633235343137303730366336353230343137303730366336393633363137343639366636653230343936653734363536373732363137343639366636653230343334313230326432303437333333313236333032343036303335353034306230633164343137303730366336353230343336353732373436393636363936333631373436393666366532303431373537343638366637323639373437393331313333303131303630333535303430613063306134313730373036633635323034393665363332653331306233303039303630333535303430363133303235353533303230383463333034313439353139643534333633303064303630393630383634383031363530333034303230313035303061303831393533303138303630393261383634383836663730643031303930333331306230363039326138363438383666373064303130373031333031633036303932613836343838366637306430313039303533313066313730643331333933303338333133393331333733313332333333303561333032613036303932613836343838366637306430313039333433313164333031623330306430363039363038363438303136353033303430323031303530306131306130363038326138363438636533643034303330323330326630363039326138363438383666373064303130393034333132323034323062303731303365313430613462386231376262613230316130336163643036396234653431366232613263383066383661383338313435633239373566633131333030613036303832613836343863653364303430333032303434363330343430323230343639306264636637626461663833636466343934396534633035313039656463663334373665303564373261313264376335666538633033303033343464663032323032363764353863393365626233353031333836363062353730373938613064643731313734316262353864626436613138363633353038353431656565393035303030303030303030303030227D"
  },
  {
    "path": "packages/dapp/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <!--\n      manifest.json provides metadata used when your web app is added to the\n      homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/favicon-32x32.png\" />\n    <link href=\"https://fonts.googleapis.com/css?family=Spectral:200,400,400i,700,800\" rel=\"stylesheet\" />\n    <link href=\"https://fonts.googleapis.com/css?family=Libre+Franklin:200,400,600,800\" rel=\"stylesheet\" />\n    <title>The Civil Registry - A community-driven space for curating quality journalism</title>\n    <script>\n      window.SERVER_CONFIG = \"$ENVIRONMENT\";\n    </script>\n    <!-- Google Analytics -->\n    <script>\n      (function(i, s, o, g, r, a, m) {\n        i[\"GoogleAnalyticsObject\"] = r;\n        (i[r] =\n          i[r] ||\n          function() {\n            (i[r].q = i[r].q || []).push(arguments);\n          }),\n          (i[r].l = 1 * new Date());\n        (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);\n        a.async = 1;\n        a.src = g;\n        m.parentNode.insertBefore(a, m);\n      })(window, document, \"script\", \"https://www.google-analytics.com/analytics.js\", \"ga\");\n      let TRACKING_ID = \"$GA_TRACKING_ID\";\n      if (TRACKING_ID.startsWith(\"$\")) {\n        TRACKING_ID = \"UA-101410650-6\";\n      }\n      ga(\"create\", TRACKING_ID, \"auto\");\n      ga(\"set\", \"anonymizeIp\", true);\n    </script>\n    <!-- End Google Analytics -->\n  </head>\n  <body style=\"margin:0\">\n    <noscript> You need to enable JavaScript to run this app. </noscript>\n    <div id=\"root\"></div>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/dapp/public/manifest.json",
    "content": "{\n  \"short_name\": \"Civil DApp\",\n  \"name\": \"DApp for Civil TCR and Newsrooms\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    }\n  ],\n  \"start_url\": \"./index.html\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "packages/dapp/src/App.test.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { App } from \"./App\";\n\nit(\"renders without crashing\", () => {\n  const div = document.createElement(\"div\");\n  ReactDOM.render(<App />, div);\n});\n"
  },
  {
    "path": "packages/dapp/src/App.tsx",
    "content": "import * as React from \"react\";\n\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\nimport config from \"./helpers/config\";\nimport { createGlobalStyle } from \"styled-components/macro\";\n\nimport { fonts, colors } from \"@joincivil/elements\";\n\nconst GlobalStyle = createGlobalStyle`\n  html {\n    box-sizing: border-box;\n  }\n  body {\n    font-family: ${fonts.SANS_SERIF};\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: none;\n  }\n  *, :after, :before {\n    box-sizing: inherit;\n  }\n`;\n\n// apps\nconst LazyRegistryApp = React.lazy(async () => {\n  console.log(\"loading registry\");\n  return import(/* webpackChunkName: \"registry-app\" */ \"./registry/LazyRegistryApp\");\n});\nconst EmbedsApp = React.lazy(async () => {\n  console.log(\"loading embed\");\n  return import(/* webpackChunkName: \"embeds-app\" */ \"./embeds/EmbedsApp\");\n});\nconst StoriesApp = React.lazy(async () => {\n  console.log(\"loading stories\");\n  return import(/* webpackChunkName: \"stories-app\" */ \"./stories/StoriesApp\");\n});\nconst KirbyApp = React.lazy(async () => {\n  console.log(\"loading kirby\");\n  return import(/* webpackChunkName: \"kirby-app\" */ \"@joincivil/kirby\");\n});\n\nexport const App = () => {\n  return (\n    <BrowserRouter>\n      <React.Suspense fallback={<></>}>\n        <GlobalStyle />\n        <Switch>\n          <Route path=\"/embed\" render={() => <EmbedsApp />} />\n          <Route path=\"/stories\" render={() => <StoriesApp />} />\n          <Route path=\"/kirby\" render={() => <KirbyApp config={config} />} />\n          <Route path=\"*\" render={() => <LazyRegistryApp />} />\n        </Switch>\n      </React.Suspense>\n    </BrowserRouter>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/apis/CivilHelper.tsx",
    "content": "import * as React from \"react\";\nimport { TwoStepEthTransaction, Civil } from \"@joincivil/core\";\nimport { EthAddress, BigNumber, EthSignedMessage, StorageHeader } from \"@joincivil/typescript-types\";\nimport { CivilErrors, getVoteSaltHash } from \"@joincivil/utils\";\nimport { CivilContext, ICivilContext } from \"@joincivil/components\";\nimport { CivilTCR } from \"@joincivil/core/build/src/contracts/tcr/civilTCR\";\n\nexport const CivilHelperContext = React.createContext<CivilHelper | undefined>(undefined);\n\nexport const CivilHelperProvider: React.FunctionComponent = ({ children }) => {\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  const civilTCR = React.useMemo(() => {\n    return new CivilHelper(civilCtx.civil!);\n  }, [civilCtx.civil]);\n  return <CivilHelperContext.Provider value={civilTCR}>{children}</CivilHelperContext.Provider>;\n};\n\nexport class CivilHelper {\n  public civil: Civil;\n  public tcrPromise: Promise<CivilTCR>;\n\n  constructor(civil: Civil) {\n    this.civil = civil;\n    this.tcrPromise = this.civil.tcrSingletonTrusted();\n  }\n\n  public async getTCR(): Promise<CivilTCR> {\n    return this.tcrPromise;\n  }\n\n  public resolveReparameterizationChallenge = (propID: string) => this.updateReparameterizationProp(propID);\n\n  public approveForProposalChallenge = () => this.approveForProposeReparameterization();\n\n  public async publishContent(content: string): Promise<StorageHeader> {\n    const civil = this.civil;\n    return civil.publishContent(content);\n  }\n\n  public async approveForChallenge(): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    const minDeposit = await parameterizer.getParameterValue(\"minDeposit\");\n    return this.approve(minDeposit);\n  }\n\n  public async approveForApply(multisigAddress?: EthAddress): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    const minDeposit = await parameterizer.getParameterValue(\"minDeposit\");\n    return this.approve(minDeposit, multisigAddress);\n  }\n\n  public async approveForDeposit(\n    tokensWei: BigNumber,\n    multisigAddress?: EthAddress,\n  ): Promise<TwoStepEthTransaction | void> {\n    return this.approve(tokensWei, multisigAddress);\n  }\n\n  public async approveForAppeal(): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const government = await tcr.getGovernment();\n    const appealFee = await government.getAppealFee();\n    return this.approve(appealFee);\n  }\n\n  public async approveForChallengeGrantedAppeal(): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const government = await tcr.getGovernment();\n    const appealFee = await government.getAppealFee();\n    return this.approve(appealFee);\n  }\n\n  public toWei(amount: number): BigNumber {\n    return this.civil.toWei(amount);\n  }\n\n  public async approve(amount: BigNumber, multisigAddress?: EthAddress): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrustedMultisigSupport(multisigAddress);\n    const token = await tcr.getToken();\n    const balance = await token.getBalance();\n    if (balance.lt(amount)) {\n      throw new Error(CivilErrors.InsufficientToken);\n    }\n    const approvedTokens = await token.getApprovedTokensForSpender(tcr.address, multisigAddress || undefined);\n    if (approvedTokens.lt(amount)) {\n      return token.approveSpender(tcr.address, amount);\n    }\n  }\n\n  public async approveForProposeReparameterization(): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    const eip = await tcr.getToken();\n    const deposit = await parameterizer.getParameterValue(\"pMinDeposit\");\n    const approvedTokensForSpender = await eip.getApprovedTokensForSpender(parameterizer.address);\n    if (approvedTokensForSpender.lt(deposit)) {\n      return eip.approveSpender(parameterizer.address, deposit);\n    }\n  }\n\n  public async applyToTCR(address: EthAddress, multisigAddress?: EthAddress): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrustedMultisigSupport(multisigAddress);\n    const parameterizer = await tcr.getParameterizer();\n    const deposit = await parameterizer.getParameterValue(\"minDeposit\");\n    return tcr.apply(address, deposit, \"\");\n  }\n\n  public async challengeGrantedAppeal(address: EthAddress, data: string = \"\"): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    return tcr.challengeGrantedAppeal(address, data);\n  }\n\n  public async requestAppealWithUri(address: EthAddress, uri: string = \"\"): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    return tcr.requestAppealWithURI(address, uri);\n  }\n\n  public async challengeGrantedAppealWithUri(address: EthAddress, uri: string = \"\"): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    return tcr.challengeGrantedAppealWithURI(address, uri);\n  }\n\n  public async challengeListing(address: EthAddress, data: string = \"\"): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    return tcr.challenge(address, data);\n  }\n\n  public async challengeListingWithUri(address: EthAddress, uri: string = \"\"): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    return tcr.challengeWithURI(address, uri);\n  }\n\n  public async commitVote(\n    pollID: BigNumber,\n    voteOption: BigNumber,\n    salt: BigNumber,\n    numTokens: BigNumber,\n  ): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const secretHash = getVoteSaltHash(voteOption.toString(), salt.toString());\n    const voting = tcr.getVoting();\n    const prevPollID = await voting.getPrevPollID(numTokens, pollID);\n\n    return voting.commitVote(pollID, secretHash, numTokens, prevPollID);\n  }\n\n  public async depositTokens(\n    address: EthAddress,\n    numTokens: BigNumber,\n    multisigAddress?: EthAddress,\n  ): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrustedMultisigSupport(multisigAddress);\n    return tcr.deposit(address, numTokens);\n  }\n\n  public async exitListing(address: EthAddress, multisigAddress?: EthAddress): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrustedMultisigSupport(multisigAddress);\n    return tcr.exitListing(address);\n  }\n\n  public async withdrawTokensFromMultisig(multisigAddress?: EthAddress): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const token = await civil.cvlTokenSingletonTrusted(multisigAddress);\n    return token.transferToSelf(await token.getBalance(multisigAddress));\n  }\n\n  public async updateStatus(address: EthAddress): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    return tcr.updateStatus(address);\n  }\n\n  public async getNewsroom(address: EthAddress): Promise<any> {\n    const civil = this.civil;\n    let newsroom;\n    newsroom = await civil.newsroomAtUntrusted(address);\n    return newsroom;\n  }\n\n  public async getParameterValues(params: string[]): Promise<BigNumber[]> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    return Promise.all(params.map(async item => parameterizer.getParameterValue(item)));\n  }\n\n  public async getGovernmentParameters(params: string[]): Promise<BigNumber[]> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const government = await tcr.getGovernment();\n    return Promise.all(params.map(async item => government.getParameterValue(item)));\n  }\n\n  public async getApplicationMaximumLengthInBlocks(): Promise<BigNumber> {\n    const params = await this.getParameterValues([\n      \"applyStageLen\",\n      \"commitStageLen\",\n      \"revealStageLen\",\n      \"challengeAppealLen\",\n      \"challengeAppealCommitLen\",\n      \"challengeAppealRevealLen\",\n    ]);\n    const gov = await this.getGovernmentParameters([\"judgeAppealPhaseLength\", \"requestAppealPhaseLength\"]);\n    // TODO: don't rely on constants\n    // TOOD(dankins): make sure this division works with int bn.js\n    return params\n      .concat(gov)\n      .reduce((acc, item) => {\n        return acc.add(item);\n      }, this.civil.toBigNumber(0))\n      .div(this.civil.toBigNumber(25)); // divided by a pessimistic guess about blocktime\n  }\n\n  public async setAppellate(address: EthAddress): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const council = await civil.councilSingletonTrusted();\n    return council.transferAppellate(address);\n  }\n\n  public async getRawGrantAppeal(address: EthAddress): Promise<string> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const council = await tcr.getCouncil();\n    const tx = await council.getRawGrantAppeal(address);\n    return tx.data!;\n  }\n\n  public async grantAppeal(address: EthAddress, uri: string): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const council = await tcr.getCouncil();\n    return council.grantAppeal(address, uri);\n  }\n\n  public async confirmAppeal(id: number): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const council = await tcr.getCouncil();\n    return council.confirmAppeal(id);\n  }\n\n  public async approveVotingRightsForCommit(numTokens: BigNumber): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n\n    const voting = tcr.getVoting();\n    const eip = await tcr.getToken();\n\n    const currentApprovedTokens = await voting.getNumVotingRights();\n    const difference = numTokens.sub(currentApprovedTokens);\n    if (difference.gt(0)) {\n      const approvedTokensForSpender = await eip.getApprovedTokensForSpender(voting.address);\n      if (approvedTokensForSpender.lt(difference)) {\n        const approveSpenderReceipt = await eip.approveSpender(voting.address, difference);\n        await approveSpenderReceipt.awaitReceipt();\n      }\n    }\n  }\n\n  public async approveVotingRightsForTransfer(tokensWei: BigNumber): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n\n    const voting = tcr.getVoting();\n    const eip = await tcr.getToken();\n\n    const approvedTokensForSpender = await eip.getApprovedTokensForSpender(voting.address);\n\n    try {\n      if (approvedTokensForSpender.lt(tokensWei)) {\n        const approveSpenderReceipt = await eip.approveSpender(voting.address, tokensWei);\n        await approveSpenderReceipt.awaitReceipt();\n      }\n    } catch (err) {\n      return Promise.reject(err);\n    }\n  }\n\n  public async revealVote(pollID: BigNumber, voteOption: BigNumber, salt: BigNumber): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const voting = tcr.getVoting();\n\n    return voting.revealVote(pollID, voteOption, salt);\n  }\n\n  public async withdrawTokens(\n    address: EthAddress,\n    tokensWei: BigNumber,\n    multisigAddress?: EthAddress,\n  ): Promise<TwoStepEthTransaction> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrustedMultisigSupport(multisigAddress);\n    return tcr.withdraw(address, tokensWei);\n  }\n\n  public async proposeReparameterization(\n    paramName: string,\n    newValue: BigNumber,\n  ): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    return parameterizer.proposeReparameterization(paramName, newValue);\n  }\n\n  public async challengeReparameterization(propID: string): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    return parameterizer.challengeReparameterization(propID);\n  }\n\n  public async updateReparameterizationProp(propID: string): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const parameterizer = await tcr.getParameterizer();\n    return parameterizer.processProposal(propID);\n  }\n\n  public async updateGovernmentParameter(\n    paramName: string,\n    newValue: BigNumber,\n  ): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const govt = await tcr.getGovernment();\n    return govt.set(paramName, newValue);\n  }\n\n  public async updateGovernmentProposal(propID: string): Promise<TwoStepEthTransaction | void> {\n    const civil = this.civil;\n    const tcr = await civil.tcrSingletonTrusted();\n    const govt = await tcr.getGovernment();\n    return govt.processProposal(propID);\n  }\n\n  public async multiClaimRewards(challengeIDs: BigNumber[], salts: BigNumber[]): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    return tcr.multiClaimReward(challengeIDs, salts);\n  }\n\n  public async claimRewards(challengeID: BigNumber, salt: BigNumber): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    return tcr.claimReward(challengeID, salt);\n  }\n\n  public async rescueTokens(challengeID: BigNumber): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const civil = this.civil;\n    const voting = tcr.getVoting();\n    return voting.rescueTokens(civil.toBigNumber(challengeID.toString()));\n  }\n\n  public async rescueTokensInMultiplePolls(pollIDs: BigNumber[]): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const voting = tcr.getVoting();\n    return voting.rescueTokensInMultiplePolls(pollIDs);\n  }\n\n  public async withdrawVotingRights(numTokens: BigNumber): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const voting = tcr.getVoting();\n    return voting.withdrawVotingRights(numTokens);\n  }\n\n  public async requestVotingRights(tokensWei: BigNumber): Promise<TwoStepEthTransaction | void> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const voting = tcr.getVoting();\n    return voting.requestVotingRights(tokensWei);\n  }\n\n  public async signMessage(message: string): Promise<EthSignedMessage> {\n    const civil = this.civil;\n    return civil.signMessage(message);\n  }\n\n  public async getConstitutionUri(): Promise<string> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const government = await tcr.getGovernment();\n    return government.getConstitutionURI();\n  }\n\n  public async getConstitutionHash(): Promise<string> {\n    const tcr = await this.civil.tcrSingletonTrusted();\n    const government = await tcr.getGovernment();\n    return government.getConstitutionHash();\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/AuthButtonContent.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors } from \"@joincivil/components\";\n\nconst StyledAuthServiceIconContainer = styled.div`\n  align-items: center;\n  display: flex;\n  background: ${colors.accent.CIVIL_GRAY_5};\n  border-radius: 50%;\n  height: 60px;\n  justify-content: center;\n  margin-right: 15px;\n  min-width: 60px;\n  width: 60px;\n`;\n\nconst StyledAuthServiceBody = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 13px;\n  font-weight: 400;\n  line-height: 18px;\n`;\n\nconst StyledAuthServiceHeader = styled.h4`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 16px;\n  font-weight: 500;\n  line-height: 26px;\n  margin: 0 0 13px;\n`;\n\nconst StyledAuthButtonContent = styled.div`\n  align-items: center;\n  display: flex;\n`;\n\nexport const StyledCardTransactionButtonContainer = styled.div`\n  margin: 0 0 18px;\n\n  &:hover {\n    ${StyledAuthServiceHeader} {\n      color: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport interface AuthButtonProps {\n  image: JSX.Element;\n  header: JSX.Element | string;\n  content: JSX.Element | string;\n}\n\nconst AuthButtonContent: React.FunctionComponent<AuthButtonProps> = props => {\n  return (\n    <StyledAuthButtonContent>\n      <StyledAuthServiceIconContainer>{props.image}</StyledAuthServiceIconContainer>\n\n      <StyledAuthServiceBody>\n        <StyledAuthServiceHeader>{props.header}</StyledAuthServiceHeader>\n        {props.content}\n      </StyledAuthServiceBody>\n    </StyledAuthButtonContent>\n  );\n};\n\nexport default React.memo(AuthButtonContent);\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/AuthLogout.tsx",
    "content": "import * as React from \"react\";\nimport { Redirect } from \"react-router\";\nimport { StyledPageContentWithPadding } from \"../utility/styledComponents\";\n\nimport { clearApolloSession } from \"@joincivil/utils\";\n\nconst AuthLogout = () => {\n  const [loggedOut, setLoggedOut] = React.useState(false);\n  React.useEffect(() => {\n    setTimeout(() => {\n      clearApolloSession();\n      setLoggedOut(true);\n    }, 500);\n  }, []);\n\n  return loggedOut ? <Redirect to=\"/\" /> : <StyledPageContentWithPadding>Logging out...</StyledPageContentWithPadding>;\n};\n\nexport default AuthLogout;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/AuthWeb3.tsx",
    "content": "import * as React from \"react\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { CivilContext, ICivilContext, MetaMaskModal, ModalHeading } from \"@joincivil/components\";\nimport { KirbyEthereumContext, KirbyEthereum } from \"@kirby-web3/ethereum-react\";\nimport { StyledAuthHeader } from \"./authStyledComponents\";\n\nexport interface AuthWeb3Props {\n  messagePrefix?: string;\n  header?: JSX.Element | string;\n  buttonOnly?: boolean;\n  onOuterClicked?(): void;\n  onAuthenticated?(address: EthAddress): void;\n  onSignUpContinue?(): void;\n  onSignUpUserAlreadyExists?(): void;\n  onLogInNoUserExists?(): void;\n  onUserSelectSignUp?(): void;\n  onUserSelectLogIn?(): void;\n}\n\nconst USER_ALREADY_EXISTS = \"GraphQL error: User already exists with this identifier\";\nconst NO_USER_EXISTS = \"GraphQL error: signature invalid or not signed up\";\nconst CANCELLED = \"cancelled\";\nconst SWITCH_TO_SIGNUP = \"switch to sign up\";\nconst SWITCH_TO_LOGIN = \"switch to log in\";\n\nexport const AuthWeb3: React.FunctionComponent<AuthWeb3Props> = (props: AuthWeb3Props) => {\n  // context\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  const kirby = React.useContext<KirbyEthereum>(KirbyEthereumContext);\n\n  // state\n  const [isSignRejectionOpen, setisSignRejectionOpen] = React.useState(false);\n  const [errorMessage, setErrorMessage] = React.useState<string | undefined>(undefined);\n  const [onErrContinue, setOnErrContinue] = React.useState<{ cb(): void } | undefined>(undefined);\n\n  // effects\n  React.useEffect(() => {\n    kirbyLogin().catch(err => {\n      console.log(\"error\", err);\n    });\n  }, []);\n\n  async function kirbyLogin(): Promise<void> {\n    try {\n      let sig;\n      if (props.messagePrefix === \"Log in to Civil\") {\n        sig = await kirby.kirby.plugins.identity.login(\"Civil\");\n        await civilCtx.auth.authenticate(sig);\n      } else {\n        sig = await kirby.kirby.plugins.identity.signup(\"Civil\");\n        await civilCtx.auth.signup(sig);\n      }\n      if (props.onAuthenticated) {\n        props.onAuthenticated(sig.signer);\n      }\n      if (props.onSignUpContinue) {\n        props.onSignUpContinue();\n      }\n    } catch (err) {\n      if (err.toString().includes(USER_ALREADY_EXISTS)) {\n        setErrorMessage(err);\n        setOnErrContinue({ cb: props.onSignUpUserAlreadyExists });\n      } else if (err.toString().includes(NO_USER_EXISTS)) {\n        setErrorMessage(err);\n        setOnErrContinue({ cb: props.onLogInNoUserExists });\n      } else if (err.toString().includes(CANCELLED)) {\n        setOnErrContinue({ cb: props.onOuterClicked });\n        if (props.onOuterClicked) {\n          props.onOuterClicked();\n        }\n      } else if (err.toString().includes(SWITCH_TO_SIGNUP)) {\n        if (props.onUserSelectSignUp) {\n          props.onUserSelectSignUp();\n        }\n      } else if (err.toString().includes(SWITCH_TO_LOGIN)) {\n        if (props.onUserSelectLogIn) {\n          props.onUserSelectLogIn();\n        }\n      } else {\n        setErrorMessage(err);\n        setOnErrContinue({ cb: props.onOuterClicked });\n      }\n    }\n  }\n\n  return (\n    <>\n      {renderSignRejectionModal()}\n      {renderSaveErrorModal()}\n    </>\n  );\n\n  function renderSignRejectionModal(): JSX.Element | null {\n    if (!isSignRejectionOpen) {\n      return null;\n    }\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText=\"To authenticate that you own your wallet address, you need to sign the message in your MetaMask wallet.\"\n        cancelTransaction={cancelTransaction}\n      >\n        <ModalHeading>Failed to authenticate your wallet address</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  function renderSaveErrorModal(): JSX.Element | null {\n    if (!errorMessage) {\n      return null;\n    }\n\n    console.log(\"rendering error message\", errorMessage);\n    const err = errorMessage.toString();\n    let bodyText = `Something went wrong when authenticating your wallet address (${errorMessage}). Please try again later.`;\n    if (err.includes(USER_ALREADY_EXISTS)) {\n      bodyText = \"A user with this Ethereum address already exists. You will now be redirected to Log In.\";\n    } else if (err.includes(NO_USER_EXISTS)) {\n      bodyText = \"No user with this Ethereum address was found. You will now be redirected to Sign Up.\";\n    }\n\n    return (\n      <div>\n        <StyledAuthHeader>Log in to Civil</StyledAuthHeader>\n        <MetaMaskModal alert={true} bodyText={bodyText} cancelTransaction={cancelTransaction}>\n          <ModalHeading>Failed to save your wallet address</ModalHeading>\n        </MetaMaskModal>\n      </div>\n    );\n  }\n\n  function cancelTransaction(): void {\n    console.log(\"calling cancelTransaction\");\n    if (onErrContinue) {\n      onErrContinue.cb();\n    }\n    setErrorMessage(undefined);\n    setOnErrContinue(undefined);\n    setisSignRejectionOpen(false);\n  }\n};\n\nexport default AuthWeb3;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/AuthWeb3Login.tsx",
    "content": "import * as React from \"react\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\n\nimport AuthWeb3 from \"./AuthWeb3\";\n\nexport interface AuthWeb3LoginProps {\n  onAuthenticated?(address: EthAddress): void;\n  onSignUpContinue?(): void;\n  onOuterClicked?(): void;\n  onSignUpClicked?(): void;\n  onLogInNoUserExists?(): void;\n  onUserSelectSignUp?(): void;\n}\n\nexport interface AuthLoginDropdownProps {\n  target?: JSX.Element;\n}\n\nexport const AuthWeb3LoginPage: React.FunctionComponent<AuthWeb3LoginProps> = props => {\n  return (\n    <AuthWeb3\n      messagePrefix=\"Log in to Civil\"\n      onOuterClicked={props.onOuterClicked}\n      onSignUpContinue={props.onSignUpContinue}\n      onLogInNoUserExists={props.onLogInNoUserExists}\n      onUserSelectSignUp={props.onUserSelectSignUp}\n    />\n  );\n};\n\nexport default AuthWeb3LoginPage;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/AuthWeb3Signup.tsx",
    "content": "import * as React from \"react\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport AuthWeb3 from \"./AuthWeb3\";\n\nexport interface AuthWeb3SignUpProps {\n  onAuthenticated?(address: EthAddress): void;\n  onSignUpContinue?(): void;\n  onOuterClicked?(): void;\n  onLoginClicked?(): void;\n  onSignUpUserAlreadyExists?(): void;\n  onUserSelectLogIn?(): void;\n}\n\nconst AuthWeb3SignupPage: React.FunctionComponent<AuthWeb3SignUpProps> = props => {\n  return (\n    <AuthWeb3\n      messagePrefix=\"Sign up with Civil\"\n      onOuterClicked={props.onOuterClicked}\n      onSignUpContinue={props.onSignUpContinue}\n      onSignUpUserAlreadyExists={props.onSignUpUserAlreadyExists}\n      onUserSelectLogIn={props.onUserSelectLogIn}\n    />\n  );\n};\n\nexport default React.memo(AuthWeb3SignupPage);\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/CheckEmail.tsx",
    "content": "import * as React from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport { AccountEmailSent, AuthWrapper } from \"@joincivil/components\";\n\nexport interface AuthCheckEmailProps extends Partial<RouteComponentProps> {\n  isNewUser: boolean;\n  emailAddress: string;\n  onSendAgain(): void;\n}\n\nconst AuthCheckEmail: React.FunctionComponent<AuthCheckEmailProps> = props => {\n  const { isNewUser, emailAddress, onSendAgain } = props;\n\n  // TODO(jorgelo): Maybe redirect if emailAddress is not set\n\n  return (\n    <>\n      <AuthWrapper>\n        <AccountEmailSent\n          isNewUser={isNewUser}\n          emailAddress={emailAddress || \"no email set\"} // The default keeps the page from breaking.\n          onSendAgain={onSendAgain}\n        />\n      </AuthWrapper>\n    </>\n  );\n};\n\nexport default AuthCheckEmail;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/ConfirmEmail.tsx",
    "content": "import * as React from \"react\";\nimport { ConfirmEmailToken, ICivilContext, CivilContext } from \"@joincivil/components\";\nimport { RouteComponentProps } from \"react-router-dom\";\n\nexport interface ConfirmEmailTokenProps extends Partial<RouteComponentProps> {\n  token?: string;\n  onConfirmEmailContinue?(): void;\n}\n\nconst ConfirmEmail: React.FunctionComponent<ConfirmEmailTokenProps> = ({ token, onConfirmEmailContinue }) => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  if (!token) {\n    return <></>;\n  }\n  return (\n    <ConfirmEmailToken\n      token={token}\n      onEmailConfirmContinue={onConfirmEmailContinue}\n      onMutationSuccess={async () => {\n        await civilContext.auth.handleInitialState();\n      }}\n    />\n  );\n};\n\nexport default ConfirmEmail;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/Eth.tsx",
    "content": "import * as React from \"react\";\nimport { AuthOuterWrapper, CivilContext, WalletOnboardingV2, LoadUser } from \"@joincivil/components\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { State } from \"../../redux/reducers\";\n\nexport interface AuthEthProps {\n  onAuthentication(): void;\n}\n\nexport interface AuthEthReduxProps {\n  userAccount?: EthAddress;\n}\n\n// TODO(jorgelo): Allow user to add their wallet ONLY after they are signed in .\n\nconst AuthEth: React.FunctionComponent<AuthEthProps & AuthEthReduxProps & DispatchProp<any>> = props => {\n  const { civil } = React.useContext(CivilContext);\n\n  const { onAuthentication, userAccount } = props;\n  const metamaskWalletAddress = userAccount || undefined;\n\n  return (\n    <AuthOuterWrapper>\n      <LoadUser>\n        {({ loading, user }) => {\n          if (loading) {\n            return null;\n          }\n\n          const profileWalletAddress = user && user.ethAddress;\n\n          return (\n            <WalletOnboardingV2\n              civil={civil}\n              metamaskWalletAddress={metamaskWalletAddress}\n              profileWalletAddress={profileWalletAddress}\n              onOnboardingComplete={onAuthentication}\n            />\n          );\n        }}\n      </LoadUser>\n    </AuthOuterWrapper>\n  );\n};\n\nconst mapStateToProps = (state: State, ownProps: AuthEthProps): AuthEthProps & AuthEthReduxProps => {\n  const { user } = state.networkDependent;\n\n  return {\n    ...ownProps,\n    userAccount: user.account.account,\n  };\n};\n\nconst AuthEthConnected = connect(mapStateToProps)(AuthEth);\n\nexport default AuthEthConnected;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/Login.tsx",
    "content": "import * as React from \"react\";\nimport {\n  AccountEmailAuth,\n  AuthApplicationEnum,\n  AuthPageFooterLink,\n  AuthWrapper,\n  AuthTextSigninWithEmail,\n} from \"@joincivil/components\";\nimport { Link } from \"react-router-dom\";\n\nexport interface AuthLoginProps {\n  onEmailSend(isNewUser: boolean, emailAddress: string): void;\n}\n\nconst AuthLogin: React.FunctionComponent<AuthLoginProps> = props => {\n  return (\n    <AuthWrapper>\n      <AccountEmailAuth\n        applicationType={AuthApplicationEnum.STOREFRONT}\n        isNewUser={false}\n        onEmailSend={(isNewUser: boolean, emailAddress: string) => props.onEmailSend(isNewUser, emailAddress)}\n        headerComponent={<AuthTextSigninWithEmail />}\n        loginPath=\"/auth/login\"\n        signupPath=\"/auth/signup\"\n      />\n\n      <AuthPageFooterLink>\n        <Link to=\"/auth/signup\">Don't have an account?</Link>\n      </AuthPageFooterLink>\n    </AuthWrapper>\n  );\n};\n\nexport default AuthLogin;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/SetAvatar.tsx",
    "content": "import * as React from \"react\";\nimport { UserSetAvatar, AuthTextSetAvatar, Modal } from \"@joincivil/components\";\n\ninterface SetAvatarProps {\n  channelID: string;\n  isProfileEdit?: boolean; // true if component is displayed via profile edit flow (as opposed to sign up flow)\n  onSetAvatarComplete?(): void;\n  onSetAvatarCancelled?(): void;\n}\nconst SetAvatar: React.FunctionComponent<SetAvatarProps> = props => {\n  return (\n    <Modal width={588}>\n      <UserSetAvatar {...props} headerComponent={<AuthTextSetAvatar />} />\n    </Modal>\n  );\n};\n\nexport default SetAvatar;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/SetEmail.tsx",
    "content": "import * as React from \"react\";\nimport { Modal, UserSetEmail } from \"@joincivil/components\";\n\ninterface SetUsernameProps {\n  channelID: string;\n  isProfileEdit?: boolean; // true if component is displayed via profile edit flow (as opposed to sign up flow)\n  onSetEmailComplete?(): void;\n  onSetEmailCancelled?(): void;\n}\nconst SetEmail: React.FunctionComponent<SetUsernameProps> = props => {\n  return (\n    <Modal width={588}>\n      <UserSetEmail {...props} />\n    </Modal>\n  );\n};\n\nexport default SetEmail;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/SetUsername.tsx",
    "content": "import * as React from \"react\";\nimport { UserSetHandle, AuthApplicationEnum, AuthTextSetHandle, Modal } from \"@joincivil/components\";\n\ninterface SetUsernameProps {\n  channelID: string;\n  onSetHandleComplete?(): void;\n}\nconst SetUsername: React.FunctionComponent<SetUsernameProps> = props => {\n  return (\n    <Modal width={588}>\n      <UserSetHandle\n        {...props}\n        applicationType={AuthApplicationEnum.STOREFRONT}\n        isNewUser={false}\n        headerComponent={<AuthTextSetHandle />}\n        onSetHandleComplete={props.onSetHandleComplete}\n      />\n    </Modal>\n  );\n};\n\nexport default SetUsername;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/Signup.tsx",
    "content": "import * as React from \"react\";\nimport {\n  AccountEmailAuth,\n  AuthApplicationEnum,\n  AuthPageFooterLink,\n  AuthWrapper,\n  AuthTextCreateAccount,\n} from \"@joincivil/components\";\nimport { Link } from \"react-router-dom\";\n\nexport interface AuthSignupProps {\n  onEmailSend(isNewUser: boolean, emailAddress: string): void;\n}\n\nconst AuthSignup: React.FunctionComponent<AuthSignupProps> = props => {\n  return (\n    <AuthWrapper>\n      <AccountEmailAuth\n        applicationType={AuthApplicationEnum.STOREFRONT}\n        isNewUser={true}\n        onEmailSend={(isNewUser: boolean, emailAddress: string) => props.onEmailSend(isNewUser, emailAddress)}\n        headerComponent={<AuthTextCreateAccount />}\n        loginPath=\"/auth/login\"\n        signupPath=\"/auth/signup\"\n      />\n\n      <AuthPageFooterLink>\n        <Link to=\"/auth/login\">Already have an account?</Link>\n      </AuthPageFooterLink>\n    </AuthWrapper>\n  );\n};\n\nexport default AuthSignup;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/VerifyToken.tsx",
    "content": "import * as React from \"react\";\nimport { AccountVerifyToken, AuthWrapper } from \"@joincivil/components\";\nimport { RouteComponentProps, Redirect } from \"react-router-dom\";\n\nexport interface AuthVerifyTokenProps extends Partial<RouteComponentProps> {\n  isNewUser: boolean;\n  token?: string;\n  onAuthenticationContinue(isNewUser: boolean): void;\n}\n\nconst AuthVerifyToken: React.FunctionComponent<AuthVerifyTokenProps> = ({\n  token,\n  onAuthenticationContinue,\n  isNewUser,\n}) => {\n  if (!token) {\n    const target = isNewUser ? \"/auth/signup\" : \"/auth/login\";\n\n    return <Redirect to={target} />;\n  }\n\n  return (\n    <AuthWrapper>\n      <AccountVerifyToken isNewUser={isNewUser} token={token} onAuthenticationContinue={onAuthenticationContinue} />\n    </AuthWrapper>\n  );\n};\n\nexport default AuthVerifyToken;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/authStyledComponents.tsx",
    "content": "import styled from \"styled-components/macro\";\n\nexport const StyledAuthHeader = styled.div`\n  font-size: 24px;\n  font-weight: bold;\n  line-height: 29px;\n  margin: 0 0 24px;\n`;\n\nexport const StyledAuthHeaderCopy = styled.div`\n  font-size: 16px;\n  line-height: 26px;\n  margin: 0 0 24px;\n`;\n\nexport const StyledAuthAltOption = styled.div`\n  font-size: 14px;\n  line-height: 17px;\n  margin: 37px 0 0;\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/Auth/index.tsx",
    "content": "import * as React from \"react\";\nimport { Route, Switch, RouteComponentProps } from \"react-router-dom\";\nimport { AuthenticatedRoute } from \"@joincivil/components\";\nimport AsyncComponent from \"../utility/AsyncComponent\";\nimport * as qs from \"querystring\";\nimport { routes } from \"../../constants\";\nimport SetUsername from \"./SetUsername\";\nimport ConfirmEmail from \"./ConfirmEmail\";\n\nconst AuthLogin = React.lazy(async () => import(/* webpackChunkName: \"auth-login\" */ \"./Login\"));\nconst AuthWeb3Login = React.lazy(async () => import(/* webpackChunkName: \"auth-web3login\" */ \"./AuthWeb3Login\"));\nconst AuthWeb3Signup = React.lazy(async () => import(/* webpackChunkName: \"auth-web3-signup\" */ \"./AuthWeb3Signup\"));\nconst AuthEthConnected = React.lazy(async () => import(/* webpackChunkName: \"auth-eth\" */ \"./Eth\"));\nconst AuthSignup = React.lazy(async () => import(/* webpackChunkName: \"auth-signup\" */ \"./Signup\"));\nconst AuthCheckEmail = React.lazy(async () => import(/* webpackChunkName: \"auth-check-email\" */ \"./CheckEmail\"));\nconst AuthVerifyToken = React.lazy(async () => import(/* webpackChunkName: \"auth-verify-token\" */ \"./VerifyToken\"));\nconst AuthLogout = React.lazy(async () => import(/* webpackChunkName: \"auth-logout\" */ \"./AuthLogout\"));\n\ninterface AuthVerifyTokenRouteParams {\n  token: string;\n}\n\ninterface AuthenticatedRedirectRouteParams {\n  next?: string;\n}\n\nconst TOKEN_PARAM = \"jwt\";\n\nfunction getTokenFromSearch(search: string): string | undefined {\n  try {\n    // Needs substr since search includes the ?\n    const parsed = qs.parse(search.substr(1));\n\n    return parsed[TOKEN_PARAM] as string;\n  } catch (err) {\n    console.error(\"Error parsing query:\", err);\n    return undefined;\n  }\n}\n\nexport class AuthRouter extends React.Component<RouteComponentProps> {\n  public render(): JSX.Element {\n    const { match } = this.props;\n\n    const routeProps = {\n      redirectTo: routes.TOKEN_STOREFRONT,\n      authUrl: routes.AUTH_SIGNUP,\n    };\n    return (\n      <>\n        <Switch>\n          {/* TODO(jorgelo): Add a 404 */}\n          {/* Login Routes */}\n          <Route path={routes.AUTH_LOGOUT} exact component={AsyncComponent(AuthLogout)} />\n\n          {/* Add Wallet */}\n          <AuthenticatedRoute\n            path={routes.WALLET_HOME}\n            {...routeProps}\n            render={AsyncComponent(AuthEthConnected, { onAuthentication: this.handleOnAddWallet })}\n          />\n          <AuthenticatedRoute\n            path={routes.SET_HANDLE}\n            exact\n            render={(props: RouteComponentProps) => {\n              return AsyncComponent(SetUsername)({\n                onSendAgain: () => this.handleOnSendAgain(false),\n              });\n            }}\n          />\n          <Route\n            path={routes.CONFIRM_EMAIL}\n            render={(props: RouteComponentProps) => {\n              const token = getTokenFromSearch(props.location.search);\n              return AsyncComponent(ConfirmEmail)({\n                token,\n                onConfirmEmailContinue: () => {\n                  this.props.history.push({\n                    pathname: \"/\",\n                    state: {},\n                  });\n                },\n              });\n            }}\n          />\n          <AuthenticatedRoute\n            {...routeProps}\n            onlyAllowUnauthenticated\n            path={`${match.path}/`}\n            render={() => (\n              <>\n                <Route\n                  path={`${match.path}/login/web3`}\n                  exact\n                  render={(props: RouteComponentProps<AuthenticatedRedirectRouteParams>) => {\n                    return AsyncComponent(AuthWeb3Login)({ onSignUpContinue: this.handleOnSignupContinue });\n                  }}\n                />\n                <Route\n                  path={`${match.path}/login`}\n                  exact\n                  render={AsyncComponent(AuthLogin, { onEmailSend: this.handleAuthEmail })}\n                />\n                <Route\n                  path={`${match.path}/login/check-email`}\n                  render={(props: RouteComponentProps) => {\n                    return AsyncComponent(AuthCheckEmail)({\n                      isNewUser: false,\n                      emailAddress: props.location!.state.emailAddress,\n                      onSendAgain: () => this.handleOnSendAgain(false),\n                    });\n                  }}\n                />\n                <Route\n                  path={`${match.path}/login/verify-token`}\n                  exact\n                  render={(props: RouteComponentProps<AuthVerifyTokenRouteParams>) => {\n                    const token = getTokenFromSearch(props.location.search);\n                    return AsyncComponent(AuthVerifyToken)({\n                      token,\n                      isNewUser: false,\n                      onAuthenticationContinue: this.handleOnAuthenticationContinue,\n                    });\n                  }}\n                />\n                {/* SignUp Routes */}\n                <Route\n                  path={`${match.path}/signup/web3`}\n                  exact\n                  render={(props: RouteComponentProps<AuthenticatedRedirectRouteParams>) => {\n                    return AsyncComponent(AuthWeb3Signup)({ onSignUpContinue: this.handleOnSignupContinue });\n                  }}\n                />\n                <Route\n                  path={`${match.path}/signup`}\n                  exact\n                  render={AsyncComponent(AuthSignup, { onEmailSend: this.handleAuthEmail })}\n                />\n                <Route\n                  path={`${match.path}/signup/check-email`}\n                  exact\n                  render={(props: RouteComponentProps<AuthVerifyTokenRouteParams>) => {\n                    return AsyncComponent(AuthCheckEmail)({\n                      isNewUser: true,\n                      emailAddress: props.location!.state.emailAddress,\n                      onSendAgain: () => this.handleOnSendAgain(true),\n                    });\n                  }}\n                />\n                <Route\n                  path={`${match.path}/signup/verify-token`}\n                  exact\n                  render={(props: RouteComponentProps<AuthVerifyTokenRouteParams>) => {\n                    const token = getTokenFromSearch(props.location.search);\n                    return AsyncComponent(AuthVerifyToken)({\n                      token,\n                      isNewUser: true,\n                      onAuthenticationContinue: this.handleOnAuthenticationContinue,\n                    });\n                  }}\n                />\n              </>\n            )}\n          />\n        </Switch>\n      </>\n    );\n  }\n\n  public handleOnSendAgain = (isNewUser: boolean): void => {\n    const {\n      match: { path: basePath },\n      history,\n    } = this.props;\n\n    const newPath = basePath + `/${isNewUser ? \"signup\" : \"login\"}`;\n\n    history.push({\n      pathname: newPath,\n      state: {},\n    });\n  };\n\n  public handleOnAuthenticationContinue = (isNewUser: boolean, redirectUrl?: string): void => {\n    const { history } = this.props;\n\n    history.push({\n      pathname: redirectUrl || routes.TOKEN_STOREFRONT,\n      state: {},\n    });\n  };\n\n  public handleOnSignupContinue = (): void => {\n    const { history } = this.props;\n\n    history.push({\n      pathname: routes.SET_HANDLE,\n      state: {},\n    });\n  };\n\n  public handleOnAddWallet = (): void => {\n    const { history } = this.props;\n\n    history.push({\n      pathname: routes.TOKEN_STOREFRONT,\n      state: {},\n    });\n  };\n\n  public handleAuthEmail = (isNewUser: boolean, emailAddress: string): void => {\n    const {\n      match: { path: basePath },\n      history,\n    } = this.props;\n\n    const newPath = basePath + `/${isNewUser ? \"signup\" : \"login\"}/check-email`;\n\n    history.push({\n      pathname: newPath,\n      state: { emailAddress },\n    });\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Boosts/Boost.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { State } from \"../../redux/reducers\";\nimport { BoostWrapper, ComingSoonText } from \"./BoostStyledComponents\";\nimport { Helmet } from \"react-helmet\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\nimport { Boost } from \"@joincivil/sdk\";\nimport { FeatureFlag } from \"@joincivil/components\";\n\nexport interface BoostPageProps {\n  match: any;\n  boostId: string;\n  editMode?: boolean;\n  payment?: boolean;\n}\n\nclass BoostPage extends React.Component<BoostPageProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <Helmet title={(this.props.editMode ? \"Edit \" : \"\") + \"Civil Project Boost - The Civil Registry\"} />\n        <ScrollToTopOnMount />\n        <FeatureFlag feature={\"boosts-mvp\"} replacement={<ComingSoonText />}>\n          <BoostWrapper>\n            <Boost\n              open={true}\n              boostId={this.props.boostId}\n              editMode={this.props.editMode}\n              payment={this.props.payment}\n            />\n          </BoostWrapper>\n        </FeatureFlag>\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (state: State, ownProps: BoostPageProps): BoostPageProps => {\n  return {\n    ...ownProps,\n    boostId: ownProps.match.params.boostId,\n  };\n};\n\nexport default connect(mapStateToProps)(BoostPage);\n"
  },
  {
    "path": "packages/dapp/src/components/Boosts/BoostFeedPage.tsx",
    "content": "import * as React from \"react\";\nimport {\n  BoostHeaderWrapper,\n  BoostHeader,\n  BoostWrapper,\n  BoostIntro,\n  BoostLearnMore,\n  ComingSoonText,\n} from \"./BoostStyledComponents\";\nimport { Helmet } from \"react-helmet\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\nimport { FeatureFlag } from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\nimport StoryFeed from \"../StoryFeed/StoryFeed\";\n\nclass BoostFeedPage extends React.Component {\n  public render(): JSX.Element {\n    return (\n      <>\n        <Helmet title=\"Civil Project Boost - The Civil Registry\" />\n        <ScrollToTopOnMount />\n        <FeatureFlag feature={\"boosts-mvp\"} replacement={<ComingSoonText />}>\n          <BoostHeaderWrapper>\n            <BoostHeader>\n              <h1>Project Boosts: support the work that journalists do.</h1>\n              <BoostIntro>\n                Newsrooms around the world need your help to fund and start new projects. These Newsrooms are setting up\n                Project Boosts to help get the word out about what they want to do and let their supporters and fans,\n                like you, help them do it. Support these newsrooms by funding their Project Boosts to help hit their\n                goals. Good reporting costs money, and the Civil community is making it happen.{\" \"}\n                <BoostLearnMore href={urlConstants.FAQ_BOOSTS} target=\"_blank\">\n                  Learn More\n                </BoostLearnMore>\n              </BoostIntro>\n            </BoostHeader>\n          </BoostHeaderWrapper>\n          <BoostWrapper>\n            <StoryFeed\n              queryFilterAlg=\"vw_post_boost_chronological\"\n              match={this.props.match}\n              payment={false}\n              newsroom={false}\n            />\n          </BoostWrapper>\n        </FeatureFlag>\n      </>\n    );\n  }\n}\n\nexport default BoostFeedPage;\n"
  },
  {
    "path": "packages/dapp/src/components/Boosts/BoostStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, fonts, mediaQueries, ChevronAnchor } from \"@joincivil/components\";\n\nexport const ComingSoonText: React.FunctionComponent = props => <ComingSoon>Coming soon!</ComingSoon>;\n\nexport const ComingSoon = styled.h3`\n  margin: 150px 0 !important;\n  text-align: center;\n`;\n\nexport const BoostHeaderWrapper = styled.div`\n  padding: 20px 15px;\n  margin: 74px 0 30px;\n`;\n\nexport const BoostHeader = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  margin: 0 auto;\n  max-width: 800px;\n  position: relative;\n\n  h1 {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 36px;\n    font-weight: bold;\n    line-height: 49px;\n    margin: 0 0 10px;\n\n    ${mediaQueries.MOBILE} {\n      color: ${colors.primary.BLACK};\n      font-size: 24px;\n      line-height: 30px;\n    }\n  }\n`;\n\nexport const BoostIntro = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 18px;\n  font-weight: 200;\n  line-height: 26px;\n  margin: 0 0 20px;\n\n  ${mediaQueries.MOBILE} {\n    color: ${colors.primary.BLACK};\n    font-size: 16px;\n    line-height: 24px;\n  }\n`;\n\nexport const BoostLearnMore = styled(ChevronAnchor)`\n  color: ${colors.accent.CIVIL_BLUE};\n  font-size: 15px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 13px;\n  }\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: underline;\n  }\n`;\n\nexport const BoostWrapper = styled.div`\n  margin: 0 auto;\n  max-width: 800px;\n`;\n\nexport const BoostSuccessWrapper = styled.div`\n  margin: 130px auto;\n  max-width: 900px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    margin: 100px auto;\n  }\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/Boosts/BoostSuccess.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\nimport gql from \"graphql-tag\";\nimport { Helmet } from \"react-helmet\";\nimport { Query } from \"react-apollo\";\nimport { LoadingMessage } from \"@joincivil/components\";\nimport { BoostSuccess, BoostSuccessWrap } from \"./BoostSuccessComponent\";\n\nexport const boostDataQuery = gql`\n  query Boost($id: String!) {\n    postsGet(id: $id) {\n      id\n      ... on PostBoost {\n        channel {\n          id\n          isStripeConnected\n          newsroom {\n            name\n            multisigAddress\n          }\n        }\n        title\n      }\n    }\n  }\n`;\n\nexport interface BoostPageProps {\n  match: any;\n}\n\nclass BoostSuccessPage extends React.Component<BoostPageProps> {\n  public render(): JSX.Element {\n    const id = this.props.match.params.boostId;\n\n    return (\n      <>\n        <Helmet title=\"Civil Project Boost - The Civil Registry\" />\n        <ScrollToTopOnMount />\n        <Query query={boostDataQuery} variables={{ id }}>\n          {({ loading, error, data }) => {\n            if (loading) {\n              return (\n                <BoostSuccessWrap>\n                  <LoadingMessage>Loading...</LoadingMessage>\n                </BoostSuccessWrap>\n              );\n            } else if (error) {\n              console.error(\"error loading boost data. error:\", error, \"data:\", data);\n              return (\n                <BoostSuccessWrap>\n                  <h2>Project Boost Launched!</h2>\n                  <p>Your Project Boost has successfully launched and is live.</p>\n                  <p>\n                    <Link to={\"/boosts/\" + id}>View your Boost</Link>\n                  </p>\n                  <p>\n                    <Link to={\"/boosts/\" + id + \"/edit\"}>Edit your Boost</Link>\n                  </p>\n                </BoostSuccessWrap>\n              );\n            }\n\n            const { postsGet } = data;\n\n            return (\n              <BoostSuccessWrap>\n                <BoostSuccess\n                  boostId={id}\n                  title={postsGet.title}\n                  newsroom={postsGet.channel.newsroom.name}\n                  newsroomAddress={postsGet.channel.newsroom.multisigAddress}\n                  isStripeConnected={postsGet.channel.isStripeConnected}\n                />\n              </BoostSuccessWrap>\n            );\n          }}\n        </Query>\n      </>\n    );\n  }\n}\n\nexport default BoostSuccessPage;\n"
  },
  {
    "path": "packages/dapp/src/components/Boosts/BoostSuccessComponent.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { copyToClipboard, urlConstants as link } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport { DashboardNewsroomStripeConnect } from \"@joincivil/components\";\nimport {\n  colors,\n  mediaQueries,\n  InvertedButton,\n  buttonSizes,\n  HollowGreenCheck,\n  ShareTwitterIcon,\n  ShareEmailIcon,\n  LinkIcon,\n} from \"@joincivil/elements\";\nimport { BoostEmbedIframe } from \"@joincivil/sdk\";\n\ninterface StyleProps {\n  backgroundColor?: string;\n}\n\nexport const BoostSuccessWrap = styled.div`\n  margin: 130px auto;\n  max-width: 900px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    margin: 100px auto;\n  }\n\n  h2 {\n    font-size: 24px;\n    font-weight: 800;\n    letter-spacing: 0.2px;\n    line-height: 30px;\n    margin: 0 0 10px;\n\n    ${mediaQueries.MOBILE} {\n      font-size: 22px;\n    }\n  }\n\n  h3 {\n    font-size: 20px;\n    font-weight: 700;\n    line-height: 24px;\n    margin: 0 0 10px;\n  }\n`;\n\nconst TextSmall = styled.p`\n  font-size: 14px;\n  line-height: 18px;\n  margin-top: 0;\n`;\n\nconst TextLarge = styled.p`\n  font-size: 16px;\n  line-height: 20px;\n  margin-top: 0;\n`;\n\nconst FlexWrap = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 45px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nconst BoostSection = styled.div`\n  padding: 0 0 0 60px;\n  position: relative;\n  width: 40%;\n\n  svg {\n    left: 0;\n    position: absolute;\n    top: 0;\n\n    ${mediaQueries.MOBILE} {\n      left: calc(50% - 24px);\n    }\n  }\n\n  a {\n    margin-right: 30px;\n    &:last-of-type {\n      margin-right: 0;\n    }\n  }\n\n  ${mediaQueries.MOBILE} {\n    padding: 60px 20px 30px;\n    text-align: center;\n    width: 100%;\n  }\n`;\n\nconst ShareSection = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 4px;\n  padding: 15px;\n  width: 50%;\n\n  ${mediaQueries.MOBILE} {\n    border-left: none;\n    border-right: none;\n    padding: 20px;\n    width: 100%;\n  }\n`;\n\nconst ShareLinkFlex = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nconst ShareLink = styled.a`\n  align-items: center;\n  background-color: ${(props: StyleProps) => (props.backgroundColor ? props.backgroundColor : \"#00c189\")};\n  border-radius: 3px;\n  color: ${colors.basic.WHITE};\n  display: flex;\n  font-size: 13px;\n  font-weight: 700;\n  justify-content: center;\n  letter-spacing: 0.2px;\n  line-height: 14px;\n  margin-right: 15px;\n  opacity: 0.9;\n  padding: 10px;\n  text-align: center;\n  transition: opacity 250ms;\n  width: 130px;\n\n  &:hover {\n    opacity: 1;\n  }\n\n  svg {\n    margin-right: 5px;\n    vertical-align: middle;\n  }\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 auto 15px;\n    max-width: 400px;\n    width: 100%;\n  }\n`;\n\nconst ShareBtn = styled.button`\n  align-items: center;\n  background-color: #00c189;\n  border: none;\n  border-radius: 3px;\n  color: ${colors.basic.WHITE};\n  cursor: pointer;\n  display: flex;\n  font-size: 13px;\n  font-weight: 700;\n  justify-content: center;\n  letter-spacing: 0.2px;\n  line-height: 14px;\n  margin-right: 15px;\n  opacity: 0.9;\n  padding: 10px;\n  text-align: center;\n  transition: opacity 250ms;\n  width: 130px;\n\n  &:hover {\n    opacity: 1;\n  }\n\n  svg {\n    margin-right: 5px;\n    vertical-align: middle;\n  }\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 auto 15px;\n    max-width: 400px;\n    width: 100%;\n  }\n`;\n\nconst StripeSection = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_5};\n  margin: 0 0 45px;\n  padding: 30px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 20px;\n  }\n`;\n\nconst EmbedSection = styled.div`\n  padding-left: 30px;\n\n  ${mediaQueries.MOBILE} {\n    padding-left: 0;\n    margin: 0 20px;\n  }\n`;\n\nconst EmbedCode = styled.pre`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_5};\n  border-radius: 3px;\n  box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.15);\n  font-size: 13px;\n  letter-spacing: -0.14px;\n  line-height: 24px;\n  padding: 13px;\n  white-space: pre-wrap;\n  word-break: break-word;\n`;\n\nexport interface BoostSuccessProps {\n  boostId: string;\n  editMode?: boolean;\n  newsroomAddress: string;\n  newsroom: string;\n  title: string;\n  isStripeConnected: boolean;\n}\n\nexport const BoostSuccess: React.FunctionComponent<BoostSuccessProps> = props => {\n  const [urlCopied, setUrlCopied] = React.useState(false);\n  const [embedCopied, setEmbedCopied] = React.useState(false);\n  const url = `/boosts/${props.boostId}`;\n\n  const emailSubjectText = \"Boost \" + props.newsroom + \"’s journalism.\";\n  const emailBodyText =\n    \"Hi there,\" +\n    \"\\n\\n\" +\n    \"Exciting news! \" +\n    props.newsroom +\n    \" just launched a Boost -- and you can support this project in just a few clicks. Learn more:\" +\n    \"\\n\\n\" +\n    props.title +\n    \"\\n\\n\" +\n    `${link.REGISTRY}` +\n    url +\n    \"\\n\\n\" +\n    \"Thanks for supporting independent journalism projects!\";\n  const emailShare = \"mailto:?subject=\" + encodeURI(emailSubjectText) + \"&body=\" + encodeURI(emailBodyText);\n\n  const twitterShareText =\n    props.newsroom +\n    \" launched a Boost! You can now support my newsroom’s project “\" +\n    props.title +\n    \"” in just a few clicks.\";\n  const twitterShare =\n    \"https://twitter.com/intent/tweet?text=\" + encodeURI(twitterShareText) + \"&url=\" + `${link.REGISTRY}` + url;\n\n  const embedCode = ReactDOMServer.renderToStaticMarkup(\n    <BoostEmbedIframe\n      iframeSrc={`${link.REGISTRY}/embed/boost/${props.boostId}`}\n      fallbackUrl={`${link.REGISTRY}/boosts/${props.boostId}`}\n      boostType=\"project\"\n      initialHeight={525}\n    />,\n  );\n\n  return (\n    <BoostSuccessWrap>\n      <FlexWrap>\n        <BoostSection>\n          <HollowGreenCheck width={48} height={48} />\n          <h2>Project Boost {props.editMode ? \"Updated\" : \"Launched!\"}</h2>\n          {props.editMode ? (\n            <TextSmall>\n              Your Project Boost <b>“{props.title}”</b> has been updated successfully.\n            </TextSmall>\n          ) : (\n            <>\n              <TextSmall>\n                Great work! Your Project Boost <b>“{props.title}”</b> has successfully launched and is live.{\" \"}\n              </TextSmall>\n              <TextSmall>\n                <Link to={url}>View your Boost</Link>\n                <Link to={url + \"/edit\"}>Edit your Boost</Link>\n              </TextSmall>\n            </>\n          )}\n        </BoostSection>\n        <ShareSection>\n          <TextLarge>\n            <b>You can share this Boost!</b>\n          </TextLarge>\n          <TextLarge>Help get the word out about your Boost</TextLarge>\n          <ShareLinkFlex>\n            <ShareLink href={twitterShare} target=\"_blank\" backgroundColor={\"#1da1f2\"}>\n              <ShareTwitterIcon width={24} height={24} color={colors.basic.WHITE} />\n              Tweet\n            </ShareLink>\n            <ShareLink href={emailShare} target=\"_blank\">\n              <ShareEmailIcon width={24} height={24} color={colors.basic.WHITE} />\n              Email\n            </ShareLink>\n            <ShareBtn onClick={() => setUrlCopied(copyToClipboard(url))}>\n              <LinkIcon width={24} height={24} color={colors.basic.WHITE} />\n              Copy link\n            </ShareBtn>{\" \"}\n            {urlCopied && \"Copied!\"}\n          </ShareLinkFlex>\n        </ShareSection>\n      </FlexWrap>\n      {!props.isStripeConnected && (\n        <StripeSection>\n          <h3>Next, set up Stripe to accept credit card payments</h3>\n          <TextLarge>\n            Connect a Stripe account to allow readers to give you a Boost with credit cards. You can link your existing\n            Stripe account or start a new one. Any payments sent with credit cards with automatically be deposited into\n            your Stripe account.\n          </TextLarge>\n          <DashboardNewsroomStripeConnect newsroomAddress={props.newsroomAddress} />\n        </StripeSection>\n      )}\n      <EmbedSection>\n        <TextLarge>\n          <b>Add this Project Boost to your site</b>\n        </TextLarge>\n        <TextLarge>\n          You can add this Project Boost to your own site to help raise awareness with your audience. They’ll be able to\n          support your Boost right on your page.\n        </TextLarge>\n        <TextSmall>\n          Copy and paste the following HTML code into the place on your website where you would like this Project Boost\n          to show up:\n        </TextSmall>\n        <EmbedCode>{embedCode}</EmbedCode>\n        <InvertedButton size={buttonSizes.SMALL} onClick={() => setEmbedCopied(copyToClipboard(embedCode))}>\n          Copy\n        </InvertedButton>{\" \"}\n        {embedCopied && \"Copied!\"}\n      </EmbedSection>\n    </BoostSuccessWrap>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/ContractAddresses.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Map } from \"immutable\";\nimport styled from \"styled-components/macro\";\nimport { Helmet } from \"react-helmet\";\n\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { colors, mediaQueries, StyledMainContainer, EthAddressViewer } from \"@joincivil/components\";\nimport { getFormattedEthAddress, getEtherscanBaseURL } from \"@joincivil/utils\";\nimport { formattedNetworkNames } from \"../helpers/networkHelpers\";\n\nimport { State } from \"../redux/reducers\";\nimport { ContractAddressKeys } from \"../helpers/contractAddresses\";\n\ninterface ContractAddressItemProps {\n  address?: EthAddress;\n  displayName: string;\n  etherscanBaseURL?: string;\n}\n\nexport interface ContractAddressesReduxProps {\n  contractAddresses: Map<string, EthAddress>;\n  network: string;\n}\n\nconst StyledContent = styled.div`\n  margin: 0 auto;\n  width: 690px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 0 16px;\n    width: auto;\n  }\n`;\n\nconst StyledHeader = styled.div`\n  display: flex;\n  flex-direction: row-reverse;\n  justify-content: space-between;\n  margin: 0 0 36px;\n  padding: 43px 0 0;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    margin: 0 0 19px;\n    padding: 16px 0 0;\n  }\n`;\n\nconst StyledHeaderText = styled.h2`\n  font-size: 24px;\n  font-weight: bold;\n  letter-spacing: -0.17px;\n  line-height: 30px;\n  margin: 0;\n`;\n\nconst StyledNetwork = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 13px;\n  font-weight: bold;\n  letter-spacing: -0.14px;\n  line-height: 21px;\n  padding-top: 5px;\n  text-align: right;\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 0 24px;\n  }\n`;\n\nconst ContractAddressItem: React.FunctionComponent<ContractAddressItemProps> = props => {\n  const { address, ...rest } = props;\n  if (!address) {\n    return null;\n  }\n  return <EthAddressViewer address={getFormattedEthAddress(address)} {...rest} />;\n};\n\nconst ContractAddresses = (props: ContractAddressesReduxProps) => {\n  const { contractAddresses } = props;\n  const addressesToDisplay: Array<[string, string]> = [\n    [\"CVL Token Contract Address\", ContractAddressKeys.TOKEN_ADDRESS],\n    [\"Civil Registry Contract Address\", ContractAddressKeys.TCR_ADDRESS],\n    [\"Partial Lock Commit Reveal (PLCR) Voting Contract Address\", ContractAddressKeys.PLCR_ADDRESS],\n    [\"Registry Parameters Contract Address\", ContractAddressKeys.PARAMETERIZER_ADDRESS],\n  ];\n  const etherscanBaseURL = getEtherscanBaseURL(props.network);\n\n  return (\n    <StyledMainContainer>\n      <Helmet title=\"Contract Addresses - The Civil Registry\" />\n      <StyledContent>\n        <StyledHeader>\n          <StyledNetwork>{formattedNetworkNames[props.network]}</StyledNetwork>\n          <StyledHeaderText>Contract Addresses</StyledHeaderText>\n        </StyledHeader>\n\n        {addressesToDisplay.map((addressDisplay: [string, string]) => {\n          const address: EthAddress = contractAddresses.get(addressDisplay[1]);\n          return (\n            <ContractAddressItem\n              displayName={addressDisplay[0]}\n              address={address}\n              key={`${addressDisplay[0]}_${address}`}\n              etherscanBaseURL={etherscanBaseURL}\n            />\n          );\n        })}\n      </StyledContent>\n    </StyledMainContainer>\n  );\n};\n\nconst mapStateToProps = (state: State): ContractAddressesReduxProps => {\n  const { contractAddresses } = state.networkDependent;\n  return { network: state.network, contractAddresses };\n};\n\nexport default connect(mapStateToProps)(ContractAddresses);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/Account.tsx",
    "content": "import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport ScrollToTopOnMount from \"../../utility/ScrollToTop\";\nimport { Tabs, Tab } from \"@joincivil/components\";\nimport { AccountProfile } from \"./AccountProfile\";\nimport { AccountPayments } from \"./AccountPayments\";\nimport { AccountTransactions } from \"./AccountTransactions\";\nimport { AccountTitleText, ProfileTabText, PaymentTabText, TransactionsTabText } from \"./AccountTextComponents\";\nimport { UserManagementPageLayout, UserManagementTabNav, UserManagementTabs } from \"../UserManagement\";\n\nexport interface AccountParams {\n  activeTab?: \"profile\" | \"payments\" | \"transactions\";\n}\nconst TABS = [\"profile\", \"payments\", \"transactions\"];\n\nexport interface AccountProps {\n  userAccount?: string;\n  history: any;\n  match: any;\n}\n\nconst AccountPage: React.FunctionComponent<AccountProps> = props => {\n  // Load tab from path:\n  const [activeTabIndex, setActiveTabIndex] = React.useState<number>(0);\n  React.useEffect(() => {\n    const activeTab = props.match.params.activeTab || \"profile\";\n    if (TABS[activeTabIndex] !== activeTab) {\n      setActiveTabIndex(TABS.indexOf(activeTab));\n    }\n  }, [props.match.params.activeTab]);\n\n  return (\n    <>\n      <Helmet title=\"Account - The Civil Registry\" />\n      <ScrollToTopOnMount />\n      <UserManagementPageLayout header={<AccountTitleText />}>\n        <Tabs\n          TabsNavComponent={UserManagementTabNav}\n          TabComponent={UserManagementTabs}\n          activeIndex={activeTabIndex}\n          onActiveTabChange={(tab: number) => {\n            props.history.push(formatRoute(props.match.path, { activeTab: TABS[tab] }));\n          }}\n          flex={true}\n        >\n          <Tab title={<ProfileTabText />}>\n            <AccountProfile />\n          </Tab>\n          <Tab title={<PaymentTabText />}>\n            <AccountPayments />\n          </Tab>\n          <Tab title={<TransactionsTabText />}>\n            <AccountTransactions />\n          </Tab>\n        </Tabs>\n      </UserManagementPageLayout>\n    </>\n  );\n};\n\nexport default AccountPage;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountAddCard.tsx",
    "content": "import * as React from \"react\";\nimport { PaymentsStripeCardComponent, Button, buttonSizes, InvertedButton, PageHeadingLeftAligned, PageHeadingTextLeftAligned } from \"@joincivil/components\";\nimport { isValidEmail } from \"@joincivil/utils\";\nimport { injectStripe, ReactStripeElements } from \"react-stripe-elements\";\nimport ApolloClient from \"apollo-client\";\nimport { CREATE_PAYMENT_METHOD } from \"@joincivil/components/src/Payments/queries\";\nimport styled from \"styled-components\";\n\nexport interface AccountAddCardProps extends ReactStripeElements.InjectedStripeProps {\n  userEmail: string;\n  userChannelID: string;\n  apolloClient: ApolloClient<any>;\n  handleCancel(): void;\n  handleAdded(): void;\n}\n\nexport interface AccountAddCardState {\n  email: string;\n  emailState: string;\n  name: string;\n  nameState: string;\n  cardInfoState: string;\n  wasEmailPrepopulated: boolean;\n  displayStripeErrorMessage: string;\n  addCardDisabled: boolean;\n}\n\nenum INPUT_STATE {\n  EMPTY = \"empty\",\n  VALID = \"valid\",\n  INVALID = \"invalid\",\n}\n\nconst ButtonDiv = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n`;\n\nconst SaveButton = styled(Button)`\n  margin-left: 10px;\n`;\n\nclass AccountAddCard extends React.Component<AccountAddCardProps, AccountAddCardState> {\n\n  constructor(props: AccountAddCardProps) {\n    super(props);\n    this.state = {\n      email: props.userEmail || \"\",\n      wasEmailPrepopulated: props.userEmail ? true : false,\n      emailState: this.props.userEmail ? INPUT_STATE.VALID : INPUT_STATE.EMPTY,\n      name: \"\",\n      nameState: INPUT_STATE.EMPTY,\n      cardInfoState: INPUT_STATE.EMPTY,\n      displayStripeErrorMessage: \"\",\n      addCardDisabled: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <div>\n        <PageHeadingLeftAligned>Add Card</PageHeadingLeftAligned>\n        <PageHeadingTextLeftAligned>Add a credit or debit card as a payment method.</PageHeadingTextLeftAligned>\n        <PaymentsStripeCardComponent\n          email={this.state.email}\n          emailState={this.state.emailState}\n          name={this.state.name}\n          nameState={this.state.nameState}\n          cardInfoState={this.state.cardInfoState}\n          wasEmailPrepopulated={this.state.wasEmailPrepopulated}\n          displayStripeErrorMessage={this.state.displayStripeErrorMessage}\n          handleOnBlur={this.handleOnBlur}\n          handleStripeChange={this.handleStripeChange}\n          showAddCardText={true}\n        />\n        <ButtonDiv>\n          <InvertedButton onClick={this.props.handleCancel} size={buttonSizes.SMALL}>\n            Cancel\n          </InvertedButton>\n          <SaveButton onClick={this.handleAddCard} disabled={this.state.addCardDisabled} size={buttonSizes.SMALL}>\n            Save\n          </SaveButton>\n        </ButtonDiv>\n      </div>\n    );\n  }\n\n  private handleAddCard = async () => {\n    try {\n      this.setState({addCardDisabled: true});\n      const result = await (this.props.stripe as any).createPaymentMethod({\n        type: \"card\",\n        card: (this.props as any).elements.getElement(\"card\"),\n        billing_details: {\n          name: this.state.name,\n          email: this.state.email,\n        },\n      });\n\n      const paymentMethodID = result.paymentMethod.id;\n\n      const paymentMethodVariables = {\n        input: {\n          paymentMethodID,\n          emailAddress: this.state.email,\n          payerChannelID: this.props.userChannelID,\n        },\n      };\n\n      const paymentMethodResult = await this.props.apolloClient.mutate({\n        mutation: CREATE_PAYMENT_METHOD,\n        variables: paymentMethodVariables,\n      });\n      if (paymentMethodResult.error) {\n        console.error(paymentMethodResult.error);\n        this.setState({ addCardDisabled: false });\n      }\n      this.props.handleAdded();\n      this.setState({addCardDisabled: false});\n    } catch (err) {\n      this.setState({addCardDisabled: false});\n    }\n  }\n\n  private handleOnBlur = (event: any) => {\n    const state = event.target.id;\n    const value = event.target.value;\n\n    switch (state) {\n      case \"email\":\n        const validEmail = isValidEmail(value);\n        validEmail\n          ? this.setState({ email: value, emailState: INPUT_STATE.VALID })\n          : this.setState({ emailState: INPUT_STATE.INVALID });\n        break;\n      case \"name\":\n        const validName = value !== \"\";\n        validName\n          ? this.setState({ name: value, nameState: INPUT_STATE.VALID })\n          : this.setState({ nameState: INPUT_STATE.INVALID });\n        break;\n      default:\n        break;\n    }\n  };\n\n  private handleStripeChange = (event: any) => {\n    const stripeElements = document.querySelectorAll(\".StripeElement\");\n    let displayStripeErrorMessage = \"\";\n\n    if (event.error) {\n      displayStripeErrorMessage = event.error.message;\n    }\n\n    stripeElements.forEach(element => {\n      const classList = element.classList;\n      if (classList.contains(\"StripeElement--invalid\")) {\n        this.setState({ cardInfoState: INPUT_STATE.INVALID, displayStripeErrorMessage });\n      } else if (classList.contains(\"StripeElement--empty\")) {\n        this.setState({ cardInfoState: INPUT_STATE.EMPTY, displayStripeErrorMessage });\n      } else {\n        this.setState({ cardInfoState: INPUT_STATE.VALID, displayStripeErrorMessage });\n      }\n    });\n  };\n}\n\nexport default injectStripe(AccountAddCard);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountPayments.tsx",
    "content": "import * as React from \"react\";\nimport { CivilContext, ICivilContext, Modal, LoadingMessage } from \"@joincivil/components\";\nimport { InvertedButton, buttonSizes, BorderlessButton } from \"@joincivil/elements\";\nimport {\n  AccountPaymentSection,\n  AccountPaymentSectionHeader,\n  AccountPaymentTable,\n  AccountPaymentWallet,\n  AccountPaymentWalletAddress,\n  AccountPaymentWalletBalance,\n} from \"./AccountStyledComponents\";\nimport { PaymentTitleText } from \"./AccountTextComponents\";\nimport { UserManagementSection } from \"../UserManagement\";\nimport { Mutation, MutationFunc, ApolloConsumer } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { getCurrentUserQuery } from \"@joincivil/utils\";\nimport AccountAddCard from \"./AccountAddCard\";\nimport { StripeProvider, Elements } from \"react-stripe-elements\";\nimport makeAsyncScriptLoader from \"react-async-script\";\n\nexport interface AccountPaymentsState {\n  balance: any;\n  showAddCardModal: boolean;\n  stripeLoaded: boolean;\n}\n\nconst removeCardMutation = gql`\n  mutation($paymentMethodID: String!, $channelID: String!) {\n    paymentsRemoveSavedPaymentMethod(paymentMethodID: $paymentMethodID, channelID: $channelID)\n  }\n`;\n\nexport class AccountPayments extends React.Component<{}, AccountPaymentsState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  constructor(props: any) {\n    super(props);\n    this.state = { balance: 0, showAddCardModal: false, stripeLoaded: false, };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    const civil = this.context.civil;\n\n    if (civil) {\n      await civil.currentProviderEnable();\n      const account = await civil.accountStream.first().toPromise();\n      if (account) {\n        await this.setState({\n          balance: await civil.accountBalance(account),\n        });\n      }\n    }\n  }\n\n  public render(): JSX.Element {\n    const currentUser = this.context.currentUser;\n    const userChannel = currentUser && currentUser.userChannel;\n    let paymentMethods;\n    let channelID = \"\";\n    let email = \"\";\n    if (userChannel) {\n      paymentMethods = userChannel.stripeCustomerInfo && userChannel.stripeCustomerInfo.paymentMethods;\n      channelID = userChannel.id;\n      email = userChannel.EmailAddressRestricted;\n    }\n\n    const AsyncScriptLoader = makeAsyncScriptLoader(\"https://js.stripe.com/v3/\")(LoadingMessage);\n    if (!currentUser) {\n      return <>Log in to view your Account</>;\n    }\n    if (!this.state.stripeLoaded) {\n      return (\n        <AsyncScriptLoader\n          asyncScriptOnLoad={() => {\n            this.setState({ stripeLoaded: true });\n          }}\n        />\n      );\n    }\n\n    return (\n      <UserManagementSection header={<PaymentTitleText />}>\n        <AccountPaymentSection>\n          <AccountPaymentSectionHeader>\n            <h3>Credit and debit cards</h3>\n          </AccountPaymentSectionHeader>\n          <AccountPaymentTable>\n            <thead>\n              <tr>\n                <th>Card</th>\n                <th>Name</th>\n                <th>Exp. Date</th>\n                <th></th>\n              </tr>\n            </thead>\n            <tbody>\n              {paymentMethods && (paymentMethods.map((pm: any) => {\n                return (\n                  <tr>\n                    <td>\n                      {pm.brand + \" ending in \" + pm.last4Digits}\n                    </td>\n                    <td>{pm.name}</td>\n                    <td>{pm.expMonth + \"/\" + pm.expYear}</td>\n                    <td>\n                      <Mutation mutation={removeCardMutation}>\n                        {(removeCard: MutationFunc) => {\n                          return (\n                            <BorderlessButton\n                              size={buttonSizes.SMALL}\n                              onClick={async () => {\n                                const res = (await removeCard({\n                                  variables: {\n                                    paymentMethodID: pm.paymentMethodID,\n                                    channelID,\n                                  },\n                                  refetchQueries: [\n                                    {\n                                      query: getCurrentUserQuery,\n                                    },\n                                  ],\n                                })) as any;\n                                if (res.data && res.data.paymentsRemoveSavedPaymentMethod) {\n                                  await this.context.auth.handleInitialState();\n                                }\n                              }}\n                            >\n                              Remove\n                            </BorderlessButton>\n                          );\n                        }}\n                      </Mutation>\n                    </td>\n                  </tr>\n                );\n              }))}\n\n            </tbody>\n          </AccountPaymentTable>\n          <InvertedButton size={buttonSizes.SMALL} onClick={() => this.setState({showAddCardModal: true})}>Add card</InvertedButton>\n          {this.state.showAddCardModal && (\n            <Modal width={588}>\n              <StripeProvider apiKey={this.context.config.STRIPE_API_KEY} stripeAccount={this.context.config.STRIPE_PLATFORM_ACCOUNT_ID}>\n                <Elements>\n                  <ApolloConsumer>\n                    {client => (\n                      <AccountAddCard\n                        userEmail={email}\n                        userChannelID={channelID}\n                        handleCancel={() => {this.setState({showAddCardModal: false})}}\n                        handleAdded={async () => {\n                          await this.context.auth.handleInitialState();\n                          this.setState({ showAddCardModal: false });\n                        }}\n                        apolloClient={client}\n                      />\n                    )}\n                  </ApolloConsumer>\n                </Elements>\n              </StripeProvider>\n            </Modal>\n          )}\n        </AccountPaymentSection>\n        <AccountPaymentSection>\n          <AccountPaymentSectionHeader>\n            <h3>Wallets</h3>\n            <AccountPaymentWallet>\n              <label>Wallet address</label>\n              <AccountPaymentWalletAddress>{currentUser.ethAddress}</AccountPaymentWalletAddress>\n              <label>ETH balance</label>\n              <AccountPaymentWalletBalance>{this.state.balance}</AccountPaymentWalletBalance>\n            </AccountPaymentWallet>\n          </AccountPaymentSectionHeader>\n        </AccountPaymentSection>\n      </UserManagementSection>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountProfile.tsx",
    "content": "import * as React from \"react\";\nimport { CivilContext, ICivilContext } from \"@joincivil/components\";\nimport { AccountProfileTable, AccountUserInfoText } from \"./AccountStyledComponents\";\nimport { ProfileTitleText, AccountChangesSavedText } from \"./AccountTextComponents\";\nimport { AccountUserAvatar } from \"./AccountUserAvatarUpdate\";\nimport { AccountUserEmail } from \"./AccountUserEmailUpdate\";\nimport SetEmail from \"../../Auth/SetEmail\";\nimport SetAvatar from \"../../Auth/SetAvatar\";\nimport { UserManagementSection } from \"../UserManagement\";\n\nexport const AccountProfile: React.FunctionComponent = props => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  const [shouldShowSetEmailModal, setShouldShowSetEmailModal] = React.useState(false);\n  const [shouldShowSetAvatarModal, setShouldShowSetAvatarModal] = React.useState(false);\n  const [shouldShowConfirmEmailWarning, setShouldShowConfirmEmailWarning] = React.useState(false);\n  const [shouldShowSavedNotification, setShouldShowSavedNotification] = React.useState(false);\n  const currentUser = civilContext.currentUser;\n\n  if (currentUser) {\n    return (\n      <UserManagementSection\n        showNotification={shouldShowSavedNotification}\n        notificationText={<AccountChangesSavedText />}\n        header={<ProfileTitleText />}\n      >\n        <AccountProfileTable>\n          <tbody>\n            <tr>\n              <th>Profile picture</th>\n              <td>\n                <AccountUserAvatar\n                  userHandle={currentUser.userChannel.handle}\n                  userAvatarImgDataURL={currentUser.userChannel.avatarDataUrl}\n                  onSetAvatarClicked={() => setShouldShowSetAvatarModal(true)}\n                />\n              </td>\n            </tr>\n            <tr>\n              <th>Username</th>\n              <td>\n                <AccountUserInfoText>{currentUser.userChannel.handle}</AccountUserInfoText>\n              </td>\n            </tr>\n            <tr>\n              <th>Email address</th>\n              <td>\n                {shouldShowConfirmEmailWarning && (\n                  <AccountUserInfoText>Please check your email to confirm address</AccountUserInfoText>\n                )}\n                <AccountUserEmail\n                  userEmailAddress={currentUser.userChannel.EmailAddressRestricted}\n                  onSetEmailClicked={() => setShouldShowSetEmailModal(true)}\n                />\n              </td>\n            </tr>\n          </tbody>\n        </AccountProfileTable>\n        {shouldShowSetEmailModal && (\n          <SetEmail\n            channelID={currentUser.userChannel.id}\n            isProfileEdit={true}\n            onSetEmailComplete={() => {\n              setShouldShowSetEmailModal(false);\n              setShouldShowConfirmEmailWarning(true);\n              setShouldShowSavedNotification(true);\n            }}\n            onSetEmailCancelled={() => setShouldShowSetEmailModal(false)}\n          />\n        )}\n        {shouldShowSetAvatarModal && (\n          <SetAvatar\n            channelID={currentUser.userChannel.id}\n            isProfileEdit={true}\n            onSetAvatarComplete={async () => {\n              await civilContext.auth.handleInitialState();\n              setShouldShowSetAvatarModal(false);\n              setShouldShowSavedNotification(true);\n            }}\n            onSetAvatarCancelled={() => setShouldShowSetAvatarModal(false)}\n          />\n        )}\n      </UserManagementSection>\n    );\n  }\n\n  return <>Log in to view your Account</>;\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport { colors, fonts } from \"@joincivil/elements\";\nimport styled from \"styled-components/macro\";\n\nexport const AccountProfileTable = styled.table`\n  margin-bottom: 20px;\n  width: 100%;\n\n  th {\n    font-size: 14px;\n    font-weight: 800;\n    line-height: 17.5px;\n    padding: 10px 0;\n    text-align: left;\n    width: 150px;\n    vertical-align: top;\n  }\n\n  td {\n    padding: 10px 0;\n    text-align: left;\n    vertical-align: top;\n  }\n`;\n\nexport const AccountPaymentSection = styled.div`\n  margin-bottom: 50px;\n`;\n\nexport const AccountPaymentSectionHeader = styled.div`\n  h3 {\n    font-size: 18px;\n    font-weight: bold;\n    line-height: 26px;\n  }\n`;\n\nexport const AccountPaymentTable = styled.table`\n  margin-bottom: 20px;\n  width: 100%;\n\n  th {\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    color: ${colors.accent.CIVIL_GRAY_2};\n    font-size: 13px;\n    font-weight: 400;\n    line-height: 24px;\n    text-align: left;\n  }\n\n  td {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 13px;\n    line-height: 24px;\n    text-align: left;\n\n    b {\n      font-weight: 600;\n    }\n\n    a {\n      color: ${colors.accent.CIVIL_BLUE};\n      font-weight: 600;\n    }\n  }\n`;\n\nexport const AccountPaymentWallet = styled.div`\n  margin-bottom: 20px;\n\n  label {\n    color: ${colors.accent.CIVIL_GRAY_2};\n    font-size: 13px;\n    line-height: 24px;\n  }\n`;\n\nexport const AccountPaymentWalletAddress = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.MONOSPACE};\n  font-size: 14px;\n  letter-spacing: -0.15px;\n  line-height: 20px;\n  margin-bottom: 10px;\n`;\n\nexport const AccountPaymentWalletBalance = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 15px;\n  line-height: 22px;\n`;\n\nexport const AccountAvatarContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 125px;\n`;\n\nexport const AccountAvatarImgContainer = styled.div`\n  clip-path: circle(62px at center);\n  height: 125px;\n  margin-bottom: 10px;\n  position: relative;\n  width: 125px;\n`;\n\nexport const AccountAvatarImg = styled.img`\n  height: 125px;\n  position: absolute;\n  width: 125px;\n  z-index: 999;\n`;\n\nexport const AccountNoAvatar = styled.div`\n  align-items: center;\n  background-color: #ef6b4a;\n  color: ${colors.basic.WHITE};\n  display: flex;\n  font-size: 50px;\n  height: 125px;\n  justify-content: space-around;\n  text-transform: uppercase;\n  width: 125px;\n`;\n\nexport const AccountUserInfoText = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 14px;\n  margin-right: 10px;\n`;\n\nexport const AccountTransactionsTable = styled(AccountPaymentTable)`\n  tr:nth-child(2n) {\n    background: ${colors.accent.CIVIL_GRAY_5};\n  }\n  td {\n    padding: 2px 4px;\n    svg {\n      position: relative;\n      top: 2px;\n    }\n  }\n`;\nexport const NoWrapTd = styled.td`\n  white-space: nowrap;\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { UserManagementTabText } from \"../UserManagement\";\n\nexport const AccountTitleText: React.FunctionComponent = props => {\n  return <h1>Account</h1>;\n};\n\nexport const ProfileTabText: React.FunctionComponent = props => {\n  return (\n    <UserManagementTabText>\n      Profile\n      <span>Your account details</span>\n    </UserManagementTabText>\n  );\n};\n\nexport const ProfileTitleText: React.FunctionComponent = props => {\n  return (\n    <>\n      <h2>Edit profile</h2>\n      <p>\n        Edit your profile and account settings. Your profile picture and username will be displayed on your profile.\n      </p>\n    </>\n  );\n};\n\nexport const PaymentTabText: React.FunctionComponent = props => {\n  return (\n    <UserManagementTabText>\n      Payment methods\n      <span>Manage your payments</span>\n    </UserManagementTabText>\n  );\n};\n\nexport const PaymentTitleText: React.FunctionComponent = props => {\n  return (\n    <>\n      <h2>Payment methods</h2>\n      <p>\n        Manage your credit cards and Ethereum wallet for Boosts. Saved payment methods will be kept secure and listed\n        here for your convenience. You can also add a credit card for the future.\n      </p>\n    </>\n  );\n};\n\nexport const TransactionsTabText: React.FunctionComponent = props => {\n  return (\n    <UserManagementTabText>\n      Transactions\n      <span>View all the boosts and newsrooms that you have supported</span>\n    </UserManagementTabText>\n  );\n};\n\nexport const TransactionsTitleText: React.FunctionComponent = props => {\n  return (\n    <>\n      <h2>Transaction History</h2>\n    </>\n  );\n};\n\nexport const AccountChangesSavedText: React.FunctionComponent = props => {\n  return <>Your changes have been saved.</>;\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountTransactions.tsx",
    "content": "import gql from \"graphql-tag\";\nimport { Query } from \"react-apollo\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport {\n  CivilContext,\n  ICivilContext,\n  LoadingMessage,\n  ErrorLoadingData,\n  ViewTransactionLink,\n  QuestionToolTip,\n} from \"@joincivil/components\";\nimport { AccountTransactionsTable, NoWrapTd } from \"./AccountStyledComponents\";\nimport { TransactionsTitleText } from \"./AccountTextComponents\";\nimport { routes } from \"../../../constants\";\nimport { UserManagementSection } from \"../UserManagement\";\n\nexport const paymentHistoryQuery = gql`\n  query {\n    currentUser {\n      userChannel {\n        paymentsMadeByChannel {\n          __typename\n          status\n          reaction\n          comment\n          currencyCode\n          exchangeRate\n          amount\n          createdAt\n          updatedAt\n          usdEquivalent\n          ... on PaymentEther {\n            transactionID\n          }\n          post {\n            id\n            postType\n            channel {\n              handle\n              newsroom {\n                name\n                contractAddress\n              }\n            }\n            ... on PostBoost {\n              title\n            }\n            ... on PostExternalLink {\n              openGraphData {\n                title\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n`;\n\ninterface PostData {\n  id: string;\n  postType: string;\n  channel: {\n    handle?: string;\n    newsroom: {\n      name: string;\n      contractAddress: string;\n    };\n  };\n  title?: string;\n  openGraphData?: {\n    title: string;\n  };\n}\ninterface TransactionData {\n  __typename: string;\n  id: string;\n  status?: string;\n  currencyCode: string;\n  exchangeRate: number;\n  amount: number;\n  createdAt: string;\n  usdEquivalent: number;\n  transactionID?: string;\n  post: PostData;\n}\ninterface PaymentHistoryData {\n  currentUser: {\n    userChannel: {\n      paymentsMadeByChannel?: TransactionData[];\n    };\n  };\n}\n\nconst SUPPORTED_PAYMENT_TYPES = [\"PaymentStripe\", \"PaymentEther\"];\nconst SUPPORTED_POST_TYPES = [\"externallink\", \"boost\"];\n\nexport const AccountTransactions: React.FunctionComponent = () => {\n  const context = React.useContext<ICivilContext>(CivilContext);\n\n  if (context.auth.loading) {\n    return <LoadingMessage>Loading User</LoadingMessage>;\n  } else if (!context.currentUser) {\n    return <>Please log in to view your transaction history</>;\n  }\n\n  return (\n    <UserManagementSection header={<TransactionsTitleText />}>\n      <Query<PaymentHistoryData> query={paymentHistoryQuery}>\n        {({ loading, data, error }) => {\n          if (loading) {\n            return <LoadingMessage>Loading Transactions</LoadingMessage>;\n          } else if (error || !data) {\n            console.error(\"error querying currentUser for paymentsMadeByChannel:\", error || \"no data returned\");\n            return <ErrorLoadingData />;\n          } else if (!data.currentUser.userChannel.paymentsMadeByChannel) {\n            return (\n              <p>\n                You have made no transactions yet. Head on over to the{\" \"}\n                <Link to={formatRoute(routes.STORY_FEED)}>Civil story feed</Link> to find great work that deserves your\n                support!\n              </p>\n            );\n          }\n\n          const transactions = data.currentUser.userChannel.paymentsMadeByChannel\n            .filter(\n              transaction =>\n                SUPPORTED_PAYMENT_TYPES.indexOf(transaction.__typename) !== -1 &&\n                SUPPORTED_POST_TYPES.indexOf(transaction.post.postType) !== -1,\n            )\n            .sort((tA, tB) => new Date(tB.createdAt).getTime() - new Date(tA.createdAt).getTime());\n\n          return (\n            <AccountTransactionsTable>\n              <thead>\n                <tr>\n                  <th>Date</th>\n                  <th>Newsroom</th>\n                  <th>Title</th>\n                  <th>Method</th>\n                  <th>Status</th>\n                  <th>Amount</th>\n                </tr>\n              </thead>\n              <tbody>\n                {transactions.map(transaction => (\n                  <TransactionRow {...transaction} key={transaction.createdAt} />\n                ))}\n              </tbody>\n            </AccountTransactionsTable>\n          );\n        }}\n      </Query>\n    </UserManagementSection>\n  );\n};\n\nconst TransactionRow: React.FunctionComponent<TransactionData> = props => {\n  const context = React.useContext<ICivilContext>(CivilContext);\n  const date = new Date(props.createdAt);\n  return (\n    <tr>\n      <td>\n        <abbr title={date.toString()}>\n          <time dateTime={props.createdAt}>{date.toLocaleDateString()}</time>\n        </abbr>\n      </td>\n      <td>\n        <Link\n          to={formatRoute(routes.LISTING, {\n            listingAddress: props.post.channel.handle || props.post.channel.newsroom.contractAddress,\n          })}\n        >\n          {props.post.channel.newsroom.name}\n        </Link>\n      </td>\n      <td>\n        <Link to={formatRoute(routes.STORY_FEED, { postId: props.post.id })}>\n          {props.post.title || props.post.openGraphData!.title}\n        </Link>\n      </td>\n      <td>{props.__typename === \"PaymentEther\" ? \"ETH\" : \"Card\"}</td>\n      <NoWrapTd>\n        {props.__typename === \"PaymentEther\" ? (\n          <ViewTransactionLink\n            network={context.network === 1 ? \"mainnet\" : \"rinkeby\"}\n            txHash={props.transactionID!}\n            text={props.status}\n          />\n        ) : (\n          \"complete\"\n        )}\n      </NoWrapTd>\n      <NoWrapTd>\n        ${props.usdEquivalent.toFixed(2)}\n        {props.currencyCode !== \"usd\" && (\n          <QuestionToolTip\n            explainerText={`${props.amount} ${props.currencyCode} at \\$${props.exchangeRate}/${props.currencyCode}`}\n          />\n        )}\n      </NoWrapTd>\n    </tr>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountUserAvatarUpdate.tsx",
    "content": "import * as React from \"react\";\nimport {\n  AccountAvatarImg,\n  AccountNoAvatar,\n  AccountAvatarContainer,\n  AccountAvatarImgContainer,\n} from \"./AccountStyledComponents\";\nimport { BorderlessButton, buttonSizes } from \"@joincivil/elements\";\n\nexport interface DashboardUserProfileSummaryProps {\n  userAvatarImgDataURL: string;\n  userHandle: string;\n  onSetAvatarClicked(): void;\n}\n\nexport const AccountUserAvatar = (props: DashboardUserProfileSummaryProps) => {\n  const { userAvatarImgDataURL, userHandle, onSetAvatarClicked } = props;\n  const initial = userHandle ? userHandle.charAt(0) : \"?\";\n  return (\n    <AccountAvatarContainer>\n      {userAvatarImgDataURL && (\n        <>\n          <AccountAvatarImgContainer\n            onClick={() => {\n              onSetAvatarClicked();\n            }}\n          >\n            <AccountAvatarImg src={userAvatarImgDataURL} />\n          </AccountAvatarImgContainer>\n          <BorderlessButton\n            onClick={() => {\n              onSetAvatarClicked();\n            }}\n            size={buttonSizes.SMALL}\n          >\n            Edit profile photo\n          </BorderlessButton>\n        </>\n      )}\n      {!userAvatarImgDataURL && (\n        <>\n          <AccountAvatarImgContainer\n            onClick={() => {\n              onSetAvatarClicked();\n            }}\n          >\n            <AccountNoAvatar>{initial}</AccountNoAvatar>\n          </AccountAvatarImgContainer>\n          <BorderlessButton\n            onClick={() => {\n              onSetAvatarClicked();\n            }}\n            size={buttonSizes.SMALL}\n          >\n            Edit profile photo\n          </BorderlessButton>\n        </>\n      )}\n    </AccountAvatarContainer>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Account/AccountUserEmailUpdate.tsx",
    "content": "import * as React from \"react\";\nimport { AccountUserInfoText } from \"./AccountStyledComponents\";\nimport { BorderlessButton, buttonSizes } from \"@joincivil/elements\";\n\nexport interface AccountUserEmailProps {\n  userEmailAddress: string;\n  onSetEmailClicked(): void;\n}\n\nexport const AccountUserEmail = (props: AccountUserEmailProps) => {\n  const { userEmailAddress, onSetEmailClicked } = props;\n  return (\n    <>\n      {userEmailAddress && <AccountUserInfoText>{userEmailAddress}</AccountUserInfoText>}\n      {userEmailAddress && (\n        <BorderlessButton\n          onClick={() => {\n            onSetEmailClicked();\n          }}\n          size={buttonSizes.SMALL}\n        >\n          Change email\n        </BorderlessButton>\n      )}\n      {!userEmailAddress && (\n        <BorderlessButton\n          onClick={() => {\n            onSetEmailClicked();\n          }}\n          size={buttonSizes.SMALL}\n        >\n          Set email\n        </BorderlessButton>\n      )}\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ActivityListItemRescueTokens.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { BigNumber, UserChallengeData } from \"@joincivil/typescript-types\";\nimport { NewsroomState } from \"@joincivil/newsroom-signup\";\nimport { DashboardActivitySelectableItem } from \"@joincivil/components\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { fetchAndAddParameterProposalChallengeData } from \"../../redux/actionCreators/parameterizer\";\nimport { State } from \"../../redux/reducers\";\nimport {\n  makeGetListingAddressByChallengeID,\n  makeGetListingAddressByAppealChallengeID,\n  makeGetUserChallengeData,\n  makeGetUserAppealChallengeData,\n  makeGetChallenge,\n  makeGetParameterProposalChallenge,\n  getAppealChallengeParentChallenge,\n  makeGetUserProposalChallengeData,\n  makeGetProposalByChallengeID,\n} from \"../../selectors\";\nimport { getContent } from \"../../redux/actionCreators/newsrooms\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\n\nexport interface ActivityListItemRescueTokensOwnProps {\n  challengeID?: string;\n  appealChallengeID?: string;\n  isProposalChallenge?: boolean;\n  toggleSelect?(challengeID: string, isSelected: boolean, salt: BigNumber): void;\n}\n\nexport interface ActivityListItemRescueTokensReduxProps {\n  listingAddress?: string;\n  newsroom?: NewsroomState;\n  userChallengeData?: UserChallengeData;\n  rescueTokensAmount: string;\n  challenge?: any;\n  challengeDataRequestStatus?: any;\n}\n\nexport interface ProposalItemRescueTokensReduxProps {\n  proposal?: any;\n  userChallengeData?: UserChallengeData;\n  rescueTokensAmount: string;\n  challenge?: any;\n  challengeDataRequestStatus?: any;\n}\n\ntype ActivityListItemRescueTokensComponentProps = ActivityListItemRescueTokensOwnProps &\n  ActivityListItemRescueTokensReduxProps;\n\ntype ProposalItemRescueTokensComponentProps = ActivityListItemRescueTokensOwnProps & ProposalItemRescueTokensReduxProps;\n\nclass ActivityListItemRescueTokensComponent extends React.Component<\n  ActivityListItemRescueTokensComponentProps & DispatchProp<any>\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public async componentDidMount(): Promise<void> {\n    await this.ensureListingAndNewsroomData();\n  }\n\n  public async componentDidUpdate(): Promise<void> {\n    await this.ensureListingAndNewsroomData();\n  }\n\n  public render(): JSX.Element | null {\n    const { challengeID, appealChallengeID, newsroom } = this.props;\n    if (!(newsroom && (challengeID || appealChallengeID))) {\n      return null;\n    }\n\n    const newsroomData = newsroom.wrapper.data;\n\n    const props = {\n      title: newsroomData.name,\n      challengeID,\n      appealChallengeID,\n      salt: this.props.userChallengeData && this.props.userChallengeData.salt,\n      numTokens: this.props.rescueTokensAmount!,\n      toggleSelect: this.props.toggleSelect,\n    };\n\n    return <DashboardActivitySelectableItem {...props} />;\n  }\n\n  private ensureListingAndNewsroomData = async (): Promise<void> => {\n    const { newsroom, challengeID, challenge, dispatch } = this.props;\n    if (newsroom) {\n      dispatch!(await getContent(this.context, newsroom.wrapper.data.charterHeader!));\n    }\n    if (challengeID && !challenge) {\n      console.error(\"ActivityListItemRescueTokens without challenge data. challengeID: \", challengeID);\n    }\n  };\n}\n\nclass ProposalRescueTokensComponent extends React.Component<\n  ProposalItemRescueTokensComponentProps & DispatchProp<any>\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public render(): JSX.Element {\n    const { proposal, challenge, challengeDataRequestStatus, challengeID, userChallengeData } = this.props;\n\n    if (!challenge && !challengeDataRequestStatus) {\n      this.props.dispatch!(fetchAndAddParameterProposalChallengeData(this.context, challengeID! as string));\n    }\n\n    let title = \"Parameter Proposal Challenge\";\n    if (proposal) {\n      title = `${title}: ${proposal.paramName} = ${proposal.propValue}`;\n    }\n\n    const viewProps = {\n      title,\n      challengeID,\n      salt: userChallengeData && userChallengeData.salt,\n      numTokens: this.props.rescueTokensAmount!,\n      toggleSelect: this.props.toggleSelect,\n    };\n\n    return <DashboardActivitySelectableItem {...viewProps} />;\n  }\n}\n\nconst makeChallengeMapStateToProps = () => {\n  const getListingAddressByChallengeID = makeGetListingAddressByChallengeID();\n  const getListingAddressByAppealChallengeID = makeGetListingAddressByAppealChallengeID();\n  const getChallenge = makeGetChallenge();\n  const getUserChallengeData = makeGetUserChallengeData();\n  const getUserAppealChallengeData = makeGetUserAppealChallengeData();\n\n  const mapStateToProps = (\n    state: State,\n    ownProps: ActivityListItemRescueTokensOwnProps,\n  ): ActivityListItemRescueTokensComponentProps => {\n    const { newsrooms } = state;\n\n    let listingAddress;\n    let userChallengeData;\n    let challenge;\n\n    if (ownProps.appealChallengeID) {\n      listingAddress = getListingAddressByAppealChallengeID(state, ownProps);\n      userChallengeData = getUserAppealChallengeData(state, ownProps);\n      challenge = getAppealChallengeParentChallenge(state, ownProps);\n    } else {\n      listingAddress = getListingAddressByChallengeID(state, ownProps);\n      userChallengeData = getUserChallengeData(state, ownProps);\n      challenge = getChallenge(state, ownProps);\n    }\n\n    const newsroom = listingAddress ? newsrooms.get(listingAddress) : undefined;\n\n    const rescueTokensAmountBN = userChallengeData && userChallengeData.numTokens;\n    let rescueTokensAmount = \"\";\n    if (rescueTokensAmountBN) {\n      rescueTokensAmount = getFormattedTokenBalance(rescueTokensAmountBN);\n    }\n\n    return {\n      listingAddress,\n      newsroom,\n      challenge,\n      rescueTokensAmount,\n      ...ownProps,\n    };\n  };\n\n  return mapStateToProps;\n};\n\nconst makeProposalMapStateToProps = () => {\n  const getUserProposalChallengeData = makeGetUserProposalChallengeData();\n  const getParameterProposalChallenge = makeGetParameterProposalChallenge();\n  const getProposalByChallengeID = makeGetProposalByChallengeID();\n\n  const mapStateToProps = (\n    state: State,\n    ownProps: ActivityListItemRescueTokensOwnProps,\n  ): ProposalItemRescueTokensComponentProps => {\n    const { parameterProposalChallengesFetching } = state.networkDependent;\n    const proposal = getProposalByChallengeID(state, ownProps);\n    const challenge = getParameterProposalChallenge(state, ownProps);\n    const proposalUserChallengeData = getUserProposalChallengeData(state, ownProps);\n    const rescueTokensAmountBN = proposalUserChallengeData && proposalUserChallengeData.numTokens;\n    let rescueTokensAmount = \"\";\n    if (rescueTokensAmountBN) {\n      rescueTokensAmount = getFormattedTokenBalance(rescueTokensAmountBN);\n    }\n    let challengeDataRequestStatus;\n    if (ownProps.challengeID) {\n      challengeDataRequestStatus = parameterProposalChallengesFetching.get(ownProps.challengeID as string);\n    }\n\n    return {\n      proposal,\n      challenge,\n      challengeDataRequestStatus,\n      proposalUserChallengeData,\n      rescueTokensAmount,\n      ...ownProps,\n    };\n  };\n\n  return mapStateToProps;\n};\n\nconst ProposalRescueTokens = connect(makeProposalMapStateToProps)(ProposalRescueTokensComponent);\n\nconst ActivityListItemRescueTokens = connect(makeChallengeMapStateToProps)(ActivityListItemRescueTokensComponent);\n\nconst RescueTokens: React.FunctionComponent<ActivityListItemRescueTokensOwnProps> = props => {\n  if (props.isProposalChallenge) {\n    return <ProposalRescueTokens {...props} />;\n  }\n\n  return <ActivityListItemRescueTokens {...props} />;\n};\n\nexport default RescueTokens;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ChallengeSummary.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components/macro\";\n\nimport {\n  colors,\n  UserVotingSummary,\n  CHALLENGE_RESULTS_VOTE_TYPES,\n  StyledDashbaordActvityItemSection,\n  StyledDashbaordActvityItemSectionOuter,\n  StyledDashbaordActvityItemHeader,\n  StyledDashbaordActvityItemSectionInner,\n  StyledDashboardActivityItemSubTitle,\n  StyledChallengeSummarySection,\n  StyledDashboardActivityItemAction,\n  DashboardActivityItemCTAButton,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance, challengeHelpers } from \"@joincivil/utils\";\n\nimport WinningChallengeResults from \"./WinningChallengeResults\";\nimport { MyTasksItemSubComponentProps } from \"./MyTasksItem\";\n\ninterface AppealDecisionTextProps {\n  currentNewsroomStatusPastTense: string;\n  councilDecision: string;\n}\n\nconst StyledPartialChallengeResultsExplanation = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-size: 16px;\n  font-weight: normal;\n  line-height: 30px;\n  margin: 17px 0;\n`;\n\nconst AppealDecisionText: React.FunctionComponent<AppealDecisionTextProps> = props => {\n  return (\n    <p>\n      The Civil Council {props.currentNewsroomStatusPastTense} this newsroom, {props.councilDecision}ing the Community's\n      vote.\n    </p>\n  );\n};\n\nconst CurrentChallengeStateExplanation: React.FunctionComponent<MyTasksItemSubComponentProps> = props => {\n  const { challenge, appeal, appealChallenge, appealChallengeState, challengeState } = props;\n\n  if (!challengeState) {\n    return <></>;\n  }\n\n  const {\n    isResolved,\n    canResolveChallenge,\n    canRequestAppeal,\n    isAwaitingAppealJudgement,\n    isAwaitingAppealChallenge,\n    canAppealBeResolved,\n    didChallengeSucceed,\n    isAppealChallengeInCommitStage,\n    isAppealChallengeInRevealStage,\n  } = challengeState;\n\n  let canAppealChallengeBeResolved;\n  if (appealChallenge && appealChallengeState) {\n    canAppealChallengeBeResolved = appealChallengeState.canResolveChallenge;\n  }\n\n  const isAppealGranted = !!appeal && appeal.appealGranted;\n  const isAppealChallengeSuccess =\n    !!appealChallenge && !!appealChallengeState && appealChallengeState.didAppealChallengeSucceed;\n\n  const currentNewsroomStatus = didChallengeSucceed ? \"reject\" : \"approve\";\n  const currentNewsroomStatusPastTense = didChallengeSucceed ? \"rejected\" : \"approved\";\n  const councilDecision = isAppealGranted ? \"overturn\" : \"uphold\";\n  const appealChallengeResult = isAppealChallengeSuccess ? \"overturn\" : \"uphold\";\n\n  // The ordering of these cases is significant. Appeal Challenge, then Appeal, the Original Challenge states should be checked in that order to ensure the proper explanation is set.\n  let explanation = <></>;\n  switch (true) {\n    case canAppealChallengeBeResolved || (appealChallenge && appealChallenge.resolved):\n      explanation = (\n        <p>\n          The Civil Community voted to {currentNewsroomStatus} this newsroom, {appealChallengeResult}ing the Civil\n          Council's decision.\n        </p>\n      );\n      break;\n\n    case isAppealChallengeInCommitStage || isAppealChallengeInRevealStage:\n      explanation = <p>The Civil Council's decision to {currentNewsroomStatus} this newsroom has been challenged.</p>;\n      break;\n\n    case isAwaitingAppealChallenge || canAppealBeResolved:\n      explanation = <AppealDecisionText {...{ currentNewsroomStatusPastTense, councilDecision }} />;\n      break;\n\n    case isAwaitingAppealJudgement:\n      explanation = (\n        <p>The results of this challenge's vote are under appeal and awaiting a decision from The Civil Council.</p>\n      );\n      break;\n\n    case isResolved && challengeHelpers.doesChallengeHaveAppeal(challenge!.challenge):\n      explanation = (\n        <p>\n          The Civil Council {currentNewsroomStatusPastTense} this newsroom via the appeal process, {councilDecision}ing\n          the Community's vote.\n        </p>\n      );\n      break;\n\n    case canResolveChallenge || canRequestAppeal || isResolved:\n      explanation = <p>The Civil Community voted to {currentNewsroomStatus} this newsroom.</p>;\n      break;\n  }\n\n  return explanation;\n};\n\nconst AppealSummary: React.FunctionComponent<MyTasksItemSubComponentProps> = props => {\n  const { appeal, challengeState } = props;\n  const { didChallengeOriginallySucceed, canRequestAppeal, isAwaitingAppealJudgement } = challengeState;\n\n  let councilDecision;\n  let currentNewsroomStatusPastTense;\n  if (appeal && appeal.appealGranted) {\n    councilDecision = \"overturn\";\n    currentNewsroomStatusPastTense = didChallengeOriginallySucceed ? \"approved\" : \"rejected\";\n  } else if (appeal && !isAwaitingAppealJudgement) {\n    councilDecision = \"uphold\";\n    currentNewsroomStatusPastTense = didChallengeOriginallySucceed ? \"rejected\" : \"approved\";\n  }\n\n  if (!councilDecision || canRequestAppeal) {\n    return <></>;\n  }\n\n  return (\n    <StyledDashbaordActvityItemSectionOuter>\n      <StyledDashbaordActvityItemSection>\n        <StyledDashbaordActvityItemHeader>Appeal Summary</StyledDashbaordActvityItemHeader>\n        <StyledDashbaordActvityItemSectionInner>\n          <AppealDecisionText {...{ currentNewsroomStatusPastTense, councilDecision }} />\n        </StyledDashbaordActvityItemSectionInner>\n      </StyledDashbaordActvityItemSection>\n      <StyledDashboardActivityItemAction />\n    </StyledDashbaordActvityItemSectionOuter>\n  );\n};\n\nconst UserAppealChallengeSummary: React.FunctionComponent<MyTasksItemSubComponentProps> = props => {\n  const { appealChallenge, appealChallengeState, appealUserChallengeData } = props;\n\n  if (!appealChallenge || !appealChallengeState) {\n    return <></>;\n  }\n\n  let userVotingSummaryContent = <></>;\n\n  if (appealUserChallengeData) {\n    const { didUserCommit, didUserReveal, choice, numTokens } = appealUserChallengeData;\n    let userChoice;\n\n    if (!didUserCommit) {\n      userVotingSummaryContent = <>You did not vote on this Appeal Challenge</>;\n    } else if (didUserReveal) {\n      if (choice) {\n        userChoice =\n          choice.toNumber() === 1 ? CHALLENGE_RESULTS_VOTE_TYPES.OVERTURN : CHALLENGE_RESULTS_VOTE_TYPES.UPHOLD;\n        userVotingSummaryContent = (\n          <UserVotingSummary choice={userChoice} numTokens={getFormattedTokenBalance(numTokens!)} />\n        );\n      }\n    } else {\n      userVotingSummaryContent = <>You did not reveal your vote</>;\n    }\n  }\n\n  return (\n    <StyledDashbaordActvityItemSection>\n      <StyledDashbaordActvityItemHeader>Your Voting Summary</StyledDashbaordActvityItemHeader>\n      <StyledDashbaordActvityItemSectionInner>{userVotingSummaryContent}</StyledDashbaordActvityItemSectionInner>\n    </StyledDashbaordActvityItemSection>\n  );\n};\n\nconst AppealChallengeSummary: React.FunctionComponent<MyTasksItemSubComponentProps> = props => {\n  const {\n    appealChallengeID,\n    appealChallenge,\n    appealChallengeState,\n    appealUserChallengeData,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    listingDetailURL,\n  } = props;\n\n  let appealWinningChallengeResults;\n  if (appealChallengeID && appealChallenge) {\n    let onAppealChallengeCTAButtonClick;\n\n    if (appealUserChallengeData) {\n      const { canUserCollect: appealCanUserCollect, canUserRescue: appealCanUserRescue } = appealUserChallengeData!;\n\n      if (appealCanUserCollect) {\n        onAppealChallengeCTAButtonClick = showClaimRewardsTab;\n      } else if (appealCanUserRescue) {\n        onAppealChallengeCTAButtonClick = showRescueTokensTab;\n      }\n    }\n\n    const appealChallengeButtonProps = {\n      listingDetailURL,\n      onClick: onAppealChallengeCTAButtonClick,\n      ...appealChallengeState,\n      ...appealUserChallengeData,\n    };\n\n    appealWinningChallengeResults = (\n      <StyledDashbaordActvityItemSectionOuter>\n        <StyledChallengeSummarySection>\n          {<UserAppealChallengeSummary {...props} />}\n\n          <StyledDashbaordActvityItemSection>\n            <StyledDashbaordActvityItemHeader>Community Voting Summary</StyledDashbaordActvityItemHeader>\n            <StyledDashbaordActvityItemSectionInner>\n              <WinningChallengeResults\n                appealChallengeID={appealChallengeID}\n                appealChallenge={appealChallenge}\n                displayExplanation={true}\n              />\n            </StyledDashbaordActvityItemSectionInner>\n          </StyledDashbaordActvityItemSection>\n        </StyledChallengeSummarySection>\n\n        <StyledDashboardActivityItemAction>\n          <DashboardActivityItemCTAButton {...appealChallengeButtonProps} />\n        </StyledDashboardActivityItemAction>\n      </StyledDashbaordActvityItemSectionOuter>\n    );\n  }\n\n  return (\n    <>\n      <StyledDashboardActivityItemSubTitle>Appeal Challenge #{appealChallengeID}</StyledDashboardActivityItemSubTitle>\n      {appealWinningChallengeResults}\n    </>\n  );\n};\n\nconst ChallengeSummary: React.FunctionComponent<MyTasksItemSubComponentProps> = props => {\n  const {\n    challengeID,\n    challenge,\n    challengeState,\n    userChallengeData,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    listingDetailURL,\n    viewDetailURL,\n  } = props;\n\n  if (!challengeState) {\n    return <></>;\n  }\n\n  const {\n    isResolved,\n    canResolveChallenge,\n    canAppealBeResolved,\n    canRequestAppeal,\n    isAppealChallengeInCommitStage,\n    isAppealChallengeInRevealStage,\n    didChallengeOriginallySucceed,\n  } = challengeState;\n\n  let userVotingSummary;\n  let displayChallengeResultsExplanation;\n\n  if (canRequestAppeal || isAppealChallengeInCommitStage || isAppealChallengeInRevealStage) {\n    displayChallengeResultsExplanation = true;\n  }\n\n  if (userChallengeData && (isResolved || canResolveChallenge || canAppealBeResolved)) {\n    const { didUserReveal, choice, numTokens } = userChallengeData;\n    let userVotingSummaryContent;\n    let userChoice;\n\n    if (didUserReveal) {\n      if (choice) {\n        userChoice =\n          choice.toNumber() === 1 ? CHALLENGE_RESULTS_VOTE_TYPES.REMAIN : CHALLENGE_RESULTS_VOTE_TYPES.REMOVE;\n        userVotingSummaryContent = (\n          <UserVotingSummary choice={userChoice} numTokens={getFormattedTokenBalance(numTokens!)} />\n        );\n      }\n    } else {\n      userVotingSummaryContent = <>You did not reveal your vote</>;\n    }\n\n    userVotingSummary = (\n      <StyledDashbaordActvityItemSection>\n        <StyledDashbaordActvityItemHeader>Your Voting Summary</StyledDashbaordActvityItemHeader>\n        <StyledDashbaordActvityItemSectionInner>{userVotingSummaryContent}</StyledDashbaordActvityItemSectionInner>\n      </StyledDashbaordActvityItemSection>\n    );\n  }\n\n  let explanation;\n  if (didChallengeOriginallySucceed) {\n    explanation = \"The Civil Community voted to reject this Newsroom from The Civil Registry.\";\n  } else {\n    explanation = \"The Civil Community voted to accept this Newsroom to The Civil Registry.\";\n  }\n\n  let canUserCollect = false;\n  let canUserRescue = false;\n  if (userChallengeData) {\n    canUserCollect = userChallengeData.canUserCollect;\n    canUserRescue = userChallengeData.canUserRescue;\n  }\n\n  let onCTAButtonClick;\n  if (canUserCollect) {\n    onCTAButtonClick = showClaimRewardsTab;\n  } else if (canUserRescue) {\n    onCTAButtonClick = showRescueTokensTab;\n  }\n\n  const buttonProps = {\n    listingDetailURL,\n    onClick: onCTAButtonClick,\n    ...challengeState,\n    ...userChallengeData,\n  };\n\n  return (\n    <>\n      <StyledDashbaordActvityItemSectionOuter>\n        <StyledChallengeSummarySection>\n          {userVotingSummary}\n\n          <StyledDashbaordActvityItemSection>\n            <StyledDashbaordActvityItemHeader>Community Voting Summary</StyledDashbaordActvityItemHeader>\n            <StyledDashbaordActvityItemSectionInner>\n              {displayChallengeResultsExplanation && (\n                <StyledPartialChallengeResultsExplanation>{explanation}</StyledPartialChallengeResultsExplanation>\n              )}\n              <WinningChallengeResults\n                challengeID={challengeID}\n                challenge={challenge}\n                displayExplanation={displayChallengeResultsExplanation}\n              />\n            </StyledDashbaordActvityItemSectionInner>\n          </StyledDashbaordActvityItemSection>\n        </StyledChallengeSummarySection>\n\n        <StyledDashboardActivityItemAction>\n          <DashboardActivityItemCTAButton {...buttonProps} />\n\n          {viewDetailURL && <Link to={viewDetailURL}>View details &gt;</Link>}\n        </StyledDashboardActivityItemAction>\n      </StyledDashbaordActvityItemSectionOuter>\n    </>\n  );\n};\n\nconst DashboardItemChallengeDetails: React.FunctionComponent<MyTasksItemSubComponentProps> = props => {\n  const { appealChallenge, challenge } = props;\n\n  if (!challenge) {\n    return <></>;\n  }\n\n  return (\n    <>\n      {<CurrentChallengeStateExplanation {...props} />}\n\n      {<ChallengeSummary {...props} />}\n\n      {challengeHelpers.doesChallengeHaveAppeal(challenge.challenge) && <AppealSummary {...props} />}\n\n      {appealChallenge && <AppealChallengeSummary {...props} />}\n    </>\n  );\n};\n\nexport default DashboardItemChallengeDetails;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ChallengesWithRewardsToClaim.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\n\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\n\nimport {\n  Tabs,\n  Tab,\n  StyledDashboardSubTab,\n  ClaimRewardsDescriptionText,\n  ModalContent,\n  StyledDashboardActivityDescription,\n  TransactionButtonNoModal,\n  NoRewardsToClaim,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nimport {\n  ChallengesToProcess,\n  StyledBatchButtonContainer,\n  getChallengesToProcess,\n  getSalts,\n  StyledTabsComponent,\n} from \"./DashboardActivity\";\nimport ClaimRewardsItem from \"./ClaimRewardsItem\";\n\nenum TransactionTypes {\n  MULTI_CLAIM_REWARDS = \"MULTI_CLAIM_REWARDS\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.MULTI_CLAIM_REWARDS]: \"Claim Rewards\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.MULTI_CLAIM_REWARDS]: [\n    \"You have successfully claimed your rewards\",\n    <ModalContent>Thank you for participating and helping curate high-quality, trustworthy journalism.</ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.MULTI_CLAIM_REWARDS]: [\n    \"Your rewards were not claimed\",\n    \"To claim your rewards, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.MULTI_CLAIM_REWARDS]: [\n    \"The was an problem with claiming your rewards\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface ChallengesWithRewardsToClaimProps {\n  challenges: any;\n  appealChallenges: any;\n  proposalChallenges: any;\n  userChallengeData?: any;\n  refetchUserChallengeData?(): void;\n  onMobileTransactionClick?(): any;\n}\n\ninterface ChallengesWithRewardsToClaimState {\n  challengesToClaim: ChallengesToProcess;\n}\n\nclass ChallengesWithRewardsToClaim extends React.Component<\n  ChallengesWithRewardsToClaimProps & InjectedTransactionStatusModalProps,\n  ChallengesWithRewardsToClaimState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n  public state = {\n    challengesToClaim: {},\n  };\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public componentWillUnmount(): void {\n    this.resetChallengesToMultiClaim();\n  }\n\n  public render(): JSX.Element {\n    const isClaimRewardsButtonDisabled = this.isEmpty(this.state.challengesToClaim);\n    const transactions = this.getTransactions();\n    const { resetChallengesToMultiClaim } = this;\n    const { userChallengeData: allUserChallengeData, challenges, appealChallenges, proposalChallenges } = this.props;\n    const hasNoChallenges = !challenges || challenges.count() === 0;\n    const hasNoAppealChallenges = !appealChallenges || appealChallenges.count() === 0;\n    const hasNoProposalChallenges = !proposalChallenges || proposalChallenges.count() === 0;\n    const displayNoTasks = hasNoChallenges && hasNoAppealChallenges && hasNoProposalChallenges;\n\n    return (\n      <>\n        {displayNoTasks && <NoRewardsToClaim />}\n        {!displayNoTasks && (\n          <>\n            <StyledDashboardActivityDescription>\n              <ClaimRewardsDescriptionText />\n            </StyledDashboardActivityDescription>\n\n            <Tabs\n              TabComponent={StyledDashboardSubTab}\n              TabsNavComponent={StyledTabsComponent}\n              onActiveTabChange={resetChallengesToMultiClaim}\n            >\n              <Tab title=\"Listing Challenges\">\n                <>\n                  {this.props.challenges\n                    .sort((a: string, b: string) => parseInt(a, 10) - parseInt(b, 10))\n                    .map((c: string) => {\n                      let userChallengeData;\n                      if (allUserChallengeData) {\n                        userChallengeData = allUserChallengeData.get(c!);\n                      }\n                      return (\n                        <ClaimRewardsItem\n                          key={c}\n                          challengeID={c!}\n                          queryUserChallengeData={userChallengeData}\n                          toggleSelect={this.setChallengesToMultiClaim}\n                        />\n                      );\n                    })}\n\n                  {this.props.appealChallenges\n                    .sort((a: string, b: string) => parseInt(a, 10) - parseInt(b, 10))\n                    .map((c: string) => {\n                      let userChallengeData;\n                      if (allUserChallengeData) {\n                        userChallengeData = allUserChallengeData.get(c!);\n                      }\n                      return (\n                        <ClaimRewardsItem\n                          key={c}\n                          appealChallengeID={c!}\n                          queryUserChallengeData={userChallengeData}\n                          toggleSelect={this.setChallengesToMultiClaim}\n                        />\n                      );\n                    })}\n                </>\n              </Tab>\n              <Tab title=\"Parameter Proposal Challenges\">\n                <>\n                  {this.props.proposalChallenges\n                    .sort((a: string, b: string) => parseInt(a, 10) - parseInt(b, 10))\n                    .map((c: string) => {\n                      let userChallengeData;\n                      if (allUserChallengeData) {\n                        userChallengeData = allUserChallengeData.get(c!);\n                      }\n                      return (\n                        <ClaimRewardsItem\n                          key={c}\n                          isProposalChallenge={true}\n                          challengeID={c!}\n                          queryUserChallengeData={userChallengeData}\n                          toggleSelect={this.setChallengesToMultiClaim}\n                        />\n                      );\n                    })}\n                </>\n              </Tab>\n            </Tabs>\n\n            <StyledBatchButtonContainer>\n              <TransactionButtonNoModal disabled={isClaimRewardsButtonDisabled} transactions={transactions}>\n                Claim Rewards\n              </TransactionButtonNoModal>\n            </StyledBatchButtonContainer>\n          </>\n        )}\n      </>\n    );\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.MULTI_CLAIM_REWARDS,\n          });\n          return this.multiClaim();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n\n          if (this.props.refetchUserChallengeData) {\n            this.props.refetchUserChallengeData();\n          }\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private isEmpty(obj: any): boolean {\n    for (const key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private setChallengesToMultiClaim = (challengeID: string, isSelected: boolean, salt: BigNumber): void => {\n    if (isSelected) {\n      this.setState(() => ({\n        challengesToClaim: { ...this.state.challengesToClaim, [challengeID]: [isSelected, salt] },\n      }));\n    } else {\n      const newChallengesToClaim = this.state.challengesToClaim;\n      delete newChallengesToClaim[challengeID];\n      this.setState(() => ({\n        challengesToClaim: { ...newChallengesToClaim },\n      }));\n    }\n  };\n\n  private resetChallengesToMultiClaim = (): void => {\n    this.setState(() => ({ challengesToClaim: {} }));\n  };\n\n  private multiClaim = async (): Promise<TwoStepEthTransaction | void> => {\n    const challengeIDs = getChallengesToProcess(this.state.challengesToClaim);\n    const salts = getSalts(this.state.challengesToClaim);\n    return this.context.multiClaimRewards(challengeIDs, salts);\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengesWithRewardsToClaimProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengesWithRewardsToClaim);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ChallengesWithTokensToRescue.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\n\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\n\nimport {\n  Tabs,\n  Tab,\n  StyledDashboardSubTab,\n  RescueTokensDescriptionText,\n  ModalContent,\n  StyledDashboardActivityDescription,\n  TransactionButtonNoModal,\n  NoTokensToRescue,\n} from \"@joincivil/components\";\n\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nimport {\n  ChallengesToProcess,\n  StyledBatchButtonContainer,\n  getChallengesToProcess,\n  StyledTabsComponent,\n} from \"./DashboardActivity\";\nimport RescueTokensItem from \"./RescueTokensItem\";\n\nenum TransactionTypes {\n  MULTI_RESCUE_TOKENS = \"MULTI_RESCUE_TOKENS\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.MULTI_RESCUE_TOKENS]: \"Rescue Tokens\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.MULTI_RESCUE_TOKENS]: [\n    \"You have successfully rescued your unrevealed tokens\",\n    <ModalContent>\n      We're sorry you were not able to reveal your vote, and hope that you will continue to participate and help curate\n      high-quality, trustworthy journalism\n    </ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.MULTI_RESCUE_TOKENS]: [\n    \"Your tokens were not rescued\",\n    \"To rescue your tokens, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.MULTI_RESCUE_TOKENS]: [\n    \"The was an problem with rescuing your tokens\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface ChallengesWithTokensToRescueProps {\n  challenges: any;\n  appealChallenges: any;\n  proposalChallenges: any;\n  userChallengeData?: any;\n  refetchUserChallengeData?(): void;\n  onMobileTransactionClick?(): any;\n}\n\ninterface ChallengesWithTokensToRescueState {\n  challengesToRescue: ChallengesToProcess;\n}\n\nclass ChallengesWithTokensToRescue extends React.Component<\n  ChallengesWithTokensToRescueProps & InjectedTransactionStatusModalProps,\n  ChallengesWithTokensToRescueState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public state = {\n    challengesToRescue: {},\n  };\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public componentWillUnmount(): void {\n    this.resetChallengesToMultiRescue();\n  }\n\n  public render(): JSX.Element {\n    const isRescueTokensButtonDisabled = this.isEmpty(this.state.challengesToRescue);\n    const transactions = this.getTransactions();\n    const { resetChallengesToMultiRescue } = this;\n    const { userChallengeData: allUserChallengeData, challenges, appealChallenges, proposalChallenges } = this.props;\n    const hasNoChallenges = !challenges || challenges.count() === 0;\n    const hasNoAppealChallenges = !appealChallenges || appealChallenges.count() === 0;\n    const hasNoProposalChallenges = !proposalChallenges || proposalChallenges.count() === 0;\n    const displayNoTasks = hasNoChallenges && hasNoAppealChallenges && hasNoProposalChallenges;\n\n    return (\n      <>\n        {displayNoTasks && <NoTokensToRescue />}\n        {!displayNoTasks && (\n          <>\n            <StyledDashboardActivityDescription>\n              <RescueTokensDescriptionText />\n            </StyledDashboardActivityDescription>\n\n            <Tabs\n              TabComponent={StyledDashboardSubTab}\n              TabsNavComponent={StyledTabsComponent}\n              onActiveTabChange={resetChallengesToMultiRescue}\n            >\n              <Tab title=\"Listing Challenges\">\n                <>\n                  {this.props.challenges\n                    .sort((a: string, b: string) => parseInt(a, 10) - parseInt(b, 10))\n                    .map((c: string) => {\n                      let userChallengeData;\n                      if (allUserChallengeData) {\n                        userChallengeData = allUserChallengeData.get(c!);\n                      }\n                      return (\n                        <RescueTokensItem\n                          key={c}\n                          challengeID={c!}\n                          queryUserChallengeData={userChallengeData}\n                          toggleSelect={this.setChallengesToMultiRescue}\n                        />\n                      );\n                    })}\n\n                  {this.props.appealChallenges\n                    .sort((a: string, b: string) => parseInt(a, 10) - parseInt(b, 10))\n                    .map((c: string) => {\n                      let userChallengeData;\n                      if (allUserChallengeData) {\n                        userChallengeData = allUserChallengeData.get(c!);\n                      }\n                      return (\n                        <RescueTokensItem\n                          key={c}\n                          appealChallengeID={c!}\n                          queryUserChallengeData={userChallengeData}\n                          toggleSelect={this.setChallengesToMultiRescue}\n                        />\n                      );\n                    })}\n                </>\n              </Tab>\n              <Tab title=\"Parameter Proposal Challenges\">\n                <>\n                  {this.props.proposalChallenges\n                    .sort((a: string, b: string) => parseInt(a, 10) - parseInt(b, 10))\n                    .map((c: string) => {\n                      let userChallengeData;\n                      if (allUserChallengeData) {\n                        userChallengeData = allUserChallengeData.get(c!);\n                      }\n                      return (\n                        <RescueTokensItem\n                          key={c}\n                          isProposalChallenge={true}\n                          challengeID={c!}\n                          queryUserChallengeData={userChallengeData}\n                          toggleSelect={this.setChallengesToMultiRescue}\n                        />\n                      );\n                    })}\n                </>\n              </Tab>\n            </Tabs>\n\n            <StyledBatchButtonContainer>\n              <TransactionButtonNoModal disabled={isRescueTokensButtonDisabled} transactions={transactions}>\n                Rescue Tokens\n              </TransactionButtonNoModal>\n            </StyledBatchButtonContainer>\n          </>\n        )}\n      </>\n    );\n  }\n\n  private isEmpty(obj: any): boolean {\n    for (const key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.MULTI_RESCUE_TOKENS,\n          });\n          return this.multiRescue();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n          if (this.props.refetchUserChallengeData) {\n            this.props.refetchUserChallengeData();\n          }\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private setChallengesToMultiRescue = (challengeID: string, isSelected: boolean, salt: BigNumber): void => {\n    if (isSelected) {\n      this.setState(() => ({\n        challengesToRescue: { ...this.state.challengesToRescue, [challengeID]: [isSelected, salt] },\n      }));\n    } else {\n      const newChallengesToRescue = this.state.challengesToRescue;\n      delete newChallengesToRescue[challengeID];\n      this.setState(() => ({\n        challengesToRescue: { ...newChallengesToRescue },\n      }));\n    }\n  };\n\n  private resetChallengesToMultiRescue = (): void => {\n    this.setState(() => ({ challengesToRescue: {} }));\n  };\n\n  private multiRescue = async (): Promise<TwoStepEthTransaction | void> => {\n    const challengeIDs = getChallengesToProcess(this.state.challengesToRescue);\n    return this.context.rescueTokensInMultiplePolls(challengeIDs);\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengesWithTokensToRescueProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengesWithTokensToRescue);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ClaimRewardsItem/ClaimRewardsItem.tsx",
    "content": "import * as React from \"react\";\nimport { ClaimRewardsItemOwnProps } from \"./types\";\nimport ClaimRewardsItemWrapper from \"./ClaimRewardsItemWrapper\";\n\nconst ClaimRewardsItem: React.FunctionComponent<ClaimRewardsItemOwnProps> = props => {\n  const {\n    challengeID,\n    appealChallengeID,\n    isProposalChallenge,\n    queryUserChallengeData,\n    queryUserAppealChallengeData,\n    toggleSelect,\n  } = props;\n\n  const viewProps = {\n    challengeID,\n    appealChallengeID,\n    isProposalChallenge,\n    toggleSelect,\n  };\n\n  return (\n    <ClaimRewardsItemWrapper\n      {...viewProps}\n      queryUserChallengeData={queryUserChallengeData}\n      queryUserAppealChallengeData={queryUserAppealChallengeData}\n    />\n  );\n};\n\nexport default ClaimRewardsItem;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ClaimRewardsItem/ClaimRewardsItemWrapper.tsx",
    "content": "import * as React from \"react\";\n\nimport { transformGraphQLDataIntoNewsroom, transfromGraphQLDataIntoUserChallengeData } from \"@joincivil/utils\";\nimport { ClaimRewardsItemOwnProps } from \"./types\";\nimport { ClaimRewardsViewComponent, ProposalClaimRewardsViewComponent } from \"./ClaimRewardsViewComponents\";\n\nconst ClaimRewardsItemWrapper: React.FunctionComponent<ClaimRewardsItemOwnProps> = props => {\n  const { challengeID, appealChallengeID, queryUserChallengeData, toggleSelect, isProposalChallenge } = props;\n  const challengeIDArg = challengeID || appealChallengeID;\n  if (!challengeIDArg) {\n    return <></>;\n  }\n\n  if (!queryUserChallengeData) {\n    console.error(\"ClaimRewardsItemWrapper: no queryUserChallengeData found\");\n    return <></>;\n  }\n  const { pollType, challenge } = queryUserChallengeData;\n  if (!pollType) {\n    console.error(\"ClaimRewardsItemWrapper: no pollType found\");\n    return <></>;\n  }\n\n  if (pollType === \"CHALLENGE\" || pollType === \"APPEAL_CHALLENGE\" || pollType === \"PARAMETER_PROPOSAL_CHALLENGE\") {\n    if (challenge) {\n      const userChallengeData = transfromGraphQLDataIntoUserChallengeData(queryUserChallengeData, challenge);\n\n      const unclaimedRewardAmount = userChallengeData!.voterReward;\n\n      const viewProps = {\n        challengeID,\n        appealChallengeID,\n        userChallengeData,\n        unclaimedRewardAmount,\n        toggleSelect,\n      };\n\n      if (isProposalChallenge) {\n        return <ProposalClaimRewardsViewComponent {...viewProps} />;\n      }\n\n      const listingAddress = challenge!.listingAddress;\n      if (listingAddress && challenge.listing) {\n        const newsroom = { wrapper: transformGraphQLDataIntoNewsroom(challenge.listing, listingAddress) };\n        return <ClaimRewardsViewComponent {...viewProps} listingAddress={listingAddress} newsroom={newsroom} />;\n      }\n    }\n  }\n  console.error(\"ClaimRewardsItemWrapper: pollType unknown\");\n  return <></>;\n};\n\nexport default ClaimRewardsItemWrapper;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ClaimRewardsItem/ClaimRewardsViewComponents.tsx",
    "content": "import * as React from \"react\";\nimport { DashboardActivitySelectableItem } from \"@joincivil/components\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { ClaimRewardsItemOwnProps, ClaimRewardsViewComponentProps, ProposalClaimRewardsComponentProps } from \"./types\";\n\nexport const ClaimRewardsViewComponent: React.FunctionComponent<\n  ClaimRewardsItemOwnProps & ClaimRewardsViewComponentProps\n> = props => {\n  const { challengeID, appealChallengeID, toggleSelect, newsroom, userChallengeData, unclaimedRewardAmount } = props;\n  let salt;\n  if (userChallengeData) {\n    salt = userChallengeData.salt;\n  }\n\n  if (!(newsroom && (challengeID || appealChallengeID))) {\n    return null;\n  }\n\n  const newsroomData = newsroom.wrapper.data;\n\n  const viewProps = {\n    title: newsroomData.name,\n    challengeID,\n    appealChallengeID,\n    salt,\n    numTokens: getFormattedTokenBalance(unclaimedRewardAmount!),\n    toggleSelect,\n  };\n\n  return <DashboardActivitySelectableItem {...viewProps} />;\n};\n\nexport const ProposalClaimRewardsViewComponent: React.FunctionComponent<\n  ClaimRewardsItemOwnProps & ProposalClaimRewardsComponentProps\n> = props => {\n  const { proposal, challengeID, unclaimedRewardAmount, userChallengeData, toggleSelect } = props;\n  let salt;\n  if (userChallengeData) {\n    salt = userChallengeData.salt;\n  }\n\n  let title = \"Parameter Proposal Challenge\";\n  if (proposal) {\n    title = `${title}: ${proposal.paramName} = ${proposal.propValue}`;\n  }\n\n  const viewProps = {\n    title,\n    challengeID,\n    salt,\n    numTokens: getFormattedTokenBalance(unclaimedRewardAmount!),\n    toggleSelect,\n  };\n\n  return <DashboardActivitySelectableItem {...viewProps} />;\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ClaimRewardsItem/index.ts",
    "content": "export { default } from \"./ClaimRewardsItem\";\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ClaimRewardsItem/types.ts",
    "content": "import { BigNumber, UserChallengeData } from \"@joincivil/typescript-types\";\n\nexport interface ClaimRewardsItemOwnProps {\n  challengeID?: string;\n  appealChallengeID?: string;\n  isProposalChallenge?: boolean;\n  queryUserChallengeData?: any;\n  queryUserAppealChallengeData?: any;\n  toggleSelect?(challengeID: string, isSelected: boolean, salt: BigNumber): void;\n}\n\nexport interface ClaimRewardsViewComponentProps {\n  listingAddress?: string;\n  newsroom?: any;\n  userChallengeData?: UserChallengeData;\n  unclaimedRewardAmount: BigNumber;\n}\n\nexport interface ProposalClaimRewardsComponentProps {\n  proposal?: any;\n  userChallengeData?: UserChallengeData;\n  unclaimedRewardAmount: BigNumber;\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/Dashboard.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport styled from \"styled-components/macro\";\nimport { Helmet } from \"react-helmet\";\n\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  CivilContext,\n  UserDashboardHeader,\n  mediaQueries,\n  colors,\n  ICivilContext,\n  buttonSizes,\n} from \"@joincivil/components\";\n\nimport { State } from \"../../redux/reducers\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\n\nimport UserInfoSummary from \"./UserInfoSummary\";\nimport DashboardActivity from \"./DashboardActivity\";\nimport UserProfileSummary from \"./UserProfileSummary\";\nimport { routes } from \"../../constants\";\nimport { NewPrimaryButton } from \"@joincivil/elements\";\n\nconst StyledDashboardActivityContainer = styled.div`\n  box-sizing: border-box;\n  margin-top: 40px;\n  flex-grow: 1;\n\n  ${mediaQueries.MOBILE} {\n    max-width: 100%;\n    margin: 0;\n  }\n`;\n\nconst StyledAuthButtonContainer = styled.div`\n  align-items: center;\n  display: flex;\n  flex-direction: column;\n  padding: 100px 0 0;\n\n  p {\n    font-size: 18px\n    font-weight: bold;\n    line-height: 33px;\n  }\n`;\n\nconst DashboardContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  ${mediaQueries.MOBILE} {\n    flex-direction: column;\n  }\n  background-color: ${colors.accent.CIVIL_BLUE_VERY_FADED_2};\n`;\n\nconst EditProfileButton = styled(NewPrimaryButton)`\n  height: 30px;\n  margin-bottom: 15px;\n`;\n\nexport interface DashboardProps {\n  match?: any;\n  history: any;\n}\n\nexport interface DashboardReduxProps {\n  userAccount?: EthAddress;\n}\n\nconst DashboardComponent = (props: DashboardProps & DashboardReduxProps) => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  const civilUser = civilContext.auth.currentUser;\n\n  return (\n    <>\n      <Helmet title=\"My Dashboard - The Civil Registry\" />\n      <ScrollToTopOnMount />\n      {civilUser && props.userAccount && (\n        <DashboardContainer>\n          <UserDashboardHeader>\n            <UserProfileSummary user={civilUser} />\n            <EditProfileButton size={buttonSizes.SMALL} to={routes.ACCOUNT_ROOT}>\n              Edit Account\n            </EditProfileButton>\n            <UserInfoSummary />\n          </UserDashboardHeader>\n          <StyledDashboardActivityContainer>\n            <DashboardActivity match={props.match} history={props.history} />\n          </StyledDashboardActivityContainer>\n        </DashboardContainer>\n      )}\n      {civilUser && !props.userAccount && <></>}\n      {!civilUser && (\n        <StyledAuthButtonContainer>\n          <p>Sign Up or Log In to view your Civil Registry dashboard</p>\n        </StyledAuthButtonContainer>\n      )}\n    </>\n  );\n};\n\nconst mapStateToProps = (state: State, ownProps: DashboardProps): DashboardProps & DashboardReduxProps => {\n  const { user } = state.networkDependent;\n  const userAccount = user && user.account && user.account.account;\n\n  return {\n    userAccount,\n    ...ownProps,\n  };\n};\n\nexport const Dashboard = connect(mapStateToProps)(DashboardComponent);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/DashboardActivity.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { Map, Set } from \"immutable\";\nimport styled from \"styled-components/macro\";\nimport { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  DashboardActivity as DashboardActivityComponent,\n  Modal,\n  ProgressModalContentMobileUnsupported,\n  NoNewsrooms,\n  LoadingMessage,\n  NoChallenges,\n} from \"@joincivil/components\";\n\nimport { routes, dashboardTabs, dashboardSubTabs, TDashboardTab, TDashboardSubTab } from \"../../constants\";\nimport { State } from \"../../redux/reducers\";\nimport {\n  USER_CHALLENGE_DATA_POLL_TYPES,\n  transformGraphQLDataIntoDashboardChallengesSet,\n  transformGraphQLDataIntoDashboardChallengesByTypeSets,\n  getUserChallengeDataSetByPollType,\n} from \"@joincivil/utils\";\n\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\nimport NewsroomsList from \"./NewsroomsList\";\nimport WithNewsroomChannelAdminList from \"./ManageNewsroom/WithNewsroomChannelAdminList\";\nimport MyTasks from \"./MyTasks\";\nimport MyChallenges from \"./MyChallenges\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\n\nconst TABS: TDashboardTab[] = [\n  dashboardTabs.TASKS,\n  dashboardTabs.NEWSROOMS,\n  dashboardTabs.CHALLENGES,\n  dashboardTabs.ACTIVITY,\n];\nconst SUB_TABS: { [index in TDashboardTab]?: TDashboardSubTab[] } = {\n  [dashboardTabs.TASKS]: [\n    dashboardSubTabs.TASKS_ALL,\n    dashboardSubTabs.TASKS_REVEAL_VOTE,\n    dashboardSubTabs.TASKS_CLAIM_REWARDS,\n    dashboardSubTabs.TASKS_RESCUE_TOKENS,\n    dashboardSubTabs.TASKS_TRANSFER_VOTING_TOKENS,\n  ],\n  [dashboardTabs.CHALLENGES]: [dashboardSubTabs.CHALLENGES_COMPLETED, dashboardSubTabs.CHALLENGES_STAKED],\n};\n\nexport interface DashboardActivityProps {\n  match?: any;\n  history: any;\n}\n\nexport interface DashboardActivityReduxProps {\n  userAccount: EthAddress;\n}\n\nexport interface ChallengesToProcess {\n  [index: string]: [boolean, BigNumber];\n}\n\nexport interface DashboardActivityState {\n  isNoMobileTransactionVisible: boolean;\n  activeTabIndex: number;\n  activeSubTabIndex: number;\n  tabWasSet: boolean;\n}\n\nexport const StyledTabsComponent = styled.div`\n  margin-left: 26px;\n`;\n\nexport const StyledBatchButtonContainer = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: center;\n  padding: 12px 0 36px;\n`;\n\nconst NO_RESULTS = \"No results from persister\";\nconst NO_JSONB = \"No jsonb found\";\n\nconst USER_NRSIGNUP_QUERY = gql`\n  query {\n    nrsignupNewsroom: nrsignupNewsroom {\n      charter {\n        name\n      }\n      newsroomAddress\n      tcrApplyTx\n    }\n  }\n`;\n\nconst DASHBOARD_CHALLENGE_FRAGMENT = gql`\n  fragment DashboardChallengeFragment on Challenge {\n    challengeID\n    challengeType\n    listingAddress\n    listing {\n      name\n      owner\n      ownerAddresses\n      contractAddress\n      whitelisted\n      lastGovState\n      lastUpdatedDate\n      charter {\n        uri\n        contentID\n        revisionID\n        signature\n        author\n        contentHash\n        timestamp\n      }\n      unstakedDeposit\n      appExpiry\n      approvalDate\n    }\n    statement\n    rewardPool\n    challenger\n    resolved\n    stake\n    totalTokens\n    poll {\n      commitEndDate\n      revealEndDate\n      voteQuorum\n      votesFor\n      votesAgainst\n    }\n    requestAppealExpiry\n    lastUpdatedDateTs\n    appeal {\n      requester\n      appealFeePaid\n      appealPhaseExpiry\n      appealGranted\n      appealOpenToChallengeExpiry\n      statement\n      appealChallengeID\n      appealGrantedStatementURI\n      appealChallenge {\n        challengeID\n        statement\n        rewardPool\n        challenger\n        resolved\n        stake\n        totalTokens\n        poll {\n          commitEndDate\n          revealEndDate\n          voteQuorum\n          votesFor\n          votesAgainst\n        }\n      }\n    }\n  }\n`;\n\nconst USER_CHALLENGE_DASHBOARD_QUERY = gql`\n  query($userAddress: String!) {\n    allChallenges: userChallengeData(userAddr: $userAddress) {\n      pollID\n      pollType\n      userDidReveal\n      userDidCommit\n      didUserCollect\n      didUserRescue\n      didCollectAmount\n      isVoterWinner\n      pollIsPassed\n      choice\n      salt\n      numTokens\n      voterReward\n      parentChallengeID\n      challenge {\n        ...DashboardChallengeFragment\n      }\n    }\n    challengesToReveal: userChallengeData(userAddr: $userAddress, canUserReveal: true) {\n      pollID\n      pollType\n      parentChallengeID\n    }\n    challengesWithRewards: userChallengeData(userAddr: $userAddress, canUserCollect: true) {\n      pollID\n      pollType\n    }\n    challengesToRescue: userChallengeData(userAddr: $userAddress, canUserRescue: true) {\n      pollID\n      pollType\n    }\n    challengesStarted: challengesStartedByUser(addr: $userAddress) {\n      ...DashboardChallengeFragment\n    }\n  }\n  ${DASHBOARD_CHALLENGE_FRAGMENT}\n`;\n\n// We're storing which challenges to multi-claim in the state of this component, because\n// the user can select which rewards to batch\n// @TODO(jon: Clean this up. Maybe this gets put into redux, or we create a more\n// explicit type that describes this object that gets checked and that type has a field\n// called something like `isSelected` so this code is a bit clearer\nexport const getChallengesToProcess = (challengeObj: ChallengesToProcess): BigNumber[] => {\n  const challengesToCheck = Object.entries(challengeObj);\n  const challengesToProcess: BigNumber[] = challengesToCheck\n    .map((challengeToProcess: [string, [boolean, BigNumber]]) => {\n      if (challengeToProcess[1][0]) {\n        return new BigNumber(challengeToProcess[0]);\n      }\n      return;\n    })\n    .filter(item => !!item) as BigNumber[];\n  return challengesToProcess;\n};\n\nexport const getSalts = (challengeObj: ChallengesToProcess): BigNumber[] => {\n  const challengesToCheck = Object.entries(challengeObj);\n  const challengesToProcess: BigNumber[] = challengesToCheck\n    .map((challengeToProcess: [string, [boolean, BigNumber]]) => {\n      if (challengeToProcess[1][0]) {\n        return challengeToProcess[1][1];\n      }\n      return;\n    })\n    .filter(item => !!item) as BigNumber[];\n  return challengesToProcess;\n};\n\nclass DashboardActivity extends React.Component<\n  DashboardActivityProps & DashboardActivityReduxProps,\n  DashboardActivityState\n> {\n  public state = {\n    isNoMobileTransactionVisible: false,\n    activeTabIndex: 0,\n    activeSubTabIndex: 0,\n    tabWasSet: false,\n  };\n\n  public componentWillMount(): void {\n    const { activeDashboardTab, activeDashboardSubTab } = this.props.match.params;\n    const tabState: Partial<DashboardActivityState> = {};\n    if (activeDashboardTab) {\n      tabState.activeTabIndex = TABS.indexOf(activeDashboardTab) || 0;\n      const subTabs = SUB_TABS[activeDashboardTab];\n      if (activeDashboardSubTab && subTabs) {\n        tabState.activeSubTabIndex = subTabs.indexOf(activeDashboardSubTab) || 0;\n      }\n      tabState.tabWasSet = true;\n    }\n    this.setState({ ...this.state, ...tabState });\n  }\n\n  public render(): JSX.Element {\n    return (\n      <WithNewsroomChannelAdminList>\n        {({ newsrooms }) => {\n          return (\n            <Query query={USER_NRSIGNUP_QUERY}>\n              {({ loading: nrsignupLoading, error: nrsignupError, data: nrsignupData }: any): JSX.Element => {\n                return (\n                  <Query query={USER_CHALLENGE_DASHBOARD_QUERY} variables={{ userAddress: this.props.userAccount }}>\n                    {({\n                      loading: challengeLoading,\n                      error: challengeError,\n                      data: challengeData,\n                      refetch: challengeRefetch,\n                    }: any): JSX.Element => {\n                      if (nrsignupLoading || challengeLoading) {\n                        console.log(\"loading.\");\n                        return <LoadingMessage />;\n                      }\n                      if (nrsignupError && !nrsignupError.toString().includes(NO_JSONB)) {\n                        console.log(\"error loading user nrsignup: \", nrsignupError);\n                        return <ErrorLoadingDataMsg />;\n                      }\n                      if (challengeError && !challengeError.toString().includes(NO_RESULTS)) {\n                        console.log(\"error loading user challenges: \", challengeError);\n                        return <ErrorLoadingDataMsg />;\n                      }\n\n                      const myChallengesViewProps = this.getMyChallengesViewProps(challengeError, challengeData);\n                      const myTasksViewProps = this.getMyTasksViewProps(\n                        challengeError,\n                        challengeData,\n                        challengeRefetch,\n                      );\n\n                      const numUserNewsrooms =\n                        newsrooms.count() ||\n                        (nrsignupData && nrsignupData.nrsignupNewsroom && nrsignupData.nrsignupNewsroom.newsroomAddress\n                          ? 1\n                          : 0);\n\n                      return (\n                        <>\n                          <DashboardActivityComponent\n                            userVotes={this.renderUserVotes(challengeError, myTasksViewProps)}\n                            numUserVotes={myTasksViewProps.numUserTasks}\n                            userNewsrooms={this.renderWithNrsignupNewsrooms(newsrooms, nrsignupError, nrsignupData)}\n                            numUserNewsrooms={numUserNewsrooms}\n                            userChallenges={this.renderUserChallenges(challengeError, myChallengesViewProps)}\n                            activeIndex={this.state.activeTabIndex}\n                            onTabChange={this.setActiveTabIndex}\n                            onTabsLoadChange={this.setActiveTabIndexNoHistoryPush}\n                            preventStartingTabOverride={this.state.tabWasSet}\n                          />\n                          {this.renderNoMobileTransactions()}\n                        </>\n                      );\n                    }}\n                  </Query>\n                );\n              }}\n            </Query>\n          );\n        }}\n      </WithNewsroomChannelAdminList>\n    );\n  }\n\n  private renderWithNrsignupNewsrooms = (channelNewsrooms: Set<any>, error: any, data: any): JSX.Element => {\n    const registryUrl = formatRoute(routes.APPLY_TO_REGISTRY);\n\n    if (!channelNewsrooms.size && (error || !data || !data.nrsignupNewsroom)) {\n      console.log(\"here 1\");\n      return <NoNewsrooms applyToRegistryURL={registryUrl} />;\n    }\n\n    const newsrooms = channelNewsrooms;\n\n    if (!newsrooms.size && data && data.nrsignupNewsroom) {\n      console.log(\"here 2\");\n      return <NoNewsrooms hasInProgressApplication={true} applyToRegistryURL={registryUrl} />;\n    }\n\n    if (!newsrooms.size) {\n      console.log(\"here 3\");\n      return <NoNewsrooms applyToRegistryURL={registryUrl} />;\n    }\n\n    console.log(\"here 4\");\n    return (\n      <>\n        <NewsroomsList listings={newsrooms} />\n      </>\n    );\n  };\n\n  private getMyChallengesViewProps = (error: any, data: any): any => {\n    if (error) {\n      return {\n        activeSubTabIndex: this.state.activeSubTabIndex,\n        setActiveSubTabIndex: this.setActiveSubTabIndex,\n        showClaimRewardsTab: this.showClaimRewardsTab,\n        showRescueTokensTab: this.showRescueTokensTab,\n        showNoMobileTransactionsModal: this.showNoMobileTransactionsModal,\n      };\n    }\n    const allCompletedChallengesVotedOn = transformGraphQLDataIntoDashboardChallengesSet(data.allChallenges);\n    const allProposalChallengesVotedOn = getUserChallengeDataSetByPollType(\n      data.allChallenges,\n      USER_CHALLENGE_DATA_POLL_TYPES.PARAMETER_PROPOSAL_CHALLENGE,\n    );\n\n    let userChallengeDataMap = Map<string, any>();\n    let challengeToAppealChallengeMap = Map<string, string>();\n    data.allChallenges.forEach((challengeData: any) => {\n      userChallengeDataMap = userChallengeDataMap.set(challengeData.pollID, challengeData);\n      if (challengeData.pollType === \"APPEAL_CHALLENGE\") {\n        challengeToAppealChallengeMap = challengeToAppealChallengeMap.set(\n          challengeData.parentChallengeID,\n          challengeData.pollID,\n        );\n      }\n    });\n\n    const currentUserChallengesStarted = Set<any>(data.challengesStarted);\n\n    const numUserChallenges =\n      allCompletedChallengesVotedOn!.count() +\n      allProposalChallengesVotedOn!.count() +\n      currentUserChallengesStarted!.count();\n\n    const myTasksViewProps = {\n      userChallengeData: userChallengeDataMap,\n      challengeToAppealChallengeMap,\n      allCompletedChallengesVotedOn,\n      allProposalChallengesVotedOn,\n      currentUserChallengesStarted,\n      activeSubTabIndex: this.state.activeSubTabIndex,\n      setActiveSubTabIndex: this.setActiveSubTabIndex,\n      showClaimRewardsTab: this.showClaimRewardsTab,\n      showRescueTokensTab: this.showRescueTokensTab,\n      showNoMobileTransactionsModal: this.showNoMobileTransactionsModal,\n      numUserChallenges,\n    };\n\n    return myTasksViewProps;\n  };\n\n  private renderUserChallenges = (error: any, myTasksViewProps: any): JSX.Element => {\n    if (error) {\n      if (error.toString().includes(NO_RESULTS)) {\n        return <NoChallenges />;\n      } else {\n        return <ErrorLoadingDataMsg />;\n      }\n    }\n\n    return <MyChallenges {...myTasksViewProps} useGraphQL={true} />;\n  };\n\n  private getMyTasksViewProps = (error: any, data: any, refetch: any): any => {\n    const refetchUserChallengeData = (): void => {\n      refetch();\n    };\n    if (error) {\n      return {\n        activeSubTabIndex: this.state.activeSubTabIndex,\n        setActiveSubTabIndex: this.setActiveSubTabIndex,\n        showClaimRewardsTab: this.showClaimRewardsTab,\n        showRescueTokensTab: this.showRescueTokensTab,\n        showNoMobileTransactionsModal: this.showNoMobileTransactionsModal,\n        refetchUserChallengeData,\n      };\n    }\n    const allChallengesWithAvailableActions = transformGraphQLDataIntoDashboardChallengesSet(\n      data.allChallenges,\n      true,\n      data.challengesToReveal,\n      data.challengesToRescue,\n    );\n    const proposalChallengesWithAvailableActions = getUserChallengeDataSetByPollType(\n      data.allChallenges,\n      USER_CHALLENGE_DATA_POLL_TYPES.PARAMETER_PROPOSAL_CHALLENGE,\n      true,\n    );\n\n    const allChallengesWithUnrevealedVotes = transformGraphQLDataIntoDashboardChallengesSet(data.challengesToReveal);\n    const proposalChallengesWithUnrevealedVotes = getUserChallengeDataSetByPollType(\n      data.challengesToReveal,\n      USER_CHALLENGE_DATA_POLL_TYPES.PARAMETER_PROPOSAL_CHALLENGE,\n    );\n\n    const allChallengesWithUnclaimedRewards: [\n      Set<string>,\n      Set<string>,\n      Set<string>,\n    ] = transformGraphQLDataIntoDashboardChallengesByTypeSets(data.challengesWithRewards);\n\n    const allChallengesWithRescueTokens: [\n      Set<string>,\n      Set<string>,\n      Set<string>,\n    ] = transformGraphQLDataIntoDashboardChallengesByTypeSets(data.challengesToRescue);\n\n    let userChallengeDataMap = Map<string, any>();\n    let challengeToAppealChallengeMap = Map<string, string>();\n    data.allChallenges.forEach((challengeData: any) => {\n      userChallengeDataMap = userChallengeDataMap.set(challengeData.pollID, challengeData);\n      if (challengeData.pollType === \"APPEAL_CHALLENGE\") {\n        challengeToAppealChallengeMap = challengeToAppealChallengeMap.set(\n          challengeData.parentChallengeID,\n          challengeData.pollID,\n        );\n      }\n    });\n\n    const numUserTasks = allChallengesWithAvailableActions!.count() + proposalChallengesWithAvailableActions!.count();\n\n    const myTasksProps = {\n      userChallengeData: userChallengeDataMap,\n      challengeToAppealChallengeMap,\n      allChallengesWithAvailableActions,\n      proposalChallengesWithAvailableActions,\n      allChallengesWithUnrevealedVotes,\n      proposalChallengesWithUnrevealedVotes,\n      userChallengesWithUnclaimedRewards: allChallengesWithUnclaimedRewards[0],\n      userAppealChallengesWithUnclaimedRewards: allChallengesWithUnclaimedRewards[1],\n      proposalChallengesWithUnclaimedRewards: allChallengesWithUnclaimedRewards[2],\n      userChallengesWithRescueTokens: allChallengesWithRescueTokens[0],\n      userAppealChallengesWithRescueTokens: allChallengesWithRescueTokens[1],\n      proposalChallengesWithRescueTokens: allChallengesWithRescueTokens[2],\n      activeSubTabIndex: this.state.activeSubTabIndex,\n      setActiveSubTabIndex: this.setActiveSubTabIndex,\n      showClaimRewardsTab: this.showClaimRewardsTab,\n      showRescueTokensTab: this.showRescueTokensTab,\n      showNoMobileTransactionsModal: this.showNoMobileTransactionsModal,\n      refetchUserChallengeData,\n      numUserTasks,\n    };\n\n    return myTasksProps;\n  };\n\n  private renderUserVotes = (error: any, myTasksViewProps: any): JSX.Element => {\n    if (error && !error.toString().includes(NO_RESULTS)) {\n      return <ErrorLoadingDataMsg />;\n    }\n\n    return <MyTasks {...myTasksViewProps} />;\n  };\n\n  private setActiveTabAndSubTabIndex = (\n    activeTabIndex: number,\n    activeSubTabIndex: number = 0,\n    shouldPushHistory: boolean = true,\n  ): void => {\n    const tabName = TABS[activeTabIndex];\n    this.setState({ activeTabIndex, activeSubTabIndex });\n    const subTabName =\n      (SUB_TABS[tabName] && SUB_TABS[tabName]![activeSubTabIndex] && `/${SUB_TABS[tabName]![activeSubTabIndex]}`) || \"\";\n    if (shouldPushHistory) {\n      this.props.history.push(`/dashboard/${tabName}${subTabName}`);\n    }\n  };\n\n  private setActiveTabIndex = (activeTabIndex: number): void => {\n    this.setActiveTabAndSubTabIndex(activeTabIndex);\n  };\n\n  private setActiveTabIndexNoHistoryPush = (activeTabIndex: number): void => {\n    this.setActiveTabAndSubTabIndex(activeTabIndex, 0, false);\n  };\n\n  private setActiveSubTabIndex = (activeSubTabIndex: number): void => {\n    this.setActiveTabAndSubTabIndex(this.state.activeTabIndex, activeSubTabIndex);\n  };\n\n  private showClaimRewardsTab = (): void => {\n    const activeTabIndex = TABS.indexOf(dashboardTabs.TASKS);\n    const activeSubTabIndex = SUB_TABS[dashboardTabs.TASKS]!.indexOf(dashboardSubTabs.TASKS_CLAIM_REWARDS);\n    this.setActiveTabAndSubTabIndex(activeTabIndex, activeSubTabIndex);\n  };\n\n  private showRescueTokensTab = (): void => {\n    const activeTabIndex = TABS.indexOf(dashboardTabs.TASKS);\n    const activeSubTabIndex = SUB_TABS[dashboardTabs.TASKS]!.indexOf(dashboardSubTabs.TASKS_RESCUE_TOKENS);\n    this.setActiveTabAndSubTabIndex(activeTabIndex, activeSubTabIndex);\n  };\n\n  private showNoMobileTransactionsModal = (): void => {\n    this.setState({ isNoMobileTransactionVisible: true });\n  };\n\n  private hideNoMobileTransactionsModal = (): void => {\n    this.setState({ isNoMobileTransactionVisible: false });\n  };\n\n  private renderNoMobileTransactions(): JSX.Element {\n    if (this.state.isNoMobileTransactionVisible) {\n      return (\n        <Modal textAlign=\"center\">\n          <ProgressModalContentMobileUnsupported hideModal={this.hideNoMobileTransactionsModal} />\n        </Modal>\n      );\n    }\n\n    return <></>;\n  }\n}\n\nconst mapStateToProps = (\n  state: State,\n  ownProps: DashboardActivityProps,\n): DashboardActivityProps & DashboardActivityReduxProps => {\n  const { user } = state.networkDependent;\n\n  return {\n    userAccount: user.account.account,\n    ...ownProps,\n  };\n};\n\nexport default connect(mapStateToProps)(DashboardActivity);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/DashboardPage.tsx",
    "content": "import { Dashboard } from \"./Dashboard\";\n\nexport default Dashboard;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/DepositTokens.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\nimport styled from \"styled-components/macro\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  TransactionButtonNoModal,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  TransferTokenTipsText,\n  StyledTransferTokenFormElement,\n  CurrencyInput,\n} from \"@joincivil/components\";\nimport { State } from \"../../redux/reducers\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport { FormGroup } from \"../utility/FormElements\";\n\nenum TransactionTypes {\n  APPROVE_VOTING_RIGHTS = \"APPROVE_VOTING_RIGHTS\",\n  REQUEST_VOTING_RIGHTS = \"REQUEST_VOTING_RIGHTS\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"Approve Voting Rights\",\n  [TransactionTypes.REQUEST_VOTING_RIGHTS]: \"Transfer Available Tokens to your Voting Balance\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"1 of 2\",\n  [TransactionTypes.REQUEST_VOTING_RIGHTS]: \"2 of 2\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [undefined, undefined],\n  [TransactionTypes.REQUEST_VOTING_RIGHTS]: [\n    \"You have successfully transferred your voting tokens\",\n    <ModalContent>\n      Tokens in your Voting Balance can be used for voting on Challenges on The Civil Registry\n    </ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"Your tokens were not transferred\",\n    \"Before transferring tokens, you need to confirm the approval of your voting token deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.REQUEST_VOTING_RIGHTS]: [\n    \"Your tokens were not transferred\",\n    \"To transfer your tokens, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"There was a problem with transferring your tokens\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>\n          The number of tokens you are transferring with does not exceed your available balance.\n        </ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.REQUEST_VOTING_RIGHTS]: [\n    \"There was a problem with transferring your tokens\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface DepositTokensProps {\n  onMobileTransactionClick?(): any;\n}\n\nexport interface DepositTokenReduxProps {\n  balance: BigNumber;\n}\n\nexport interface DepositTokensState {\n  numTokens?: string;\n}\n\nclass DepositTokensComponent extends React.Component<\n  DepositTokensProps & DepositTokenReduxProps & InjectedTransactionStatusModalProps,\n  DepositTokensState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      numTokens: \"0\",\n    };\n  }\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StyledTransferTokenFormElement>\n          <CurrencyInput\n            label=\"Enter amount\"\n            placeholder=\"0\"\n            name=\"numTokens\"\n            icon={<>CVL</>}\n            onChange={this.updateViewState}\n          />\n          <TransferTokenTipsText />\n        </StyledTransferTokenFormElement>\n\n        <FormGroup>\n          <TransactionButtonNoModal transactions={this.getTransactions()}>Transfer</TransactionButtonNoModal>\n        </FormGroup>\n      </>\n    );\n  }\n\n  private approveVotingRights = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    const tokensWei = this.context.toWei(parseFloat(this.state.numTokens!));\n    console.log(\"approveVotingRights \", tokensWei.toString());\n    return this.context.approveVotingRightsForTransfer(tokensWei);\n  };\n\n  private depositTokens = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    const tokensWei = this.context.toWei(parseFloat(this.state.numTokens!));\n    console.log(\"depositTokens\", tokensWei, tokensWei.toString());\n    return this.context.requestVotingRights(tokensWei);\n  };\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_VOTING_RIGHTS,\n          });\n          return this.approveVotingRights();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.REQUEST_VOTING_RIGHTS,\n          });\n          return this.depositTokens();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private updateViewState = (name: string, value: string): void => {\n    this.setState(() => ({ [name]: value }));\n  };\n}\n\nconst mapStateToProps = (state: State): DepositTokenReduxProps => {\n  const { user } = state.networkDependent;\n  let balance = new BigNumber(0);\n  if (user.account && user.account.balance) {\n    balance = user.account.balance;\n  }\n\n  return {\n    balance,\n  };\n};\n\nexport default compose(\n  connect(mapStateToProps),\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(DepositTokensComponent) as React.ComponentClass<DepositTokensProps>;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ManageNewsroom/ManageNewsroom.tsx",
    "content": "import styled from \"styled-components\";\nimport * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport ScrollToTopOnMount from \"../../utility/ScrollToTop\";\nimport gql from \"graphql-tag\";\nimport { Link, withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { Query } from \"react-apollo\";\nimport { BoostForm } from \"@joincivil/sdk\";\nimport { EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport {\n  colors,\n  Tabs,\n  Tab,\n  LoadingMessage,\n  withNewsroomChannel,\n  NewsroomChannelInjectedProps,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { NewsroomManager, ManageContractMembers } from \"@joincivil/newsroom-signup\";\nimport { routes } from \"../../../constants\";\nimport { getListingPhaseState } from \"../../../selectors\";\nimport { LISTING_QUERY, transformGraphQLDataIntoListing } from \"@joincivil/utils\";\nimport {\n  UserManagementPageLayout,\n  UserManagementSection,\n  UserManagementTabNav,\n  UserManagementTabs,\n} from \"../UserManagement\";\nimport {\n  ManageNewsoomTitleText,\n  EditCharterTabText,\n  EditCharterTitleText,\n  SmartContractTabText,\n  SmartContractTitleText,\n  LaunchBoostTabText,\n  LaunchBoostTitleText,\n} from \"./ManageNewsroomTextComponents\";\nimport { ManageNewsroomSmartContractStyles } from \"./ManageNewsroomStyledComponents\";\n\nconst Notice = styled.div`\n  max-width: 800px;\n  margin: 0 auto;\n  padding: 48px 16px;\n  text-align: center;\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 16px;\n  line-height: 25px;\n  font-family: ${props => props.theme.sansSerifFont};\n`;\nconst NotAdminNotice = styled(Notice)`\n  text-align: left;\n`;\n\nconst ManageQuery = gql`\n  query($id: String!) {\n    channelsGetByID(id: $id) {\n      id\n      currentUserIsAdmin\n      newsroom {\n        contractAddress\n        multisigAddress\n        charter {\n          name\n          newsroomUrl\n          logoUrl\n          tagline\n          mission {\n            purpose\n            structure\n            revenue\n            encumbrances\n            miscellaneous\n          }\n          socialUrls {\n            twitter\n            facebook\n          }\n          roster {\n            name\n            role\n            bio\n            ethAddress\n            avatarUrl\n            signature\n            socialUrls {\n              twitter\n              facebook\n            }\n          }\n        }\n      }\n    }\n  }\n`;\ninterface ManageQueryData {\n  channelsGetByID: {\n    id: string;\n    currentUserIsAdmin: boolean;\n    newsroom: {\n      contractAddress: EthAddress;\n      multisigAddress: EthAddress;\n      charter: Partial<CharterData>;\n    };\n  };\n}\ninterface ManageQueryVariables {\n  id: string;\n}\n\nexport interface ManageParams {\n  activeTab?: \"edit-charter\" | \"smart-contract\" | \"launch-boost\";\n}\nconst TABS = [\"edit-charter\", \"smart-contract\", \"launch-boost\"];\n\nexport interface ManageNewsroomOwnProps extends RouteComponentProps<ManageParams> {\n  newsroomAddress: string;\n}\n\nconst ManageNewsroomComponent: React.FunctionComponent<\n  ManageNewsroomOwnProps & NewsroomChannelInjectedProps\n> = props => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  if (civilContext.auth.loading) {\n    return <LoadingMessage>Loading Permissions</LoadingMessage>;\n  } else if (!civilContext.auth.currentUser) {\n    return (\n      <Notice>\n        <p>Please Sign Up or Log In to manage your newsroom.</p>\n      </Notice>\n    );\n  }\n\n  // Load tab from path:\n  const [activeTabIndex, setActiveTabIndex] = React.useState<number>(0);\n  React.useEffect(() => {\n    const activeTab = props.match.params.activeTab || \"edit-charter\";\n    if (TABS[activeTabIndex] !== activeTab) {\n      setActiveTabIndex(TABS.indexOf(activeTab));\n    }\n  }, [props.match.params.activeTab]);\n\n  return (\n    <Query<ManageQueryData, ManageQueryVariables>\n      query={ManageQuery}\n      variables={{\n        id: props.channelData.id,\n      }}\n    >\n      {({ loading, data, error }) => {\n        if (loading) {\n          return <LoadingMessage>Loading your Newsroom</LoadingMessage>;\n        } else if (error) {\n          console.error(\"error querying channelsGetByID:\", error);\n          return (\n            <>\n              Error loading newsroom: <code>{error.message || JSON.stringify(error)}</code>\n            </>\n          );\n        } else if (!data || !data.channelsGetByID) {\n          console.error(\"error querying channelsGetByID: no data returned\");\n          return <>Error loading newsroom: no newsroom data returned</>;\n        } else if (!data.channelsGetByID.currentUserIsAdmin) {\n          return (\n            <NotAdminNotice>\n              <p>\n                Your account with ETH address <code>{civilContext.auth.currentUser.ethAddress}</code> doesn't have\n                permissions to manage the newsroom \"{data.channelsGetByID.newsroom.charter.name}\". You can view the\n                newsrooms you have access to on your <Link to=\"/dashboard/newsrooms\">Newsroom Dashboard</Link>. Please\n                verify that you are logged in to the correct Civil account and ethereum wallet.\n              </p>\n              <p>Alternately, please contact the newsroom and request that an officer add your account.</p>\n              <p>\n                <Link to={`/listing/${data.channelsGetByID.newsroom.contractAddress}`}>View newsroom information.</Link>\n              </p>\n            </NotAdminNotice>\n          );\n        }\n\n        const newsroom = data.channelsGetByID.newsroom;\n        const listingRoute = formatRoute(routes.LISTING, { listingAddress: props.newsroomAddress });\n        const charter = data.channelsGetByID.newsroom.charter;\n\n        return (\n          <Query query={LISTING_QUERY} variables={{ addr: props.newsroomAddress }} pollInterval={10000}>\n            {({ loading: listingLoading, error: listingError, data: listingData }: any) => {\n              if (listingLoading) {\n                return <LoadingMessage>Loading your Newsroom</LoadingMessage>;\n              }\n              if (listingError) {\n                console.error(\"error querying listing:\", listingError);\n                return (\n                  <>\n                    Error loading newsroom listing: <code>{listingError.message || JSON.stringify(listingError)}</code>\n                  </>\n                );\n              }\n\n              const listing = transformGraphQLDataIntoListing(listingData.tcrListing, props.newsroomAddress);\n              const listingPhaseState = getListingPhaseState(listing);\n\n              return (\n                <>\n                  <Helmet title=\"Newsroom Management - The Civil Registry\" />\n                  <ScrollToTopOnMount />\n                  <UserManagementPageLayout header={<ManageNewsoomTitleText newsroom={charter.name} />}>\n                    <Tabs\n                      TabsNavComponent={UserManagementTabNav}\n                      TabComponent={UserManagementTabs}\n                      activeIndex={activeTabIndex}\n                      onActiveTabChange={(tab: number) => {\n                        props.history.push(\n                          formatRoute(props.match.path, {\n                            newsroomAddress: props.newsroomAddress,\n                            activeTab: TABS[tab],\n                          }),\n                        );\n                      }}\n                      flex={true}\n                    >\n                      <Tab title={<EditCharterTabText />}>\n                        <UserManagementSection header={<EditCharterTitleText />}>\n                          <NewsroomManager\n                            newsroomAddress={newsroom.contractAddress}\n                            publishedCharter={charter}\n                            listingPhaseState={listingPhaseState}\n                          />\n                        </UserManagementSection>\n                      </Tab>\n                      <Tab title={<SmartContractTabText />}>\n                        <UserManagementSection header={<SmartContractTitleText />}>\n                          <ManageNewsroomSmartContractStyles>\n                            <ManageContractMembers charter={charter} newsroomAddress={props.newsroomAddress} />\n                          </ManageNewsroomSmartContractStyles>\n                        </UserManagementSection>\n                      </Tab>\n                      <Tab title={<LaunchBoostTabText />}>\n                        <UserManagementSection header={<LaunchBoostTitleText />}>\n                          <BoostForm\n                            channelID={data.channelsGetByID.id}\n                            newsroomData={{\n                              name: charter.name,\n                              url: charter && charter.newsroomUrl,\n                              owner: newsroom.multisigAddress,\n                            }}\n                            newsroomContractAddress={newsroom.contractAddress}\n                            newsroomAddress={newsroom.contractAddress}\n                            newsroomListingUrl={`${document.location.origin}${listingRoute}`}\n                            newsroomTagline={charter && charter.tagline}\n                            newsroomLogoUrl={charter && charter.logoUrl}\n                            removeHeader={true}\n                          />\n                        </UserManagementSection>\n                      </Tab>\n                    </Tabs>\n                  </UserManagementPageLayout>\n                </>\n              );\n            }}\n          </Query>\n        );\n      }}\n    </Query>\n  );\n};\n\nexport const ManageNewsroom = withRouter(withNewsroomChannel(ManageNewsroomComponent));\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ManageNewsroom/ManageNewsroomChannelPage.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { ManageNewsroom } from \"./ManageNewsroom\";\n\nconst ManageNewsroomChannelPage = (props: any) => {\n  const newsroomAddress = props.match.params.newsroomAddress;\n  return (\n    <div>\n      <ManageNewsroom newsroomAddress={newsroomAddress} />\n    </div>\n  );\n};\n\nexport default ManageNewsroomChannelPage;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ManageNewsroom/ManageNewsroomStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { OBSectionHeader, OBSectionDescription } from \"@joincivil/components\";\n\nexport const ManageNewsroomSmartContractStyles = styled.div`\n  ${OBSectionHeader} {\n    display: none;\n  }\n\n  ${OBSectionDescription} {\n    font-size: 16px;\n    line-height: 24px;\n    text-align: left;\n  }\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ManageNewsroom/ManageNewsroomTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { UserManagementTabText } from \"../UserManagement\";\n\ninterface ManageNewsoomTitleTextProps {\n  newsroom?: string;\n}\n\nexport const ManageNewsoomTitleText: React.FunctionComponent<ManageNewsoomTitleTextProps> = props => {\n  return <h1>{props.newsroom}</h1>;\n};\n\nexport const EditCharterTabText: React.FunctionComponent = props => {\n  return <UserManagementTabText>Edit Charter</UserManagementTabText>;\n};\n\nexport const EditCharterTitleText: React.FunctionComponent = props => {\n  return (\n    <>\n      <h2>Edit Charter</h2>\n    </>\n  );\n};\n\nexport const SmartContractTabText: React.FunctionComponent = props => {\n  return (\n    <UserManagementTabText>\n      Smart Contract\n      <span>Assign access to your Newsroom Smart Contract</span>\n    </UserManagementTabText>\n  );\n};\n\nexport const SmartContractTitleText: React.FunctionComponent = props => {\n  return (\n    <>\n      <h2>Smart Contract</h2>\n    </>\n  );\n};\n\nexport const LaunchBoostTabText: React.FunctionComponent = props => {\n  return (\n    <UserManagementTabText>\n      Launch Boost\n      <span>Create and launch your Project Boost</span>\n    </UserManagementTabText>\n  );\n};\n\nexport const LaunchBoostTitleText: React.FunctionComponent = props => {\n  return (\n    <>\n      <h2>Launch Boost</h2>\n      <p>\n        Create and launch your Project Boost. Project Boosts will be displayed on the Project Boost directory in\n        addition to your Registry listing.\n      </p>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ManageNewsroom/WithNewsroomChannelAdminList.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport { Set } from \"immutable\";\nimport { LoadingMessage } from \"@joincivil/components\";\nimport gql from \"graphql-tag\";\nimport { LISTING_FRAGMENT } from \"@joincivil/utils\";\n\nexport const newsroomChannelAdminQuery = gql`\n  query {\n    currentUser {\n      uid\n      channels {\n        role\n        channel {\n          id\n          channelType\n          newsroom {\n            contractAddress\n            name\n            charter {\n              logoUrl\n            }\n          }\n          listing {\n            ...ListingFragment\n          }\n        }\n      }\n    }\n  }\n  ${LISTING_FRAGMENT}\n`;\n\nexport interface WithNewsroomChannelAdminListProps {\n  channelType?: string;\n  children(props: { newsrooms: Set<any> }): any;\n}\n\nexport function newsroomChannelsFromQueryData(data?: any): any[] {\n  if (data && data.currentUser && data.currentUser.channels && data.currentUser.channels.filter) {\n    return data.currentUser.channels\n      .filter(\n        (memberChannel: any) => memberChannel.role === \"admin\" && memberChannel.channel.channelType === \"newsroom\",\n      )\n      .map((memberChannel: any) => memberChannel.channel);\n  } else {\n    return [];\n  }\n}\n\nexport default (props: WithNewsroomChannelAdminListProps) => {\n  return (\n    <Query query={newsroomChannelAdminQuery}>\n      {({ error, loading, data }) => {\n        if (loading) {\n          return <LoadingMessage />;\n        }\n        if (error) {\n          console.error(\"Error loading current user channels:\", error);\n        }\n\n        const newsrooms = newsroomChannelsFromQueryData(data);\n        return props.children({ newsrooms: Set(newsrooms) });\n      }}\n    </Query>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyChallengeItem/MyChallengesItem.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { EthContentHeader } from \"@joincivil/typescript-types\";\n\nimport { State } from \"../../../redux/reducers\";\nimport { getContent } from \"../../../redux/actionCreators/newsrooms\";\nimport { MyChallengesItemOwnProps, MyChallengesItemWrapperReduxProps } from \"./MyChallengesItemTypes\";\nimport MyChallengesItemWrapper from \"./MyChallengesItemWrapper\";\nimport { CivilHelperContext } from \"../../../apis/CivilHelper\";\n\nconst MyChallengesItem: React.FunctionComponent<\n  MyChallengesItemOwnProps & MyChallengesItemWrapperReduxProps & DispatchProp<any>\n> = props => {\n  const {\n    challenge,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    queryUserChallengeData,\n    queryUserAppealChallengeData,\n    userAcct,\n    content,\n    dispatch,\n  } = props;\n\n  const viewProps = {\n    challenge,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    userAcct,\n    content,\n  };\n\n  const helper = React.useContext(CivilHelperContext);\n\n  const getCharterContent = async (charterHeader: EthContentHeader) => {\n    dispatch!(await getContent(helper!, charterHeader));\n  };\n\n  return (\n    <MyChallengesItemWrapper\n      {...viewProps}\n      queryUserChallengeData={queryUserChallengeData}\n      queryUserAppealChallengeData={queryUserAppealChallengeData}\n      getCharterContent={getCharterContent}\n    />\n  );\n};\n\nconst mapStateToPropsMyChallengesItem = (\n  state: State,\n  ownProps: MyChallengesItemOwnProps,\n): MyChallengesItemOwnProps & MyChallengesItemWrapperReduxProps => {\n  const { content, user } = state.networkDependent;\n  const userAcct = user && user.account.account;\n  return { content, userAcct, ...ownProps };\n};\n\nexport default connect(mapStateToPropsMyChallengesItem)(MyChallengesItem);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyChallengeItem/MyChallengesItemComponent.tsx",
    "content": "import * as React from \"react\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { DashboardActivityItemTask } from \"@joincivil/components\";\n\nimport { routes } from \"../../../constants\";\nimport { MyChallengesItemOwnProps, MyChallengesItemReduxProps } from \"./MyChallengesItemTypes\";\nimport MyTasksItemPhaseCountdown from \"../MyTasksItemPhaseCountdown\";\nimport DashboardItemChallengeResults from \"../ChallengeSummary\";\n\nconst MyChallengesItemComponent: React.FunctionComponent<\n  MyChallengesItemOwnProps & MyChallengesItemReduxProps\n> = props => {\n  const { listingAddress: address, listing, newsroom, charter, challenge, userChallengeData, challengeState } = props;\n\n  if (!challengeState) {\n    return <></>;\n  }\n\n  let canUserCollect = false;\n  let canUserRescue = false;\n  if (userChallengeData) {\n    canUserCollect = userChallengeData.canUserCollect!;\n    canUserRescue = userChallengeData.canUserRescue!;\n  }\n  const { inCommitPhase, inRevealPhase } = challengeState;\n\n  if (listing && listing.data && newsroom) {\n    const newsroomData = newsroom.wrapper.data;\n    const listingDetailURL = formatRoute(routes.LISTING, { listingAddress: address });\n    let viewDetailURL = listingDetailURL;\n    const title = `${newsroomData.name} Challenge #${challenge.challengeID}`;\n    const logoUrl = charter && charter.logoUrl;\n\n    if (canUserCollect || canUserRescue) {\n      viewDetailURL = formatRoute(routes.CHALLENGE, { listingAddress: address, challengeID: challenge.challengeID });\n    }\n\n    const viewProps = {\n      title,\n      logoUrl,\n      viewDetailURL,\n    };\n\n    return (\n      <DashboardActivityItemTask {...viewProps}>\n        <MyTasksItemPhaseCountdown {...props} />\n        {!inCommitPhase && !inRevealPhase && (\n          <DashboardItemChallengeResults listingDetailURL={listingDetailURL} viewDetailURL={viewDetailURL} {...props} />\n        )}\n      </DashboardActivityItemTask>\n    );\n  }\n\n  return <></>;\n};\n\nexport default MyChallengesItemComponent;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyChallengeItem/MyChallengesItemTypes.ts",
    "content": "import {\n  ContentData,\n  ListingWrapper,\n  WrappedChallengeData,\n  AppealData,\n  AppealChallengeData,\n  UserChallengeData,\n  CharterData,\n  EthAddress,\n  EthContentHeader,\n} from \"@joincivil/typescript-types\";\nimport { NewsroomState } from \"@joincivil/newsroom-signup\";\n\nexport interface MyChallengesItemOwnProps {\n  challenge?: any;\n  queryUserChallengeData?: any;\n  queryUserAppealChallengeData?: any;\n  showClaimRewardsTab?(): void;\n  showRescueTokensTab?(): void;\n}\n\nexport interface MyChallengesItemWrapperReduxProps {\n  userAcct: EthAddress;\n  content: Map<string, ContentData>;\n  getCharterContent(charterHeader: EthContentHeader): Promise<void>;\n}\n\nexport interface MyChallengesItemReduxProps {\n  challenge?: WrappedChallengeData;\n  challengeState?: any;\n  userChallengeData?: UserChallengeData;\n  appeal?: AppealData;\n  appealChallengeID?: string;\n  appealChallenge?: AppealChallengeData;\n  appealChallengeState?: any;\n  appealUserChallengeData?: UserChallengeData;\n  user?: EthAddress;\n  newsroom?: NewsroomState;\n  charter?: CharterData;\n  listingAddress?: string;\n  listing?: ListingWrapper;\n  listingDataRequestStatus?: any;\n}\n\nexport interface ViewDetailURLProps {\n  listingDetailURL: string;\n  viewDetailURL: string;\n}\n\nexport type MyChallengesItemSubComponentProps = MyChallengesItemOwnProps &\n  ViewDetailURLProps &\n  MyChallengesItemReduxProps;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyChallengeItem/MyChallengesItemWrapper.tsx",
    "content": "import * as React from \"react\";\nimport { BigNumber, CharterData, WrappedChallengeData } from \"@joincivil/typescript-types\";\n\nimport {\n  transformGraphQLDataIntoListing,\n  transformGraphQLDataIntoNewsroom,\n  transformGraphQLDataIntoChallenge,\n  transfromGraphQLDataIntoUserChallengeData,\n} from \"@joincivil/utils\";\nimport { getChallengeState, getAppealChallengeState } from \"../../../selectors\";\n\nimport MyChallengesItemComponent from \"./MyChallengesItemComponent\";\nimport { MyChallengesItemOwnProps, MyChallengesItemWrapperReduxProps } from \"./MyChallengesItemTypes\";\nimport MyTasksProposalItemComponent from \"../MyTasksProposalItem/MyTasksProposalItemComponent\";\n\nconst MyChallengesItemWrapper: React.FunctionComponent<\n  MyChallengesItemOwnProps & MyChallengesItemWrapperReduxProps\n> = props => {\n  const {\n    queryUserChallengeData,\n    queryUserAppealChallengeData,\n    content,\n    getCharterContent,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n  } = props;\n\n  let challenge = props.challenge;\n  let challengeType;\n  if (!challenge) {\n    if (!queryUserChallengeData) {\n      console.error(\"MyChallengesItemWrapper: no data found\");\n      return <></>;\n    }\n    challenge = queryUserChallengeData.challenge;\n    if (!challenge) {\n      console.error(\"MyChallengesItemWrapper: no challenge data found on queryUserChallengedata\");\n      return <></>;\n    }\n    challengeType = challenge.pollType;\n  } else {\n    challengeType = challenge.challengeType;\n  }\n\n  console.log(\"challengeType: \", challengeType);\n  if (challengeType !== \"CHALLENGE\" && challengeType !== \"PARAMETER_PROPOSAL_CHALLENGE\") {\n    console.error(\n      \"MyChallengesItemWrapper: challengeType not supported. challengeType: \" +\n        challengeType +\n        \" - challengeID: \" +\n        challenge.challengeID,\n    );\n    return <></>;\n  }\n\n  const challengeData = transformGraphQLDataIntoChallenge(challenge);\n\n  const userChallengeData = queryUserChallengeData\n    ? transfromGraphQLDataIntoUserChallengeData(queryUserChallengeData, challenge)\n    : undefined;\n\n  if (challengeData) {\n    const listingAddress = challenge!.listingAddress;\n    let newsroom;\n    let charter;\n    let listing;\n    let appealUserChallengeData;\n    if (listingAddress && challenge.listing) {\n      listing = transformGraphQLDataIntoListing(challenge.listing, listingAddress);\n      if (listing) {\n        newsroom = {\n          wrapper: transformGraphQLDataIntoNewsroom(challenge.listing, listingAddress),\n          address: listingAddress,\n        };\n        if (queryUserAppealChallengeData) {\n          appealUserChallengeData = transfromGraphQLDataIntoUserChallengeData(\n            queryUserAppealChallengeData,\n            challenge.appeal.appealChallenge,\n          );\n        }\n\n        if (newsroom.wrapper && newsroom.wrapper.data.charterHeader) {\n          charter = content.get(newsroom.wrapper.data.charterHeader.uri) as CharterData;\n          if (!charter) {\n            void getCharterContent(newsroom.wrapper.data.charterHeader);\n          }\n        }\n      }\n    }\n\n    const wrappedChallenge = {\n      listingAddress,\n      challengeID: new BigNumber(challenge.challengeID!),\n      challenge: challengeData,\n    };\n\n    let appeal;\n    let appealChallenge;\n    let appealChallengeState;\n    let appealChallengeID;\n\n    if (challengeData) {\n      appeal = challengeData.appeal;\n\n      if (appeal) {\n        appealChallenge = appeal.appealChallenge;\n        if (appealChallenge) {\n          appealChallengeID = appeal.appealChallengeID.toString();\n          appealChallengeState = getAppealChallengeState(appealChallenge);\n        }\n      }\n    }\n\n    const challengeState = getChallengeState(wrappedChallenge as WrappedChallengeData);\n    if (listing) {\n      const viewProps = {\n        challengeID: challenge.challengeID,\n        listingAddress,\n        listing,\n        newsroom,\n        charter,\n        challenge: wrappedChallenge,\n        challengeState,\n        userChallengeData,\n        appeal,\n        appealChallengeID,\n        appealChallenge,\n        appealChallengeState,\n        appealUserChallengeData,\n        showClaimRewardsTab,\n        showRescueTokensTab,\n      };\n\n      return <MyChallengesItemComponent {...viewProps} />;\n    } else {\n      const viewProps = {\n        challengeID: challenge.challengeID,\n        challenge: challengeData,\n        userChallengeData,\n        showClaimRewardsTab,\n        showRescueTokensTab,\n      };\n      return <MyTasksProposalItemComponent {...viewProps} />;\n    }\n  }\n  console.error(\"uknown error.\");\n  return <></>;\n};\n\nexport default MyChallengesItemWrapper;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyChallengeItem/index.ts",
    "content": "export { default } from \"./MyTasksItem\";\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyChallenges.tsx",
    "content": "import * as React from \"react\";\nimport { Map, Set } from \"immutable\";\nimport {\n  Tabs,\n  Tab,\n  ChallengesStakedDashboardTabTitle,\n  ChallengesCompletedDashboardTabTitle,\n  StyledDashboardSubTab,\n  StyledDashboardActivityDescription,\n} from \"@joincivil/components\";\nimport { StyledTabsComponent } from \"./DashboardActivity\";\nimport MyTasksList from \"./MyTasksList\";\n\nexport interface MyChallengesProps {\n  allCompletedChallengesVotedOn: Set<string>;\n  allProposalChallengesVotedOn?: Set<string>;\n  currentUserChallengesStarted: Set<any>;\n  userChallengeData?: Map<string, any>;\n  challengeToAppealChallengeMap?: Map<string, string>;\n  activeSubTabIndex: number;\n  setActiveSubTabIndex(activeSubIndex: number): void;\n  showClaimRewardsTab(): void;\n  showRescueTokensTab(): void;\n  showNoMobileTransactionsModal(): void;\n}\n\nconst MyChallenges: React.FunctionComponent<MyChallengesProps> = props => {\n  const {\n    allCompletedChallengesVotedOn,\n    allProposalChallengesVotedOn,\n    currentUserChallengesStarted,\n    userChallengeData,\n    challengeToAppealChallengeMap,\n    activeSubTabIndex,\n    setActiveSubTabIndex,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n  } = props;\n\n  const completedChallengesTitle = (\n    <ChallengesCompletedDashboardTabTitle count={allCompletedChallengesVotedOn.count()} />\n  );\n  const stakedChallengesTitle = <ChallengesStakedDashboardTabTitle count={currentUserChallengesStarted.count()} />;\n\n  return (\n    <>\n      <Tabs\n        TabComponent={StyledDashboardSubTab}\n        TabsNavComponent={StyledTabsComponent}\n        activeIndex={activeSubTabIndex}\n        onActiveTabChange={setActiveSubTabIndex}\n      >\n        <Tab title={completedChallengesTitle}>\n          <>\n            <StyledDashboardActivityDescription>\n              Summary of completed challenges you voted in\n            </StyledDashboardActivityDescription>\n            <MyTasksList\n              challenges={allCompletedChallengesVotedOn}\n              proposalChallenges={allProposalChallengesVotedOn}\n              userChallengeData={userChallengeData}\n              challengeToAppealChallengeMap={challengeToAppealChallengeMap}\n              showClaimRewardsTab={showClaimRewardsTab}\n              showRescueTokensTab={showRescueTokensTab}\n            />\n          </>\n        </Tab>\n        <Tab title={stakedChallengesTitle}>\n          <>\n            <StyledDashboardActivityDescription>Challenges you created</StyledDashboardActivityDescription>\n            <MyTasksList\n              userChallengeData={userChallengeData}\n              fullChallenges={currentUserChallengesStarted}\n              showClaimRewardsTab={showClaimRewardsTab}\n              showRescueTokensTab={showRescueTokensTab}\n            />\n          </>\n        </Tab>\n      </Tabs>\n    </>\n  );\n};\n\nexport default MyChallenges;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasks.tsx",
    "content": "import * as React from \"react\";\nimport { Map, Set } from \"immutable\";\nimport { colors, DropdownArrow, buttonSizes, NewPrimaryButton } from \"@joincivil/elements\";\nimport MyTasksList from \"./MyTasksList\";\nimport styled from \"styled-components\";\n\nimport {\n  Dropdown,\n  DropdownGroup,\n  DropdownItem,\n  InputBase,\n  InputIcon,\n  NoTasks,\n  NoVotesToReveal,\n} from \"@joincivil/components\";\n\nimport ChallengesWithRewardsToClaim from \"./ChallengesWithRewardsToClaim\";\nimport ChallengesWithTokensToRescue from \"./ChallengesWithTokensToRescue\";\nimport TransferCivilTokens from \"./TransferCivilTokens\";\n\nexport interface MyTasksProps {\n  allChallengesWithAvailableActions: Set<string>;\n  allCompletedChallengesVotedOn: Set<string>;\n  currentUserChallengesStarted: Set<string>;\n  allChallengesWithUnrevealedVotes: Set<string>;\n  userChallengesWithUnclaimedRewards?: Set<string>;\n  userChallengesWithRescueTokens?: Set<string>;\n  userAppealChallengesWithUnclaimedRewards?: Set<string>;\n  userAppealChallengesWithRescueTokens?: Set<string>;\n  proposalChallengesWithAvailableActions?: Set<string>;\n  proposalChallengesWithUnrevealedVotes?: Set<string>;\n  proposalChallengesWithUnclaimedRewards?: Set<string>;\n  proposalChallengesWithRescueTokens?: Set<string>;\n  userChallengeData?: Map<string, any>;\n  challengeToAppealChallengeMap?: Map<string, string>;\n  activeSubTabIndex: number;\n  setActiveSubTabIndex(activeSubIndex: number): void;\n  showClaimRewardsTab(): void;\n  showRescueTokensTab(): void;\n  showNoMobileTransactionsModal(): void;\n  refetchUserChallengeData?(): void;\n}\n\nconst StyledTasksFormGroup = styled.div`\n  flex-grow: 3;\n  margin-left: 16px;\n  height: 40px;\n  ${Dropdown} {\n    border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n    border-radius: 3px;\n    font-size: 15px;\n\n    & > div:nth-child(2) > div {\n      border-top: none;\n      box-shadow: none;\n      left: -1px;\n      top: -1px;\n      width: calc(100% + 2px);\n      max-width: unset;\n\n      :before,\n      :after {\n        display: none;\n      }\n    }\n\n    ${DropdownGroup} {\n      li {\n        border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n        display: flex;\n        justify-content: space-between;\n      }\n    }\n\n    ${DropdownItem} {\n      padding: 0;\n\n      button {\n        background-color: transparent;\n        border: none;\n        cursor: pointer;\n        padding: 17px 50px 17px 15px;\n        width: 100%;\n      }\n    }\n  }\n\n  ${InputBase} {\n    margin-bottom: 3px;\n    position: relative;\n\n    > input,\n    > textarea {\n      border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n      border-radius: 3px;\n      padding: 15px;\n    }\n\n    > input:focus,\n    > textarea:focus {\n      border: 1px solid ${colors.accent.CIVIL_BLUE};\n    }\n  }\n\n  label {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 14px;\n  }\n\n  ${InputIcon} {\n    background-color: ${colors.basic.WHITE};\n    left: calc(100% - 50px);\n    position: absolute;\n    top: 22px;\n    z-index: 2;\n  }\n`;\n\nconst StyledTasksDropdown = styled.div`\n  height: 40px;\n  position: relative;\n  padding-left: 12px;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n`;\n\nconst StyledDropdownArrow = styled.div`\n  align-items: center;\n  border-left: 1px solid ${colors.accent.CIVIL_GRAY_3}\n  display: flex;\n  justify-content: center;\n  padding-right: 12px;\n  position: absolute;\n  right: 0;\n`;\n\nconst SelectionContainer = styled.div`\n  height: 70px;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n`;\n\nconst TokenTransferButton = styled(NewPrimaryButton)`\n  margin-right: 16px;\n  margin-left: 12px;\n  height: 40px;\n`;\n\nconst Spacer = styled.div`\n  flex-grow: 3;\n  margin-left: 16px;\n  height: 40px;\n`;\n\ninterface TasksDropdownSelectedProps {\n  label: string | JSX.Element;\n}\n\nconst TasksDropdownSelected: React.FunctionComponent<TasksDropdownSelectedProps> = props => {\n  return (\n    <StyledTasksDropdown>\n      {props.label}\n      <StyledDropdownArrow>\n        <DropdownArrow />\n      </StyledDropdownArrow>\n    </StyledTasksDropdown>\n  );\n};\n\nconst MyTasks: React.FunctionComponent<MyTasksProps> = props => {\n  const {\n    allChallengesWithAvailableActions,\n    allChallengesWithUnrevealedVotes,\n    userChallengesWithUnclaimedRewards,\n    userChallengesWithRescueTokens,\n    userAppealChallengesWithRescueTokens,\n    userAppealChallengesWithUnclaimedRewards,\n    proposalChallengesWithAvailableActions,\n    proposalChallengesWithUnrevealedVotes,\n    proposalChallengesWithUnclaimedRewards,\n    proposalChallengesWithRescueTokens,\n    activeSubTabIndex,\n    setActiveSubTabIndex,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    showNoMobileTransactionsModal,\n    userChallengeData,\n    challengeToAppealChallengeMap,\n    refetchUserChallengeData,\n  } = props;\n\n  const allVotesCount1 = allChallengesWithAvailableActions ? allChallengesWithAvailableActions.count() : 0;\n  const allVotesCount2 = proposalChallengesWithAvailableActions ? proposalChallengesWithAvailableActions.count() : 0;\n\n  const revealVotesCount1 = allChallengesWithUnrevealedVotes ? allChallengesWithUnrevealedVotes.count() : 0;\n  const revealVotesCount2 = proposalChallengesWithUnrevealedVotes ? proposalChallengesWithUnrevealedVotes.count() : 0;\n\n  const claimRewardsCount1 = userChallengesWithUnclaimedRewards ? userChallengesWithUnclaimedRewards.count() : 0;\n  const claimRewardsCount2 = userAppealChallengesWithUnclaimedRewards\n    ? userAppealChallengesWithUnclaimedRewards.count()\n    : 0;\n  const claimRewardsCount3 = proposalChallengesWithUnclaimedRewards\n    ? proposalChallengesWithUnclaimedRewards.count()\n    : 0;\n\n  const rescueTokensCount1 = userChallengesWithRescueTokens ? userChallengesWithRescueTokens.count() : 0;\n  const rescueTokensCount2 = userAppealChallengesWithRescueTokens ? userAppealChallengesWithRescueTokens.count() : 0;\n  const rescueTokensCount3 = proposalChallengesWithRescueTokens ? proposalChallengesWithRescueTokens.count() : 0;\n\n  const allVotesTabTitle = \"All (\" + (allVotesCount1 + allVotesCount2) + \")\";\n  const revealVoteTabTitle = \"Reveal Votes (\" + (revealVotesCount1 + revealVotesCount2) + \")\";\n  const claimRewardsTabTitle = \"Claim Rewards (\" + (claimRewardsCount1 + claimRewardsCount2 + claimRewardsCount3) + \")\";\n  const rescueTokensTabTitle =\n    \"Reclaim Tokens (\" + (rescueTokensCount1 + rescueTokensCount2 + rescueTokensCount3) + \")\";\n\n  const titles = [allVotesTabTitle, revealVoteTabTitle, claimRewardsTabTitle, rescueTokensTabTitle];\n\n  const ActiveDisplay = () => {\n    switch (props.activeSubTabIndex) {\n      case 0:\n        return (\n          <MyTasksList\n            challenges={allChallengesWithAvailableActions}\n            proposalChallenges={proposalChallengesWithAvailableActions}\n            userChallengeData={userChallengeData}\n            challengeToAppealChallengeMap={challengeToAppealChallengeMap}\n            refetchUserChallengeData={refetchUserChallengeData}\n            showClaimRewardsTab={showClaimRewardsTab}\n            showRescueTokensTab={showRescueTokensTab}\n            noTasksComponent={<NoTasks />}\n          />\n        );\n      case 1:\n        return (\n          <MyTasksList\n            challenges={allChallengesWithUnrevealedVotes}\n            proposalChallenges={proposalChallengesWithUnrevealedVotes}\n            userChallengeData={userChallengeData}\n            challengeToAppealChallengeMap={challengeToAppealChallengeMap}\n            refetchUserChallengeData={refetchUserChallengeData}\n            showClaimRewardsTab={showClaimRewardsTab}\n            showRescueTokensTab={showRescueTokensTab}\n            noTasksComponent={<NoVotesToReveal />}\n          />\n        );\n      case 2:\n        return (\n          <ChallengesWithRewardsToClaim\n            challenges={userChallengesWithUnclaimedRewards}\n            appealChallenges={userAppealChallengesWithUnclaimedRewards}\n            proposalChallenges={proposalChallengesWithUnclaimedRewards}\n            userChallengeData={userChallengeData}\n            refetchUserChallengeData={refetchUserChallengeData}\n            onMobileTransactionClick={showNoMobileTransactionsModal}\n          />\n        );\n      case 3:\n        return (\n          <ChallengesWithTokensToRescue\n            challenges={userChallengesWithRescueTokens}\n            appealChallenges={userAppealChallengesWithRescueTokens}\n            proposalChallenges={proposalChallengesWithRescueTokens}\n            userChallengeData={userChallengeData}\n            refetchUserChallengeData={refetchUserChallengeData}\n            onMobileTransactionClick={showNoMobileTransactionsModal}\n          />\n        );\n      case 4:\n        return <TransferCivilTokens showNoMobileTransactionsModal={showNoMobileTransactionsModal} />;\n      default:\n        return <></>;\n    }\n  };\n\n  return (\n    <>\n      <SelectionContainer>\n        {activeSubTabIndex !== 4 && (\n          <StyledTasksFormGroup>\n            <Dropdown position=\"left\" target={<TasksDropdownSelected label={titles[activeSubTabIndex]} />}>\n              <DropdownGroup>\n                <DropdownItem>\n                  <button onClick={() => setActiveSubTabIndex(0)}>{titles[0]}</button>\n                </DropdownItem>\n                <DropdownItem>\n                  <button onClick={() => setActiveSubTabIndex(1)}>{titles[1]}</button>\n                </DropdownItem>\n                <DropdownItem>\n                  <button onClick={() => setActiveSubTabIndex(2)}>{titles[2]}</button>\n                </DropdownItem>\n                <DropdownItem>\n                  <button onClick={() => setActiveSubTabIndex(3)}>{titles[3]}</button>\n                </DropdownItem>\n              </DropdownGroup>\n            </Dropdown>\n          </StyledTasksFormGroup>\n        )}\n        {activeSubTabIndex === 4 && <Spacer />}\n        <TokenTransferButton\n          size={buttonSizes.NEW_MEDIUM}\n          onClick={() => {\n            if (activeSubTabIndex === 4) {\n              setActiveSubTabIndex(0);\n            } else {\n              setActiveSubTabIndex(4);\n            }\n          }}\n        >\n          {activeSubTabIndex === 4 && \"Back to All tasks\"}\n          {activeSubTabIndex !== 4 && \"Transfer Tokens\"}\n        </TokenTransferButton>\n      </SelectionContainer>\n      <ActiveDisplay />\n    </>\n  );\n};\n\nexport default MyTasks;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksItem/MyTasksItem.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { EthContentHeader } from \"@joincivil/typescript-types\";\n\nimport { State } from \"../../../redux/reducers\";\nimport { getContent } from \"../../../redux/actionCreators/newsrooms\";\nimport { MyTasksItemOwnProps, MyTasksItemWrapperReduxProps } from \"./MyTasksItemTypes\";\nimport MyTasksItemWrapper from \"./MyTasksItemWrapper\";\nimport { CivilHelperContext } from \"../../../apis/CivilHelper\";\n\nconst MyTasksItem: React.FunctionComponent<\n  MyTasksItemOwnProps & MyTasksItemWrapperReduxProps & DispatchProp<any>\n> = props => {\n  const {\n    challengeID,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    queryUserChallengeData,\n    queryUserAppealChallengeData,\n    userAcct,\n    content,\n    dispatch,\n  } = props;\n\n  const viewProps = {\n    challengeID,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    userAcct,\n    content,\n  };\n\n  const helper = React.useContext(CivilHelperContext);\n\n  const getCharterContent = async (charterHeader: EthContentHeader) => {\n    dispatch!(await getContent(helper!, charterHeader));\n  };\n\n  return (\n    <MyTasksItemWrapper\n      {...viewProps}\n      queryUserChallengeData={queryUserChallengeData}\n      queryUserAppealChallengeData={queryUserAppealChallengeData}\n      getCharterContent={getCharterContent}\n    />\n  );\n};\n\nconst mapStateToPropsMyTasksItem = (\n  state: State,\n  ownProps: MyTasksItemOwnProps,\n): MyTasksItemOwnProps & MyTasksItemWrapperReduxProps => {\n  const { content, user } = state.networkDependent;\n  const userAcct = user && user.account.account;\n  return { content, userAcct, ...ownProps };\n};\n\nexport default connect(mapStateToPropsMyTasksItem)(MyTasksItem);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksItem/MyTasksItemComponent.tsx",
    "content": "import * as React from \"react\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { DashboardActivityItemTask } from \"@joincivil/components\";\n\nimport { routes } from \"../../../constants\";\nimport { MyTasksItemOwnProps, MyTasksItemReduxProps } from \"./MyTasksItemTypes\";\nimport MyTasksItemPhaseCountdown from \"../MyTasksItemPhaseCountdown\";\nimport DashboardItemChallengeResults from \"../ChallengeSummary\";\n\nconst MyTasksItemComponent: React.FunctionComponent<MyTasksItemOwnProps & MyTasksItemReduxProps> = props => {\n  const { listingAddress: address, listing, newsroom, charter, challengeID, userChallengeData, challengeState } = props;\n\n  if (!challengeState) {\n    return <></>;\n  }\n\n  let canUserCollect = false;\n  let canUserRescue = false;\n  let didUserCommit = false;\n  if (userChallengeData) {\n    canUserCollect = userChallengeData.canUserCollect!;\n    canUserRescue = userChallengeData.canUserRescue!;\n    didUserCommit = userChallengeData.didUserCommit!;\n  }\n  const { inCommitPhase, inRevealPhase } = challengeState;\n\n  if (listing && listing.data && newsroom) {\n    const newsroomData = newsroom.wrapper.data;\n    const listingDetailURL = formatRoute(routes.LISTING, { listingAddress: address });\n    let viewDetailURL = listingDetailURL;\n    const title = `${newsroomData.name} Challenge #${challengeID}`;\n    const logoUrl = charter && charter.logoUrl;\n\n    if (canUserCollect || canUserRescue) {\n      viewDetailURL = formatRoute(routes.CHALLENGE, { listingAddress: address, challengeID });\n    }\n\n    const viewProps = {\n      title,\n      logoUrl,\n      viewDetailURL,\n    };\n\n    if (canUserCollect || canUserRescue || didUserCommit) {\n      return (\n        <DashboardActivityItemTask {...viewProps}>\n          <MyTasksItemPhaseCountdown {...props} />\n          {!inCommitPhase && !inRevealPhase && (\n            <DashboardItemChallengeResults\n              listingDetailURL={listingDetailURL}\n              viewDetailURL={viewDetailURL}\n              {...props}\n            />\n          )}\n        </DashboardActivityItemTask>\n      );\n    }\n  }\n\n  return <></>;\n};\n\nexport default MyTasksItemComponent;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksItem/MyTasksItemTypes.ts",
    "content": "import {\n  ContentData,\n  ListingWrapper,\n  WrappedChallengeData,\n  AppealData,\n  AppealChallengeData,\n  UserChallengeData,\n  CharterData,\n  EthAddress,\n  EthContentHeader,\n} from \"@joincivil/typescript-types\";\nimport { NewsroomState } from \"@joincivil/newsroom-signup\";\n\nexport interface MyTasksItemOwnProps {\n  challengeID?: string;\n  queryUserChallengeData?: any;\n  queryUserAppealChallengeData?: any;\n  showClaimRewardsTab?(): void;\n  showRescueTokensTab?(): void;\n}\n\nexport interface MyTasksItemWrapperReduxProps {\n  userAcct: EthAddress;\n  content: Map<string, ContentData>;\n  getCharterContent(charterHeader: EthContentHeader): Promise<void>;\n}\n\nexport interface MyTasksItemReduxProps {\n  challenge?: WrappedChallengeData;\n  challengeState?: any;\n  userChallengeData?: UserChallengeData;\n  appeal?: AppealData;\n  appealChallengeID?: string;\n  appealChallenge?: AppealChallengeData;\n  appealChallengeState?: any;\n  appealUserChallengeData?: UserChallengeData;\n  user?: EthAddress;\n  newsroom?: NewsroomState;\n  charter?: CharterData;\n  listingAddress?: string;\n  listing?: ListingWrapper;\n  listingDataRequestStatus?: any;\n}\n\nexport interface ViewDetailURLProps {\n  listingDetailURL: string;\n  viewDetailURL: string;\n}\n\nexport type MyTasksItemSubComponentProps = MyTasksItemOwnProps & ViewDetailURLProps & MyTasksItemReduxProps;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksItem/MyTasksItemWrapper.tsx",
    "content": "import * as React from \"react\";\nimport { BigNumber, CharterData, WrappedChallengeData } from \"@joincivil/typescript-types\";\n\nimport {\n  transformGraphQLDataIntoListing,\n  transformGraphQLDataIntoNewsroom,\n  transformGraphQLDataIntoChallenge,\n  transfromGraphQLDataIntoUserChallengeData,\n} from \"@joincivil/utils\";\nimport { getChallengeState, getAppealChallengeState } from \"../../../selectors\";\n\nimport MyTasksItemComponent from \"./MyTasksItemComponent\";\nimport { MyTasksItemOwnProps, MyTasksItemWrapperReduxProps } from \"./MyTasksItemTypes\";\n\nconst MyTasksItemWrapper: React.FunctionComponent<MyTasksItemOwnProps & MyTasksItemWrapperReduxProps> = props => {\n  const {\n    challengeID,\n    queryUserChallengeData,\n    queryUserAppealChallengeData,\n    content,\n    getCharterContent,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n  } = props;\n\n  if (!queryUserChallengeData) {\n    console.error(\"MyTasksItemWrapper: no queryUserChallengeData found\");\n    return <></>;\n  }\n  const { pollType, challenge } = queryUserChallengeData;\n  if (!pollType) {\n    console.error(\"MyTasksItemWrapper: no pollType found\");\n    return <></>;\n  }\n\n  if (pollType === \"CHALLENGE\") {\n    if (challenge) {\n      const challengeData = transformGraphQLDataIntoChallenge(challenge);\n      const userChallengeData = transfromGraphQLDataIntoUserChallengeData(queryUserChallengeData, challenge);\n      if (challengeData) {\n        const listingAddress = challenge!.listingAddress;\n        if (listingAddress && challenge.listing) {\n          const listing = transformGraphQLDataIntoListing(challenge.listing, listingAddress);\n          if (listing) {\n            const newsroom = {\n              wrapper: transformGraphQLDataIntoNewsroom(challenge.listing, listingAddress),\n              address: listingAddress,\n            };\n            let appealUserChallengeData;\n            if (queryUserAppealChallengeData) {\n              appealUserChallengeData = transfromGraphQLDataIntoUserChallengeData(\n                queryUserAppealChallengeData,\n                challenge.appeal.appealChallenge,\n              );\n            }\n\n            let charter;\n            if (newsroom.wrapper && newsroom.wrapper.data.charterHeader) {\n              charter = content.get(newsroom.wrapper.data.charterHeader.uri) as CharterData;\n              if (!charter) {\n                void getCharterContent(newsroom.wrapper.data.charterHeader);\n              }\n            }\n\n            const wrappedChallenge = {\n              listingAddress,\n              challengeID: new BigNumber(props.challengeID!),\n              challenge: challengeData,\n            };\n\n            let appeal;\n            let appealChallenge;\n            let appealChallengeState;\n            let appealChallengeID;\n\n            if (challengeData) {\n              appeal = challengeData.appeal;\n\n              if (appeal) {\n                appealChallenge = appeal.appealChallenge;\n                if (appealChallenge) {\n                  appealChallengeID = appeal.appealChallengeID.toString();\n                  appealChallengeState = getAppealChallengeState(appealChallenge);\n                }\n              }\n            }\n\n            const challengeState = getChallengeState(wrappedChallenge as WrappedChallengeData);\n            const viewProps = {\n              challengeID,\n              listingAddress,\n              listing,\n              newsroom,\n              charter,\n              challenge: wrappedChallenge,\n              challengeState,\n              userChallengeData,\n              appeal,\n              appealChallengeID,\n              appealChallenge,\n              appealChallengeState,\n              appealUserChallengeData,\n              showClaimRewardsTab,\n              showRescueTokensTab,\n            };\n\n            return <MyTasksItemComponent {...viewProps} />;\n          }\n        } else {\n          console.log(\"no listing for challenge: \", challenge);\n        }\n      }\n    }\n  }\n  console.error(\"MyTasksItemWrapper: pollType !== CHALLENGE\");\n  return <></>;\n};\n\nexport default MyTasksItemWrapper;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksItem/index.ts",
    "content": "export { default } from \"./MyTasksItem\";\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksItemPhaseCountdown.tsx",
    "content": "import * as React from \"react\";\nimport { WrappedChallengeData } from \"@joincivil/typescript-types\";\nimport { PHASE_TYPE_NAMES } from \"@joincivil/components\";\n\nimport { PhaseCountdownTimer } from \"./PhaseCountdownTimer\";\n\nexport interface TaskItemPhaseCountdownProps {\n  challenge?: WrappedChallengeData;\n  challengeState?: any;\n}\n\nconst TaskItemPhaseCountdown: React.FunctionComponent<TaskItemPhaseCountdownProps> = props => {\n  const { challenge, challengeState } = props;\n\n  let phaseCountdown = <></>;\n\n  if (challengeState) {\n    const {\n      inCommitPhase,\n      inRevealPhase,\n      canRequestAppeal,\n      isAwaitingAppealJudgement,\n      isAwaitingAppealChallenge,\n      isAppealChallengeInCommitStage,\n      isAppealChallengeInRevealStage,\n    } = challengeState;\n\n    let phaseCountdownType;\n\n    if (inCommitPhase) {\n      phaseCountdownType = PHASE_TYPE_NAMES.CHALLENGE_COMMIT_VOTE;\n    } else if (inRevealPhase) {\n      phaseCountdownType = PHASE_TYPE_NAMES.CHALLENGE_REVEAL_VOTE;\n    } else if (canRequestAppeal) {\n      phaseCountdownType = PHASE_TYPE_NAMES.CHALLENGE_AWAITING_APPEAL_REQUEST;\n    } else if (isAwaitingAppealJudgement) {\n      phaseCountdownType = PHASE_TYPE_NAMES.CHALLENGE_AWAITING_APPEAL_JUDGEMENT;\n    } else if (isAwaitingAppealChallenge) {\n      phaseCountdownType = PHASE_TYPE_NAMES.CHALLENGE_AWAITING_APPEAL_CHALLENGE;\n    } else if (isAppealChallengeInCommitStage) {\n      phaseCountdownType = PHASE_TYPE_NAMES.APPEAL_CHALLENGE_COMMIT_VOTE;\n    } else if (isAppealChallengeInRevealStage) {\n      phaseCountdownType = PHASE_TYPE_NAMES.APPEAL_CHALLENGE_REVEAL_VOTE;\n    }\n\n    if (phaseCountdownType) {\n      phaseCountdown = <PhaseCountdownTimer phaseType={phaseCountdownType} challenge={challenge} />;\n    }\n  }\n\n  return phaseCountdown;\n};\n\nexport default TaskItemPhaseCountdown;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksList.tsx",
    "content": "import * as React from \"react\";\nimport { Map, Set } from \"immutable\";\nimport MyTasksItem from \"./MyTasksItem\";\nimport MyTasksProposalItem from \"./MyTasksProposalItem\";\nimport MyChallengesItem from \"./MyChallengeItem/MyChallengesItem\";\n\nexport interface MyTasksListOwnProps {\n  challenges?: Set<string>;\n  fullChallenges?: Set<any>;\n  proposalChallenges?: Set<string>;\n  userChallengeData?: Map<string, any>;\n  challengeToAppealChallengeMap?: Map<string, string>;\n  noTasksComponent: JSX.Element;\n  refetchUserChallengeData?(): void;\n  showClaimRewardsTab(): void;\n  showRescueTokensTab(): void;\n}\n\nconst MyTasksList: React.FunctionComponent<MyTasksListOwnProps> = props => {\n  const { userChallengeData: allUserChallengeData, challengeToAppealChallengeMap, refetchUserChallengeData } = props;\n  const hasNoChallenges = !props.fullChallenges || props.fullChallenges.count() === 0;\n  const hasNoProposalChallenges = !props.proposalChallenges || props.proposalChallenges.count() === 0;\n  const displayNoTasks = hasNoChallenges && hasNoProposalChallenges;\n  return (\n    <>\n      {displayNoTasks && props.noTasksComponent}\n      {!displayNoTasks && (\n        <>\n          {props.fullChallenges &&\n            props.fullChallenges\n              .sort((a, b) => parseInt(a.challengeID, 10) - parseInt(b.challengeID, 10))\n              .map(c => {\n                let userChallengeData;\n                let appealChallengeUserData;\n                if (allUserChallengeData) {\n                  userChallengeData = allUserChallengeData.get(c!.challengeID);\n\n                  if (challengeToAppealChallengeMap) {\n                    const childAppealChallengeID = challengeToAppealChallengeMap.get(c!.challengeID);\n                    if (childAppealChallengeID) {\n                      appealChallengeUserData = allUserChallengeData.get(childAppealChallengeID);\n                    }\n                  }\n                }\n                return (\n                  <MyChallengesItem\n                    key={c!.challengeID}\n                    challenge={c!}\n                    queryUserChallengeData={userChallengeData}\n                    queryUserAppealChallengeData={appealChallengeUserData}\n                    refetchUserChallengeData={refetchUserChallengeData}\n                    showClaimRewardsTab={() => {\n                      props.showClaimRewardsTab();\n                    }}\n                    showRescueTokensTab={() => {\n                      props.showRescueTokensTab();\n                    }}\n                  />\n                );\n              })}\n          {props.challenges &&\n            props.challenges\n              .sort((a, b) => parseInt(a, 10) - parseInt(b, 10))\n              .map(c => {\n                let userChallengeData;\n                let appealChallengeUserData;\n                if (allUserChallengeData) {\n                  userChallengeData = allUserChallengeData.get(c!);\n\n                  if (challengeToAppealChallengeMap) {\n                    const childAppealChallengeID = challengeToAppealChallengeMap.get(c!);\n                    if (childAppealChallengeID) {\n                      appealChallengeUserData = allUserChallengeData.get(childAppealChallengeID);\n                    }\n                  }\n                }\n                return (\n                  <MyTasksItem\n                    key={c}\n                    challengeID={c!}\n                    queryUserChallengeData={userChallengeData}\n                    queryUserAppealChallengeData={appealChallengeUserData}\n                    refetchUserChallengeData={refetchUserChallengeData}\n                    showClaimRewardsTab={() => {\n                      props.showClaimRewardsTab();\n                    }}\n                    showRescueTokensTab={() => {\n                      props.showRescueTokensTab();\n                    }}\n                  />\n                );\n              })}\n          {props.proposalChallenges &&\n            props.proposalChallenges\n              .sort((a, b) => parseInt(a, 10) - parseInt(b, 10))\n              .map(c => {\n                let userChallengeData;\n                if (allUserChallengeData) {\n                  userChallengeData = allUserChallengeData.get(c!);\n                }\n                return (\n                  <MyTasksProposalItem\n                    key={c}\n                    challengeID={c!}\n                    queryUserChallengeData={userChallengeData}\n                    refetchUserChallengeData={refetchUserChallengeData}\n                    showClaimRewardsTab={() => {\n                      props.showClaimRewardsTab();\n                    }}\n                    showRescueTokensTab={() => {\n                      props.showRescueTokensTab();\n                    }}\n                  />\n                );\n              })}\n        </>\n      )}\n    </>\n  );\n};\n\nexport default MyTasksList;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksProposalItem/MyTasksProposalItem.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\n\nimport { State } from \"../../../redux/reducers\";\nimport { MyTasksProposalItemOwnProps, MyTasksProposalItemWrapperReduxProps } from \"./MyTasksProposalItemTypes\";\nimport MyTasksProposalItemWrapper from \"./MyTasksProposalItemWrapper\";\n\nconst MyTasksProposalItem: React.FunctionComponent<\n  MyTasksProposalItemOwnProps & MyTasksProposalItemWrapperReduxProps\n> = props => {\n  const { challengeID, showClaimRewardsTab, showRescueTokensTab, queryUserChallengeData, userAcct } = props;\n\n  const viewProps = {\n    challengeID,\n    showClaimRewardsTab,\n    showRescueTokensTab,\n    userAcct,\n  };\n  return <MyTasksProposalItemWrapper {...viewProps} queryUserChallengeData={queryUserChallengeData} />;\n};\n\nconst mapStateToPropsMyTasksProposalItem = (\n  state: State,\n  ownProps: MyTasksProposalItemOwnProps,\n): MyTasksProposalItemOwnProps & MyTasksProposalItemWrapperReduxProps => {\n  const { user } = state.networkDependent;\n  const userAcct = user && user.account.account;\n  return { userAcct, ...ownProps };\n};\n\nexport default connect(mapStateToPropsMyTasksProposalItem)(MyTasksProposalItem);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksProposalItem/MyTasksProposalItemComponent.tsx",
    "content": "import * as React from \"react\";\nimport { paramPropChallengeHelpers } from \"@joincivil/utils\";\nimport { DashboardActivityItemTask } from \"@joincivil/components\";\n\nimport { routes } from \"../../../constants\";\nimport { MyTasksProposalItemOwnProps, MyTasksProposalItemReduxProps } from \"./MyTasksProposalItemTypes\";\nimport MyTasksProposalItemPhaseCountdown from \"../MyTasksItemPhaseCountdown\";\nimport DashboardProposalItemChallengeDetails from \"../ProposalChallengeSummary\";\n\nconst MyTasksProposalItemComponent: React.FunctionComponent<\n  MyTasksProposalItemOwnProps & MyTasksProposalItemReduxProps\n> = props => {\n  const { proposal, challengeID, challenge, userChallengeData } = props;\n\n  if (!userChallengeData || !challenge) {\n    return <></>;\n  }\n\n  const { canUserReveal, canUserCollect, canUserRescue, didUserCommit } = userChallengeData;\n\n  let title = `Parameter Proposal Challenge #${challengeID}`;\n  if (proposal) {\n    title = `${title}: ${proposal.paramName} = ${proposal.propValue}`;\n  }\n\n  const viewProps = {\n    title,\n    viewDetailURL: routes.PARAMETERIZER,\n  };\n\n  const inCommitPhase = paramPropChallengeHelpers.isParamPropChallengeInCommitStage(challenge);\n  const inRevealPhase = paramPropChallengeHelpers.isParamPropChallengeInRevealStage(challenge);\n\n  if (canUserReveal || canUserCollect || canUserRescue || didUserCommit) {\n    return (\n      <DashboardActivityItemTask {...viewProps}>\n        <MyTasksProposalItemPhaseCountdown {...props} />\n        {!inCommitPhase && !inRevealPhase && <DashboardProposalItemChallengeDetails {...props} />}\n      </DashboardActivityItemTask>\n    );\n  }\n\n  return <></>;\n};\n\nexport default MyTasksProposalItemComponent;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksProposalItem/MyTasksProposalItemTypes.ts",
    "content": "import { UserChallengeData, EthAddress } from \"@joincivil/typescript-types\";\n\nexport interface MyTasksProposalItemOwnProps {\n  challengeID?: string;\n  queryUserChallengeData?: any;\n  showClaimRewardsTab?(): void;\n  showRescueTokensTab?(): void;\n}\n\nexport interface MyTasksProposalItemWrapperReduxProps {\n  userAcct: EthAddress;\n}\n\nexport interface MyTasksProposalItemReduxProps {\n  proposal?: any;\n  userChallengeData?: UserChallengeData;\n  challenge?: any;\n  challengeDataRequestStatus?: any;\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksProposalItem/MyTasksProposalItemWrapper.tsx",
    "content": "import * as React from \"react\";\n\nimport { transformGraphQLDataIntoChallenge, transfromGraphQLDataIntoUserChallengeData } from \"@joincivil/utils\";\nimport { MyTasksProposalItemOwnProps, MyTasksProposalItemWrapperReduxProps } from \"./MyTasksProposalItemTypes\";\n\nimport MyTasksProposalItemComponent from \"./MyTasksProposalItemComponent\";\n\nconst MyTasksProposalItemWrapper: React.FunctionComponent<\n  MyTasksProposalItemOwnProps & MyTasksProposalItemWrapperReduxProps\n> = props => {\n  const { challengeID, queryUserChallengeData, showClaimRewardsTab, showRescueTokensTab } = props;\n\n  if (!queryUserChallengeData) {\n    console.error(\"MyTasksProposalItemWrapper: no queryUserChallengeData found\");\n    return <></>;\n  }\n  const { pollType, challenge } = queryUserChallengeData;\n  if (!pollType) {\n    console.error(\"MyTasksProposalItemWrapper: no pollType found\");\n    return <></>;\n  }\n\n  if (pollType === \"PARAMETER_PROPOSAL_CHALLENGE\") {\n    if (challenge) {\n      const userChallengeData = transfromGraphQLDataIntoUserChallengeData(queryUserChallengeData, challenge);\n      const challengeData = transformGraphQLDataIntoChallenge(challenge);\n\n      const viewProps = {\n        challengeID,\n        challenge: challengeData,\n        userChallengeData,\n        showClaimRewardsTab,\n        showRescueTokensTab,\n      };\n\n      return <MyTasksProposalItemComponent {...viewProps} />;\n    }\n  }\n  console.error(\"MyTasksProposalItemWrapper: pollType !== CHALLENGE\");\n  return <></>;\n};\n\nexport default MyTasksProposalItemWrapper;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/MyTasksProposalItem/index.ts",
    "content": "export { default } from \"./MyTasksProposalItem\";\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/NewsroomsList.tsx",
    "content": "import * as React from \"react\";\nimport { Set } from \"immutable\";\nimport NewsroomsListItem from \"./NewsroomsListItem\";\n\nexport interface NewsroomsListOwnProps {\n  listings?: Set<any>;\n}\n\nconst NewsroomsList: React.FunctionComponent<NewsroomsListOwnProps> = props => {\n  const { listings } = props;\n  return (\n    <>\n      {listings &&\n        listings.map(l => {\n          return <NewsroomsListItem key={l.id} listing={l!.listing!} />;\n        })}\n    </>\n  );\n};\n\nexport default NewsroomsList;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/NewsroomsListItem.tsx",
    "content": "import * as React from \"react\";\nimport { transformGraphQLDataIntoNewsroom, transformGraphQLDataIntoListing } from \"@joincivil/utils\";\n\nimport NewsroomsListItemComponent from \"./NewsroomsListItemComponent\";\n\ninterface NewsroomListItemOwnProps {\n  listing: any;\n}\n\nconst NewsroomsListItemGraphQL: React.FunctionComponent<NewsroomListItemOwnProps> = props => {\n  const { listing } = props;\n\n  const listingData = transformGraphQLDataIntoListing(listing, listing.contractAddress);\n  const newsroom = transformGraphQLDataIntoNewsroom(listing, listing.contractAddress);\n  const charterHeader = newsroom && newsroom.data && newsroom.data.charterHeader && newsroom.data.charterHeader;\n  return (\n    <>\n      <NewsroomsListItemComponent\n        listingAddress={listing.contractAddress}\n        listing={listingData}\n        newsroom={newsroom}\n        newsroomCharterHeader={charterHeader}\n      />\n    </>\n  );\n};\n\nconst NewsroomListItem: React.FunctionComponent<NewsroomListItemOwnProps> = props => {\n  const { listing } = props;\n  return <NewsroomsListItemGraphQL listing={listing} />;\n};\n\nexport default NewsroomListItem;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/NewsroomsListItemComponent.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { Link } from \"react-router-dom\";\nimport { ListingWrapper, WrappedChallengeData, EthContentHeader, CharterData } from \"@joincivil/typescript-types\";\nimport { getNewsroomMultisigBalance } from \"@joincivil/newsroom-signup\";\nimport { DashboardNewsroom, LoadingMessage } from \"@joincivil/components\";\nimport { getFormattedTokenBalance, getEtherscanBaseURL, getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport { NewsroomWithdraw } from \"@joincivil/sdk\";\n\nimport { routes } from \"../../constants\";\nimport { State } from \"../../redux/reducers\";\nimport { getListingPhaseState } from \"../../selectors\";\n\nimport { getContent } from \"../../redux/actionCreators/newsrooms\";\n\nimport PhaseCountdown from \"./MyTasksItemPhaseCountdown\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\n\nexport interface NewsroomsListItemOwnProps {\n  listingAddress: string;\n  listing?: ListingWrapper | undefined;\n  newsroomCharterHeader?: EthContentHeader;\n  newsroom: any;\n}\n\nexport interface NewsroomsListItemReduxProps {\n  network: string;\n  listingDataRequestStatus?: any;\n  charter?: Partial<CharterData>;\n  challenge?: WrappedChallengeData;\n  challengeState?: any;\n  listingPhaseState?: any;\n}\n\nexport interface NewsroomsListItemListingReduxState {\n  loading?: boolean;\n}\n\nclass NewsroomsListItemListingRedux extends React.Component<\n  NewsroomsListItemOwnProps & NewsroomsListItemReduxProps & DispatchProp<any>,\n  NewsroomsListItemListingReduxState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: NewsroomsListItemOwnProps & NewsroomsListItemReduxProps & DispatchProp<any>) {\n    super(props);\n    this.state = {};\n  }\n\n  public async componentDidUpdate(): Promise<void> {\n    await this.hydrateData();\n  }\n\n  public async componentDidMount(): Promise<void> {\n    await this.hydrateData();\n  }\n\n  public render(): JSX.Element {\n    const { listingAddress, listing, newsroom, listingPhaseState, network, challenge, challengeState } = this.props;\n\n    const getNewsroomStatusOnRegistry = () => {\n      const {\n        isWhitelisted,\n        isRejected,\n        isInApplication,\n        canBeWhitelisted,\n        isUnderChallenge,\n        inChallengeCommitVotePhase,\n        inChallengeRevealPhase,\n        isAwaitingAppealRequest,\n        canResolveChallenge,\n        isAwaitingAppealJudgement,\n        isAwaitingAppealChallenge,\n        isInAppealChallengeCommitStage,\n        isInAppealChallengeRevealStage,\n        canListingAppealBeResolved,\n        canListingAppealChallengeBeResolved,\n      } = listingPhaseState;\n\n      if (isWhitelisted && !isUnderChallenge) {\n        let acceptedDate;\n\n        if (listing && listing.data.approvalDate) {\n          const dateParts = getLocalDateTimeStrings(listing.data.approvalDate.toNumber());\n          acceptedDate = `${dateParts[0]} ${dateParts[1]}`;\n        }\n\n        return {\n          isAccepted: true,\n          acceptedDate,\n        };\n      } else if (isRejected && !isInApplication && !isUnderChallenge) {\n        return {\n          isRejected: true,\n        };\n      }\n\n      const isInProgress = true;\n      let inProgressPhaseDisplayName = \"\";\n      let inProgressPhaseDetails;\n\n      switch (true) {\n        case isInApplication:\n          inProgressPhaseDisplayName = \"New Application\";\n          break;\n\n        case canBeWhitelisted ||\n          canResolveChallenge ||\n          canListingAppealBeResolved ||\n          canListingAppealChallengeBeResolved:\n          inProgressPhaseDisplayName = \"Ready To Update\";\n          inProgressPhaseDetails = (\n            <Link to={formatRoute(routes.LISTING, { listingAddress })}>\n              Please update your newsroom on the Registry\n            </Link>\n          );\n          break;\n\n        case inChallengeCommitVotePhase || inChallengeRevealPhase || isAwaitingAppealRequest:\n          inProgressPhaseDisplayName = \"Under Challenge\";\n          break;\n\n        case isAwaitingAppealJudgement || isAwaitingAppealChallenge:\n          inProgressPhaseDisplayName = \"Under Appeal\";\n          break;\n\n        case isInAppealChallengeCommitStage || isInAppealChallengeRevealStage:\n          inProgressPhaseDisplayName = \"Decision Challenged\";\n          break;\n      }\n\n      if (\n        inChallengeCommitVotePhase ||\n        inChallengeRevealPhase ||\n        isAwaitingAppealRequest ||\n        isAwaitingAppealJudgement ||\n        isAwaitingAppealChallenge ||\n        isInAppealChallengeCommitStage ||\n        isInAppealChallengeRevealStage\n      ) {\n        inProgressPhaseDetails = <PhaseCountdown challengeState={challengeState} challenge={challenge} />;\n      }\n\n      return {\n        isUnderChallenge,\n        isInProgress,\n        inProgressPhaseDisplayName,\n        inProgressPhaseDetails,\n      };\n    };\n\n    if (listing && listingPhaseState) {\n      const listingDetailURL = formatRoute(routes.LISTING, { listingAddress });\n      const manageNewsroomURL = formatRoute(routes.MANAGE_NEWSROOM, { newsroomAddress: listingAddress });\n\n      let newsroomMultiSigBalance = \"0.00\";\n      if (newsroom && newsroom.multisigBalance) {\n        newsroomMultiSigBalance = getFormattedTokenBalance(newsroom.multisigBalance, true);\n      }\n      const etherscanBaseURL = getEtherscanBaseURL(network);\n\n      const newsroomStatusOnRegistry = getNewsroomStatusOnRegistry();\n      const newsroomName = newsroom && newsroom.data && newsroom.data.name ? newsroom.data.name : \"loading...\";\n\n      const displayProps = {\n        newsroomName,\n        newsroomAddress: listingAddress,\n        newsroomMultiSigAddress: listing.data.owner,\n        newsroomMultiSigBalance,\n        listingDetailURL,\n        manageNewsroomURL,\n        newsroomDeposit: getFormattedTokenBalance(listing.data.unstakedDeposit, true),\n        etherscanBaseURL,\n        boostProceeds: <NewsroomWithdraw newsroomAddress={listingAddress} />,\n      };\n\n      return <DashboardNewsroom {...displayProps} {...newsroomStatusOnRegistry} />;\n    }\n\n    if (this.state.loading) {\n      return <LoadingMessage />;\n    }\n\n    return <></>;\n  }\n\n  private hydrateData = async (): Promise<void> => {\n    const { listing, listingDataRequestStatus, listingAddress, newsroom, charter, newsroomCharterHeader } = this.props;\n    const { civil } = this.context;\n\n    if (!listing && !listingDataRequestStatus) {\n      console.error(\"hydrate data hit without listing. listingAddress: \", listingAddress);\n      if (!this.state.loading) {\n        this.setState({ loading: true });\n      }\n    }\n    if (newsroom) {\n      if (newsroom.multisigAddress) {\n        this.props.dispatch!(await getNewsroomMultisigBalance(listingAddress!, newsroom.multisigAddress, civil));\n      }\n    }\n    if (newsroomCharterHeader && !charter) {\n      if (!this.state.loading) {\n        this.setState({ loading: true });\n      }\n      this.props.dispatch!(await getContent(this.context, newsroomCharterHeader!));\n    }\n  };\n}\n\nconst makeMapStateToProps = () => {\n  const mapStateToProps = (\n    state: State,\n    ownProps: NewsroomsListItemOwnProps,\n  ): NewsroomsListItemReduxProps & NewsroomsListItemOwnProps => {\n    const { listing, newsroom } = ownProps;\n    const { network } = state;\n    const { content } = state.networkDependent;\n\n    let charter;\n    let charterURI;\n    let newsroomCharterHeader;\n    if (ownProps.newsroomCharterHeader) {\n      newsroomCharterHeader = ownProps.newsroomCharterHeader;\n      charterURI = newsroomCharterHeader.uri;\n    } else if (newsroom) {\n      newsroomCharterHeader = newsroom.data.charterHeader;\n      charterURI = newsroom.data.charterHeader!.uri;\n    }\n    if (charterURI) {\n      charter = content.get(charterURI) as CharterData;\n    }\n\n    return {\n      listing,\n      network,\n      newsroom,\n      newsroomCharterHeader,\n      charter,\n      listingPhaseState: getListingPhaseState(listing),\n      ...ownProps,\n    };\n  };\n\n  return mapStateToProps;\n};\n\nexport default connect(makeMapStateToProps)(NewsroomsListItemListingRedux);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/PhaseCountdownTimer.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { SmallProgressBarCountdownTimer, ProgressBarCountdownProps, CountdownTimerProps } from \"@joincivil/components\";\nimport { connectPhaseCountdownTimer, PhaseCountdownTimerProps } from \"../utility/HigherOrderComponents\";\n\ntype TPhaseCountdownBarProps = ProgressBarCountdownProps & CountdownTimerProps;\n\nconst phaseCountdownTimerContainer = (WrappedComponent: React.ComponentClass<TPhaseCountdownBarProps>) => {\n  const wrappedComponentContainer = (props: TPhaseCountdownBarProps) => {\n    return <WrappedComponent {...props} />;\n  };\n\n  return compose(connectPhaseCountdownTimer)(wrappedComponentContainer) as React.ComponentClass<\n    PhaseCountdownTimerProps\n  >;\n};\n\nexport const PhaseCountdownTimer = phaseCountdownTimerContainer(SmallProgressBarCountdownTimer);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ProposalChallengeSummary.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport {\n  UserVotingSummary,\n  CHALLENGE_RESULTS_VOTE_TYPES,\n  StyledDashbaordActvityItemSection,\n  StyledDashbaordActvityItemSectionOuter,\n  StyledDashbaordActvityItemHeader,\n  StyledDashbaordActvityItemSectionInner,\n  StyledChallengeSummarySection,\n  StyledDashboardActivityItemAction,\n  DashboardActivityProposalItemCTAButton,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance, paramPropChallengeHelpers } from \"@joincivil/utils\";\n\nimport WinningChallengeResults from \"./WinningChallengeResults\";\nimport {\n  MyTasksProposalItemOwnProps,\n  MyTasksProposalItemReduxProps,\n} from \"./MyTasksProposalItem/MyTasksProposalItemTypes\";\n\nconst CurrentChallengeStateExplanation: React.FunctionComponent<\n  MyTasksProposalItemOwnProps & MyTasksProposalItemReduxProps\n> = props => {\n  const { challenge } = props;\n\n  if (!challenge) {\n    return <></>;\n  }\n\n  const isResolved = challenge.resolved;\n  const canResolveChallenge = paramPropChallengeHelpers.canParamPropChallengeBeResolved(challenge);\n  const didChallengeSucceed = paramPropChallengeHelpers.didParamPropChallengeSucceed(challenge);\n\n  const currentProposalStatus = didChallengeSucceed ? \"reject\" : \"approve\";\n\n  // The ordering of these cases is significant. Appeal Challenge, then Appeal, the Original Challenge states should be checked in that order to ensure the proper explanation is set.\n  let explanation = <></>;\n  if (canResolveChallenge || isResolved) {\n    explanation = <p>The Civil Community voted to {currentProposalStatus} this parameter proposal.</p>;\n  }\n\n  return explanation;\n};\n\nconst ChallengeSummary: React.FunctionComponent<\n  MyTasksProposalItemOwnProps & MyTasksProposalItemReduxProps\n> = props => {\n  const { challengeID, challenge, userChallengeData, showClaimRewardsTab, showRescueTokensTab } = props;\n\n  if (!userChallengeData || !challenge) {\n    return <></>;\n  }\n\n  const { canUserCollect, canUserRescue, didUserReveal, choice, numTokens } = userChallengeData;\n\n  let userVotingSummary;\n\n  let userVotingSummaryContent;\n  let userChoice;\n  if (didUserReveal) {\n    if (choice) {\n      userChoice = choice.toNumber() === 1 ? CHALLENGE_RESULTS_VOTE_TYPES.REMAIN : CHALLENGE_RESULTS_VOTE_TYPES.REMOVE;\n      userVotingSummaryContent = (\n        <UserVotingSummary choice={userChoice} numTokens={getFormattedTokenBalance(numTokens!)} />\n      );\n    }\n  } else if (canUserRescue) {\n    userVotingSummaryContent = <>You did not reveal your vote</>;\n  }\n  userVotingSummary = (\n    <StyledDashbaordActvityItemSection>\n      <StyledDashbaordActvityItemHeader>Your Voting Summary</StyledDashbaordActvityItemHeader>\n      <StyledDashbaordActvityItemSectionInner>{userVotingSummaryContent}</StyledDashbaordActvityItemSectionInner>\n    </StyledDashbaordActvityItemSection>\n  );\n\n  let onCTAButtonClick;\n  if (canUserCollect) {\n    onCTAButtonClick = showClaimRewardsTab;\n  } else if (canUserRescue) {\n    onCTAButtonClick = showRescueTokensTab;\n  }\n\n  const canResolveChallenge = paramPropChallengeHelpers.canParamPropChallengeBeResolved(challenge);\n\n  const buttonProps = {\n    ...userChallengeData,\n    canResolveChallenge,\n    propDetailURL: \"/parameterizer\",\n    onClick: onCTAButtonClick,\n  };\n\n  return (\n    <>\n      <StyledDashbaordActvityItemSectionOuter>\n        <StyledChallengeSummarySection>\n          {userVotingSummary}\n\n          <StyledDashbaordActvityItemSection>\n            <StyledDashbaordActvityItemHeader>Community Voting Summary</StyledDashbaordActvityItemHeader>\n            <StyledDashbaordActvityItemSectionInner>\n              <WinningChallengeResults challengeID={challengeID} challenge={challenge} isProposalChallenge={true} />\n            </StyledDashbaordActvityItemSectionInner>\n          </StyledDashbaordActvityItemSection>\n        </StyledChallengeSummarySection>\n\n        <StyledDashboardActivityItemAction>\n          <DashboardActivityProposalItemCTAButton {...buttonProps} />\n          <Link to=\"/parameterizer\">View details &gt;</Link>\n        </StyledDashboardActivityItemAction>\n      </StyledDashbaordActvityItemSectionOuter>\n    </>\n  );\n};\n\nconst DashboardProposalItemChallengeDetails: React.FunctionComponent<\n  MyTasksProposalItemOwnProps & MyTasksProposalItemReduxProps\n> = props => {\n  const { challenge } = props;\n\n  if (!challenge) {\n    return <></>;\n  }\n\n  return (\n    <>\n      {<CurrentChallengeStateExplanation {...props} />}\n\n      {<ChallengeSummary {...props} />}\n    </>\n  );\n};\n\nexport default DashboardProposalItemChallengeDetails;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/ReclaimTokens.tsx",
    "content": "import * as React from \"react\";\nimport { parseEther, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  TransactionButtonNoModal,\n  CurrencyInput,\n  ModalContent,\n  TransferTokenTipsText,\n  StyledTransferTokenFormElement,\n} from \"@joincivil/components\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { FormGroup } from \"../utility/FormElements\";\n\nenum TransactionTypes {\n  WITHDRAW_VOTING_RIGHTS = \"WITHDRAW_VOTING_RIGHTS\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.WITHDRAW_VOTING_RIGHTS]: \"Transfer Voting Tokens to Available Balance\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.WITHDRAW_VOTING_RIGHTS]: [\n    \"You have successfully transferred your voting tokens\",\n    <ModalContent>\n      Tokens in your Available Balance can be used for applying to The Civil Registry or challenging newsrooms\n    </ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.WITHDRAW_VOTING_RIGHTS]: [\n    \"Your tokens were not transferred\",\n    \"To transfer your tokens, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.WITHDRAW_VOTING_RIGHTS]: [\n    \"There was a problem with transferring your tokens\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface ReclaimTokenProps {\n  onMobileTransactionClick?(): any;\n}\n\ninterface ReclaimTokensState {\n  numTokens?: string;\n  isReclaimAmountValid?: boolean;\n}\n\nclass ReclaimTokensComponent extends React.Component<\n  ReclaimTokenProps & InjectedTransactionStatusModalProps,\n  ReclaimTokensState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: ReclaimTokenProps & InjectedTransactionStatusModalProps) {\n    super(props);\n    this.state = {\n      numTokens: \"0\",\n      isReclaimAmountValid: true,\n    };\n  }\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <>\n          <StyledTransferTokenFormElement>\n            <CurrencyInput\n              label=\"Enter amount\"\n              placeholder=\"0\"\n              name=\"numTokens\"\n              icon={<>CVL</>}\n              onChange={this.updateViewState}\n            />\n            <TransferTokenTipsText />\n          </StyledTransferTokenFormElement>\n\n          <FormGroup>\n            <TransactionButtonNoModal transactions={this.getTransactions()}>Transfer</TransactionButtonNoModal>\n          </FormGroup>\n        </>\n      </>\n    );\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.WITHDRAW_VOTING_RIGHTS,\n          });\n          return this.withdrawVotingRights();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private withdrawVotingRights = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    const numTokens = parseEther(this.state.numTokens!);\n    return this.context.withdrawVotingRights(numTokens);\n  };\n\n  private updateViewState = (name: string, value: string): void => {\n    this.setState(() => ({ [name]: value }));\n  };\n}\n\nexport default hasTransactionStatusModals(transactionStatusModalConfig)(ReclaimTokensComponent) as React.ComponentClass<\n  ReclaimTokenProps & InjectedTransactionStatusModalProps\n>;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/RescueTokensItem/RescueTokensItem.tsx",
    "content": "import * as React from \"react\";\nimport { RescueTokensItemOwnProps } from \"./types\";\nimport RescueTokensItemWrapper from \"./RescueTokensItemWrapper\";\n\nconst RescueTokensItem: React.FunctionComponent<RescueTokensItemOwnProps> = props => {\n  const {\n    challengeID,\n    appealChallengeID,\n    isProposalChallenge,\n    queryUserChallengeData,\n    queryUserAppealChallengeData,\n    toggleSelect,\n  } = props;\n\n  const viewProps = {\n    challengeID,\n    appealChallengeID,\n    isProposalChallenge,\n    toggleSelect,\n  };\n\n  return (\n    <RescueTokensItemWrapper\n      {...viewProps}\n      queryUserChallengeData={queryUserChallengeData}\n      queryUserAppealChallengeData={queryUserAppealChallengeData}\n    />\n  );\n};\n\nexport default RescueTokensItem;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/RescueTokensItem/RescueTokensItemWrapper.tsx",
    "content": "import * as React from \"react\";\n\nimport { transformGraphQLDataIntoNewsroom, transfromGraphQLDataIntoUserChallengeData } from \"@joincivil/utils\";\nimport { RescueTokensItemOwnProps } from \"./types\";\nimport { RescueTokensViewComponent, ProposalRescueTokensViewComponent } from \"./RescueTokensViewComponents\";\n\nconst RescueTokensItemWrapper: React.FunctionComponent<RescueTokensItemOwnProps> = props => {\n  const { challengeID, appealChallengeID, queryUserChallengeData, toggleSelect, isProposalChallenge } = props;\n  const challengeIDArg = challengeID || appealChallengeID;\n  if (!challengeIDArg) {\n    return <></>;\n  }\n\n  if (!queryUserChallengeData) {\n    console.error(\"ClaimRewardsItemWrapper: no queryUserChallengeData found\");\n    return <></>;\n  }\n  const { pollType, challenge } = queryUserChallengeData;\n  if (!pollType) {\n    console.error(\"ClaimRewardsItemWrapper: no pollType found\");\n    return <></>;\n  }\n\n  if (pollType === \"CHALLENGE\" || pollType === \"APPEAL_CHALLENGE\" || pollType === \"PARAMETER_PROPOSAL_CHALLENGE\") {\n    if (challenge) {\n      const userChallengeData = transfromGraphQLDataIntoUserChallengeData(queryUserChallengeData, challenge);\n\n      const unclaimedRewardAmount = userChallengeData!.voterReward;\n\n      const viewProps = {\n        challengeID,\n        appealChallengeID,\n        userChallengeData,\n        unclaimedRewardAmount,\n        toggleSelect,\n      };\n\n      if (isProposalChallenge) {\n        return <ProposalRescueTokensViewComponent {...viewProps} />;\n      }\n\n      const listingAddress = challenge!.listingAddress;\n      if (listingAddress && challenge.listing) {\n        const newsroom = { wrapper: transformGraphQLDataIntoNewsroom(challenge.listing, listingAddress) };\n        return <RescueTokensViewComponent {...viewProps} listingAddress={listingAddress} newsroom={newsroom} />;\n      }\n    }\n  }\n  console.error(\"ClaimRewardsItemWrapper: pollType unknown\");\n  return <></>;\n};\n\nexport default RescueTokensItemWrapper;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/RescueTokensItem/RescueTokensViewComponents.tsx",
    "content": "import * as React from \"react\";\nimport { DashboardActivitySelectableItem } from \"@joincivil/components\";\nimport { RescueTokensItemOwnProps, RescueTokensViewComponentProps, ProposalRescueTokensComponentProps } from \"./types\";\n\nexport const RescueTokensViewComponent: React.FunctionComponent<\n  RescueTokensItemOwnProps & RescueTokensViewComponentProps\n> = props => {\n  const { challengeID, appealChallengeID, toggleSelect, newsroom, userChallengeData } = props;\n  let salt;\n  if (userChallengeData) {\n    salt = userChallengeData.salt;\n  }\n\n  if (!(newsroom && (challengeID || appealChallengeID))) {\n    return null;\n  }\n\n  const newsroomData = newsroom.wrapper.data;\n\n  const viewProps = {\n    title: newsroomData.name,\n    challengeID,\n    appealChallengeID,\n    salt,\n    toggleSelect,\n  };\n\n  return <DashboardActivitySelectableItem {...viewProps} />;\n};\n\nexport const ProposalRescueTokensViewComponent: React.FunctionComponent<\n  RescueTokensItemOwnProps & ProposalRescueTokensComponentProps\n> = props => {\n  const { proposal, challengeID, userChallengeData, toggleSelect } = props;\n\n  let salt;\n  if (userChallengeData) {\n    salt = userChallengeData.salt;\n  }\n\n  let title = \"Parameter Proposal Challenge\";\n  if (proposal) {\n    title = `${title}: ${proposal.paramName} = ${proposal.propValue}`;\n  }\n\n  const viewProps = {\n    title,\n    challengeID,\n    salt,\n    toggleSelect,\n  };\n\n  return <DashboardActivitySelectableItem {...viewProps} />;\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/RescueTokensItem/index.ts",
    "content": "export { default } from \"./RescueTokensItem\";\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/RescueTokensItem/types.ts",
    "content": "import { BigNumber, UserChallengeData } from \"@joincivil/typescript-types\";\n\nexport interface RescueTokensItemOwnProps {\n  challengeID?: string;\n  appealChallengeID?: string;\n  isProposalChallenge?: boolean;\n  queryUserChallengeData?: any;\n  queryUserAppealChallengeData?: any;\n  toggleSelect?(challengeID: string, isSelected: boolean, salt: BigNumber): void;\n}\n\nexport interface RescueTokensViewComponentProps {\n  listingAddress?: string;\n  newsroom?: any;\n  userChallengeData?: UserChallengeData;\n}\n\nexport interface ProposalRescueTokensComponentProps {\n  proposal?: any;\n  userChallengeData?: UserChallengeData;\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/TransferCivilTokens.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\n\nimport {\n  StyledDashboardActivityDescription,\n  Notice,\n  NoticeTypes,\n  DashboardTransferTokenForm,\n  BalanceType,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\n\nimport { State } from \"../../redux/reducers\";\nimport { getUnlockedWhitelist } from \"../../helpers/tokenController\";\n\nimport DepositTokens from \"./DepositTokens\";\nimport ReclaimTokens from \"./ReclaimTokens\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\n\nexport interface TransferCivilTokensProps {\n  showNoMobileTransactionsModal(): void;\n}\n\nexport interface TransferCivilTokensReduxProps {\n  userAccount: EthAddress;\n  balance: BigNumber;\n  votingBalance: BigNumber;\n}\n\ninterface TransferCivilTokensState {\n  isNoMobileTransactionVisible: boolean;\n  fromBalanceType: number;\n}\n\nclass TransferCivilTokens extends React.Component<\n  TransferCivilTokensProps & TransferCivilTokensReduxProps,\n  TransferCivilTokensState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public state = {\n    isNoMobileTransactionVisible: false,\n    fromBalanceType: 0,\n  };\n\n  public render(): JSX.Element {\n    const balance = getFormattedTokenBalance(this.props.balance);\n    const votingBalance = getFormattedTokenBalance(this.props.votingBalance);\n    const isUnlockedWhitelist = getUnlockedWhitelist(this.context, this.props.userAccount);\n\n    return (\n      <>\n        {!isUnlockedWhitelist && this.renderTransferTokensMsg()}\n\n        <DashboardTransferTokenForm\n          renderTransferBalance={this.renderTransferBalance}\n          cvlAvailableBalance={balance}\n          cvlVotingBalance={votingBalance}\n        >\n          {this.state.fromBalanceType === BalanceType.AVAILABLE_BALANCE ? (\n            <DepositTokens />\n          ) : (\n            <ReclaimTokens onMobileTransactionClick={this.props.showNoMobileTransactionsModal} />\n          )}\n        </DashboardTransferTokenForm>\n      </>\n    );\n  }\n\n  private renderTransferTokensMsg(): JSX.Element {\n    return (\n      <StyledDashboardActivityDescription noBorder={true}>\n        <Notice type={NoticeTypes.ERROR}>\n          Unlock your account by transfering at least 50% of your <b>available tokens</b> into your{\" \"}\n          <b>voting balance</b>. Unlocking your account allow you to sell Civil tokens.\n        </Notice>\n      </StyledDashboardActivityDescription>\n    );\n  }\n\n  private renderTransferBalance = (value: number) => {\n    this.setState({ fromBalanceType: value });\n  };\n}\n\nconst mapStateToProps = (\n  state: State,\n  ownProps: TransferCivilTokensProps,\n): TransferCivilTokensProps & TransferCivilTokensReduxProps => {\n  const { user } = state.networkDependent;\n  let balance = new BigNumber(0);\n  if (user.account && user.account.balance) {\n    balance = user.account.balance;\n  }\n  let votingBalance = new BigNumber(0);\n  if (user.account && user.account.votingBalance) {\n    votingBalance = user.account.votingBalance;\n  }\n\n  return {\n    userAccount: user.account.account,\n    balance,\n    votingBalance,\n    ...ownProps,\n  };\n};\n\nexport default connect(mapStateToProps)(TransferCivilTokens);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserInfoSummary.tsx",
    "content": "import { connect } from \"react-redux\";\nimport {\n  DashboardUserInfoSummary as DashboardUserInfoSummaryComponent,\n  DashboardUserInfoSummaryProps,\n} from \"@joincivil/components\";\nimport { getFormattedEthAddress, getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { State } from \"../../redux/reducers\";\n\nconst mapStateToProps = (state: State): DashboardUserInfoSummaryProps => {\n  const { user } = state.networkDependent;\n\n  let balance = \"\";\n  if (user.account && user.account.balance) {\n    balance = getFormattedTokenBalance(user.account.balance);\n  }\n\n  let votingBalance = \"\";\n  if (user.account && user.account.votingBalance) {\n    votingBalance = getFormattedTokenBalance(user.account.votingBalance);\n  }\n\n  let userAccount = \"\";\n  if (user && user.account.account) {\n    userAccount = getFormattedEthAddress(user.account.account);\n  }\n\n  return {\n    userAccount,\n    balance,\n    votingBalance,\n    buyCvlUrl: \"/tokens\",\n  };\n};\n\nexport default connect(mapStateToProps)(DashboardUserInfoSummaryComponent);\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserManagement/UserManagementNotification.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, CloseXIcon } from \"@joincivil/elements\";\n\nconst UserManagementNotificationStyled = styled.div`\n  background-color: rgba(36, 162, 73, 0.2);\n  border-radius: 6px;\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 16px;\n  line-height: 24px;\n  margin-bottom: 35px;\n  padding: 10px 15px;\n  position: relative;\n  width: 100%;\n`;\n\nconst UserManagementNotificationClose = styled.div`\n  cursor: pointer;\n  position: absolute;\n  right: 0;\n  top: 2px;\n`;\n\nexport interface UserManagementNotificationProps {\n  text: string | React.ReactElement;\n  handleClose(): void;\n}\n\nexport const UserManagementNotification: React.FunctionComponent<UserManagementNotificationProps> = props => {\n  return (\n    <UserManagementNotificationStyled>\n      {props.text}\n      <UserManagementNotificationClose onClick={() => props.handleClose()}>\n        <CloseXIcon color={colors.accent.CIVIL_GRAY_0} />\n      </UserManagementNotificationClose>\n    </UserManagementNotificationStyled>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserManagement/UserManagementPageLayout.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, mediaQueries } from \"@joincivil/elements\";\n\nconst UserManagementPageHeader = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 100px auto 50px;\n  max-width: 980px;\n\n  h1 {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 32px;\n    font-weight: bold;\n    letter-spacing: -0.23px;\n    margin: 0 0 20px;\n\n    ${mediaQueries.MOBILE} {\n      color: ${colors.primary.BLACK};\n      font-size: 24px;\n      line-height: 30px;\n    }\n  }\n`;\n\nconst UserManagementPageContent = styled.div`\n  margin: 0 auto 50px;\n  max-width: 980px;\n  width: 100%;\n`;\n\nexport interface UserManagementPageLayoutProps {\n  header: React.ReactElement;\n  children: any;\n}\n\nexport const UserManagementPageLayout: React.FunctionComponent<UserManagementPageLayoutProps> = props => {\n  return (\n    <>\n      <UserManagementPageHeader>{props.header}</UserManagementPageHeader>\n      <UserManagementPageContent>{props.children}</UserManagementPageContent>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserManagement/UserManagementSection.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, BorderlessButton } from \"@joincivil/elements\";\nimport { UserManagementNotification } from \"../UserManagement\";\n\nconst UserManagementSectionStyled = styled.div`\n  min-width: 300px;\n\n  ${BorderlessButton} {\n    font-size: 13px;\n    font-weight: bold;\n    letter-spacing: 0.2px;\n    line-height: 14px;\n    margin: 0;\n    padding: 0;\n    text-transform: none;\n  }\n`;\n\nconst UserManagementSectionHeader = styled.div`\n  h2 {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 24px;\n    font-weight: bold;\n    line-height: 26px;\n    margin: 0 0 15px;\n  }\n\n  p {\n    font-size: 16px;\n    line-height: 24px;\n  }\n`;\n\nexport interface UserManagementSectionProps {\n  showNotification?: boolean;\n  notificationText?: React.ReactElement;\n  header: React.ReactElement;\n  children: any;\n}\n\nexport const UserManagementSection: React.FunctionComponent<UserManagementSectionProps> = props => {\n  const [shouldShowNotification, setShouldShowNotification] = React.useState(props.showNotification || false);\n  return (\n    <UserManagementSectionStyled>\n      {shouldShowNotification && (\n        <UserManagementNotification\n          text={props.notificationText || \"\"}\n          handleClose={() => setShouldShowNotification(false)}\n        />\n      )}\n      <UserManagementSectionHeader>{props.header}</UserManagementSectionHeader>\n      {props.children}\n    </UserManagementSectionStyled>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserManagement/UserManagementStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, mediaQueries } from \"@joincivil/elements\";\nimport { TabComponentProps } from \"@joincivil/components\";\n\nexport const UserManagementTabNav = styled.div`\n  flex-shrink: 0;\n  margin: 0 75px 0 0;\n  width: 200px;\n\n  & > ul {\n    display: block;\n  }\n\n  ${mediaQueries.MOBILE} {\n    height: auto;\n    margin-bottom: 30px;\n    position: relative;\n\n    & > ul {\n      display: block;\n      justify-content: left;\n    }\n  }\n`;\n\nexport const UserManagementTabs = styled.li`\n  background-color: ${(props: TabComponentProps) => (props.isActive ? colors.accent.CIVIL_GRAY_6 : colors.basic.WHITE)};\n  border-left: ${(props: TabComponentProps) =>\n    props.isActive ? \"1px solid\" + colors.accent.CIVIL_PURPLE_1 : \"1px solid transparent\"};\n  cursor: pointer;\n  padding: 15px;\n  text-decoration: none;\n  transition: background-color 500ms, border 500ms;\n\n  ${mediaQueries.HOVER} {\n    &:hover {\n      border-left: 1px solid ${colors.accent.CIVIL_PURPLE_1};\n    }\n  }\n  &.active {\n    border-left: 1px solid ${colors.accent.CIVIL_PURPLE_1};\n  }\n`;\n\nexport const UserManagementTabText = styled.span`\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 17px;\n\n  span {\n    color: ${colors.accent.CIVIL_GRAY_2};\n    display: block;\n    font-size: 12px;\n    font-weight: 400;\n    height: 15px;\n  }\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserManagement/index.ts",
    "content": "export * from \"./UserManagementPageLayout\";\nexport * from \"./UserManagementSection\";\nexport * from \"./UserManagementNotification\";\nexport * from \"./UserManagementStyledComponents\";\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/UserProfileSummary.tsx",
    "content": "import { DashboardUserProfileSummary } from \"@joincivil/components\";\nimport * as React from \"react\";\n\nconst UserProfileSummary = (props: any) => {\n  const { user } = props;\n\n  if (!user) {\n    console.error(\"User not found in UserProfileSummary\");\n    return <></>;\n  }\n  const { userChannel } = user;\n  if (!userChannel) {\n    console.error(\"User Channel not found in UserProfileSummary\");\n    return <></>;\n  }\n\n  const userAvatarImgDataURL = userChannel.avatarDataUrl;\n  const userHandle = userChannel.handle;\n  const userEmailAddress = userChannel.EmailAddressRestricted;\n\n  const componentProps = {\n    userAvatarImgDataURL,\n    userHandle,\n    userEmailAddress,\n  };\n  return <DashboardUserProfileSummary {...componentProps} />;\n};\n\nexport default UserProfileSummary;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/WinningChallengeResults.tsx",
    "content": "import * as React from \"react\";\nimport { AppealChallengeData } from \"@joincivil/typescript-types\";\nimport { VoteTypeSummaryRow as PartialChallengeResultsComponent } from \"@joincivil/components\";\nimport { getChallengeViewProps, getAppealChallengeViewProps } from \"../utility/WinningChallengeResultsHOC\";\n\nexport interface WinningChallengeWrapperResultsProps {\n  challengeID?: string;\n  challenge?: any;\n  appealChallengeID?: string;\n  appealChallenge?: AppealChallengeData;\n  isProposalChallenge?: boolean;\n}\n\nconst WinningChallengeResults: React.FunctionComponent<WinningChallengeWrapperResultsProps> = props => {\n  const { challengeID, challenge, appealChallenge, isProposalChallenge } = props;\n  let viewProps;\n  if (appealChallenge) {\n    viewProps = getAppealChallengeViewProps(appealChallenge);\n  } else if (challenge && isProposalChallenge) {\n    viewProps = getChallengeViewProps(challenge);\n  } else if (challenge) {\n    viewProps = getChallengeViewProps(challenge.challenge);\n  }\n\n  if (viewProps) {\n    return <PartialChallengeResultsComponent {...viewProps} />;\n  } else {\n    console.error(\"no winning challenge results found. challengeID: \", challengeID);\n  }\n\n  return <></>;\n};\n\nexport default WinningChallengeResults;\n"
  },
  {
    "path": "packages/dapp/src/components/Dashboard/index.ts",
    "content": "export * from \"./Dashboard\";\n"
  },
  {
    "path": "packages/dapp/src/components/GetStarted.tsx",
    "content": "import * as React from \"react\";\nimport * as qs from \"querystring\";\nimport styled from \"styled-components\";\nimport { Helmet } from \"react-helmet\";\nimport { Redirect } from \"react-router-dom\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { LoadingMessage, CivilContext, ICivilContext, Collapsable, Arrow } from \"@joincivil/components\";\nimport {\n  Button,\n  buttonSizes,\n  colors,\n  mediaQueries,\n  AvatarGenericIcon,\n  HollowGreenCheck,\n  CircleLockIcon,\n} from \"@joincivil/elements\";\nimport { routes } from \"../constants\";\n\nconst COLUMN_BREAK_QUERY = \"@media only screen and (max-width: 900px)\";\n\nconst Wrapper = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin: 0 auto;\n  max-width: 1000px;\n  padding: 75px 25px 50px;\n  width: 100%;\n  color: #16161d;\n\n  ${mediaQueries.MOBILE} {\n    padding: 50px 20px;\n  }\n  ${COLUMN_BREAK_QUERY} {\n    flex-direction: column-reverse;\n  }\n  ${mediaQueries.MOBILE_SMALL} {\n    padding: 50px 0;\n  }\n`;\nconst Info = styled.div`\n  max-width: 360px;\n  font-size: 15px;\n  padding: 72px 0 0 24px;\n  line-height: 24px;\n\n  ${COLUMN_BREAK_QUERY} {\n    margin: auto;\n  }\n  ${mediaQueries.MOBILE_SMALL} {\n    max-width: calc(100% - 50px);\n  }\n\n  p {\n    margin: 0 0 36px;\n    color: ${colors.accent.CIVIL_GRAY_0};\n  }\n`;\nconst InfoHeading = styled.div`\n  position: relative;\n  font-weight: 600;\n`;\nconst InfoIconWrap = styled.div`\n  position: absolute;\n  left: -36px;\n  svg circle {\n    stroke-width: 2;\n  }\n`;\nconst MoreInfoContainer = styled.div`\n  p {\n    margin: 16px 0;\n    font-size: 14px;\n  }\n  ${InfoHeading} {\n    display: inline-block;\n  }\n  ${Arrow} {\n    position: relative;\n    display: inline-block;\n    top: -2px;\n    left: 5px;\n  }\n`;\nconst StyledHollowGreenCheck = styled(HollowGreenCheck)`\n  width: 26px;\n  height: 26px;\n  position: relative;\n  left: -1px;\n`;\nconst StyledAvatarGenericIcon = styled(AvatarGenericIcon)`\n  width: 24px;\n  height: 24px;\n`;\nconst StyledCircleLockIcon = styled(CircleLockIcon)`\n  position: relative;\n  width: 28px;\n  height: 28px;\n  left: -3px;\n  top: -3px;\n`;\nconst StyledButton = styled(Button)`\n  width: 100%;\n  padding: 20px 10px;\n  font-weight: bold;\n  text-transform: none;\n  margin: 24px 0;\n`;\nconst MoreInfo = styled.div`\n  font-size: 13px;\n  margin-top: 48px;\n  padding-top: 18px;\n  border-top: 1px solid rgb(233, 233, 234);\n  color: ${colors.accent.CIVIL_GRAY_0};\n`;\n\nconst CTA = styled.div`\n  max-width: 400px;\n  flex-grow: 1;\n  text-align: center;\n  font-size: 14px;\n\n  ${COLUMN_BREAK_QUERY} {\n    margin: auto;\n  }\n  ${mediaQueries.MOBILE_SMALL} {\n    max-width: none;\n    width: 100%;\n  }\n`;\nconst CTAShadow = styled.div`\n  border-radius: 8px;\n  box-shadow: 0px 15px 35px 0px rgba(0, 0, 0, 0.09);\n  color: ${colors.accent.CIVIL_GRAY_0};\n`;\nconst CTATop = styled.div`\n  padding: 28px 24px 32px;\n`;\nconst CTABottom = styled.div`\n  padding: 32px 24px;\n  background: rgb(250, 250, 251);\n`;\n\nconst CTAHeader = styled.div`\n  font-size: 24px;\n  font-weight: bold;\n  letter-spacing: 0.25px;\n  line-height: 30px;\n  margin-bottom: 24px;\n`;\nconst CTASubhead = styled.div`\n  font-size: 17px;\n  letter-spacing: -0.04px;\n  line-height: 25px;\n`;\nconst CTASubheadWelcome = styled(CTASubhead)`\n  font-weight: bold;\n  margin-bottom: 16px;\n`;\nconst CTANotice = styled.div`\n  font-size: 13px;\n`;\n\nconst DEFAULT_NEXT = formatRoute(routes.DASHBOARD, { activeDashboardTab: \"newsrooms\" });\n\nconst GetStartedPage = () => {\n  const qsParams = qs.parse(document.location.search.substr(1));\n  const context = React.useContext<ICivilContext>(CivilContext);\n  if (!context || !context.auth || context.auth.loading) {\n    return <LoadingMessage />;\n  }\n  if (context.currentUser) {\n    return <Redirect to={(qsParams.next as string) || DEFAULT_NEXT} />;\n  }\n\n  return (\n    <Wrapper>\n      <Helmet title=\"Get Started - The Civil Registry\" />\n      <Info>\n        <InfoHeading>\n          <InfoIconWrap>\n            <StyledHollowGreenCheck color={colors.accent.CIVIL_BLUE_VERY_FADED} />\n          </InfoIconWrap>\n          Sign up using a wallet\n        </InfoHeading>\n        <p>Use a wallet to quickly connect to Ethereum and create a Civil account.</p>\n        <InfoHeading>\n          <InfoIconWrap>\n            <StyledAvatarGenericIcon color={colors.accent.CIVIL_BLUE_VERY_FADED} />\n          </InfoIconWrap>\n          Decentralized identity\n        </InfoHeading>\n        <p>Take your tokens, ETH transactions, and wallet address information with you.</p>\n        <InfoHeading>\n          <InfoIconWrap>\n            <StyledCircleLockIcon color={colors.accent.CIVIL_BLUE_VERY_FADED} />\n          </InfoIconWrap>\n          Focus on security\n        </InfoHeading>\n        <p>\n          Only you have access to your wallet. No one can sign any transactions without your consent and no one can lock\n          your account or prevent you from making transactions.\n        </p>\n\n        <MoreInfoContainer>\n          <Collapsable header={<InfoHeading>Learn more about wallets</InfoHeading>} open={false}>\n            <p>\n              Having a wallet on Civil is required. It’s how you connect to an account and add your newsroom to the\n              Civil Registry. You can easily log in to Civil using MetaMask or Portis.\n            </p>\n            <p>\n              When you set up a wallet, it will create a public wallet address that identifies you on the Civil\n              Registry. You will also be able to send and receive ETH funds through your wallet.\n            </p>\n            <p>\n              You will use your wallet to set up and manage your Newsroom Smart Contract, manage your tokens, as well as\n              sign transactions on the Ethereum blockchain.\n            </p>\n            <p>\n              Please make sure you've backed up and saved your MetaMask phrase or Portis password to a safe place. You\n              are the only one who knows it. We don’t know it and the wallet services don’t either. If you forget your\n              password, we can’t help you regain access. This is the same thing that ensures no one can confiscate or\n              lock your account for any reason. As they say, with great decentralized power comes great reponsibility.\n            </p>\n          </Collapsable>\n        </MoreInfoContainer>\n\n        <MoreInfo>\n          Any other questions? <a href=\"#TODO/tobek\">Visit our support area</a>\n        </MoreInfo>\n      </Info>\n      <CTA>\n        <CTAHeader>Create your Civil account</CTAHeader>\n        <CTAShadow>\n          <CTATop>\n            <CTASubheadWelcome>Welcome{qsParams.name && \" \" + qsParams.name}!</CTASubheadWelcome>\n            <CTASubhead>Let's get started creating your account.</CTASubhead>\n            <StyledButton size={buttonSizes.MEDIUM_WIDE} onClick={() => context.auth.showWeb3Signup()}>\n              Sign Up\n            </StyledButton>\n            <CTANotice>You'll be selecting a wallet to sign up.</CTANotice>\n          </CTATop>\n          <CTABottom>\n            Already have an account?{\" \"}\n            <a href=\"#\" onClick={() => context.auth.showWeb3Login()}>\n              Log in\n            </a>\n          </CTABottom>\n        </CTAShadow>\n      </CTA>\n    </Wrapper>\n  );\n};\n\nexport default GetStartedPage;\n"
  },
  {
    "path": "packages/dapp/src/components/GlobalNav.tsx",
    "content": "import * as React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { State } from \"../redux/reducers\";\nimport { routes } from \"../constants\";\nimport { getFormattedEthAddress } from \"@joincivil/utils\";\n\nimport { NavBar, NavProps, CivilContext, ICivilContext } from \"@joincivil/components\";\nimport { showWeb3LoginModal, showWeb3SignupModal, hideWeb3AuthModal } from \"../redux/actionCreators/ui\";\nimport { withRouter } from \"react-router\";\n\nfunction maybeAccount(state: State): any {\n  const { user } = state.networkDependent;\n  if (user.account && user.account.account && user.account.account !== \"\") {\n    return user.account;\n  }\n}\n\nconst GlobalNavComponent: React.FunctionComponent = props => {\n  // context\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n\n  // redux\n  const dispatch = useDispatch();\n  const account: any | undefined = useSelector(maybeAccount);\n  const userAccount = account ? account.account : undefined;\n\n  const navBarViewProps: NavProps = {\n    userEthAddress: userAccount && getFormattedEthAddress(userAccount),\n    buyCvlUrl: \"/tokens\",\n    onLogoutPressed: async (): Promise<any> => {\n      civilCtx.auth.logout();\n    },\n    onLoginPressed: async (): Promise<any> => {\n      dispatch!(await showWeb3LoginModal());\n    },\n    onSignupPressed: async (): Promise<any> => {\n      dispatch!(await showWeb3SignupModal());\n    },\n    onModalDefocussed: async (): Promise<any> => {\n      dispatch!(await hideWeb3AuthModal());\n    },\n    onViewDashboardPressed: (): any => {\n      props.history.push({\n        pathname: routes.DASHBOARD_ROOT,\n        state: {},\n      });\n    },\n  };\n\n  return (\n    <>\n      <NavBar {...navBarViewProps} />\n    </>\n  );\n};\n\nexport const GlobalNav = withRouter(GlobalNavComponent);\n"
  },
  {
    "path": "packages/dapp/src/components/Main.tsx",
    "content": "import * as React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { formatRoute } from \"react-router-named-routes\";\n\nimport { CivilErrors, setDefaultNetworkValue } from \"@joincivil/utils\";\nimport { CivilContext, StyledMainContainer, ICivilContext } from \"@joincivil/components\";\nimport { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\n\nimport { routes, registryListingTypes, registrySubListingTypes } from \"../constants\";\nimport { addUser } from \"../redux/actionCreators/userAccount\";\nimport { initializeGovernment, initializeConstitution } from \"../helpers/government\";\nimport { initializeTokenSubscriptions } from \"../helpers/tokenEvents\";\nimport { AuthRouter } from \"./Auth\";\nimport WrongNetwork from \"./WrongNetwork\";\nimport config from \"../helpers/config\";\n\nimport { isNetworkSupported } from \"../helpers/networkHelpers\";\n\nimport AsyncComponent from \"./utility/AsyncComponent\";\nimport { CivilHelperContext } from \"../apis/CivilHelper\";\n\nimport { initializeContractAddresses } from \"../helpers/contractAddresses\";\n// PAGES\nconst ChallengePage = React.lazy(async () => import(/* webpackChunkName: \"challenge-page\" */ \"./listing/Challenge\"));\nconst Listing = React.lazy(async () => import(/* webpackChunkName: \"listing-page\" */ \"./listing/Listing\"));\nconst Listings = React.lazy(async () => import(/* webpackChunkName: \"listings-page\" */ \"./listinglist/Listings\"));\nconst NewsroomManagementV1 = React.lazy(async () =>\n  import(/* webpackChunkName: \"newsroom-mgmt-page\" */ \"./newsroom/NewsroomManagement\"),\n);\nconst Parameterizer = React.lazy(async () => import(/* webpackChunkName: \"parameterizer-page\" */ \"./Parameterizer\"));\nconst Government = React.lazy(async () => import(/* webpackChunkName: \"government-page\" */ \"./council/Government\"));\nconst SubmitChallengePage = React.lazy(async () =>\n  import(/* webpackChunkName: \"submit-challenge-page\" */ \"./listing/SubmitChallenge\"),\n);\nconst SubmitAppealChallengePage = React.lazy(async () =>\n  import(/* webpackChunkName: \"challenge-page\" */ \"./listing/SubmitAppealChallenge\"),\n);\nconst RequestAppealPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"request-appeal-page\" */ \"./listing/RequestAppeal\"),\n);\nconst ContractAddresses = React.lazy(async () =>\n  import(/* webpackChunkName: \"contract-addresses-page\" */ \"./ContractAddresses\"),\n);\nconst SignUpNewsroom = React.lazy(async () =>\n  import(/* webpackChunkName: \"signup-newsroom-page\" */ \"./SignUpNewsroom\"),\n);\nconst StorefrontPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"storefront-page\" */ \"./Tokens/StorefrontPage\"),\n);\nconst DashboardPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"dashboard-page\" */ \"./Dashboard/DashboardPage\"),\n);\nconst AccountPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"account-page\" */ \"./Dashboard/Account/Account\"),\n);\nconst BoostPage = React.lazy(async () => import(/* webpackChunkName: \"boost-page\" */ \"./Boosts/Boost\"));\nconst BoostFeedPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"boost-feed-page\" */ \"./Boosts/BoostFeedPage\"),\n);\nconst BoostSuccessPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"boost-success-page\" */ \"./Boosts/BoostSuccess\"),\n);\nconst StoryFeedPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"storyfeed-page\" */ \"./StoryFeed/StoryFeedPage\"),\n);\nconst ManageNewsroomChannelPage = React.lazy(async () =>\n  import(/* webpackChunkName: \"manage-newsroom-channel\" */ \"./Dashboard/ManageNewsroom/ManageNewsroomChannelPage\"),\n);\nconst GetStartedPage = React.lazy(async () => import(/* webpackChunkName: \"get-started-page\" */ \"./GetStarted\"));\n\nconst SunsetPage = React.lazy(async () => import(/* webpackChunkName: \"sunset-page\" */ \"./Sunset/Sunset\"));\n\nexport interface MainReduxProps {\n  network: string;\n}\n\nexport interface MainOwnProps {\n  civilUser: any;\n}\n\nexport const Main: React.FunctionComponent = () => {\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  const civilHelper = React.useContext(CivilHelperContext);\n  const dispatch = useDispatch();\n  const networkRedux = useSelector((state: any) => state.network);\n  const networkIsSupported = isNetworkSupported(networkRedux);\n\n  React.useEffect(() => {\n    setDefaultNetworkValue(parseInt(config.DEFAULT_ETHEREUM_NETWORK!, 10));\n    const civil = civilCtx.civil!;\n    const networkSub = civil.networkStream.subscribe(onNetworkUpdated);\n    const accountSub = civil.accountStream.subscribe(onAccountUpdated);\n    const currentUser = civilCtx.currentUser;\n    const userEthAddress = currentUser && currentUser.ethAddress;\n\n    // tslint:disable-next-line\n    onAccountUpdated(userEthAddress);\n\n    return function cleanup(): void {\n      networkSub.unsubscribe();\n      accountSub.unsubscribe();\n    };\n  }, [civilCtx]);\n\n  async function onNetworkUpdated(network: number): Promise<void> {\n    try {\n      await initializeGovernment(civilHelper!, dispatch!);\n      await initializeConstitution(civilHelper!, dispatch!);\n      await initializeContractAddresses(civilHelper!, dispatch!);\n    } catch (err) {\n      if (err.message !== CivilErrors.UnsupportedNetwork) {\n        throw err;\n      } else {\n        console.error(\"Unsupported network, unlock Metamask and switch to Mainnet\");\n      }\n    }\n  }\n\n  const onAccountUpdated = async (account: EthAddress | undefined): Promise<void> => {\n    const civil = civilCtx.civil!;\n    if (account) {\n      try {\n        dispatch!(addUser(account, new BigNumber(0), new BigNumber(0))); // get user eth address into redux right away\n        const tcr = await civil.tcrSingletonTrusted();\n        const token = await tcr.getToken();\n        const voting = await tcr.getVoting();\n        const balance = await token.getBalance(account);\n        const votingBalance = await voting.getNumVotingRights(account);\n        dispatch!(addUser(account, balance, votingBalance));\n        await initializeTokenSubscriptions(civilHelper!, dispatch!, account);\n      } catch (err) {\n        console.log(\"ERROR\", err);\n        if (err.message === CivilErrors.UnsupportedNetwork) {\n          dispatch!(addUser(account, new BigNumber(0), new BigNumber(0)));\n          console.error(\"Unsupported network when trying to setup user\");\n        } else {\n          throw err;\n        }\n      }\n    } else {\n      dispatch!(addUser(\"\", new BigNumber(0), new BigNumber(0)));\n    }\n  };\n\n  return (\n    <StyledMainContainer>\n      {networkIsSupported && (\n        <Switch>\n          <Redirect\n            exact\n            path={routes.REGISTRY_HOME_ROOT}\n            to={formatRoute(routes.REGISTRY_HOME, { listingType: registryListingTypes.APPROVED })}\n          />\n          <Redirect\n            exact\n            path={formatRoute(routes.REGISTRY_HOME, { listingType: registryListingTypes.IN_PROGRESS })}\n            to={formatRoute(routes.REGISTRY_HOME, {\n              listingType: registryListingTypes.IN_PROGRESS,\n              subListingType: registrySubListingTypes.IN_APPLICATION,\n            })}\n          />\n          <Route path={routes.REGISTRY_HOME} component={AsyncComponent(Listings)} />\n          <Route path={routes.CONTRACT_ADDRESSES} component={AsyncComponent(ContractAddresses)} />\n          <Route path={routes.CHALLENGE} component={AsyncComponent(ChallengePage)} />\n          <Route path={routes.SUBMIT_CHALLENGE} component={AsyncComponent(SubmitChallengePage)} />\n          <Route path={routes.SUBMIT_APPEAL_CHALLENGE} component={AsyncComponent(SubmitAppealChallengePage)} />\n          <Route path={routes.REQUEST_APPEAL} component={AsyncComponent(RequestAppealPage)} />\n          <Route path={routes.LISTING_STORY_BOOST_PAYMENT} component={AsyncComponent(Listing, { payment: true })} />\n          <Route path={routes.LISTING} component={AsyncComponent(Listing)} />\n          <Route path={routes.NEWSROOM_MANAGEMENT_V1} component={AsyncComponent(NewsroomManagementV1)} />\n          <Route path={routes.PARAMETERIZER} component={AsyncComponent(Parameterizer)} />\n          <Route path={routes.APPLY_TO_REGISTRY} component={AsyncComponent(SignUpNewsroom)} />\n          <Route path={routes.GOVERNMENT} component={AsyncComponent(Government)} />\n          <Route path={routes.DASHBOARD} component={AsyncComponent(DashboardPage)} />\n          <Route path={routes.DASHBOARD_ROOT} component={AsyncComponent(DashboardPage)} />\n          <Route path={routes.ACCOUNT} component={AsyncComponent(AccountPage)} />\n          <Route path={routes.MANAGE_NEWSROOM} component={AsyncComponent(ManageNewsroomChannelPage)} />\n          <Route path={routes.AUTH} component={AuthRouter} />\n          <Route path={routes.TOKEN_STOREFRONT} component={AsyncComponent(StorefrontPage)} />\n          <Route path={routes.BOOST_SUCCESS} component={AsyncComponent(BoostSuccessPage)} />\n          <Route path={routes.BOOST_EDIT} component={AsyncComponent(BoostPage, { editMode: true })} />\n          <Route path={routes.BOOST_PAYMENT} component={AsyncComponent(BoostPage, { payment: true })} />\n          <Route path={routes.BOOST} component={AsyncComponent(BoostPage)} />\n          <Route path={routes.BOOST_FEED} component={AsyncComponent(BoostFeedPage)} />\n          <Route path={routes.STORY_BOOST_PAYMENT} component={AsyncComponent(StoryFeedPage, { payment: true })} />\n          <Route path={routes.STORY_BOOST_NEWSROOM} component={AsyncComponent(StoryFeedPage, { newsroom: true })} />\n          <Route path={routes.STORY_FEED} component={AsyncComponent(StoryFeedPage)} />\n          <Route path={routes.GET_STARTED} component={AsyncComponent(GetStartedPage)} />\n          <Route path={routes.HOMEPAGE} component={AsyncComponent(SunsetPage)} />\n          {/* TODO(jorgelo): Better 404 */}\n          <Route path=\"*\" render={() => <h1>404</h1>} />\n        </Switch>\n      )}\n      <WrongNetwork />\n    </StyledMainContainer>\n  );\n};\n\nexport default Main;\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/ChallengeProposal.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ChallengeProposal as ChallengeProposalComponent,\n  ChallengeProposalProps as ChallengeProposalComponentProps,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nexport interface ChallengeProposalProps extends ChallengeProposalComponentProps {\n  challengeProposalID: number;\n}\n\nenum TransactionTypes {\n  APPROVE_FOR_PROPOSAL_CHALLENGE = \"APPROVE_FOR_PROPOSAL_CHALLENGE\",\n  CHALLENGE_PROPOSAL = \"CHALLENGE_PROPOSAL\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_FOR_PROPOSAL_CHALLENGE]: \"Approve For Proposal Challenge\",\n  [TransactionTypes.CHALLENGE_PROPOSAL]: \"Challenge Proposal\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_FOR_PROPOSAL_CHALLENGE]: \"1 of 2\",\n  [TransactionTypes.CHALLENGE_PROPOSAL]: \"2 of 2\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_FOR_PROPOSAL_CHALLENGE]: [undefined, undefined],\n  [TransactionTypes.CHALLENGE_PROPOSAL]: [\n    \"Your proposal challenge was submitted!\",\n    <>\n      <ModalContent />\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_FOR_PROPOSAL_CHALLENGE]: [\n    \"There was a problem with your proposal challenge\",\n    \"Before proposing a new value, you need to confirm the approval of your proposal challenge token deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.CHALLENGE_PROPOSAL]: [\n    \"Your proposal challenge was not submitted\",\n    \"To submit a proposal challenge, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_FOR_PROPOSAL_CHALLENGE]: [\n    \"There was a problem with your proposal challenge\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>\n          You have sufficient CVL in your account for the Parameter Proposal Challenge Deposit\n        </ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.CHALLENGE_PROPOSAL]: [\n    \"The was an problem with submitting your proposal challenge\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ChallengeProposal extends React.Component<ChallengeProposalProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n  }\n\n  public render(): JSX.Element {\n    const challengeProposalProps = {\n      ...this.props,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onChallengeProposalSuccess,\n    };\n\n    return <ChallengeProposalComponent {...challengeProposalProps} />;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_FOR_PROPOSAL_CHALLENGE,\n          });\n          return this.context.approveForProposalChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.CHALLENGE_PROPOSAL,\n          });\n          return this.challengeProposal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onChallengeProposalSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private challengeProposal = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    return this.context.challengeReparameterization(this.props.challengeProposalID!.toString());\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeProposalProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeProposal);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/ChallengeProposalCommitVote.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, formatEther, parseEther, TxHash } from \"@joincivil/typescript-types\";\n\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ChallengeProposalCommitVote as ChallengeProposalCommitVoteComponent,\n  TChallengeProposalCommitVoteProps as ChallengeProposalCommitVoteComponentProps,\n  ChallengeProposalReviewVote,\n  ChallengeProposalReviewVoteProps,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport { fetchSalt } from \"../../helpers/salt\";\nimport { saveVote } from \"../../helpers/vote\";\n\nimport { ChallengeDetailProps, ChallengeVoteState } from \"./ChallengeProposalDetail\";\n\nenum TransactionTypes {\n  APPROVE_VOTING_RIGHTS = \"APPROVE_VOTING_RIGHTS\",\n  COMMIT_VOTE = \"COMMIT_VOTE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"Approve For Proposal Challenge\",\n  [TransactionTypes.COMMIT_VOTE]: \"Challenge Proposal\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"1 of 2\",\n  [TransactionTypes.COMMIT_VOTE]: \"2 of 2\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [undefined, undefined],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"Your proposal challenge was submitted!\",\n    <>\n      <ModalContent />\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"There was a problem with your proposal challenge\",\n    \"Before proposing a new value, you need to confirm the approval of your proposal challenge token deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"Your proposal challenge was not submitted\",\n    \"To submit a proposal challenge, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"There was a problem with your proposal challenge\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>\n          You have sufficient CVL in your account for the Parameter Proposal Challenge Deposit\n        </ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"The was an problem with submitting your proposal challenge\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ChallengeProposalCommitVote extends React.Component<\n  ChallengeDetailProps & ChallengeProposalCommitVoteComponentProps & InjectedTransactionStatusModalProps,\n  ChallengeVoteState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public constructor(\n    props: ChallengeDetailProps & ChallengeProposalCommitVoteComponentProps & InjectedTransactionStatusModalProps,\n  ) {\n    super(props);\n    this.state = {\n      isReviewVoteModalOpen: false,\n      voteOption: undefined,\n      numTokens: undefined,\n    };\n  }\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n  }\n\n  public render(): JSX.Element {\n    const salt = fetchSalt(this.props.challengeID, this.props.user);\n    const challengeProposalCommitVoteProps = {\n      ...this.props,\n      numTokens: this.state.numTokens,\n      voteOption: this.state.voteOption,\n      salt,\n      onInputChange: this.updateCommitVoteState,\n      onCommitMaxTokens: () => this.commitMaxTokens(),\n      challengeID: this.props.challengeID.toString(),\n      onReviewVote: this.handleReviewVote,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onChallengeProposalCommitVoteSuccess,\n    };\n\n    return (\n      <>\n        <ChallengeProposalCommitVoteComponent {...challengeProposalCommitVoteProps} />\n        {this.renderReviewVoteModal()}\n      </>\n    );\n  }\n\n  private renderReviewVoteModal(): JSX.Element {\n    const { challenge } = this.props;\n    const proposalURL = `https://${window.location.hostname}/parameterizer/${this.props.propID}`;\n    const salt = fetchSalt(this.props.challengeID, this.props.user);\n\n    const props: ChallengeProposalReviewVoteProps = {\n      parameterName: this.props.parameterDisplayName,\n      proposalURL,\n      challengeID: this.props.challengeID.toString(),\n      open: this.state.isReviewVoteModalOpen,\n      salt,\n      numTokens: this.state.numTokens,\n      voteOption: this.state.voteOption,\n      userAccount: this.props.user,\n      commitEndDate: challenge.poll.commitEndDate.toNumber(),\n      revealEndDate: challenge.poll.revealEndDate.toNumber(),\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.closeReviewModalAndChallengeDrawer,\n      handleClose: this.closeReviewVoteModal,\n    };\n\n    return <ChallengeProposalReviewVote {...props} />;\n  }\n\n  private updateCommitVoteState = (data: any, callback?: () => void): void => {\n    if (callback) {\n      this.setState({ ...data }, callback);\n    } else {\n      this.setState({ ...data });\n    }\n  };\n\n  private commitMaxTokens(): void {\n    let numTokens: BigNumber;\n    if (!this.props.votingBalance!.isZero()) {\n      numTokens = this.props.votingBalance!;\n    } else {\n      numTokens = this.props.balance!.add(this.props.votingBalance!);\n    }\n    const numTokensString = formatEther(numTokens);\n    this.setState(() => ({ numTokens: numTokensString }));\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_VOTING_RIGHTS,\n          });\n          return this.approveVotingRights();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.COMMIT_VOTE,\n          });\n          return this.commitVoteOnChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onChallengeProposalCommitVoteSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private approveVotingRights = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    const numTokens = parseEther(this.state.numTokens!.toString());\n    return this.context.approveVotingRightsForCommit(numTokens);\n  };\n\n  private commitVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const voteOption: BigNumber = new BigNumber(this.state.voteOption as string);\n    const saltStr = fetchSalt(this.props.challengeID, this.props.user);\n    const salt: BigNumber = new BigNumber(saltStr as string);\n    const numTokens = parseEther(this.state.numTokens!.toString());\n    saveVote(this.props.challengeID, this.props.user, voteOption);\n    return this.context.commitVote(this.props.challengeID, voteOption, salt, numTokens);\n  };\n\n  private handleReviewVote = () => {\n    this.setState({ isReviewVoteModalOpen: true });\n  };\n\n  private closeReviewVoteModal = () => {\n    this.setState({ isReviewVoteModalOpen: false });\n  };\n\n  private closeReviewModalAndChallengeDrawer = () => {\n    this.setState({ isReviewVoteModalOpen: false }, () => {\n      this.props.handleClose();\n    });\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeProposalCommitVote);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/ChallengeProposalDetail.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport {\n  BigNumber,\n  bigNumberify,\n  formatEther,\n  EthAddress,\n  UserChallengeData,\n  ParamPropChallengeData,\n} from \"@joincivil/typescript-types\";\n\nimport { State } from \"../../redux/reducers\";\nimport { getIsMemberOfAppellate } from \"../../selectors\";\n\nimport ChallengeProposalCommitVote from \"./ChallengeProposalCommitVote\";\nimport ChallengeProposalRevealVote from \"./ChallengeProposalRevealVote\";\nimport ChallengeProposalResolve from \"./ChallengeProposalResolve\";\nimport { Query } from \"react-apollo\";\nimport {\n  Parameters,\n  getFormattedTokenBalance,\n  CHALLENGE_QUERY,\n  transformGraphQLDataIntoParamPropChallenge,\n  USER_CHALLENGE_DATA_QUERY,\n  transfromGraphQLDataIntoUserChallengeData,\n} from \"@joincivil/utils\";\nimport { compose } from \"redux\";\nimport { connectParameters, ParametersProps } from \"../utility/HigherOrderComponents\";\n\nexport interface ChallengeDetailContainerProps {\n  challengeID: BigNumber;\n  propID: number;\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterProposalValue: string;\n  showNotFoundMessage?: boolean;\n  parameterName: string;\n  handleClose(): void;\n}\n\nexport interface ChallengeContainerReduxProps {\n  user: EthAddress;\n  balance: BigNumber;\n  votingBalance: BigNumber;\n  govtParameters: any;\n  isMemberOfAppellate: boolean;\n  isGovtProposal?: boolean;\n}\n\nexport interface ChallengeDetailProps {\n  propID: number;\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterProposalValue: string;\n  challengeID: BigNumber;\n  challenge: ParamPropChallengeData;\n  govtParameters?: any;\n  userChallengeData?: UserChallengeData;\n  user: EthAddress;\n  balance?: BigNumber;\n  votingBalance?: BigNumber;\n  isMemberOfAppellate: boolean;\n  isGovtProposal?: boolean;\n  handleClose(): void;\n}\n\nexport interface ChallengeVoteState {\n  isReviewVoteModalOpen: boolean;\n  voteOption?: string;\n  salt?: string;\n  numTokens?: string;\n}\n\n// A container encapsultes the Commit Vote, Reveal Vote and Rewards phases for a Challenge.\n// @TODO(jon): Clean this up... by maybe separating into separate containers for each phase card component\nclass ChallengeDetail extends React.Component<ChallengeDetailProps & ParametersProps> {\n  public render(): JSX.Element {\n    const nowTimestamp = Date.now().valueOf();\n    const commitEndTimestamp = new Date(this.props.challenge.poll.commitEndDate.toNumber() * 1000).valueOf();\n    const revealEndTimestamp = new Date(this.props.challenge.poll.revealEndDate.toNumber() * 1000).valueOf();\n\n    if (nowTimestamp < commitEndTimestamp) {\n      return this.renderCommitStage();\n    } else if (nowTimestamp < revealEndTimestamp) {\n      return this.renderRevealStage();\n    } else {\n      return this.renderResolveStage();\n    }\n  }\n\n  private renderCommitStage(): JSX.Element {\n    const {\n      handleClose,\n      parameterDisplayName,\n      parameterCurrentValue,\n      parameterProposalValue,\n      challenge,\n      balance,\n      votingBalance,\n      userChallengeData,\n    } = this.props;\n    const endTime = challenge.poll.commitEndDate.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.pCommitStageLen).toNumber();\n    const tokenBalance = parseFloat(formatEther(this.props.balance || bigNumberify(0)));\n    const votingTokenBalance = parseFloat(formatEther(this.props.votingBalance || bigNumberify(0)));\n    const tokenBalanceDisplay = balance ? getFormattedTokenBalance(balance) : \"\";\n    const votingTokenBalanceDisplay = votingBalance ? getFormattedTokenBalance(votingBalance) : \"\";\n    const userHasCommittedVote = userChallengeData && !!userChallengeData.didUserCommit;\n\n    const props = {\n      ...this.props,\n      endTime,\n      phaseLength,\n      challenge: challenge!,\n      challenger: challenge!.challenger.toString(),\n      challengeID: this.props.challengeID,\n      user: this.props.user,\n      rewardPool: getFormattedTokenBalance(challenge!.rewardPool),\n      stake: getFormattedTokenBalance(challenge!.stake),\n      userHasCommittedVote,\n      tokenBalance,\n      votingBalance: this.props.votingBalance,\n      votingTokenBalance,\n      tokenBalanceDisplay,\n      votingTokenBalanceDisplay,\n      handleClose,\n      propID: this.props.propID,\n      parameterDisplayName,\n      parameterCurrentValue,\n      parameterProposalValue,\n      isMemberOfAppellate: this.props.isMemberOfAppellate,\n    };\n\n    return <ChallengeProposalCommitVote {...props} />;\n  }\n\n  private renderRevealStage(): JSX.Element {\n    const endTime = this.props.challenge.poll.revealEndDate.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.pRevealStageLen).toNumber();\n    const challenge = this.props.challenge;\n    const userHasRevealedVote = this.props.userChallengeData && !!this.props.userChallengeData.didUserReveal;\n    const userHasCommittedVote = this.props.userChallengeData && !!this.props.userChallengeData.didUserCommit;\n\n    const props = {\n      ...this.props,\n      endTime,\n      phaseLength,\n      userHasRevealedVote,\n      userHasCommittedVote,\n      challenger: challenge!.challenger.toString(),\n      rewardPool: getFormattedTokenBalance(challenge!.rewardPool),\n      stake: getFormattedTokenBalance(challenge!.stake),\n    };\n\n    return <ChallengeProposalRevealVote {...props} />;\n  }\n\n  private renderResolveStage = (): JSX.Element => {\n    let totalVotes = \"\";\n    let votesFor = \"\";\n    let votesAgainst = \"\";\n    let percentFor = \"\";\n    let percentAgainst = \"\";\n\n    const challenge = this.props.challenge;\n    const totalVotesBN = challenge.poll.votesAgainst.add(challenge.poll.votesFor);\n    totalVotes = getFormattedTokenBalance(totalVotesBN);\n    votesFor = getFormattedTokenBalance(challenge.poll.votesFor);\n    votesAgainst = getFormattedTokenBalance(challenge.poll.votesAgainst);\n    if (totalVotesBN.gt(0)) {\n      percentFor = challenge.poll.votesFor\n        .mul(100)\n        .div(totalVotesBN)\n        .toString();\n      percentAgainst = challenge.poll.votesAgainst\n        .mul(100)\n        .div(totalVotesBN)\n        .toString();\n    }\n\n    return (\n      <ChallengeProposalResolve\n        {...this.props}\n        challengeID={this.props.challengeID.toString()}\n        parameterNewValue={this.props.parameterProposalValue.toString()}\n        totalVotes={totalVotes}\n        votesFor={votesFor}\n        votesAgainst={votesAgainst}\n        percentFor={percentFor}\n        percentAgainst={percentAgainst}\n        handleClose={this.props.handleClose}\n      />\n    );\n  };\n}\n\nclass ChallengeContainer extends React.Component<\n  ChallengeDetailContainerProps & ChallengeContainerReduxProps & DispatchProp<any> & ParametersProps\n> {\n  public render(): JSX.Element | null {\n    const { challengeID } = this.props;\n    return (\n      <Query query={CHALLENGE_QUERY} variables={{ challengeID: challengeID.toString() }}>\n        {({ loading, error, data }) => {\n          if (loading) {\n            return <></>;\n          } else if (error) {\n            return this.renderNoChallengeFound();\n          }\n\n          const challengeData = transformGraphQLDataIntoParamPropChallenge(data.challenge);\n          return (\n            <Query\n              query={USER_CHALLENGE_DATA_QUERY}\n              variables={{ userAddr: this.props.user, pollID: challengeID.toString() }}\n            >\n              {({ loading: loadingUserData, error: errorUserData, data: dataUserData }) => {\n                if (loadingUserData) {\n                  return <></>;\n                }\n                if (errorUserData) {\n                  console.error(\"errorUserData: \", errorUserData);\n                }\n                let userChallengeData;\n                if (dataUserData && dataUserData.userChallengeData && dataUserData.userChallengeData.length > 0) {\n                  userChallengeData = transfromGraphQLDataIntoUserChallengeData(\n                    dataUserData.userChallengeData[0],\n                    data.challenge,\n                  );\n                }\n                return (\n                  <ChallengeDetail\n                    propID={this.props.propID}\n                    handleClose={this.props.handleClose}\n                    parameterDisplayName={this.props.parameterDisplayName}\n                    parameterCurrentValue={this.props.parameterCurrentValue}\n                    parameterProposalValue={this.props.parameterProposalValue}\n                    challengeID={challengeID}\n                    challenge={challengeData!}\n                    userChallengeData={userChallengeData}\n                    user={this.props.user}\n                    balance={this.props.balance}\n                    votingBalance={this.props.votingBalance}\n                    govtParameters={this.props.govtParameters}\n                    isMemberOfAppellate={this.props.isMemberOfAppellate}\n                    isGovtProposal={this.props.isGovtProposal}\n                    parameters={this.props.parameters}\n                  />\n                );\n              }}\n            </Query>\n          );\n        }}\n      </Query>\n    );\n  }\n\n  private renderNoChallengeFound = (): JSX.Element => {\n    return <>This is not the challenge that you're looking for.</>;\n  };\n}\n\nconst mapStateToProps = (\n  state: State,\n  ownProps: ChallengeDetailContainerProps,\n): ChallengeContainerReduxProps & ChallengeDetailContainerProps => {\n  const { user, govtParameters } = state.networkDependent;\n\n  const userAcct = user.account;\n  const isMemberOfAppellate = getIsMemberOfAppellate(state);\n\n  const isGovtProposal = govtParameters[ownProps.parameterName] !== undefined;\n\n  return {\n    user: userAcct.account,\n    balance: user.account.balance,\n    votingBalance: user.account.votingBalance,\n    govtParameters,\n    isMemberOfAppellate,\n    isGovtProposal,\n    ...ownProps,\n  };\n};\n\nexport default compose(\n  connectParameters,\n  connect(mapStateToProps),\n)(ChallengeContainer);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/ChallengeProposalResolve.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\n\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ResolveChallengeProposal as ResolveChallengeProposalComponent,\n  ResolveChallengeProposalProps as ResolveChallengeProposalComponentProps,\n  ChallengeResultsProps,\n  ModalContent,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nexport interface ChallegeProposalResolveProps extends ResolveChallengeProposalComponentProps, ChallengeResultsProps {\n  propID: number;\n  parameterDisplayName: string | JSX.Element;\n  parameterCurrentValue: string;\n  parameterNewValue: string;\n  isGovtProposal?: boolean;\n  handleClose(): void;\n}\n\nenum TransactionTypes {\n  RESOLVE_CHALLENGE = \"RESOLVE_CHALLENGE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: \"Resolve Challenge\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: [\n    \"Thanks for resolving this challenge.\",\n    <ModalContent>\n      Voters can now collect rewards from their votes on this challenge, if they are available.\n    </ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: [\n    \"The challenge was not resolved\",\n    \"To resolve the challenge, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: [\n    \"The was an problem with resolving this challenge\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ChallengeProposalResolve extends React.Component<\n  ChallegeProposalResolveProps & InjectedTransactionStatusModalProps\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n  }\n\n  public render(): JSX.Element {\n    const createProposalProps = {\n      ...this.props,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onChallengeProposalResolveSuccess,\n    };\n\n    return <ResolveChallengeProposalComponent {...createProposalProps} />;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            transactionType: TransactionTypes.RESOLVE_CHALLENGE,\n          });\n          return this.resolveChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onChallengeProposalResolveSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private resolveChallenge = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    if (this.props.isGovtProposal) {\n      return this.context.updateGovernmentProposal(this.props.propID.toString());\n    } else {\n      return this.context.resolveReparameterizationChallenge(this.props.propID!.toString());\n    }\n  };\n}\n\nexport default compose<React.ComponentClass<ChallegeProposalResolveProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeProposalResolve);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/ChallengeProposalRevealVote.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\n\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ChallengeProposalRevealVote as ChallengeProposalRevealVoteComponent,\n  TChallengeProposalRevealVoteProps as ChallengeProposalRevealVoteComponentProps,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n} from \"@joincivil/components\";\nimport { getLocalDateTimeStrings, urlConstants as links } from \"@joincivil/utils\";\n\nimport {\n  InjectedTransactionStatusModalProps,\n  hasTransactionStatusModals,\n  TransactionStatusModalContentMap,\n} from \"../utility/TransactionStatusModalsHOC\";\nimport { fetchSalt } from \"../../helpers/salt\";\nimport { fetchVote } from \"../../helpers/vote\";\n\nimport { ChallengeDetailProps, ChallengeVoteState } from \"./ChallengeProposalDetail\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\n\nenum TransactionTypes {\n  REVEAL_VOTE = \"REVEAL_VOTE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.REVEAL_VOTE]: \"Confirm Vote\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.REVEAL_VOTE]: [\n    \"Your vote was not confirmed\",\n    \"To confirm your vote, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.REVEAL_VOTE]: [\n    \"The was an problem with revealing your vote\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>Your vote selection matches the vote you committed</ModalListItem>\n        <ModalListItem>Your secret phrase is correct</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ChallengeProposalRevealVote extends React.Component<\n  ChallengeDetailProps & ChallengeProposalRevealVoteComponentProps & InjectedTransactionStatusModalProps,\n  ChallengeVoteState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(\n    props: ChallengeDetailProps & ChallengeProposalRevealVoteComponentProps & InjectedTransactionStatusModalProps,\n  ) {\n    super(props);\n    this.state = {\n      isReviewVoteModalOpen: false,\n      voteOption: this.getVoteOption(),\n      salt: fetchSalt(this.props.challengeID, this.props.user),\n      numTokens: undefined,\n    };\n  }\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n\n    const transactionSuccessContent = this.getTransactionSuccessContent();\n    this.props.setTransactionStatusModalConfig({\n      transactionSuccessContent,\n    });\n  }\n\n  public render(): JSX.Element {\n    const revealVoteProps = {\n      ...this.props,\n      onInputChange: this.updateRevealVoteState,\n      voteOption: this.state.voteOption,\n      salt: this.state.salt,\n      challengeID: this.props.challengeID.toString(),\n      transactions: this.getTransactions(),\n      votingSmartContractFaqURL: links.FAQ_WHAT_IS_PLCR_CONTRACT,\n      postExecuteTransactions: this.onRevealVoteSuccess,\n    };\n\n    return <ChallengeProposalRevealVoteComponent {...revealVoteProps} />;\n  }\n\n  private getVoteOption(): string | undefined {\n    const fetchedVote = fetchVote(this.props.challengeID, this.props.user);\n    let voteOption;\n    if (fetchedVote) {\n      voteOption = fetchedVote.toString();\n    }\n    return voteOption;\n  }\n\n  private updateRevealVoteState = (data: any, callback?: () => void): void => {\n    if (callback) {\n      this.setState({ ...data }, callback);\n    } else {\n      this.setState({ ...data });\n    }\n  };\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            transactionType: TransactionTypes.REVEAL_VOTE,\n          });\n          return this.revealVoteOnChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private getTransactionSuccessContent = (): TransactionStatusModalContentMap => {\n    const endTime = getLocalDateTimeStrings(this.props.challenge.poll.revealEndDate.toNumber());\n    return {\n      [TransactionTypes.REVEAL_VOTE]: [\n        \"Thanks for confirming your vote.\",\n        <>\n          <ModalContent>\n            We are still waiting for all voters to confirm their votes. Please check back after{\" \"}\n            <strong>\n              {endTime[0]} {endTime[1]}\n            </strong>{\" \"}\n            to see voting results. Thank you for your patience!\n          </ModalContent>\n        </>,\n      ],\n    };\n  };\n\n  private onRevealVoteSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private revealVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const voteOption: BigNumber = new BigNumber(this.state.voteOption as string);\n    const salt: BigNumber = new BigNumber(this.state.salt as string);\n    return this.context.revealVote(this.props.challengeID, voteOption, salt);\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeProposalRevealVote);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/CreateGovtProposal.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\n\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  CreateGovtProposal as CreateGovtProposalComponent,\n  CreateGovtProposalProps as CreateProposalComponentProps,\n  ModalContent,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nimport { amountParams } from \"./constants\";\n\nexport interface CreateGovtProposalProps extends CreateProposalComponentProps {\n  createProposalParameterName: string;\n}\n\nenum TransactionTypes {\n  PROPOSE_REPARAMETERIZATION = \"PROPOSE_REPARAMETERIZATION\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: \"Propose New Govt Parameter Value\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: \"1 of 1\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: [\n    \"Your proposal was submitted!\",\n    <>\n      <ModalContent />\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: [\n    \"Your proposal was not submitted\",\n    \"To submit a proposal, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: [\n    \"The was an problem with submitting your proposal\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass CreateGovtProposal extends React.Component<CreateGovtProposalProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n  }\n\n  public render(): JSX.Element {\n    console.log(\"Create Govt Proposal\");\n    const createProposalProps = {\n      ...this.props,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onProposeReparameterizationSuccess,\n    };\n\n    return <CreateGovtProposalComponent {...createProposalProps} />;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.PROPOSE_REPARAMETERIZATION,\n          });\n          return this.proposeReparameterization();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onProposeReparameterizationSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private proposeReparameterization = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    let newValue: BigNumber = new BigNumber(this.props.parameterProposalValue!);\n    if (amountParams.includes(this.props.createProposalParameterName!)) {\n      newValue = newValue.mul(1e18);\n    }\n    return this.context.updateGovernmentParameter(this.props.createProposalParameterName!, newValue);\n  };\n}\n\nexport default compose<React.ComponentClass<CreateGovtProposalProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(CreateGovtProposal);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/CreateProposal.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\n\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  CreateProposal as CreateProposalComponent,\n  CreateProposalProps as CreateProposalComponentProps,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nimport { amountParams } from \"./constants\";\n\nexport interface CreateProposalProps extends CreateProposalComponentProps {\n  createProposalParameterName: string;\n}\n\nenum TransactionTypes {\n  APPROVE_FOR_REPARAMETERIZATION = \"APPROVE_FOR_REPARAMETERIZATION\",\n  PROPOSE_REPARAMETERIZATION = \"PROPOSE_REPARAMETERIZATION\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_FOR_REPARAMETERIZATION]: \"Approve For New Parameterizer Proposal\",\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: \"Propose New Parameter Value\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_FOR_REPARAMETERIZATION]: \"1 of 2\",\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: \"2 of 2\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_FOR_REPARAMETERIZATION]: [undefined, undefined],\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: [\n    \"Your proposal was submitted!\",\n    <>\n      <ModalContent />\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_FOR_REPARAMETERIZATION]: [\n    \"There was a problem with your proposal\",\n    \"Before propossing a new value, you need to confirm the approval of your proposal token deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: [\n    \"Your proposal was not submitted\",\n    \"To submit a proposal, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_FOR_REPARAMETERIZATION]: [\n    \"There was a problem with your proposal\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>You have sufficient CVL in your account for the Parameter Proposal Deposit</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.PROPOSE_REPARAMETERIZATION]: [\n    \"The was an problem with submitting your proposal\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass CreateProposal extends React.Component<CreateProposalProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n  }\n\n  public render(): JSX.Element {\n    const createProposalProps = {\n      ...this.props,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onProposeReparameterizationSuccess,\n    };\n\n    return <CreateProposalComponent {...createProposalProps} />;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_FOR_REPARAMETERIZATION,\n          });\n          return this.context.approveForProposeReparameterization();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.PROPOSE_REPARAMETERIZATION,\n          });\n          return this.proposeReparameterization();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onProposeReparameterizationSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private proposeReparameterization = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    let newValue: BigNumber = new BigNumber(this.props.parameterProposalValue!);\n    if (amountParams.includes(this.props.createProposalParameterName!)) {\n      newValue = newValue.mul(1e18);\n    }\n    return this.context.proposeReparameterization(this.props.createProposalParameterName!, newValue);\n  };\n}\n\nexport default compose<React.ComponentClass<CreateProposalProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(CreateProposal);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/GovernmentReparameterization.tsx",
    "content": "import * as React from \"react\";\nimport { TransactionButton } from \"@joincivil/components\";\nimport { ViewModule, ViewModuleHeader } from \"../utility/ViewModules\";\nimport { StyledFormContainer, FormGroup, InputElement, InputSelectElement } from \"../utility/FormElements\";\nimport { updateGovernmentParameter } from \"../../apis/civilTCR\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nexport interface GovernmentReparameterizationProps {\n  paramKeys: string[];\n}\n\nexport interface GovernmentReparameterizationState {\n  paramName: string;\n  newValue: string;\n}\n\nexport class GovernmentReparameterization extends React.Component<\n  GovernmentReparameterizationProps,\n  GovernmentReparameterizationState\n> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      paramName: this.props.paramKeys[0],\n      newValue: \"\",\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ViewModule>\n        <ViewModuleHeader>Change Government Parameter</ViewModuleHeader>\n        <StyledFormContainer>\n          <FormGroup>\n            <label>\n              Select Parameter\n              <InputSelectElement name=\"paramName\" options={this.props.paramKeys} onChange={this.updateProposalState} />\n            </label>\n          </FormGroup>\n          <FormGroup>\n            <label>\n              Enter New Value\n              <InputElement type=\"text\" name=\"newValue\" onChange={this.updateProposalState} />\n            </label>\n          </FormGroup>\n\n          <FormGroup>\n            <TransactionButton transactions={[{ transaction: this.updateGovernmentParameter }]}>\n              Update Government Parameter\n            </TransactionButton>\n          </FormGroup>\n        </StyledFormContainer>\n      </ViewModule>\n    );\n  }\n\n  public componentWillReceiveProps(nextProps: GovernmentReparameterizationProps): void {\n    // Ensure that the initial `paramName` is set in state\n    // @TODO(jon): This may need to be changed to `getDerivedStateFromProps()` if we upgrade to React 17\n    // @TODO(jon): We might want to prepend the `paramKeys` select element with a placeholder option (ie: Please Select a Parameter) and add some form validation for `paramName` and `propValue`\n    if (!this.props.paramKeys || (!this.props.paramKeys.length && nextProps.paramKeys && nextProps.paramKeys.length)) {\n      this.setState({ paramName: nextProps.paramKeys[0] });\n    }\n  }\n\n  private updateProposalState = (event: any): void => {\n    const paramName = event.target.getAttribute(\"name\");\n    const val = event.target.value;\n    const newState = {};\n    newState[paramName] = val;\n    this.setState(newState);\n  };\n\n  // @TODO(jon): This would probably be a nice place for a confirm dialog\n  private updateGovernmentParameter = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    if (!this.state.paramName || !this.state.newValue.length) {\n      throw new Error(\"oops. the proposal is missing some key args.\");\n    }\n    const newValue: BigNumber = new BigNumber(this.state.newValue);\n    return updateGovernmentParameter(this.state.paramName, newValue);\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/Parameter.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport {\n  CivilContext,\n  Table,\n  Tr,\n  Td,\n  ParameterizerTd,\n  StyledTableAccentText,\n  mediaQueries,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { getFormattedParameterValue, transformGraphQLDataIntoParamProposal } from \"@joincivil/utils\";\nimport { Proposal } from \"./Proposal\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\n\nexport const StyledHiddenOnMobile = styled.div`\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nconst PARAMETER_PROPOSALS_QUERY = gql`\n  query ParamProposals($input: String!) {\n    paramProposals: paramProposals(paramName: $input) {\n      id\n      propID\n      name\n      value\n      deposit\n      appExpiry\n      challengeID\n      proposer\n      accepted\n      expired\n    }\n  }\n`;\n\nexport interface ParameterProps {\n  parameterName: string;\n  parameterDisplayName: string | JSX.Element;\n  parameterValue: BigNumber;\n  canShowCreateProposal: boolean;\n  isGovtProposal?: boolean;\n  handleCreateProposal(paramName: string, currentValue: string): void;\n  handleProposalAction(\n    paramName: string,\n    currentValue: string,\n    newValue: string,\n    proposal: any,\n    actionType: string,\n  ): void;\n}\n\nclass ParameterComponent extends React.Component<ParameterProps> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  public render(): JSX.Element {\n    return (\n      <Tr>\n        <ParameterizerTd data-mobile-th=\"Current Parameter\">{this.props.parameterDisplayName}</ParameterizerTd>\n        <ParameterizerTd data-mobile-th=\"Current Value\">\n          {this.getFormattedValue(this.props.parameterValue)}\n        </ParameterizerTd>\n        <ParameterizerTd accent padding={0}>\n          <Table borderWidth=\"0\" width=\"100%\">\n            <tbody>\n              {this.props.canShowCreateProposal && this.renderCreateProposalAction()}\n              {this.renderProposals()}\n            </tbody>\n          </Table>\n        </ParameterizerTd>\n      </Tr>\n    );\n    return <></>;\n  }\n\n  private renderCreateProposalAction(): JSX.Element {\n    return (\n      <Tr>\n        <Td align=\"right\" colSpan={3}>\n          <StyledHiddenOnMobile>\n            <StyledTableAccentText strong>\n              <span onClick={this.onCreateProposal}>Propose New Value</span>\n            </StyledTableAccentText>\n          </StyledHiddenOnMobile>\n        </Td>\n      </Tr>\n    );\n  }\n\n  private renderProposals(): JSX.Element {\n    return (\n      <Query query={PARAMETER_PROPOSALS_QUERY} variables={{ input: this.props.parameterName }}>\n        {({ loading, error, data }) => {\n          if (loading || error) {\n            return <></>;\n          }\n          return data.paramProposals.map(prop => {\n            const proposal = transformGraphQLDataIntoParamProposal(prop);\n            return (\n              <Proposal\n                key={proposal.propID}\n                proposal={proposal}\n                handleProposalAction={this.props.handleProposalAction}\n                parameterName={this.props.parameterName}\n                parameterValue={this.props.parameterValue}\n              />\n            );\n          });\n        }}\n      </Query>\n    );\n  }\n\n  private onCreateProposal = (event: any) => {\n    this.props.handleCreateProposal(this.props.parameterName, this.getFormattedValue(this.props.parameterValue));\n  };\n\n  private getFormattedValue = (parameterValue: BigNumber): string => {\n    const { civil } = this.context;\n    return getFormattedParameterValue(this.props.parameterName, civil.toBigNumber(parameterValue.toString()));\n  };\n}\n\nexport const Parameter = ParameterComponent;\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/ProcessProposal.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ProcessProposal as ProcessProposalComponent,\n  ProcessProposalProps as ProcessProposalComponentProps,\n  ModalContent,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nexport interface ProcessProposalProps extends ProcessProposalComponentProps {\n  challengeProposalID: number;\n}\n\nenum TransactionTypes {\n  PROCESS_PROPOSAL = \"PROCESS_PROPOSAL\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.PROCESS_PROPOSAL]: \"Approve For Proposal Challenge\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.PROCESS_PROPOSAL]: [\n    \"The proposal was successfully processed!\",\n    <>\n      <ModalContent />\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.PROCESS_PROPOSAL]: [\n    \"The proposal was not processed\",\n    \"To process a proposal, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.PROCESS_PROPOSAL]: [\n    \"The was an problem processing the proposal\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ProcessProposal extends React.Component<ProcessProposalProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.props.handleClose);\n  }\n\n  public render(): JSX.Element {\n    const challengeProposalProps = {\n      ...this.props,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onProcessProposalSuccess,\n    };\n\n    return <ProcessProposalComponent {...challengeProposalProps} />;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.PROCESS_PROPOSAL,\n          });\n          return this.updateProposal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onProcessProposalSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n    this.props.handleClose();\n  };\n\n  private updateProposal = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    return this.context.updateReparameterizationProp(this.props.challengeProposalID!.toString());\n  };\n}\n\nexport default compose<React.ComponentClass<ProcessProposalProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ProcessProposal);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/Proposal.tsx",
    "content": "import * as React from \"react\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { getFormattedParameterValue, POLL_QUERY } from \"@joincivil/utils\";\nimport { CivilContext, Tr, Td, StyledTableAccentText, TextCountdownTimer, ICivilContext } from \"@joincivil/components\";\n\nimport { StyledHiddenOnMobile } from \"./Parameter\";\nimport { Query } from \"react-apollo\";\n\nexport interface ProposalProps {\n  proposal: any;\n  parameterName: string;\n  parameterValue: BigNumber;\n  handleProposalAction(paramName: string, currentValue: string, newValue: string, proposal: any): void;\n}\n\nexport class Proposal extends React.Component<ProposalProps> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  public render(): JSX.Element {\n    return (\n      <Tr>\n        <Td>\n          <StyledTableAccentText>{this.getFormattedValue(this.props.proposal.propValue)}</StyledTableAccentText>\n        </Td>\n        {this.renderProposalStageActions()}\n      </Tr>\n    );\n  }\n\n  private renderProposalStageActions = (): JSX.Element => {\n    const { pollID, applicationExpiry } = this.props.proposal;\n    if (!pollID || pollID.eq(0)) {\n      if (new Date(applicationExpiry * 1000).valueOf() < Date.now().valueOf()) {\n        return this.renderUpdateParam();\n      } else {\n        return this.renderCanBeChallenged();\n      }\n    } else {\n      return this.renderChallenge();\n    }\n  };\n\n  private renderCanBeChallenged = (): JSX.Element => {\n    return (\n      <>\n        <Td>\n          <TextCountdownTimer endTime={new Date(this.props.proposal.applicationExpiry * 1000).valueOf() / 1000} />\n        </Td>\n        <Td align=\"right\">\n          <StyledHiddenOnMobile>\n            <StyledTableAccentText strong>\n              <span onClick={() => this.onProposalAction(\"challenge\")}>Challenge Proposal</span>\n            </StyledTableAccentText>\n          </StyledHiddenOnMobile>\n        </Td>\n      </>\n    );\n  };\n\n  private renderUpdateParam = (): JSX.Element => {\n    return (\n      <>\n        <Td>\n          <TextCountdownTimer endTime={new Date(this.props.proposal.applicationExpiry * 1000).valueOf() / 1000} />\n        </Td>\n        <Td align=\"right\">\n          <StyledHiddenOnMobile>\n            <StyledTableAccentText strong>\n              <span onClick={() => this.onProposalAction(\"update\")}>Update Parameter</span>\n            </StyledTableAccentText>\n          </StyledHiddenOnMobile>\n        </Td>\n      </>\n    );\n  };\n\n  private renderChallenge = (): JSX.Element => {\n    const pollID = this.props.proposal.pollID.toNumber();\n    return (\n      <Query query={POLL_QUERY} variables={{ input: pollID }}>\n        {({ loading, error, data }) => {\n          if (loading || error) {\n            return <></>;\n          }\n          const nowTimestamp = Date.now().valueOf();\n          const commitEndTimestamp = new Date(data.poll.commitEndDate * 1000).valueOf();\n          const revealEndTimestamp = new Date(data.poll.revealEndDate * 1000).valueOf();\n\n          if (nowTimestamp < commitEndTimestamp) {\n            return this.renderCommitState(commitEndTimestamp);\n          } else if (nowTimestamp < revealEndTimestamp) {\n            return this.renderRevealState(revealEndTimestamp);\n          } else {\n            return this.renderResolveChallenge(revealEndTimestamp);\n          }\n        }}\n      </Query>\n    );\n  };\n\n  private renderResolveChallenge = (endTimestamp: number): JSX.Element => {\n    return (\n      <>\n        <Td>\n          <TextCountdownTimer endTime={endTimestamp / 1000} />\n        </Td>\n        <Td align=\"right\">\n          <StyledHiddenOnMobile>\n            <StyledTableAccentText strong>\n              <span onClick={() => this.onProposalAction(\"resolve\")}>Resolve Challenge</span>\n            </StyledTableAccentText>\n          </StyledHiddenOnMobile>\n        </Td>\n      </>\n    );\n  };\n\n  private renderCommitState = (endTimestamp: number): JSX.Element => {\n    return (\n      <>\n        <Td>\n          <TextCountdownTimer endTime={endTimestamp / 1000} />\n        </Td>\n        <Td align=\"right\">\n          <StyledHiddenOnMobile>\n            <StyledTableAccentText strong>\n              <span onClick={() => this.onProposalAction(\"commit\")}>Commit Vote</span>\n            </StyledTableAccentText>\n          </StyledHiddenOnMobile>\n        </Td>\n      </>\n    );\n  };\n\n  private renderRevealState = (endTimestamp: number): JSX.Element => {\n    return (\n      <>\n        <Td>\n          <TextCountdownTimer endTime={endTimestamp / 1000} />\n        </Td>\n        <Td align=\"right\">\n          <StyledHiddenOnMobile>\n            <StyledTableAccentText strong>\n              <span onClick={() => this.onProposalAction(\"reveal\")}>Reveal Vote</span>\n            </StyledTableAccentText>\n          </StyledHiddenOnMobile>\n        </Td>\n      </>\n    );\n  };\n\n  private onProposalAction = (actionType: string) => {\n    this.props.handleProposalAction(\n      this.props.parameterName,\n      this.getFormattedValue(this.props.parameterValue),\n      this.getFormattedValue(this.props.proposal!.propValue),\n      this.props.proposal,\n      actionType,\n    );\n  };\n\n  private getFormattedValue = (parameterValue: BigNumber): string => {\n    const { civil } = this.context;\n    return getFormattedParameterValue(this.props.parameterName, civil.toBigNumber(parameterValue.toString()));\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/constants.ts",
    "content": "import { Parameters, GovernmentParameters } from \"@joincivil/utils\";\n\nexport const amountParams: string[] = [Parameters.minDeposit, Parameters.pMinDeposit, GovernmentParameters.appealFee];\n\nexport const durationParams: string[] = [\n  Parameters.applyStageLen,\n  Parameters.pApplyStageLen,\n  Parameters.commitStageLen,\n  Parameters.pCommitStageLen,\n  Parameters.revealStageLen,\n  Parameters.pRevealStageLen,\n  Parameters.challengeAppealLen,\n  Parameters.challengeAppealCommitLen,\n  Parameters.challengeAppealRevealLen,\n  GovernmentParameters.requestAppealLen,\n  GovernmentParameters.judgeAppealLen,\n  GovernmentParameters.govtPCommitStageLen,\n  GovernmentParameters.govtPRevealStageLen,\n];\n\nexport const percentParams: string[] = [\n  Parameters.dispensationPct,\n  Parameters.pDispensationPct,\n  Parameters.voteQuorum,\n  Parameters.pVoteQuorum,\n  GovernmentParameters.appealVotePercentage,\n  GovernmentParameters.appealChallengeVoteDispensationPct,\n];\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/index.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { Helmet } from \"react-helmet\";\n\nimport {\n  colors,\n  fonts,\n  mediaQueries,\n  CivilContext,\n  Table,\n  Tr,\n  Th,\n  Tabs,\n  Tab,\n  StyledContentRow,\n  StyledParameterizerContainer,\n  StyledDashboardSubTab,\n  MinDepositLabelText,\n  ParamMinDepositLabelText,\n  ApplicationStageLenLabelText,\n  ParamApplicationStageLenLabelText,\n  CommitStageLenLabelText,\n  ParamCommitStageLenLabelText,\n  RevealStageLenLabelText,\n  ParamRevealStageLenLabelText,\n  DispensationPctLabelText,\n  ParamDispensationPctLabelText,\n  VoteQuorumLabelText,\n  ParamVoteQuorumLabelText,\n  ChallengeAppealLenLabelText,\n  ChallengeAppealCommitStageLenLabelText,\n  ChallengeAppealRevealStageLenLabelText,\n  RequestAppealLenLabelText,\n  JudgeAppealLenLabelText,\n  AppealFeeLabelText,\n  AppealVotePercentageLabelText,\n  GovtProposalCommitStageLenLabelText,\n  GovtProposalRevealStageLenLabelText,\n  AppealVoteDispensationPctLabelText,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { getFormattedParameterValue, Parameters, GovernmentParameters } from \"@joincivil/utils\";\n\nimport { State } from \"../../redux/reducers\";\nimport ListingDiscourse from \"../listing/ListingDiscourse\";\nimport { getIsMemberOfAppellate } from \"../../selectors\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\n\nimport { amountParams, durationParams, percentParams } from \"./constants\";\nimport { Parameter } from \"./Parameter\";\nimport CreateProposal from \"./CreateProposal\";\nimport CreateGovtProposal from \"./CreateGovtProposal\";\nimport ChallengeProposal from \"./ChallengeProposal\";\nimport ChallengeContainer from \"./ChallengeProposalDetail\";\nimport ProcessProposal from \"./ProcessProposal\";\nimport { connectParameters, ParametersProps } from \"../utility/HigherOrderComponents\";\nimport { compose } from \"redux\";\n\nconst GridRow = styled(StyledContentRow)`\n  padding-top: 71px;\n\n  ${mediaQueries.MOBILE} {\n    padding-top: 42px;\n  }\n`;\n\nconst GridRowStatic = styled.div`\n  margin: 0 auto;\n  width: 1200px;\n\n  ${mediaQueries.MOBILE} {\n    width: auto;\n  }\n`;\n\nconst StyledTabContainer = styled.div`\n  padding: 30px 0 50px;\n`;\n\nconst StyledTabComponent = styled(StyledDashboardSubTab)`\n  font-size: 18px;\n  line-height: 21px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 16px;\n    line-height: 19px;\n\n    &:first-of-type {\n      margin: 0 16px;\n    }\n  }\n`;\n\nconst StyledTitle = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SERIF};\n  font-size: 48px;\n  font-weight: 200;\n  margin: 0;\n  line-height: 40px;\n  letter-spacing: -0.19px;\n  width: 350px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 32px;\n    letter-spacing: -0.3px;\n    line-height: 36px;\n    margin: 0 16px 16px;\n    width: auto;\n  }\n`;\n\nconst StyledDescriptionP = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 18px;\n  line-height: 33px;\n  letter-spacing: -0.12px;\n  width: 730px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 16px;\n    line-height: 26px;\n    margin-left: 16px;\n    margin-right: 16px;\n    width: auto;\n  }\n`;\n\nconst StyledP = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1}\n  font-size: 16px;\n  line-height: 20px;\n  letter-spacing: -0.11px;\n  max-width: 730px;\n\n  ${mediaQueries.MOBILE} {\n    line-height: 26px;\n    margin-left: 16px;\n    margin-right: 16px;\n  }\n`;\n\nconst ParameterizerKeys = [\n  Parameters.minDeposit,\n  Parameters.pMinDeposit,\n  Parameters.applyStageLen,\n  Parameters.pApplyStageLen,\n  Parameters.commitStageLen,\n  Parameters.pCommitStageLen,\n  Parameters.revealStageLen,\n  Parameters.pRevealStageLen,\n  Parameters.dispensationPct,\n  Parameters.pDispensationPct,\n  Parameters.voteQuorum,\n  Parameters.pVoteQuorum,\n  Parameters.challengeAppealLen,\n  Parameters.challengeAppealCommitLen,\n  Parameters.challengeAppealRevealLen,\n];\n\nexport interface GovernmentParameterProps {\n  [GovernmentParameters.requestAppealLen]: BigNumber;\n  [GovernmentParameters.judgeAppealLen]: BigNumber;\n  [GovernmentParameters.appealFee]: BigNumber;\n  [GovernmentParameters.appealVotePercentage]: BigNumber;\n  [GovernmentParameters.appealChallengeVoteDispensationPct]: BigNumber;\n  [GovernmentParameters.govtPCommitStageLen]: BigNumber;\n  [GovernmentParameters.govtPRevealStageLen]: BigNumber;\n}\n\nexport interface ParameterizerPageProps {\n  govtParameters: GovernmentParameterProps;\n  isMemberOfAppellate: boolean;\n}\n\nexport interface ParameterizerPageState {\n  isCreateProposalVisible: boolean;\n  isCreateGovtProposalVisible: boolean;\n  createProposalParameterName?: string;\n  createProposalParameterCurrentValue?: string;\n  createProposalNewValue?: string;\n  isProposalActionVisible: boolean;\n  challengeProposalID?: number;\n  challengeProposalNewValue?: string;\n  proposal?: any;\n  actionType?: string;\n}\n\nclass Parameterizer extends React.Component<\n  ParameterizerPageProps & DispatchProp<any> & ParametersProps,\n  ParameterizerPageState\n> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  constructor(props: ParameterizerPageProps & DispatchProp<any> & ParametersProps) {\n    super(props);\n\n    this.state = {\n      isCreateProposalVisible: false,\n      isCreateGovtProposalVisible: false,\n      isProposalActionVisible: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    const { civil } = this.context;\n    const { parameters } = this.props;\n    const proposalMinDeposit =\n      parameters &&\n      parameters.get(Parameters.pMinDeposit) &&\n      getFormattedParameterValue(Parameters.pMinDeposit, civil!.toBigNumber(parameters.get(Parameters.pMinDeposit)));\n\n    const params = ParameterizerKeys.map(paramName => {\n      const value = parameters.get(paramName);\n      return (\n        <Parameter\n          key={paramName}\n          parameterName={paramName}\n          parameterDisplayName={this.getParameterDisplayName(paramName)}\n          parameterValue={value}\n          handleCreateProposal={this.showCreateProposal}\n          handleProposalAction={this.showProposalAction}\n          canShowCreateProposal={true}\n        />\n      );\n    });\n\n    return (\n      <>\n        <ScrollToTopOnMount />\n        <Helmet title=\"Registry Parameters - The Civil Registry\" />\n        <GridRow>\n          <StyledTitle>Civil Registry Parameters</StyledTitle>\n          <StyledDescriptionP>\n            The Civil Registry runs on a set of rules called \"parameters\". These parameters control almost every\n            function of the Registry's governance, from how much it costs to challenge a newsroom to how long the voting\n            process will take. The Civil community has the power to propose new values for these parameters and new\n            rules as the Civil platform evolves.\n          </StyledDescriptionP>\n        </GridRow>\n        <StyledContentRow>\n          <Tabs TabComponent={StyledTabComponent}>\n            <Tab title=\"Current Parameters\">\n              <StyledTabContainer>\n                <StyledP>\n                  All Civil token holders may propose a change to the current Registry values. This process involves\n                  three phases: proposal, challenge, and vote.\n                </StyledP>\n                <StyledP>\n                  Proposing new values and challenging a proposal <b>requires a deposit of {proposalMinDeposit}</b>.\n                </StyledP>\n\n                <StyledParameterizerContainer>\n                  <Table width=\"100%\">\n                    <thead>\n                      <Tr>\n                        <Th width=\"300\">Current Parameter</Th>\n                        <Th>Current Value</Th>\n                        <Th accent>Proposal for New Value</Th>\n                      </Tr>\n                    </thead>\n                    <tbody>{params}</tbody>\n                  </Table>\n                </StyledParameterizerContainer>\n              </StyledTabContainer>\n            </Tab>\n\n            <Tab title=\"Government Parameters\">\n              <StyledTabContainer>\n                <StyledP>\n                  Civil Council members may propose a change to the current Council Parameters. Once proposed, a vote is\n                  begun immediately in which the CVL community can vote to accept or reject it.\n                </StyledP>\n                <StyledParameterizerContainer>\n                  <Table width=\"100%\">\n                    <thead>\n                      <Tr>\n                        <Th>Current Parameter</Th>\n                        <Th>Current Value</Th>\n                        <Th colSpan={3} accent>\n                          Proposal for New Value\n                        </Th>\n                      </Tr>\n                    </thead>\n                    <tbody>\n                      {Object.keys(this.props.govtParameters).map(key => {\n                        if (!this.props.govtParameters[key]) {\n                          return <></>;\n                        }\n                        return (\n                          <Parameter\n                            key={key}\n                            parameterName={key}\n                            parameterDisplayName={this.getParameterDisplayName(key)}\n                            parameterValue={this.props.govtParameters[key]}\n                            handleCreateProposal={this.showCreateGovtProposal}\n                            handleProposalAction={this.showProposalAction}\n                            canShowCreateProposal={this.props.isMemberOfAppellate}\n                            isGovtProposal={true}\n                          />\n                        );\n                      })}\n                    </tbody>\n                  </Table>\n                </StyledParameterizerContainer>\n              </StyledTabContainer>\n            </Tab>\n          </Tabs>\n        </StyledContentRow>\n\n        <GridRowStatic>\n          <ListingDiscourse />\n        </GridRowStatic>\n\n        {this.state.isCreateProposalVisible && this.renderCreateProposal()}\n        {this.state.isCreateGovtProposalVisible && this.renderCreateGovtProposal()}\n        {this.state.isProposalActionVisible && this.renderProposalAction()}\n      </>\n    );\n  }\n\n  private renderCreateProposal = (): JSX.Element => {\n    const proposalMinDeposit = getFormattedParameterValue(\n      Parameters.pMinDeposit,\n      this.props.parameters.get(Parameters.pMinDeposit),\n    );\n    const pApplyLenText = getFormattedParameterValue(\n      Parameters.pApplyStageLen,\n      this.props.parameters.get(Parameters.pApplyStageLen),\n    );\n    return (\n      <CreateProposal\n        pApplyLenText={pApplyLenText}\n        parameterDisplayName={this.getParameterDisplayName(this.state.createProposalParameterName!)}\n        parameterCurrentValue={this.state.createProposalParameterCurrentValue!}\n        parameterDisplayUnits={this.getParameterDisplayUnits(this.state.createProposalParameterName!)}\n        createProposalParameterName={this.state.createProposalParameterName!}\n        parameterProposalValue={this.state.createProposalNewValue!}\n        proposalDeposit={proposalMinDeposit}\n        handleClose={this.hideCreateProposal}\n        handleUpdateProposalValue={this.updateProposalNewValue}\n      />\n    );\n  };\n\n  private renderCreateGovtProposal = (): JSX.Element => {\n    return (\n      <CreateGovtProposal\n        parameterDisplayName={this.getParameterDisplayName(this.state.createProposalParameterName!)}\n        parameterCurrentValue={this.state.createProposalParameterCurrentValue!}\n        parameterDisplayUnits={this.getParameterDisplayUnits(this.state.createProposalParameterName!)}\n        createProposalParameterName={this.state.createProposalParameterName!}\n        parameterProposalValue={this.state.createProposalNewValue!}\n        handleClose={this.hideCreateGovtProposal}\n        handleUpdateProposalValue={this.updateProposalNewValue}\n      />\n    );\n  };\n\n  private renderProposalAction = (): JSX.Element => {\n    const { actionType } = this.state;\n    switch (actionType) {\n      case \"challenge\":\n        return this.renderChallengeProposal();\n      case \"reveal\":\n      case \"commit\":\n      case \"resolve\":\n        return this.renderChallengeDetail();\n      case \"update\":\n        return this.renderUpdateParam();\n      default:\n        return <></>;\n    }\n  };\n\n  private renderUpdateParam = (): JSX.Element => {\n    return (\n      <ProcessProposal\n        challengeProposalID={this.state.challengeProposalID!}\n        parameterDisplayName={this.getParameterDisplayName(this.state.createProposalParameterName!)}\n        parameterCurrentValue={this.state.createProposalParameterCurrentValue!}\n        parameterProposalValue={this.state.createProposalNewValue!}\n        parameterNewValue={this.state.challengeProposalNewValue!}\n        handleClose={this.hideProposalAction}\n      />\n    );\n  };\n\n  private renderChallengeProposal = (): JSX.Element => {\n    const proposalMinDeposit = getFormattedParameterValue(\n      Parameters.pMinDeposit,\n      this.props.parameters.get(Parameters.pMinDeposit),\n    );\n\n    return (\n      <ChallengeProposal\n        challengeProposalID={this.state.challengeProposalID!}\n        parameterDisplayName={this.getParameterDisplayName(this.state.createProposalParameterName!)}\n        parameterCurrentValue={this.state.createProposalParameterCurrentValue!}\n        parameterProposalValue={this.state.createProposalNewValue!}\n        parameterNewValue={this.state.challengeProposalNewValue!}\n        proposalDeposit={proposalMinDeposit}\n        handleClose={this.hideProposalAction}\n      />\n    );\n  };\n\n  private renderChallengeDetail = (): JSX.Element => {\n    return (\n      <ChallengeContainer\n        propID={this.state.challengeProposalID!}\n        challengeID={this.state.proposal!.pollID}\n        parameterName={this.state.proposal!.paramName}\n        parameterDisplayName={this.getParameterDisplayName(this.state.createProposalParameterName!)}\n        parameterCurrentValue={this.state.createProposalParameterCurrentValue!}\n        parameterProposalValue={this.state.challengeProposalNewValue!}\n        handleClose={this.hideProposalAction}\n      />\n    );\n  };\n\n  private updateProposalNewValue = (name: string, value: string) => {\n    this.setState(() => ({ createProposalNewValue: value }));\n  };\n\n  private showCreateProposal = (parameterName: string, currentValue: string): void => {\n    this.setState(() => ({\n      createProposalParameterName: parameterName,\n      createProposalParameterCurrentValue: currentValue,\n    }));\n    this.setState(() => ({ isCreateProposalVisible: true }));\n  };\n\n  private showCreateGovtProposal = (parameterName: string, currentValue: string): void => {\n    this.setState(() => ({\n      createProposalParameterName: parameterName,\n      createProposalParameterCurrentValue: currentValue,\n    }));\n    this.setState(() => ({ isCreateGovtProposalVisible: true }));\n  };\n\n  private showProposalAction = (\n    parameterName: string,\n    currentValue: string,\n    newValue: string,\n    proposal: any,\n    actionType: string,\n  ): void => {\n    this.setState(() => ({\n      createProposalParameterName: parameterName,\n      createProposalParameterCurrentValue: currentValue,\n      challengeProposalID: proposal.propID,\n      challengeProposalNewValue: newValue,\n      proposal,\n      actionType,\n    }));\n    this.setState(() => ({ isProposalActionVisible: true }));\n  };\n\n  private hideCreateProposal = (): void => {\n    this.setState(() => ({ isCreateProposalVisible: false }));\n  };\n\n  private hideCreateGovtProposal = (): void => {\n    this.setState(() => ({ isCreateGovtProposalVisible: false }));\n  };\n\n  private hideProposalAction = (): void => {\n    this.setState(() => ({ isProposalActionVisible: false }));\n  };\n\n  private getParameterDisplayName = (parameterName: string): JSX.Element => {\n    const parameterDisplayNameMap = {\n      [Parameters.minDeposit]: MinDepositLabelText,\n      [Parameters.pMinDeposit]: ParamMinDepositLabelText,\n      [GovernmentParameters.appealFee]: AppealFeeLabelText,\n\n      [Parameters.applyStageLen]: ApplicationStageLenLabelText,\n      [Parameters.pApplyStageLen]: ParamApplicationStageLenLabelText,\n      [Parameters.commitStageLen]: CommitStageLenLabelText,\n      [Parameters.pCommitStageLen]: ParamCommitStageLenLabelText,\n      [Parameters.revealStageLen]: RevealStageLenLabelText,\n      [Parameters.pRevealStageLen]: ParamRevealStageLenLabelText,\n      [Parameters.challengeAppealLen]: ChallengeAppealLenLabelText,\n      [Parameters.challengeAppealCommitLen]: ChallengeAppealCommitStageLenLabelText,\n      [Parameters.challengeAppealRevealLen]: ChallengeAppealRevealStageLenLabelText,\n      [GovernmentParameters.requestAppealLen]: RequestAppealLenLabelText,\n      [GovernmentParameters.judgeAppealLen]: JudgeAppealLenLabelText,\n      [GovernmentParameters.govtPCommitStageLen]: GovtProposalCommitStageLenLabelText,\n      [GovernmentParameters.govtPRevealStageLen]: GovtProposalRevealStageLenLabelText,\n\n      [Parameters.dispensationPct]: DispensationPctLabelText,\n      [Parameters.pDispensationPct]: ParamDispensationPctLabelText,\n      [Parameters.voteQuorum]: VoteQuorumLabelText,\n      [Parameters.pVoteQuorum]: ParamVoteQuorumLabelText,\n      [GovernmentParameters.appealVotePercentage]: AppealVotePercentageLabelText,\n      [GovernmentParameters.appealChallengeVoteDispensationPct]: AppealVoteDispensationPctLabelText,\n    };\n\n    let DisplayName: React.FunctionComponent = props => <></>;\n    if (parameterDisplayNameMap[parameterName]) {\n      DisplayName = parameterDisplayNameMap[parameterName];\n    }\n\n    return <DisplayName />;\n  };\n\n  private getParameterDisplayUnits = (parameterName: string): string => {\n    let label = \"\";\n\n    if (amountParams.includes(parameterName)) {\n      label = \"CVL\";\n    } else if (durationParams.includes(parameterName)) {\n      label = \"Seconds\";\n    } else if (percentParams.includes(parameterName)) {\n      label = \"%\";\n    }\n\n    return label;\n  };\n}\n\nconst mapToStateToProps = (state: State): ParameterizerPageProps => {\n  const govtParameters: GovernmentParameterProps = state.networkDependent.govtParameters as GovernmentParameterProps;\n  const isMemberOfAppellate = getIsMemberOfAppellate(state);\n\n  return {\n    govtParameters,\n    isMemberOfAppellate,\n  };\n};\n\nexport default compose(\n  connectParameters,\n  connect(mapToStateToProps),\n)(Parameterizer);\n"
  },
  {
    "path": "packages/dapp/src/components/Parameterizer/proposeReparameterization.tsx",
    "content": "import * as React from \"react\";\nimport { TransactionButton } from \"@joincivil/components\";\nimport { ViewModule, ViewModuleHeader } from \"../utility/ViewModules\";\nimport { StyledFormContainer, FormGroup, InputElement, InputSelectElement } from \"../utility/FormElements\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nexport interface ProposeReparameterizationProps {\n  paramKeys: string[];\n  pMinDeposit: string;\n}\n\nexport interface ProposeReparameterizationState {\n  paramName: string;\n  newValue: string;\n}\n\nexport class ProposeReparameterization extends React.Component<\n  ProposeReparameterizationProps,\n  ProposeReparameterizationState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      paramName: this.props.paramKeys[0],\n      newValue: \"\",\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ViewModule>\n        <ViewModuleHeader>Propose Parameter Update</ViewModuleHeader>\n        <StyledFormContainer>\n          <FormGroup>\n            <label>\n              Select Parameter\n              <InputSelectElement name=\"paramName\" options={this.props.paramKeys} onChange={this.updateProposalState} />\n            </label>\n          </FormGroup>\n          <FormGroup>\n            <label>\n              Enter Proposed Value\n              <InputElement type=\"text\" name=\"newValue\" onChange={this.updateProposalState} />\n            </label>\n          </FormGroup>\n          <FormGroup>\n            CVL token deposit required to submit a proposal: <strong>{this.props.pMinDeposit}</strong>\n          </FormGroup>\n\n          <FormGroup>\n            <TransactionButton\n              transactions={[\n                { transaction: this.context.approveForProposeReparameterization },\n                { transaction: this.proposeReparameterization },\n              ]}\n            >\n              Submit Proposal\n            </TransactionButton>\n          </FormGroup>\n        </StyledFormContainer>\n      </ViewModule>\n    );\n  }\n\n  public componentWillReceiveProps(nextProps: ProposeReparameterizationProps): void {\n    // Ensure that the initial `paramName` is set in state\n    // @TODO(jon): This may need to be changed to `getDerivedStateFromProps()` if we upgrade to React 17\n    // @TODO(jon): We might want to prepend the `paramKeys` select element with a placeholder option (ie: Please Select a Parameter) and add some form validation for `paramName` and `propValue`\n    if (!this.props.paramKeys || (!this.props.paramKeys.length && nextProps.paramKeys && nextProps.paramKeys.length)) {\n      this.setState({ paramName: nextProps.paramKeys[0] });\n    }\n  }\n\n  private updateProposalState = (event: any): void => {\n    const paramName = event.target.getAttribute(\"name\");\n    const val = event.target.value;\n    const newState = {};\n    newState[paramName] = val;\n    this.setState(newState);\n  };\n\n  // @TODO(jon): This would probably be a nice place for a confirm dialog\n  private proposeReparameterization = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    if (!this.state.paramName || !this.state.newValue.length) {\n      throw new Error(\"oops. the proposal is missing some key args.\");\n    }\n    const newValue: BigNumber = new BigNumber(this.state.newValue);\n    return this.context.proposeReparameterization(this.state.paramName, newValue);\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/SignUpNewsroom.tsx",
    "content": "import { RouteComponentProps } from \"react-router-dom\";\nimport { CivilContext } from \"@joincivil/components\";\nimport { Newsroom, STEP } from \"@joincivil/newsroom-signup\";\nimport * as React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { PageView } from \"./utility/ViewModules\";\nimport { State } from \"../redux/reducers\";\n\nexport type CreateNewsroomProps = RouteComponentProps<{\n  action: string;\n}>;\n\nconst SignUpNewsroom: React.FunctionComponent<CreateNewsroomProps> = props => {\n  const { civil } = React.useContext(CivilContext);\n  const networkName = useSelector((state: State) => state.networkName);\n  const userAccount = useSelector((state: State) => state.networkDependent.user.account.account);\n  return (\n    <PageView>\n      <Newsroom\n        civil={civil}\n        account={userAccount}\n        currentNetwork={networkName}\n        forceStep={props.match.params.action === \"manage\" ? STEP.PROFILE_SO_FAR : undefined}\n      />\n    </PageView>\n  );\n};\n\nexport default SignUpNewsroom;\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/CivilComment.tsx",
    "content": "import * as React from \"react\";\nimport {\n  StoryComment,\n  CivilCommentHeader,\n  CivilCommentContent,\n  CivilCommentAvatarContainer,\n  CivilCommentAvatar,\n  CivilCommentHeaderLeft,\n  CivilCommentHeaderRight,\n} from \"./StoryFeedStyledComponents\";\n\nimport { PostComments } from \"./PostComments\";\n\nexport interface CivilCommentProps {\n  comment: any;\n  level: number;\n}\n\nexport const CivilComment: React.FunctionComponent<CivilCommentProps> = props => {\n  const { commentType, text, channel, id, children, numChildren } = props.comment.post;\n  const { tiny72AvatarDataUrl, handle } = channel;\n\n  return (\n    <StoryComment {...props}>\n      <CivilCommentHeader>\n        <CivilCommentHeaderLeft>\n          <CivilCommentAvatarContainer>\n            <CivilCommentAvatar src={tiny72AvatarDataUrl} />\n          </CivilCommentAvatarContainer>\n          {\"@\" + handle}\n        </CivilCommentHeaderLeft>\n        <CivilCommentHeaderRight>{commentType === \"comment_announcement\" && <>ANNOUNCEMENT</>}</CivilCommentHeaderRight>\n      </CivilCommentHeader>\n      <CivilCommentContent>\n        <p>{text}</p>\n      </CivilCommentContent>\n      <PostComments postId={id} comments={children} numComments={numChildren} level={props.level + 1} />\n    </StoryComment>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/MoreComments.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport { LoadingMessage, colors } from \"@joincivil/components\";\nimport { POST_CHILDREN } from \"./queries\";\nimport { CivilComment } from \"./CivilComment\";\nimport styled from \"styled-components\";\n\nexport interface MoreCommentsProps {\n  postId: string;\n  numMoreComments: number;\n  level: number;\n  prevEndCursor: string;\n}\n\nconst TopLevelLoadMoreSpan = styled.span`\n  color: ${colors.accent.CIVIL_BLUE_FADED};\n  font-size: 12;\n  margin-left: 0;\n`;\n\nconst ReplyLoadMoreSpan = styled.span`\n  color: ${colors.accent.CIVIL_BLUE_FADED};\n  font-size: 8;\n  margin-left: 0;\n`;\n\nexport const MoreComments: React.FunctionComponent<MoreCommentsProps> = props => {\n  const id = props.postId;\n\n  const [firstLoad, setFirstLoad] = React.useState(false);\n\n  if (props.numMoreComments <= 0) {\n    return <></>;\n  }\n\n  const LoadMoreSpan = props.level === 0 ? TopLevelLoadMoreSpan : ReplyLoadMoreSpan;\n  const loadMoreText = props.level === 0 ? \"Load More Comments\" : \"Load More Replies\";\n\n  if (!firstLoad) {\n    return <LoadMoreSpan onClick={() => setFirstLoad(true)}>{loadMoreText}</LoadMoreSpan>;\n  } else {\n    return (\n      <Query query={POST_CHILDREN} variables={{ id, first: 3, after: props.prevEndCursor }}>\n        {({ loading, error, data, fetchMore }) => {\n          if (loading) {\n            return <LoadingMessage>Loading Comments</LoadingMessage>;\n          } else if (error || !data || !data.postsGetChildren) {\n            console.error(\"error loading children data. error:\", error, \"data:\", data);\n            return \"Error loading children.\";\n          }\n\n          const comments = data.postsGetChildren;\n\n          const commentList = comments.edges.map(child => {\n            return <CivilComment comment={child} level={props.level} />;\n          });\n          return (\n            <>\n              {commentList}\n              {comments.pageInfo.hasNextPage && (\n                <LoadMoreSpan\n                  onClick={() =>\n                    fetchMore({\n                      query: POST_CHILDREN,\n                      variables: {\n                        id,\n                        first: 3,\n                        after: comments.pageInfo.endCursor,\n                      },\n                      updateQuery: (previousResult: any, { fetchMoreResult }: any) => {\n                        const newEdges = fetchMoreResult.postsGetChildren.edges;\n                        const pageInfo = fetchMoreResult.postsGetChildren.pageInfo;\n\n                        return newEdges.length\n                          ? {\n                              postsGetChildren: {\n                                edges: [...previousResult.postsGetChildren.edges, ...newEdges],\n                                pageInfo,\n                                __typename: previousResult.postsGetChildren.__typename,\n                              },\n                            }\n                          : previousResult;\n                      },\n                    })\n                  }\n                >\n                  {loadMoreText}\n                </LoadMoreSpan>\n              )}\n            </>\n          );\n        }}\n      </Query>\n    );\n  }\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/PostComments.tsx",
    "content": "import * as React from \"react\";\nimport { Button, TextareaInput, buttonSizes, colors } from \"@joincivil/elements\";\nimport { StoryDetailsComments } from \"./StoryFeedStyledComponents\";\nimport { Mutation, MutationFunc, Query } from \"react-apollo\";\nimport { CivilComment } from \"./CivilComment\";\nimport { MoreComments } from \"./MoreComments\";\nimport { POST_COMMENT_MUTATION, COMMENT } from \"./queries\";\nimport { LoadingMessage } from \"@joincivil/components\";\nimport styled from \"styled-components\";\n\nexport interface PostCommentsProps {\n  postId: string;\n  comments: any;\n  numComments: number;\n  level: number;\n}\n\nconst TopLevelReplySpan = styled.span`\n  color: ${colors.accent.CIVIL_BLUE_FADED};\n  font-size: 12;\n  margin-left: 0;\n`;\n\nconst ReplySpan = styled.span`\n  color: ${colors.accent.CIVIL_BLUE_FADED};\n  font-size: 8;\n  margin-left: 0;\n`;\n\nexport const PostComments: React.FunctionComponent<PostCommentsProps> = props => {\n  const [commentText, setCommentText] = React.useState(\"\");\n  const [myNewCommentIDs, setMyNewCommentIDs] = React.useState([]);\n  const [showReply, setShowReply] = React.useState(props.level === 0);\n\n  const edgesLength = props.comments && props.comments.edges ? props.comments.edges.length : 0;\n  const remainingChildren = props.numComments - edgesLength;\n  const endCursor = props.comments && props.comments.pageInfo ? props.comments.pageInfo.endCursor : \"\";\n  return (\n    <>\n      <StoryDetailsComments>\n        {showReply && props.level === 0 && (\n          <TopLevelReplySpan onClick={() => setShowReply(false)}>Hide Comment Form</TopLevelReplySpan>\n        )}\n        {showReply && props.level !== 0 && <ReplySpan onClick={() => setShowReply(false)}>Hide Reply Form</ReplySpan>}\n        {!showReply && props.level === 0 && (\n          <TopLevelReplySpan onClick={() => setShowReply(true)}>Leave a Comment</TopLevelReplySpan>\n        )}\n        {!showReply && props.level !== 0 && <ReplySpan onClick={() => setShowReply(true)}>Reply</ReplySpan>}\n        {showReply && (\n          <Mutation mutation={POST_COMMENT_MUTATION}>\n            {(postCommentMutation: MutationFunc) => {\n              return (\n                <>\n                  <TextareaInput\n                    name=\"post_comment_input\"\n                    value={commentText}\n                    onChange={(name: any, value: string) => {\n                      setCommentText(value);\n                    }}\n                    maxLength={\"500\"}\n                  />\n                  <Button\n                    size={buttonSizes.SMALL}\n                    onClick={async () => {\n                      const res = await postCommentMutation({\n                        variables: {\n                          input: {\n                            parentID: props.postId,\n                            commentType: \"comment_default\",\n                            text: commentText,\n                          },\n                        },\n                      });\n                      setMyNewCommentIDs(myNewCommentIDs.concat(res.data.postsCreateComment.id));\n                    }}\n                  >\n                    Comment\n                  </Button>\n                  {props.level === 0 && (\n                    <Button\n                      size={buttonSizes.SMALL}\n                      onClick={async () => {\n                        const res = await postCommentMutation({\n                          variables: {\n                            input: {\n                              parentID: props.postId,\n                              commentType: \"comment_announcement\",\n                              text: commentText,\n                            },\n                          },\n                        });\n                        setMyNewCommentIDs(myNewCommentIDs.concat(res.data.postsCreateComment.id));\n                      }}\n                    >\n                      Announcement\n                    </Button>\n                  )}\n                </>\n              );\n            }}\n          </Mutation>\n        )}\n        <br />\n        {myNewCommentIDs.map(postID => {\n          return (\n            <Query query={COMMENT} variables={{ id: postID }}>\n              {({ loading, error, data }) => {\n                if (loading) {\n                  return <LoadingMessage>Loading Comment</LoadingMessage>;\n                } else if (error || !data || !data.postsGet) {\n                  console.error(\"error loading comment data. error:\", error, \"data:\", data);\n                  return \"Error loading comment.\";\n                }\n                const comment = { post: data.postsGet };\n                return <CivilComment comment={comment} level={props.level} />;\n              }}\n            </Query>\n          );\n        })}\n        {props.comments &&\n          props.comments.edges &&\n          props.comments.edges.map(child => {\n            return <CivilComment comment={child} level={props.level} />;\n          })}\n        <MoreComments\n          postId={props.postId}\n          prevEndCursor={endCursor}\n          numMoreComments={remainingChildren}\n          level={props.level}\n        />\n      </StoryDetailsComments>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/Story.tsx",
    "content": "import * as React from \"react\";\nimport { StoryLink, StoryLinkLeft, StoryTitle, StoryImgSquare, TimeStamp } from \"./StoryFeedStyledComponents\";\nimport { OpenGraphData } from \"./types\";\nimport { getTimeSince } from \"@joincivil/utils\";\nimport { storyPlaceholderImgUrl } from \"@joincivil/components\";\n\nexport interface StoryProps {\n  openGraphData: OpenGraphData;\n  handleOpenStory(): void;\n}\n\nexport const Story: React.FunctionComponent<StoryProps> = props => {\n  return (\n    <>\n      <StoryLink onClick={props.handleOpenStory}>\n        <StoryLinkLeft>\n          <StoryTitle>{props.openGraphData.title}</StoryTitle>\n          {props.openGraphData.article && props.openGraphData.article.published_time && (\n            <TimeStamp>{getTimeSince(props.openGraphData.article.published_time)}</TimeStamp>\n          )}\n        </StoryLinkLeft>\n        <StoryImgSquare>\n          {props.openGraphData.images ? (\n            <img src={props.openGraphData.images[0].url} />\n          ) : (\n            <img src={storyPlaceholderImgUrl} />\n          )}\n        </StoryImgSquare>\n      </StoryLink>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryBoost.tsx",
    "content": "import * as React from \"react\";\nimport styled, { ThemeProvider } from \"styled-components/macro\";\nimport { Query } from \"react-apollo\";\nimport {\n  LoadingMessage,\n  Payments,\n  PaymentsModal,\n  CivilContext,\n  ICivilContext,\n  RENDER_CONTEXT,\n  DEFAULT_BUTTON_THEME,\n  DEFAULT_CHECKBOX_THEME,\n} from \"@joincivil/components\";\nimport { StoryDetails } from \"./StoryDetails\";\nimport { StoryNewsroomDetails } from \"./StoryNewsroomDetails\";\nimport { StoryModal } from \"./StoryModal\";\nimport { StoryBoostData } from \"./types\";\nimport { STORY_BOOST } from \"./queries\";\n\nexport interface StoryBoostProps {\n  postId: string;\n  payment?: boolean;\n  newsroom?: boolean;\n  isListingPageFeed?: boolean;\n  openStoryNewsroomDetails(): void;\n  openStoryDetails(): void;\n  openPayments(): void;\n  closeStoryBoost(): void;\n  handlePaymentSuccess(): void;\n}\n\nexport const StoryBoost: React.FunctionComponent<StoryBoostProps> = props => {\n  const id = props.postId;\n  const isStoryModalOpen = props.payment || props.newsroom ? false : true;\n  const isStoryNewsroomModalOpen = props.newsroom || false;\n  const isPaymentsModalOpen = props.payment || false;\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  civilContext.renderContext = RENDER_CONTEXT.DAPP;\n  const theme = {\n    ...DEFAULT_CHECKBOX_THEME,\n    ...DEFAULT_BUTTON_THEME,\n    renderContext: RENDER_CONTEXT.DAPP,\n  };\n\n  return (\n    <Query query={STORY_BOOST} variables={{ id }}>\n      {({ loading, error, data, refetch }) => {\n        if (loading) {\n          return <LoadingMessage>Loading Boost</LoadingMessage>;\n        } else if (error || !data || !data.postsGet) {\n          console.error(\"error loading Story Boost data. error:\", error, \"data:\", data);\n          return \"Error loading Story Boost.\";\n        }\n\n        const storyBoostData = data.postsGet as StoryBoostData;\n        const activeChallenge =\n          storyBoostData.channel.listing.challenge && storyBoostData.channel.listing.challenge.challengeID\n            ? true\n            : false;\n        return (\n          <>\n            <StoryModal open={isStoryModalOpen} handleClose={props.closeStoryBoost}>\n              <StoryDetails\n                postId={props.postId}\n                activeChallenge={activeChallenge}\n                createdAt={storyBoostData.createdAt}\n                newsroomName={storyBoostData.channel.newsroom.name}\n                title={storyBoostData.openGraphData.title}\n                url={storyBoostData.openGraphData.url}\n                children={storyBoostData.children}\n                numChildren={storyBoostData.numChildren}\n                refetch={refetch}\n                openGraphData={storyBoostData.openGraphData}\n                displayedContributors={storyBoostData.groupedSanitizedPayments}\n                sortedContributors={storyBoostData.groupedSanitizedPayments}\n                totalContributors={\n                  storyBoostData.groupedSanitizedPayments ? storyBoostData.groupedSanitizedPayments.length : 0\n                }\n                handlePayments={props.openPayments}\n                handleOpenNewsroom={props.openStoryNewsroomDetails}\n                isListingPageFeed={props.isListingPageFeed}\n              />\n            </StoryModal>\n            {!props.isListingPageFeed && (\n              <StoryModal open={isStoryNewsroomModalOpen} handleClose={props.closeStoryBoost}>\n                <StoryNewsroomDetails\n                  activeChallenge={activeChallenge}\n                  newsroom={{ ...storyBoostData.channel.newsroom, handle: storyBoostData.channel.handle }}\n                />\n              </StoryModal>\n            )}\n            <ThemeProvider theme={theme}>\n              <PaymentsModal open={isPaymentsModalOpen} handleClose={props.closeStoryBoost}>\n                <Payments\n                  postId={props.postId}\n                  newsroomName={storyBoostData.channel.newsroom.name}\n                  activeChallenge={activeChallenge}\n                  paymentAddress={storyBoostData.channel.newsroom.multisigAddress}\n                  isStripeConnected={storyBoostData.channel.isStripeConnected}\n                  stripeAccountID={storyBoostData.channel.stripeAccountID}\n                  handleClose={props.handlePaymentSuccess}\n                />\n              </PaymentsModal>\n            </ThemeProvider>\n          </>\n        );\n      }}\n    </Query>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryDetails.tsx",
    "content": "import * as React from \"react\";\nimport {\n  CivilContext,\n  ICivilContext,\n  Contributors,\n  ContributorCount,\n  ContributorData,\n  StoryNewsroomStatus,\n  storyPlaceholderImgUrl,\n  FeatureFlag,\n} from \"@joincivil/components\";\nimport { PaymentButton, ShareButton, ShareStory, SharePanel, OpenInNewIcon, colors } from \"@joincivil/elements\";\nimport { getTimeSince } from \"@joincivil/utils\";\nimport { OpenGraphData } from \"./types\";\nimport {\n  StoryLink,\n  StoryTitle,\n  TimeStamp,\n  TimeStampDot,\n  StoryDetailsFlex,\n  StoryDetailsFlexLeft,\n  StoryDescription,\n  StoryPostedAt,\n  StoryImgWide,\n  StoryDetailsFullBleedHeader,\n  StoryDetailsContent,\n  StoryDetailsFooter,\n  StoryDetailsFooterFlex,\n  BlueLinkBtn,\n} from \"./StoryFeedStyledComponents\";\nimport { PostComments } from \"./PostComments\";\n\nexport interface StoryDetailsProps {\n  postId: string;\n  activeChallenge: boolean;\n  createdAt: string;\n  newsroomName: string;\n  title: string;\n  url: string;\n  openGraphData: OpenGraphData;\n  displayedContributors: ContributorData[];\n  sortedContributors: ContributorData[];\n  totalContributors: number;\n  children: any;\n  numChildren: any;\n  isListingPageFeed?: boolean;\n  handlePayments(): void;\n  handleOpenNewsroom(): void;\n}\n\nexport const StoryDetails: React.FunctionComponent<StoryDetailsProps> = props => {\n  const context = React.useContext<ICivilContext>(CivilContext);\n  const [shareModalOpen, setShareModalOpen] = React.useState(false);\n  const { openGraphData } = props;\n\n  return (\n    <>\n      <StoryDetailsFullBleedHeader>\n        <StoryImgWide>\n          {openGraphData.images ? <img src={openGraphData.images[0].url} /> : <img src={storyPlaceholderImgUrl} />}\n        </StoryImgWide>\n      </StoryDetailsFullBleedHeader>\n      <StoryDetailsContent>\n        <StoryDetailsFlex>\n          <StoryLink\n            onClick={() =>\n              context.fireAnalyticsEvent(\"story boost\", \"story details: story title clicked\", props.postId)\n            }\n            href={openGraphData.url}\n            target=\"_blank\"\n          >\n            <StoryTitle>\n              {openGraphData.title}\n              <OpenInNewIcon />\n            </StoryTitle>\n          </StoryLink>\n          <ShareButton onClick={() => setShareModalOpen(true)} textBottom={true}></ShareButton>\n        </StoryDetailsFlex>\n        <StoryDetailsFlexLeft>\n          {!props.isListingPageFeed && (\n            <StoryNewsroomStatus\n              newsroomName={props.newsroomName}\n              activeChallenge={props.activeChallenge}\n              handleOpenNewsroom={props.handleOpenNewsroom}\n            />\n          )}\n          {openGraphData.article && openGraphData.article.published_time && (\n            <TimeStamp>\n              <TimeStampDot>&#183;</TimeStampDot> {getTimeSince(openGraphData.article.published_time)}\n            </TimeStamp>\n          )}\n        </StoryDetailsFlexLeft>\n        {openGraphData.description && <StoryDescription>{openGraphData.description}</StoryDescription>}\n        <StoryPostedAt>\n          <TimeStamp>Posted on Civil {getTimeSince(props.createdAt)}</TimeStamp>\n        </StoryPostedAt>\n        <Contributors sortedContributors={props.sortedContributors} />\n        {props.totalContributors !== 0 ? (\n          <ContributorCount\n            totalContributors={props.totalContributors}\n            displayedContributors={props.displayedContributors}\n          />\n        ) : (\n          <></>\n        )}\n      </StoryDetailsContent>\n      <StoryDetailsFooter>\n        <StoryDetailsFooterFlex>\n          <PaymentButton onClick={props.handlePayments} border={true} />\n          <BlueLinkBtn\n            onClick={() => context.fireAnalyticsEvent(\"story boost\", \"story details: read more clicked\", props.postId)}\n            href={openGraphData.url}\n            target=\"_blank\"\n          >\n            <OpenInNewIcon color={colors.basic.WHITE} size={20} />\n            Read More\n          </BlueLinkBtn>\n        </StoryDetailsFooterFlex>\n      </StoryDetailsFooter>\n      <FeatureFlag feature={\"comments-mvp\"}>\n        <PostComments postId={props.postId} comments={props.children} numComments={props.numChildren} level={0} />\n      </FeatureFlag>\n      <SharePanel open={shareModalOpen} handleClose={() => setShareModalOpen(false)}>\n        <ShareStory title={props.title} url={props.url} />\n      </SharePanel>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryFeed.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport { LoadingMessage, CivilContext, ICivilContext } from \"@joincivil/components\";\nimport { Button, buttonSizes } from \"@joincivil/elements\";\nimport { StoryFeedItem } from \"./StoryFeedItem\";\nimport { StoryBoost } from \"./StoryBoost\";\nimport { StoryLoadMoreContainer } from \"./StoryFeedStyledComponents\";\nimport { STORY_FEED_QUERY } from \"./queries\";\nimport { BoostCard, BoostNewsroomData } from \"@joincivil/sdk\";\n\nexport interface StoryFeedProps {\n  queryFilterAlg: string;\n  queryFilterChannelID?: string;\n  match: any;\n  payment?: boolean;\n  newsroom?: boolean;\n  isListingPageFeed?: boolean;\n  onCloseStoryBoost?(): void;\n  onOpenStoryDetails?(postId: string): void;\n  onOpenPayments?(postId: string): void;\n  onOpenNewsroomDetails?(postId: string): void;\n}\n\nclass StoryFeed extends React.Component<StoryFeedProps> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  public render(): JSX.Element {\n    const postId = this.props.match.params.postId;\n\n    return (\n      <>\n        <Query\n          query={STORY_FEED_QUERY}\n          variables={{ filter: { alg: this.props.queryFilterAlg, channelID: this.props.queryFilterChannelID } }}\n        >\n          {({ loading, error, data, refetch, fetchMore }) => {\n            if (loading) {\n              return <LoadingMessage>Loading Stories</LoadingMessage>;\n            } else if (error || !data || !data.postsStoryfeed) {\n              console.error(\"error loading Story Feed data. error:\", error, \"data:\", data);\n              return \"Error loading stories.\";\n            } else if (!data.postsStoryfeed.edges) {\n              return \"There are no stories yet.\";\n            }\n\n            const { postsStoryfeed } = data;\n            const storyfeed = postsStoryfeed.edges.map((edge: any, i: number) => {\n              const postData = edge.post;\n              const activeChallenge =\n                postData.channel.listing.challenge && postData.channel.listing.challenge.challengeID ? true : false;\n\n              if (\n                postData.postType === \"externallink\" &&\n                postData.openGraphData &&\n                postData.openGraphData.title &&\n                postData.openGraphData.url\n              ) {\n                return (\n                  <StoryFeedItem\n                    key={i}\n                    postId={postData.id}\n                    activeChallenge={activeChallenge}\n                    newsroom={postData.channel.newsroom}\n                    openGraphData={postData.openGraphData}\n                    displayedContributors={postData.groupedSanitizedPayments}\n                    totalContributors={postData.groupedSanitizedPayments ? postData.groupedSanitizedPayments.length : 0}\n                    openStoryNewsroomDetails={(id: string) => {\n                      if (this.props.onOpenNewsroomDetails) {\n                        this.props.onOpenNewsroomDetails(id);\n                      }\n                    }}\n                    openStoryDetails={(id: string) => {\n                      if (this.props.onOpenStoryDetails) {\n                        this.props.onOpenStoryDetails(id);\n                      }\n                    }}\n                    openPayments={(id: string) => {\n                      if (this.props.onOpenPayments) {\n                        this.props.onOpenPayments(id);\n                      }\n                    }}\n                    isListingPageFeed={this.props.isListingPageFeed}\n                    numComments={postData.numChildren}\n                  />\n                );\n              } else if (postData.postType === \"boost\") {\n                const newsroomData = postData.channel.listing as BoostNewsroomData;\n                return (\n                  <BoostCard\n                    boostData={postData}\n                    newsroomData={newsroomData}\n                    boostOwner={false}\n                    open={false}\n                    boostId={postData.id}\n                    handlePayments={() => null}\n                    paymentSuccess={false}\n                  />\n                );\n              }\n              console.error(\"found post that can't be displayed. postID: \", postData.id);\n              return null;\n            });\n\n            return (\n              <>\n                {storyfeed}\n                {postsStoryfeed.pageInfo.hasNextPage && (\n                  <StoryLoadMoreContainer>\n                    <Button\n                      size={buttonSizes.SMALL}\n                      onClick={() =>\n                        fetchMore({\n                          query: STORY_FEED_QUERY,\n                          variables: {\n                            filter: { alg: this.props.queryFilterAlg, channelID: this.props.queryFilterChannelID },\n                            cursor: postsStoryfeed.pageInfo.endCursor,\n                          },\n                          updateQuery: (previousResult: any, { fetchMoreResult }: any) => {\n                            const newEdges = fetchMoreResult.postsStoryfeed.edges;\n                            const pageInfo = fetchMoreResult.postsStoryfeed.pageInfo;\n\n                            return newEdges.length\n                              ? {\n                                  postsStoryfeed: {\n                                    edges: [...previousResult.postsStoryfeed.edges, ...newEdges],\n                                    pageInfo,\n                                    __typename: previousResult.postsStoryfeed.__typename,\n                                  },\n                                }\n                              : previousResult;\n                          },\n                        })\n                      }\n                    >\n                      Load More\n                    </Button>\n                  </StoryLoadMoreContainer>\n                )}\n                {postId && (\n                  <StoryBoost\n                    postId={postId}\n                    payment={this.props.payment}\n                    newsroom={this.props.newsroom}\n                    closeStoryBoost={() => {\n                      if (this.props.onCloseStoryBoost) {\n                        this.props.onCloseStoryBoost();\n                      }\n                    }}\n                    handlePaymentSuccess={async () => {\n                      await refetch();\n                      if (this.props.onCloseStoryBoost) {\n                        this.props.onCloseStoryBoost();\n                      }\n                    }}\n                    openStoryNewsroomDetails={() => {\n                      if (this.props.onOpenNewsroomDetails) {\n                        this.props.onOpenNewsroomDetails(postId);\n                      }\n                    }}\n                    openStoryDetails={() => {\n                      if (this.props.onOpenStoryDetails) {\n                        this.props.onOpenStoryDetails(postId);\n                      }\n                    }}\n                    openPayments={() => {\n                      if (this.props.onOpenPayments) {\n                        this.props.onOpenPayments(postId);\n                      }\n                    }}\n                    isListingPageFeed={this.props.isListingPageFeed}\n                  />\n                )}\n              </>\n            );\n          }}\n        </Query>\n      </>\n    );\n  }\n}\n\nexport default StoryFeed;\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryFeedItem.tsx",
    "content": "import * as React from \"react\";\nimport { Story } from \"./Story\";\nimport { StoryFeedItemWrap, StoryElementsFlex } from \"./StoryFeedStyledComponents\";\nimport { StoryNewsroomData, OpenGraphData } from \"./types\";\nimport {\n  StoryNewsroomStatus,\n  ContributorCount,\n  ContributorData,\n  CommentsCount,\n  FeatureFlag,\n} from \"@joincivil/components\";\nimport { PaymentButton, ShareButton, ShareStory, SharePanel } from \"@joincivil/elements\";\n\nexport interface StoryFeedItemProps {\n  postId: string;\n  activeChallenge: boolean;\n  newsroom: StoryNewsroomData;\n  openGraphData: OpenGraphData;\n  displayedContributors: ContributorData[];\n  totalContributors: number;\n  numComments: number;\n  isListingPageFeed?: boolean;\n  openStoryNewsroomDetails(postId: string): void;\n  openStoryDetails(postId: string): void;\n  openPayments(postId: string): void;\n}\n\nexport interface StoryFeedItemStates {\n  isShareModalOpen: boolean;\n}\n\nexport class StoryFeedItem extends React.Component<StoryFeedItemProps, StoryFeedItemStates> {\n  public constructor(props: any) {\n    super(props);\n    this.state = {\n      isShareModalOpen: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StoryFeedItemWrap>\n          {!this.props.isListingPageFeed && (\n            <StoryNewsroomStatus\n              newsroomName={this.props.newsroom.name}\n              activeChallenge={this.props.activeChallenge}\n              handleOpenNewsroom={() => this.props.openStoryNewsroomDetails(this.props.postId)}\n            />\n          )}\n          <Story\n            openGraphData={this.props.openGraphData}\n            handleOpenStory={() => this.props.openStoryDetails(this.props.postId)}\n          />\n          <StoryElementsFlex>\n            <ContributorCount\n              totalContributors={this.props.totalContributors}\n              displayedContributors={this.props.displayedContributors}\n            />\n            <FeatureFlag feature={\"comments-mvp\"}>\n              <CommentsCount numComments={this.props.numComments} />\n            </FeatureFlag>\n            <StoryElementsFlex>\n              <PaymentButton onClick={() => this.props.openPayments(this.props.postId)} />\n              <ShareButton onClick={this.openShare} />\n            </StoryElementsFlex>\n          </StoryElementsFlex>\n        </StoryFeedItemWrap>\n        <SharePanel open={this.state.isShareModalOpen} handleClose={this.handleCloseShare}>\n          <ShareStory title={this.props.openGraphData.title} url={this.props.openGraphData.url} />\n        </SharePanel>\n      </>\n    );\n  }\n\n  private openShare = () => {\n    this.setState({ isShareModalOpen: true });\n  };\n\n  private handleCloseShare = () => {\n    this.setState({ isShareModalOpen: false });\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryFeedMarquee.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { links } from \"../../helpers/links\";\nimport { colors, mediaQueries } from \"@joincivil/elements\";\nimport heroImgUrl from \"../images/storyfeed-banner-2x.png\";\nimport heroImgMobileUrl from \"../images/storyfeed-banner-mobile-2x.png\";\n\nexport const StoryFeedMarqueeWrap = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 100px auto 40px;\n  max-width: 1036px;\n  padding: 0 20px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    padding: 0;\n    margin: 55px auto 40px;\n  }\n`;\n\nexport const StoryFeedMarqueeHeader = styled.div`\n  justify-content: flex-end;\n  display: flex;\n  padding-left: 50px;\n  position: relative;\n  width: 100%;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: block;\n    padding-left: 0;\n  }\n`;\n\nexport const StoryFeedMarqueeText = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_5};\n  left: 10px;\n  padding: 20px 20px 25px 75px;\n  position: absolute;\n  top: 55px;\n  width: 390px;\n\n  h1 {\n    font-size: 32px;\n    font-weight: 300;\n    letter-spacing: -0.1px;\n    line-height: 40px;\n    margin: 0 0 5px;\n  }\n\n  a {\n    color: ${colors.primary.BLACK};\n    font-size: 14px;\n    line-height: 21px;\n    text-decoration: underline;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    left: 0;\n    padding: 30px 20px;\n    position: relative;\n    top: 0;\n    width: 100%;\n\n    h1 {\n      font-size: 22px;\n      font-weight: 400;\n      letter-spacing: -0.07px;\n      line-height: 27.5px;\n      margin: 0;\n    }\n\n    a {\n      font-size: 13px;\n      line-height: 21px;\n    }\n  }\n`;\n\nexport const MarqueeImage = styled.div`\n  img {\n    width: 100%;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: none;\n  }\n`;\n\nexport const MarqueeImageMobile = styled.div`\n  display: none;\n  img {\n    width: 100%;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: block;\n  }\n`;\n\nexport const MarqueeColFlex = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  display: flex;\n  justify-content: space-around;\n  margin: 20px 0 30px;\n  text-align: center;\n`;\n\nexport const MarqueeCol = styled.div`\n  width: 280px;\n\n  label {\n    font-size: 15px;\n    line-height: 21px;\n  }\n\n  p {\n    font-size: 13px;\n    line-height: 21px;\n    margin: 5px 0 0;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: none;\n\n    &.sf-discover {\n      display: block;\n      margin: 0 auto;\n    }\n  }\n`;\n\nexport const StoryFeedMarquee: React.FunctionComponent = props => {\n  return (\n    <StoryFeedMarqueeWrap>\n      <StoryFeedMarqueeHeader>\n        <StoryFeedMarqueeText>\n          <h1>Discover trusted news on Civil.</h1>\n          <a href={links.MARKETING_SITE} target=\"_blank\">\n            Learn what we stand for\n          </a>\n        </StoryFeedMarqueeText>\n        <MarqueeImage>\n          <img src={heroImgUrl} />\n        </MarqueeImage>\n        <MarqueeImageMobile>\n          <img src={heroImgMobileUrl} />\n        </MarqueeImageMobile>\n      </StoryFeedMarqueeHeader>\n      <MarqueeColFlex>\n        <MarqueeCol className=\"sf-discover\">\n          <label>Discover</label>\n          <p>Explore stories from Civil newsrooms around the world.</p>\n        </MarqueeCol>\n        <MarqueeCol>\n          <label>Trust</label>\n          <p>Every newsroom is held to the highest standards of journalism.</p>\n        </MarqueeCol>\n        <MarqueeCol>\n          <label>Support</label>\n          <p>Give independent journalism a financial boost in just a few taps.</p>\n        </MarqueeCol>\n      </MarqueeColFlex>\n    </StoryFeedMarqueeWrap>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryFeedPage.tsx",
    "content": "import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { StoryFeedMarquee } from \"./StoryFeedMarquee\";\nimport { StoryFeedWrapper, StoryFeedLabel } from \"./StoryFeedStyledComponents\";\nimport StoryFeed from \"./StoryFeed\";\nimport { CivilContext, ICivilContext } from \"@joincivil/components\";\n\nexport interface StoryFeedPageProps {\n  match: any;\n  location: any;\n  history: any;\n  payment?: boolean;\n  newsroom?: boolean;\n}\n\nclass StoryFeedPage extends React.Component<StoryFeedPageProps> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n  public render(): JSX.Element {\n    return (\n      <>\n        <Helmet title=\"Civil Story Boosts - The Civil Registry\" />\n        <StoryFeedMarquee />\n        <StoryFeedWrapper>\n          <StoryFeedLabel>Recent Stories</StoryFeedLabel>\n          <StoryFeed\n            queryFilterAlg=\"vw_post_fair_with_interleaved_boosts_2\"\n            match={this.props.match}\n            payment={this.props.payment}\n            newsroom={this.props.newsroom}\n            onCloseStoryBoost={this.closeStoryBoost}\n            onOpenStoryDetails={this.openStoryDetails}\n            onOpenPayments={this.openPayments}\n            onOpenNewsroomDetails={this.openStoryNewsroomDetails}\n          />\n        </StoryFeedWrapper>\n      </>\n    );\n  }\n\n  private closeStoryBoost = () => {\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/storyfeed\",\n    });\n  };\n\n  private openStoryDetails = (postId: string) => {\n    this.context.fireAnalyticsEvent(\"story boost\", \"story details clicked\", postId);\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/storyfeed/\" + postId,\n    });\n  };\n\n  private openPayments = (postId: string) => {\n    this.context.fireAnalyticsEvent(\"story boost\", \"boost button clicked\", postId);\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/storyfeed/\" + postId + \"/payment\",\n    });\n  };\n\n  private openStoryNewsroomDetails = (postId: string) => {\n    this.context.fireAnalyticsEvent(\"story boost\", \"newsroom details clicked\", postId);\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/storyfeed/\" + postId + \"/newsroom\",\n    });\n  };\n}\n\nexport default StoryFeedPage;\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryFeedStyledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, fonts, mediaQueries } from \"@joincivil/elements\";\nimport { StoryNewsroomStatusStyled } from \"@joincivil/components\";\nimport { CivilCommentProps } from \"./CivilComment\";\n\nexport const StoryFeedWrapper = styled.div`\n  margin: 0 auto;\n  max-width: 600px;\n  padding: 0 0 50px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    padding: 0 20px 50px;\n  }\n`;\n\nexport const StoryFeedLabel = styled.h3`\n  font-size: 16px;\n  font-weight: 600;\n  line-height: 20px;\n`;\n\nexport const StoryLoadMoreContainer = styled.div`\n  display: flex;\n  justify-content: center;\n  margin-top: 20px;\n  width: 100%;\n`;\n\nexport const StoryFeedItemWrap = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 30px 0;\n`;\n\nexport const StoryTitle = styled.h2`\n  color: ${colors.primary.BLACK};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 17px;\n  font-weight: 700;\n  line-height: 25px;\n  margin: 0 0 8px;\n  transition: color 0.2s ease;\n\n  svg {\n    margin-left: 5px;\n    vertical-align: text-bottom;\n  }\n\n  .open-new-icon {\n    fill: ${colors.primary.BLACK};\n    transition: fill 0.2s ease;\n  }\n`;\n\nexport const StoryLink = styled.a`\n  cursor: pointer;\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 20px;\n  width: 100%;\n\n  &:hover {\n    ${StoryTitle} {\n      color: ${colors.accent.CIVIL_BLUE};\n    }\n    .open-new-icon {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport const StoryLinkLeft = styled.div`\n  width: calc(100% - 100px);\n`;\n\nexport const TimeStamp = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_3};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: 400;\n  line-height: 14px;\n`;\n\nexport const TimeStampDot = styled.span`\n  font-weight: 800;\n  margin-right: 6px;\n`;\n\nexport const StoryDescription = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 18px;\n  margin: 0 0 15px;\n`;\n\nexport const StoryPostedAt = styled.div`\n  margin: 0 0 16px;\n\n  ${TimeStamp} {\n    font-size: 11px;\n    line-height: 13px;\n  }\n`;\n\nexport const StoryImgSquare = styled.div`\n  display: flex;\n  height: 90px;\n  justify-content: center;\n  overflow: hidden;\n  width: 90px;\n\n  img {\n    height: 100%;\n    width: auto;\n  }\n`;\n\nexport const StoryImgWide = styled.div`\n  align-items: flex-start;\n  display: flex;\n  height: 100px;\n  overflow: hidden;\n  width: 100%;\n\n  img {\n    width: 100%;\n  }\n`;\n\nexport const StoryElementsFlex = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: space-between;\n\n  button:first-of-type {\n    margin-right: 10px;\n  }\n`;\n\nexport const StoryRegistryLabel = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 22px;\n  margin-bottom: 20px;\n`;\n\nexport const StoryNewsroomName = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 17px;\n  font-weight: 700;\n  line-height: 20px;\n  margin-bottom: 5px;\n`;\n\nexport const StoryNewsroomURL = styled.a`\n  color: ${colors.accent.CIVIL_BLUE};\n  display: block;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 22px;\n  text-decoration: none;\n\n  &:hover {\n    text-decoration: underline;\n  }\n`;\n\nexport const StoryNewsroomSection = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin-bottom: 12px;\n  width: 100%;\n\n  h2 {\n    font-size: 12px;\n    font-weight: 600;\n    line-height: 16px;\n    text-transform: uppercase;\n    margin: 0 0 8px;\n  }\n\n  h3 {\n    font-size: 13px;\n    font-weight: 400;\n    line-height: 22px;\n    margin: 0;\n  }\n\n  p {\n    font-size: 13px;\n    font-weight: 400;\n    line-height: 18px;\n    margin: 0 0 8px;\n\n    &:last-of-type {\n      margin: 0;\n    }\n  }\n`;\n\nexport const StoryETHAddress = styled.span`\n  font-family: ${fonts.MONOSPACE};\n  font-size: 11px;\n  line-height: 13px;\n  margin-bottom: 10px;\n`;\n\nexport const StoryDetailsFlex = styled.div`\n  align-items: flex-start;\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 5px;\n\n  ${StoryTitle} {\n    width: calc(100% - 45px);\n  }\n`;\n\nexport const StoryDetailsFlexLeft = styled.div`\n  align-items: center;\n  display: flex;\n  margin-bottom: 10px;\n\n  ${StoryNewsroomStatusStyled} {\n    margin: 0 6px 0 0;\n  }\n`;\n\nexport const BlueLinkBtn = styled.a`\n  align-items: center;\n  background-color: ${colors.accent.CIVIL_BLUE};\n  border-radius: 2px;\n  color: ${colors.basic.WHITE};\n  cursor: pointer;\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  font-weight: 700;\n  justify-content: center;\n  letter-spacing: 0.2px;\n  min-height: 20px;\n  opacity: 1;\n  padding: 8px;\n  text-decoration: none;\n  transition: opactiy 0.2s ease;\n  width: 100%;\n\n  svg {\n    margin-right: 7px;\n  }\n\n  &:hover {\n    color: ${colors.basic.WHITE};\n    opacity: 0.75;\n  }\n`;\n\nexport const StoryRegistryDetailsStyled = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin-bottom: 20px;\n  padding: 20px 0;\n`;\n\nexport interface StoryRegistryStatusProps {\n  activeChallenge: boolean;\n}\n\nexport const StoryRegistryStatusTextWrap = styled.div`\n  border-left: 1px solid\n    ${(props: StoryRegistryStatusProps) =>\n      props.activeChallenge ? colors.accent.CIVIL_ORANGE : colors.accent.CIVIL_TEAL};\n  padding: 0 50px 0 15px;\n  position: relative;\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 14px;\n    line-height: 18px;\n    margin: 0;\n  }\n\n  svg {\n    position: absolute;\n    right: 0;\n    top: calc(50% - 20px);\n  }\n`;\n\nexport const RegistryStatusTag = styled.span`\n  background-color: ${(props: StoryRegistryStatusProps) =>\n    props.activeChallenge ? colors.accent.CIVIL_ORANGE : colors.accent.CIVIL_TEAL_DARK};\n  color: ${(props: StoryRegistryStatusProps) =>\n    props.activeChallenge ? colors.accent.CIVIL_GRAY_0 : colors.basic.WHITE};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.92px;\n  line-height: 15px;\n  padding: 2px 4px;\n  text-transform: uppercase;\n`;\n\nexport interface StoryModalProps {\n  maxHeight: number;\n}\n\nexport const StoryModalContain = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  overflow: auto;\n  position: relative;\n  max-height: ${(props: StoryModalProps) => props.maxHeight + \"px\"};\n  width: 500px;\n\n  ${mediaQueries.MOBILE} {\n    width: 450px;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    height: 100%;\n    max-height: 100%;\n    width: 100%;\n  }\n`;\n\nexport const StoryModalCloseBtn = styled.div`\n  position: absolute;\n  right: 15px;\n  top: 15px;\n  z-index: 1;\n`;\n\nexport const StoryDetailsHeader = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  padding: 20px 20px 0;\n`;\n\nexport const StoryDetailsFullBleedHeader = styled.div`\n  height: 100px;\n  overflow: hidden;\n  width: 100%;\n`;\n\nexport const StoryDetailsContent = styled.div`\n  background-color: ${colors.basic.WHITE};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 20px;\n`;\n\nexport const StoryDetailsFooter = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 20px;\n`;\n\nexport const StoryDetailsComments = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 20px;\n`;\n\nexport const StoryComment = styled.div`\n  display: flex;\n  flex-direction: column;\n  border-left: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding-left: 10px;\n  padding-top: 10px;\n  margin-left: ${(props: CivilCommentProps) => props.level * 5 + \"px\"};\n`;\n\nexport const StoryDetailsFooterFlex = styled.div`\n  display: flex;\n  justify-content: space-between;\n\n  button,\n  a {\n    width: 48%;\n  }\n`;\n\nexport const CivilCommentHeader = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: space-between;\n`;\n\nexport const CivilCommentHeaderLeft = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: flex-start;\n  height: 40px;\n`;\n\nexport const CivilCommentHeaderRight = styled.div`\n  justify-content: flex-end;\n  height: 40px;\n`;\n\nexport const CivilCommentContent = styled.div``;\n\nexport const CivilCommentFooter = styled.div`\n  display: flex;\n  flex-direction: row;\n  alight-items: flex: start;\n`;\n\nexport const CivilCommentAvatarContainer = styled.div`\n  height: 40px;\n  width: 40px;\n`;\n\nexport const CivilCommentAvatar = styled.img`\n  height: 30px;\n  width: 30px;\n  border-radius: 15px;\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryFeedTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nexport const ApprovedNewsroomText: React.FunctionComponent = props => {\n  return (\n    <p>\n      This Newsroom maintains the standards and journalistic principles set by the{\" \"}\n      <a href={links.CONSTITUTION} target=\"_blank\">\n        Civil Constitution\n      </a>{\" \"}\n      and is approved by the community.\n    </p>\n  );\n};\n\nexport const ChallengedNewsroomText: React.FunctionComponent = props => {\n  return (\n    <p>\n      This Newsroom is currently being challenged by a community member who perceives they violated{\" \"}\n      <a href={links.CONSTITUTION} target=\"_blank\">\n        Civil Constitution\n      </a>\n      .{\" \"}\n      <a href=\"#TODO\" target=\"_blank\">\n        Learn more\n      </a>{\" \"}\n      about the vetting process.\n    </p>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryModal.tsx",
    "content": "import * as React from \"react\";\nimport { StoryModalContain, StoryModalCloseBtn } from \"./StoryFeedStyledComponents\";\nimport { FullScreenModal } from \"@joincivil/components\";\nimport { CloseXButton } from \"@joincivil/elements\";\n\nexport interface StoryModalProps {\n  open: boolean;\n  children: any;\n  handleClose?(): void;\n}\n\nexport const StoryModal: React.FunctionComponent<StoryModalProps> = props => {\n  const maxHeight = window.innerHeight - 200;\n  return (\n    <>\n      <FullScreenModal open={props.open} dismissOnOutsideClick={true} handleClose={props.handleClose}>\n        <StoryModalContain maxHeight={maxHeight}>\n          {props.handleClose && (\n            <StoryModalCloseBtn>\n              <CloseXButton onClick={() => props.handleClose && props.handleClose()} />\n            </StoryModalCloseBtn>\n          )}\n          {props.children}\n        </StoryModalContain>\n      </FullScreenModal>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryNewsroomDetails.tsx",
    "content": "import * as React from \"react\";\nimport { StoryRegistryDetails } from \"./StoryRegistryDetails\";\nimport { renderPTagsFromLineBreaks, urlConstants as links } from \"@joincivil/utils\";\nimport { CivilIcon } from \"@joincivil/elements\";\nimport {\n  RegistryStatusTag,\n  StoryDetailsHeader,\n  StoryDetailsContent,\n  StoryNewsroomSection,\n  StoryDetailsFooter,\n  StoryRegistryLabel,\n  StoryNewsroomName,\n  StoryNewsroomURL,\n  BlueLinkBtn,\n  StoryETHAddress,\n  StoryDetailsFlex,\n} from \"./StoryFeedStyledComponents\";\nimport { StoryNewsroomData } from \"./types\";\n\nexport interface StoryNewsroomDetailsProps {\n  activeChallenge: boolean;\n  newsroom: StoryNewsroomData;\n}\n\nexport const StoryNewsroomDetails: React.FunctionComponent<StoryNewsroomDetailsProps> = props => {\n  const { newsroom } = props;\n\n  return (\n    <>\n      <StoryDetailsHeader>\n        <StoryRegistryLabel>\n          <CivilIcon width={42} height={11} /> Registry\n        </StoryRegistryLabel>\n        <StoryDetailsFlex>\n          <div>\n            <StoryNewsroomName>{newsroom.name}</StoryNewsroomName>\n            <StoryNewsroomURL href={newsroom.charter.newsroomUrl} target=\"_blank\">\n              {newsroom.charter.newsroomUrl}\n            </StoryNewsroomURL>\n          </div>\n          {props.activeChallenge ? (\n            <RegistryStatusTag activeChallenge={true}>Challenged</RegistryStatusTag>\n          ) : (\n            <RegistryStatusTag activeChallenge={false}>Approved</RegistryStatusTag>\n          )}\n        </StoryDetailsFlex>\n      </StoryDetailsHeader>\n      <StoryDetailsContent>\n        <StoryRegistryDetails activeChallenge={props.activeChallenge} />\n        <StoryNewsroomSection>\n          <h2>About</h2>\n          {renderPTagsFromLineBreaks(newsroom.charter.mission.purpose)}\n        </StoryNewsroomSection>\n        <StoryNewsroomSection>\n          <h3>Smart Contract Address</h3>\n          <StoryETHAddress>{newsroom.contractAddress}</StoryETHAddress>\n        </StoryNewsroomSection>\n        <StoryNewsroomSection>\n          <h3>Public Wallet Address</h3>\n          <StoryETHAddress>{newsroom.multisigAddress}</StoryETHAddress>\n        </StoryNewsroomSection>\n      </StoryDetailsContent>\n      <StoryDetailsFooter>\n        <BlueLinkBtn\n          href={links.REGISTRY + \"listing/\" + (newsroom.handle ? newsroom.handle : newsroom.contractAddress)}\n          target=\"_blank\"\n        >\n          View on Civil Registry\n        </BlueLinkBtn>\n      </StoryDetailsFooter>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/StoryRegistryDetails.tsx",
    "content": "import * as React from \"react\";\nimport { StoryRegistryDetailsStyled, StoryRegistryStatusTextWrap } from \"./StoryFeedStyledComponents\";\nimport { ApprovedNewsroomText, ChallengedNewsroomText } from \"./StoryFeedTextComponents\";\nimport { ChallengeMarkIcon, TrustMarkIcon } from \"@joincivil/elements\";\n\nexport interface StoryRegistryDetailsProps {\n  activeChallenge: boolean;\n}\n\nexport const StoryRegistryDetails: React.FunctionComponent<StoryRegistryDetailsProps> = props => {\n  return (\n    <StoryRegistryDetailsStyled>\n      {props.activeChallenge ? (\n        <StoryRegistryStatusTextWrap activeChallenge={true}>\n          <ChallengedNewsroomText />\n          <ChallengeMarkIcon />\n        </StoryRegistryStatusTextWrap>\n      ) : (\n        <StoryRegistryStatusTextWrap activeChallenge={false}>\n          <ApprovedNewsroomText />\n          <TrustMarkIcon />\n        </StoryRegistryStatusTextWrap>\n      )}\n    </StoryRegistryDetailsStyled>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/queries.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const STORY_FEED_QUERY = gql`\n  query Storyfeed($cursor: String, $filter: StoryfeedFilterInput) {\n    postsStoryfeed(first: 15, after: $cursor, filter: $filter) {\n      edges {\n        post {\n          postType\n          ... on PostBoost {\n            id\n            channel {\n              id\n              channelType\n              handle\n              newsroom {\n                contractAddress\n                name\n              }\n              listing {\n                name\n                url\n                charter {\n                  uri\n                }\n              }\n            }\n            groupedSanitizedPayments {\n              usdEquivalent\n              payerChannel {\n                handle\n                tiny72AvatarDataUrl\n              }\n            }\n            channelID\n            currencyCode\n            goalAmount\n            paymentsTotal(currencyCode: \"USD\")\n            title\n            dateEnd\n            why\n          }\n          ... on PostExternalLink {\n            id\n            publishedTime\n            openGraphData {\n              url\n              title\n              article {\n                published_time\n              }\n              images {\n                url\n              }\n            }\n            channel {\n              id\n              handle\n              newsroom {\n                name\n              }\n              listing {\n                challenge {\n                  challengeID\n                }\n              }\n            }\n            groupedSanitizedPayments {\n              usdEquivalent\n              payerChannel {\n                handle\n                tiny72AvatarDataUrl\n              }\n            }\n            numChildren\n          }\n        }\n      }\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n    }\n  }\n`;\n\nexport const COMMENT_FRAGMENT = gql`\n  fragment CommentFragment on PostComment {\n    id\n    authorID\n    channelID\n    text\n    commentType\n    channel {\n      handle\n      tiny72AvatarDataUrl\n    }\n    numChildren\n  }\n`;\n\nexport const POST_CHILDREN = gql`\n  query PostChildren($id: String!, $first: Int, $after: String) {\n    postsGetChildren(id: $id, first: $first, after: $after) {\n      edges {\n        post {\n          ... on PostComment {\n            ...CommentFragment\n            children {\n              edges {\n                post {\n                  ... on PostComment {\n                    ...CommentFragment\n                  }\n                }\n                cursor\n              }\n              pageInfo {\n                endCursor\n                hasNextPage\n              }\n            }\n          }\n        }\n        cursor\n      }\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n    }\n  }\n  ${COMMENT_FRAGMENT}\n`;\n\nexport const STORY_BOOST = gql`\n  query StoryBoost($id: String!) {\n    postsGet(id: $id) {\n      ... on PostExternalLink {\n        id\n        createdAt\n        openGraphData {\n          url\n          title\n          article {\n            published_time\n          }\n          images {\n            url\n          }\n        }\n        channel {\n          id\n          isStripeConnected\n          stripeAccountID\n          handle\n          newsroom {\n            contractAddress\n            multisigAddress\n            name\n            charter {\n              newsroomUrl\n              mission {\n                purpose\n              }\n            }\n          }\n          listing {\n            challenge {\n              challengeID\n            }\n          }\n        }\n        groupedSanitizedPayments {\n          usdEquivalent\n          payerChannel {\n            handle\n            tiny72AvatarDataUrl\n          }\n        }\n        numChildren\n        children {\n          edges {\n            post {\n              ... on PostComment {\n                ...CommentFragment\n                children {\n                  edges {\n                    post {\n                      ... on PostComment {\n                        ...CommentFragment\n                      }\n                    }\n                    cursor\n                  }\n                  pageInfo {\n                    endCursor\n                    hasNextPage\n                  }\n                }\n              }\n            }\n            cursor\n          }\n          pageInfo {\n            endCursor\n            hasNextPage\n          }\n        }\n      }\n    }\n  }\n  ${COMMENT_FRAGMENT}\n`;\n\nexport const POST_COMMENT_MUTATION = gql`\n  mutation($input: PostCreateCommentInput!) {\n    postsCreateComment(input: $input) {\n      id\n    }\n  }\n`;\n\nexport const COMMENT = gql`\n  query StoryBoost($id: String!) {\n    postsGet(id: $id) {\n      ... on PostComment {\n        ...CommentFragment\n      }\n    }\n  }\n  ${COMMENT_FRAGMENT}\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/StoryFeed/types.ts",
    "content": "export interface StoryBoostData {\n  createdAt: string;\n  openGraphData: OpenGraphData;\n  channel: {\n    isStripeConnected: boolean;\n    stripeAccountID: string;\n    newsroom: StoryNewsroomData;\n    listing: {\n      challenge: {\n        challengeID: string;\n      };\n    };\n  };\n  groupedSanitizedPayments: StoryBoostPaymentsData[];\n  children: any;\n  numChildren: number;\n}\n\nexport interface StoryBoostPaymentsData {\n  usdEquivalent: number;\n  payerChannel: {\n    handle: string;\n    tiny72AvatarDataUrl: string;\n  };\n}\n\nexport interface StoryNewsroomData {\n  contractAddress: string;\n  multisigAddress: string;\n  name: string;\n  charter: {\n    newsroomUrl: string;\n    mission: {\n      purpose: string;\n    };\n  };\n  handle: string;\n}\n\nexport interface OpenGraphData {\n  article: {\n    published_time: string;\n  };\n  description: string;\n  images: OpenGraphImageData[];\n  title: string;\n  url: string;\n}\n\nexport interface OpenGraphImageData {\n  url: string;\n}\n"
  },
  {
    "path": "packages/dapp/src/components/Sunset/Sunset.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { mediaQueries } from \"@joincivil/elements\";\nimport heroImgUrl from \"../images/storyfeed-banner-2x.png\";\nimport civilImgUrl from \"../images/img-civil.png\";\n\nexport const SunsetWrap = styled.div`\n  margin: 100px auto 40px;\n  max-width: 1036px;\n  padding: 0 20px;\n  position: relative;\n  width: 100%;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    padding: 0;\n    margin: 55px auto 40px;\n  }\n`;\n\nexport const Banner = styled.div`\n  img {\n    width: 100%;\n  }\n`;\n\nexport const BodyText = styled.div`\n  background-color: #fff;\n  margin: 0 auto;\n  max-width: 800px;\n  padding: 40px 40px 0;\n  position: relative;\n  top: -50px;\n\n  h1 {\n    font-size: 48px;\n    font-weight: 300;\n    margin-top: 0;\n    text-align: center;\n  }\n\n  p {\n    font-size: 18px;\n    line-height: 26px;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    padding: 40px 20px;\n    top: 0;\n\n    h1 {\n      font-size: 28px;\n    }\n  }\n`;\n\nconst Sunset: React.FunctionComponent = props => {\n  return (\n    <SunsetWrap>\n      <Banner>\n        <img src={heroImgUrl} />\n      </Banner>\n      <BodyText>\n        <h1>Ending the Civil Journey</h1>\n        <p>\n          It's with a heavy heart that I announce the end of Civil. The Civil team and technology will be joining\n          ConsenSys to build identity solutions on Ethereum.\n        </p>\n        <p>\n          In 2016, Civil was founded on a moonshot mission to create a blockchain-based media platform for trustworthy\n          journalism owned and operated by the public. We set out to decentralize how the news is vetted, how journalism\n          is funded, and how we stay informed as a society. We were among the first startups in the world to experiment\n          with blockchain and cryptocurrencies in the media space. We built innovative technology, supported\n          award-winning journalists, and inspired many people all over the world with our vision for a more\n          participatory media landscape. But ultimately, we failed to sustain ourselves independently.\n        </p>\n        <p>\n          Several months ago, we started to develop products related to decentralized identity in the media and\n          advertising space, which attracted enterprise interest for use cases such as trackable content licensing and\n          transparent ad decisioning. This pivot led to closer coordination with ConsenSys and the team building\n          solutions for identity and provenance tracking, which in turn started conversations about a strategic merger.\n          We are excited to share that the Civil team and technology will join ConsenSys to be a part of these efforts.\n          Although the journey for Civil is over, our new team continues to develop cutting-edge technology that I\n          believe will contribute to building a better internet. This isn't the outcome we had envisioned, but\n          nevertheless, we're proud of what we accomplished. We couldn’t have done it without the support of our\n          passionate community.\n        </p>\n        <p>\n          Newsrooms on Civil have always operated independently, and therefore will remain unaffected. The Civil\n          Registry, Civil tokens, and other work are open-source and operational, but there will be no further active\n          development or management on our part. The Civil Foundation's future is uncertain, but it is effectively in\n          hibernation for now.\n        </p>\n        <p>\n          Civil will always hold a special place in my heart. Our grand experiment did not achieve its mission, but we\n          did succeed in bringing many people together around something radically different and in service of something\n          deeply important. Our mission for journalism is more important now than ever. I'm grateful for our chance to\n          make a difference.\n        </p>\n        <p>\n          Thank you so much to all of our teammates, partners, newsrooms, and supporters. You made the journey\n          unforgettable.\n        </p>\n        <p>\n          Sincerely,\n          <br />\n          Matthew Iles, Civil CEO\n        </p>\n      </BodyText>\n      <Banner>\n        <img src={civilImgUrl} />\n      </Banner>\n    </SunsetWrap>\n  );\n};\n\nexport default Sunset;\n"
  },
  {
    "path": "packages/dapp/src/components/Tokens/StorefrontPage.tsx",
    "content": "import { Tokens } from \"./Tokens\";\n\nexport default Tokens;\n"
  },
  {
    "path": "packages/dapp/src/components/Tokens/Tokens.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { State } from \"../../redux/reducers\";\nimport { Helmet } from \"react-helmet\";\nimport { UserTokenAccount, LoadUser } from \"@joincivil/components\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\n\nexport interface TokensProps {\n  network: string;\n}\n\nexport const TokensComponent = ({ network }: TokensProps) => {\n  // TODO(jorgelo): Figure a way to pass these in here without busting typescript.\n  const addWalletPath = \"/auth/wallet\";\n  const signupPath = \"/auth/signup\";\n\n  return (\n    <>\n      <Helmet title=\"Token Account - The Civil Registry\" />\n      <ScrollToTopOnMount />\n      <LoadUser>\n        {({ loading, user }) => {\n          if (loading) {\n            // TODO(jorgelo): Should we have a loading state here?\n            return null;\n          }\n\n          return (\n            <UserTokenAccount\n              foundationAddress={\"0xf1176B0aeb7914B5472B61c97A4CF0E0bcacB579\"}\n              network={network}\n              user={user}\n              addWalletPath={addWalletPath}\n              signupPath={signupPath}\n            />\n          );\n        }}\n      </LoadUser>\n    </>\n  );\n};\n\nconst mapStateToProps = (state: State): TokensProps => {\n  const { network } = state;\n\n  return { network };\n};\n\nexport const Tokens = connect(mapStateToProps)(TokensComponent);\n"
  },
  {
    "path": "packages/dapp/src/components/Tokens/index.ts",
    "content": "export * from \"./Tokens\";\n"
  },
  {
    "path": "packages/dapp/src/components/Web3AuthWrapper.tsx",
    "content": "import * as React from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { State } from \"../redux/reducers\";\nimport AuthWeb3Signup from \"./Auth/AuthWeb3Signup\";\nimport AuthWeb3Login from \"./Auth/AuthWeb3Login\";\nimport SetUsername from \"./Auth/SetUsername\";\nimport SetEmail from \"./Auth/SetEmail\";\nimport { hideWeb3AuthModal, showWeb3LoginModal, showWeb3SignupModal } from \"../redux/actionCreators/ui\";\nimport { setNetwork, setNetworkName } from \"../redux/actionCreators/network\";\nimport { ICivilContext, CivilContext } from \"@joincivil/components\";\nimport { setNetworkValue, setDefaultNetworkValue } from \"@joincivil/utils\";\nimport SetAvatar from \"./Auth/SetAvatar\";\nimport config from \"../helpers/config\";\n\nexport const Web3AuthWrapper: React.FunctionComponent = () => {\n  // context\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  const civilUser = civilContext.currentUser;\n\n  // redux\n  const dispatch = useDispatch();\n  const web3AuthType = useSelector((state: State) => state.web3AuthType);\n  const showWeb3AuthModal = useSelector((state: State) => state.showWeb3AuthModal);\n  const userAddress: string | undefined = useSelector(\n    (state: State) =>\n      state.networkDependent &&\n      state.networkDependent.user &&\n      state.networkDependent.user.account &&\n      state.networkDependent.user.account.account,\n  );\n\n  React.useEffect(() => {\n    setDefaultNetworkValue(parseInt(config.DEFAULT_ETHEREUM_NETWORK!, 10));\n    const civil = civilContext.civil!;\n    const networkSub = civil.networkStream.subscribe(onNetworkUpdated);\n    const networkNameSub = civil.networkNameStream.subscribe(onNetworkNameUpdated);\n    const accountSub = civil.accountStream.subscribe(onAccountUpdated);\n\n    return function cleanup(): void {\n      networkSub.unsubscribe();\n      networkNameSub.unsubscribe();\n      accountSub.unsubscribe();\n    };\n  }, [civilContext]);\n\n  async function onNetworkUpdated(network: number): Promise<void> {\n    dispatch!(setNetwork(network.toString()));\n    setNetworkValue(network);\n  }\n\n  async function onNetworkNameUpdated(networkName: string): Promise<void> {\n    dispatch!(setNetworkName(networkName));\n  }\n\n  const onAccountUpdated = async (account: string | undefined): Promise<void> => {\n    const currentUser = civilContext.currentUser;\n    if (\n      account &&\n      currentUser &&\n      currentUser.ethAddress &&\n      account.toLowerCase() !== currentUser.ethAddress.toLowerCase()\n    ) {\n      console.warn(\"web3 account does not match that of the logged in user, logging out\", {\n        web3Account: account,\n        currentUserAccount: currentUser.ethAddress,\n      });\n      civilContext.auth.logout();\n    }\n  };\n\n  const showWeb3Signup = showWeb3AuthModal && web3AuthType === \"signup\";\n  const showWeb3Login = showWeb3AuthModal && web3AuthType === \"login\";\n  let showSetHandle = false;\n  let showSetAvatar = false;\n  let showSetEmail = false;\n  if (civilUser && civilUser.uid && civilUser.userChannel) {\n    showSetHandle = !civilUser.userChannel.handle;\n    if (!showSetHandle) {\n      showSetAvatar = !civilUser.userChannelAvatarPromptSeen;\n      if (!showSetAvatar) {\n        showSetEmail = !civilUser.userChannelEmailPromptSeen;\n      }\n    }\n  }\n  let channelID;\n  if (showSetHandle || showSetAvatar || showSetEmail) {\n    channelID = civilUser.userChannel.id;\n  }\n\n  async function handleLoginClicked(): Promise<void> {\n    dispatch(await showWeb3LoginModal());\n  }\n\n  async function handleSignUpClicked(): Promise<void> {\n    dispatch(await showWeb3SignupModal());\n  }\n\n  async function handleOnOuterClicked(): Promise<void> {\n    dispatch(await hideWeb3AuthModal());\n  }\n\n  async function handleOnSignupContinue(): Promise<void> {\n    dispatch(await hideWeb3AuthModal());\n  }\n\n  async function handleOnLoginContinue(): Promise<void> {\n    dispatch(await hideWeb3AuthModal());\n  }\n\n  async function handleSignUpUserExists(): Promise<void> {\n    dispatch(await showWeb3LoginModal());\n  }\n\n  async function handleLogInNoUserExists(): Promise<void> {\n    dispatch(await showWeb3SignupModal());\n  }\n\n  async function handleUserSelectSignUp(): Promise<void> {\n    dispatch(await showWeb3SignupModal());\n  }\n\n  async function handleUserSelectLogIn(): Promise<void> {\n    dispatch(await showWeb3LoginModal());\n  }\n\n  async function handleUpdateUser(): Promise<void> {\n    return civilContext.auth.handleInitialState();\n  }\n\n  React.useEffect(() => {\n    civilContext.auth.setShowWeb3Login(handleLoginClicked);\n    civilContext.auth.setShowWeb3Signup(handleSignUpClicked);\n  }, [dispatch]);\n\n  React.useEffect(() => {\n    civilContext.auth.setEnsureLoggedInUserEnabled(() => {\n      if (civilContext.currentUser && !userAddress) {\n        civilContext.civil!.currentProviderEnable().catch(err => console.error(\"error enabling ethereum\", err));\n      }\n    });\n  }, [civilContext.currentUser, userAddress]);\n\n  return (\n    <>\n      {showWeb3Signup && (\n        <AuthWeb3Signup\n          onSignUpContinue={handleOnSignupContinue}\n          onOuterClicked={handleOnOuterClicked}\n          onLoginClicked={handleLoginClicked}\n          onSignUpUserAlreadyExists={handleSignUpUserExists}\n          onUserSelectLogIn={handleUserSelectLogIn}\n        />\n      )}\n      {showWeb3Login && (\n        <AuthWeb3Login\n          onSignUpContinue={handleOnLoginContinue}\n          onOuterClicked={handleOnOuterClicked}\n          onSignUpClicked={handleSignUpClicked}\n          onLogInNoUserExists={handleLogInNoUserExists}\n          onUserSelectSignUp={handleUserSelectSignUp}\n        />\n      )}\n      {showSetHandle && <SetUsername channelID={channelID} onSetHandleComplete={handleUpdateUser} />}\n      {showSetAvatar && <SetAvatar channelID={channelID} onSetAvatarComplete={handleUpdateUser} />}\n      {showSetEmail && <SetEmail channelID={channelID} onSetEmailComplete={handleUpdateUser} />}\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/WrongNetwork.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { State } from \"../redux/reducers\";\nimport { isNetworkSupported, supportedNetworks, getFormattedNetworkNames } from \"../helpers/networkHelpers\";\nimport { WrongNetworkModal } from \"@joincivil/components\";\n\nexport interface WrongNetworkProps {\n  network: string;\n}\n\nconst WrongNetwork = (props: WrongNetworkProps) => {\n  if (!isNetworkSupported(props.network)) {\n    const supportedNetworkNames = getFormattedNetworkNames(supportedNetworks);\n    let formattedSupportedNetworkNames;\n    if (supportedNetworkNames.length > 2) {\n      supportedNetworkNames[supportedNetworkNames.length - 1] = `or ${\n        supportedNetworkNames[supportedNetworkNames.length - 1]\n      }`;\n      formattedSupportedNetworkNames = supportedNetworkNames.join(\", \");\n    } else {\n      formattedSupportedNetworkNames = supportedNetworkNames.join(\" or \");\n    }\n    return <WrongNetworkModal requiredNetworkNiceName={formattedSupportedNetworkNames} />;\n  }\n\n  return <></>;\n};\n\nconst mapStateToProps = (state: State): WrongNetworkProps => {\n  const { network } = state;\n\n  return { network };\n};\n\nexport default connect(mapStateToProps)(WrongNetwork);\n"
  },
  {
    "path": "packages/dapp/src/components/council/Government.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { State } from \"../../redux/reducers\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { PageView, ViewModule, ViewModuleHeader } from \"../utility/ViewModules\";\nimport { SetAppellate } from \"./SetAppellate\";\n\nconst StyledSpan = styled.span`\n  font-weight: bold;\n  margin: 0 10px 0 0;\n`;\n\nexport interface CouncilPageProps {\n  appellateAddr: string;\n  appellateMembers: string[];\n  controllerAddr: string;\n}\n\nclass Government extends React.Component<CouncilPageProps & DispatchProp<any>> {\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <PageView>\n        <ViewModule>\n          <ViewModuleHeader />\n          <div>\n            <StyledSpan>Appellate:</StyledSpan> {this.props.appellateAddr}\n          </div>\n          <div>\n            <StyledSpan>Appellate Members:</StyledSpan> {this.props.appellateMembers}\n          </div>\n          <div>\n            <StyledSpan>Controller:</StyledSpan> {this.props.controllerAddr}\n          </div>\n        </ViewModule>\n        <SetAppellate />\n      </PageView>\n    );\n  }\n}\n\nconst mapToStateToProps = (state: State): CouncilPageProps => {\n  const appellateAddr = state.networkDependent.appellate;\n  const controllerAddr = state.networkDependent.controller;\n  const appellateMembers = state.networkDependent.appellateMembers;\n  return { appellateAddr, appellateMembers, controllerAddr };\n};\n\nexport default connect(mapToStateToProps)(Government);\n"
  },
  {
    "path": "packages/dapp/src/components/council/SetAppellate.tsx",
    "content": "import * as React from \"react\";\nimport { TransactionButton } from \"@joincivil/components\";\nimport { ViewModule, ViewModuleHeader } from \"../utility/ViewModules\";\nimport { StyledFormContainer, FormGroup, InputElement } from \"../utility/FormElements\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\n\nexport interface SetAppellateState {\n  newValue: string;\n}\n\nexport class SetAppellate extends React.Component<{}, SetAppellateState> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      newValue: \"\",\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ViewModule>\n        <ViewModuleHeader>Set Appellate</ViewModuleHeader>\n        <StyledFormContainer>\n          <FormGroup>\n            <label>\n              Enter New Appellate Address\n              <InputElement type=\"text\" name=\"newValue\" onChange={this.updateAppellateValue} />\n            </label>\n          </FormGroup>\n\n          <FormGroup>\n            <TransactionButton transactions={[{ transaction: this.setAppellate }]}>\n              Update Government Parameter\n            </TransactionButton>\n          </FormGroup>\n        </StyledFormContainer>\n      </ViewModule>\n    );\n  }\n\n  private updateAppellateValue = (event: any): void => {\n    const val = event.target.value;\n    this.setState({ newValue: val });\n  };\n\n  // @TODO(jon): This would probably be a nice place for a confirm dialog\n  private setAppellate = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    if (this.state.newValue.length !== 42) {\n      throw new Error(\"oops. the address was not set correctly.\");\n    }\n    return this.context.setAppellate(this.state.newValue);\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/errors/ErrorBoundry.tsx",
    "content": "import * as React from \"react\";\nimport * as Sentry from \"@sentry/browser\";\n\nexport class ErrorBoundry extends React.Component<any, any> {\n  constructor(props: any) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  public componentDidCatch(error: Error, errorInfo: any): void {\n    this.setState({ error });\n    Sentry.withScope(scope => {\n      Object.keys(errorInfo).forEach(key => {\n        scope.setExtra(key, errorInfo[key]);\n      });\n      Sentry.captureException(error);\n    });\n  }\n\n  public render(): JSX.Element | React.ReactNode {\n    if (this.state.error) {\n      // render fallback UI\n      return (\n        <div>\n          <h3>Something went wrong!</h3>\n          <a onClick={() => Sentry.showReportDialog()}>Report feedback</a>\n        </div>\n      );\n    } else {\n      // when there's not an error, render children untouched\n      return this.props.children;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/components/footer/Footer.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\n\nimport {\n  colors,\n  fonts,\n  mediaQueries,\n  CivilIcon,\n  TwitterIcon,\n  FacebookIcon,\n  InstagramIcon,\n  LinkedInIcon,\n} from \"@joincivil/elements\";\n\nimport { links } from \"../../helpers/links\";\n\nconst StyledFooter = styled.footer`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  margin: 50px auto 0;\n  max-width: 1440px;\n  padding: 50px 30px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 40px 15px;\n  }\n`;\n\nconst StyledFooterInner = styled.div`\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nconst StyledFooterInnerLeft = styled.div`\n  display: flex;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    margin: 0 0 30px;\n  }\n`;\n\nconst StyledFooterInnerRight = styled.div`\n  font-size: 12px;\n  padding: 9px 0 0;\n  text-align: right;\n\n  ${mediaQueries.MOBILE} {\n    padding: 9px 0 0;\n    text-align: left;\n  }\n`;\n\nconst StyledFooterLogo = styled.div`\n  margin-right: 50px;\n  width: 74px;\n`;\n\nconst StyledFooterNav = styled.nav`\n  display: flex;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n\n  ul {\n    margin: 0 15px;\n    padding: 2px 0 0;\n    width: 135px;\n\n    ${mediaQueries.MOBILE} {\n      margin: 0 0 15px;\n      padding: 0;\n      width: 100%;\n    }\n  }\n\n  li {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 16px;\n    line-height: 26px;\n    list-style: none;\n    margin: 0;\n    text-align: left;\n  }\n\n  b {\n    color: ${colors.primary.BLACK};\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 0.8px;\n    line-height: 26px;\n    text-transform: uppercase;\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_GRAY_1};\n    font-size: 12px;\n    font-weight: 500;\n    line-height: 28px;\n    text-decoration: none;\n    text-transform: uppercase;\n    -webkit-transition: color 0.2s;\n    transition: color 0.2s;\n  }\n\n  a:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nconst StyledSlogan = styled.span`\n  display: block;\n  font-size: 12px;\n  font-weight: 800;\n  letter-spacing: 0.8px;\n  margin: 0 auto 10px;\n  text-transform: uppercase;\n`;\n\nconst StyledFooterSocial = styled.div`\n  margin: 0 0 69px;\n\n  ${TwitterIcon} path,\n  ${FacebookIcon} path,\n  ${InstagramIcon} path {\n    fill: ${colors.accent.CIVIL_GRAY_1};\n  }\n\n  ${TwitterIcon}:hover path,\n  ${FacebookIcon}:hover path,\n  ${InstagramIcon}:hover path {\n    fill: ${colors.accent.CIVIL_BLUE};\n  }\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 0 30px;\n  }\n\n  a {\n    margin: 0 14px 0 0;\n\n    &:last-of-type {\n      margin: 0;\n    }\n  }\n`;\n\nconst StyledFooterCopyright = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  display: block;\n  font-size: 12px;\n`;\n\nexport const Footer: React.FunctionComponent = () => {\n  const currentYear = new Date().getFullYear().toString();\n\n  return (\n    <StyledFooter>\n      <StyledFooterInner>\n        <StyledFooterInnerLeft>\n          <StyledFooterLogo>\n            <a href={links.MARKETING_SITE}>\n              <CivilIcon />\n            </a>\n          </StyledFooterLogo>\n\n          <StyledFooterNav>\n            <div>\n              <ul>\n                <li>\n                  <b>Civil</b>\n                </li>\n                <li>\n                  <a href={links.COMMUNITY} target=\"_blank\">\n                    Community\n                  </a>\n                </li>\n                <li>\n                  <a href={links.CONSTITUTION} target=\"_blank\">\n                    Constitution\n                  </a>\n                </li>\n                <li>\n                  <a href={links.FOUNDATION} target=\"_blank\">\n                    Foundation\n                  </a>\n                </li>\n                <li>\n                  <a href={links.COUNCIL} target=\"_blank\">\n                    Council\n                  </a>\n                </li>\n              </ul>\n            </div>\n            <div>\n              <ul>\n                <li>\n                  <b>Company</b>\n                </li>\n                <li>\n                  <a href={links.TEAM} target=\"_blank\">\n                    Our Team\n                  </a>\n                </li>\n                <li>\n                  <a href={links.BLOG} target=\"_blank\">\n                    Blog\n                  </a>\n                </li>\n                <li>\n                  <a href={links.PARTNERS} target=\"_blank\">\n                    Partners\n                  </a>\n                </li>\n                <li>\n                  <a href={links.CAREERS} target=\"_blank\">\n                    Careers\n                  </a>\n                </li>\n                <li>\n                  <a href={links.PRIVACY_POLICY} target=\"_blank\">\n                    Privacy Policy\n                  </a>\n                </li>\n                <li>\n                  <a href={links.TERMS} target=\"_blank\">\n                    Terms\n                  </a>\n                </li>\n              </ul>\n            </div>\n            <div>\n              <ul>\n                <li>\n                  <b>For Developers</b>\n                </li>\n                <li>\n                  <a href={links.GITHUB} target=\"_blank\">\n                    Github\n                  </a>\n                </li>\n                <li>\n                  <a href={links.DEVELOPERS_MAILTO} target=\"_blank\">\n                    Developer Contact\n                  </a>\n                </li>\n                <li>\n                  <a href={links.DEV_BLOG} target=\"_blank\">\n                    Under The Hood\n                  </a>\n                </li>\n              </ul>\n            </div>\n            <div>\n              <ul>\n                <li>\n                  <b>Contact</b>\n                </li>\n                <li>\n                  <a href={links.FAQ_HOME} target=\"_blank\">\n                    Help\n                  </a>\n                </li>\n                <li>\n                  <a href={links.CONTACT} target=\"_blank\">\n                    Contact\n                  </a>\n                </li>\n                <li>\n                  <a href={links.PRESS} target=\"_blank\">\n                    Press\n                  </a>\n                </li>\n              </ul>\n            </div>\n          </StyledFooterNav>\n        </StyledFooterInnerLeft>\n\n        <StyledFooterInnerRight>\n          <StyledSlogan>#ownthenews</StyledSlogan>\n\n          <StyledFooterSocial>\n            <a href={links.TWITTER} target=\"_blank\">\n              <TwitterIcon width={20} height={20} />\n            </a>\n            <a href={links.FACEBOOK} target=\"_blank\">\n              <FacebookIcon width={20} height={20} />\n            </a>\n            <a href={links.INSTAGRAM} target=\"_blank\">\n              <InstagramIcon width={20} height={20} />\n            </a>\n            <a href={links.LINKEDIN} target=\"_blank\">\n              <LinkedInIcon width={20} height={20} />\n            </a>\n          </StyledFooterSocial>\n\n          <StyledFooterCopyright>© {currentYear} The Civil Media Company</StyledFooterCopyright>\n        </StyledFooterInnerRight>\n      </StyledFooterInner>\n    </StyledFooter>\n  );\n};\n\nexport default Footer;\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavBar.tsx",
    "content": "import * as React from \"react\";\nimport { CivilLogo, colors } from \"@joincivil/elements\";\nimport { NavMenu } from \"./NavMenu\";\nimport { NavContainer, NavOuter, NavLogo, NavInner, NavInnerRight } from \"./styledComponents\";\nimport UserNotificationBar from \"./UserNotificationBar\";\n\nconst UserAccountContainer = React.lazy(async () =>\n  import(/* webpackChunkName: \"user-account-container\" */ \"./UserAccountContainer\"),\n);\n\nexport const NavBar: React.FunctionComponent = () => {\n  return (\n    <NavContainer>\n      <NavOuter>\n        <NavInner>\n          <NavLogo>\n            <a href=\"https://civil.co\">\n              <CivilLogo color={colors.basic.WHITE} preventBlueOnHover={true} />\n            </a>\n          </NavLogo>\n\n          <NavMenu />\n        </NavInner>\n\n        <NavInnerRight>{<UserAccountContainer />}</NavInnerRight>\n      </NavOuter>\n      <UserNotificationBar />\n    </NavContainer>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavBarTypes.ts",
    "content": "export interface NavUserAccountProps {\n  balance: string;\n  userEthAddress?: string;\n  votingBalance: string;\n  civilUser?: any;\n}\n\nexport interface NavAuthenticationProps {\n  authenticationURL: string;\n  applyURL: string;\n  enableEthereum?(): void;\n}\n\nexport type NavProps = NavUserAccountProps & NavAuthenticationProps & NavDrawerProps;\n\nexport interface NavState {\n  isUserDrawerOpen: boolean;\n}\n\nexport interface NavArrowProps {\n  isOpen?: boolean;\n}\n\nexport interface NavMenuState {\n  isResponsiveDrawerOpen: boolean;\n}\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavDrawer.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { ICivilContext, CivilContext } from \"@joincivil/components\";\nimport { copyToClipboard, getFormattedEthAddress } from \"@joincivil/utils\";\nimport { buttonSizes, Button } from \"@joincivil/elements\";\n\nimport { StyledNavDrawer, NavDrawerSection, NavDrawerSectionHeader, UserAddress, CopyButton } from \"./styledComponents\";\nimport { NavDrawerUserAddessText, NavDrawerCopyBtnText } from \"./textComponents\";\nimport { routes } from \"../../constants\";\n\nexport interface NavDrawerProps {\n  userAccountElRef?: any;\n  handleOutsideClick(): void;\n}\n\nexport const NavDrawerComponent: React.FunctionComponent<NavDrawerProps> = props => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  const civilUser = civilContext.currentUser;\n  const userEthAddress = civilUser && civilUser.ethAddress;\n\n  async function onLogoutPressed(): Promise<any> {\n    civilContext.auth.logout();\n  }\n\n  if (!userEthAddress) {\n    return <></>;\n  }\n\n  return (\n    <StyledNavDrawer>\n      <NavDrawerSection>\n        <NavDrawerSectionHeader>\n          <NavDrawerUserAddessText />\n        </NavDrawerSectionHeader>\n        <UserAddress>{getFormattedEthAddress(userEthAddress)}</UserAddress>\n        <CopyButton size={buttonSizes.SMALL} onClick={(ev: any) => copyToClipboard(userEthAddress)}>\n          <NavDrawerCopyBtnText />\n        </CopyButton>\n      </NavDrawerSection>\n      <NavDrawerSection>\n        <Button size={buttonSizes.SMALL} to={routes.DASHBOARD_ROOT}>\n          View My Dashboard\n        </Button>\n      </NavDrawerSection>\n      <NavDrawerSection>\n        <Button size={buttonSizes.SMALL} to={routes.ACCOUNT_ROOT}>\n          View My Account\n        </Button>\n      </NavDrawerSection>\n      <NavDrawerSection>\n        <Button size={buttonSizes.SMALL} onClick={onLogoutPressed}>\n          Logout\n        </Button>\n      </NavDrawerSection>\n    </StyledNavDrawer>\n  );\n};\n\nclass NavDrawer extends React.Component<NavDrawerProps> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n    document.addEventListener(\"mousedown\", this.handleClick, false);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n    document.removeEventListener(\"mousedown\", this.handleClick, false);\n  }\n\n  public render(): React.ReactPortal {\n    return ReactDOM.createPortal(<NavDrawerComponent {...this.props} />, this.bucket);\n  }\n\n  private handleClick = (event: any) => {\n    const toggleEl = this.props.userAccountElRef && this.props.userAccountElRef.current;\n    if (\n      this.bucket.contains(event.target) ||\n      ((toggleEl && toggleEl.contains(event.target)) || event.target === toggleEl)\n    ) {\n      return;\n    }\n\n    this.props.handleOutsideClick();\n  };\n}\n\nexport default NavDrawer;\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavDropDown.tsx",
    "content": "import * as React from \"react\";\nimport { DropDownContain, DropDownLabel, DropDownArrow, DropDownLinks } from \"./styledComponents\";\n\nexport interface NavDropDownProps {\n  label: string | JSX.Element;\n}\n\nexport const NavDropDown: React.FunctionComponent<NavDropDownProps> = props => {\n  return (\n    <DropDownContain>\n      <DropDownLabel>\n        {props.label}\n        <DropDownArrow />\n      </DropDownLabel>\n      <DropDownLinks>{props.children}</DropDownLinks>\n    </DropDownContain>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavErrorBar.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, fonts } from \"../styleConstants\";\n\nconst ErrorBar = styled.div`\n  background-color: ${colors.accent.CIVIL_RED_FADED};\n  color: ${colors.basic.WHITE};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: 500;\n  height: 16px;\n  padding: 8px 0;\n  text-align: center;\n  text-transform: uppercase;\n  width: 100%;\n`;\n\nexport const NavErrorBar: React.FunctionComponent = props => {\n  return <ErrorBar>Please Switch To Rinkeby Testnet</ErrorBar>;\n};\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavLink.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport interface NavLinkProps {\n  to?: string;\n  href?: string;\n  target?: string;\n  onClick?(): void;\n}\n\nexport const NavLink: React.FunctionComponent<NavLinkProps> = props => {\n  let LinkType;\n\n  if (props.to) {\n    LinkType = (\n      <Link to={props.to} onClick={props.onClick}>\n        {props.children}\n      </Link>\n    );\n  } else if (props.href) {\n    LinkType = (\n      <a href={props.href} target={props.target} onClick={props.onClick}>\n        {props.children}\n      </a>\n    );\n  }\n\n  return <>{LinkType}</>;\n};\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavMenu.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { NavMenuState } from \"./NavBarTypes\";\nimport { StyledNavMenuContainer, StyledNavMenuResponsiveContainer, StyledMobileNavMenu } from \"./styledComponents\";\nimport {\n  NavLinkRegistryText,\n  NavLinkRegistryHomeText,\n  NavLinkParameterizerText,\n  NavLinkContractAddressesText,\n  NavLinkStoryBoostsText,\n  NavLinkProjectBoostsText,\n  NavLinkConstitutionText,\n  NavLinkFoundationText,\n  NavLinkFaqText,\n  NavLinkStoryfeedText,\n  NavLinkPublishersText,\n} from \"./textComponents\";\nimport { NavLink } from \"./NavLink\";\nimport { NavDropDown } from \"./NavDropDown\";\nimport { NavMenuResponsiveToggleButton } from \"./NavMenuResponsiveToggleButton\";\n\ninterface NavMenuCloseDrawerProp {\n  closeDrawer?(): void;\n}\n\nconst NavMenuLinksComponent: React.FunctionComponent<NavMenuCloseDrawerProp> = props => {\n  let mobileOnClickProp: any = {};\n  if (props.closeDrawer) {\n    mobileOnClickProp = { onClick: props.closeDrawer };\n  }\n  return (\n    <>\n      <NavDropDown label={<NavLinkStoryfeedText />}>\n        <NavLink to=\"/storyfeed\" {...mobileOnClickProp}>\n          <NavLinkStoryBoostsText />\n        </NavLink>\n        <NavLink to=\"/boosts\" {...mobileOnClickProp}>\n          <NavLinkProjectBoostsText />\n        </NavLink>\n      </NavDropDown>\n      <NavDropDown label={<NavLinkRegistryText />}>\n        <NavLink to=\"/registry\" {...mobileOnClickProp}>\n          <NavLinkRegistryHomeText />\n        </NavLink>\n        <NavLink to=\"/parameterizer\" {...mobileOnClickProp}>\n          <NavLinkParameterizerText />\n        </NavLink>\n        <NavLink href=\"https://civilfound.org/\" target=\"_blank\">\n          <NavLinkFoundationText />\n        </NavLink>\n        <NavLink href=\"https://learn.civil.co/constitution/\" target=\"_blank\">\n          <NavLinkConstitutionText />\n        </NavLink>\n        <NavLink to=\"/contract-addresses\" {...mobileOnClickProp}>\n          <NavLinkContractAddressesText />\n        </NavLink>\n      </NavDropDown>\n      <NavLink href=\"https://learn.civil.co/boosts\" target=\"_blank\">\n        <NavLinkPublishersText />\n      </NavLink>\n      <NavLink href=\"https://help.civil.co/\" target=\"_blank\">\n        <NavLinkFaqText />\n      </NavLink>\n    </>\n  );\n};\n\nclass NavMenuResponsiveDrawer extends React.Component<NavMenuState & NavMenuCloseDrawerProp> {\n  public bucket: HTMLDivElement = document.createElement(\"div\");\n\n  public componentDidMount(): void {\n    document.body.appendChild(this.bucket);\n  }\n\n  public componentWillUnmount(): void {\n    document.body.removeChild(this.bucket);\n  }\n\n  public render(): React.ReactPortal | null {\n    if (!this.props.isResponsiveDrawerOpen) {\n      return null;\n    }\n\n    const mobileNavMenu = (\n      <>\n        <StyledMobileNavMenu>\n          <NavMenuLinksComponent {...this.props} />\n        </StyledMobileNavMenu>\n      </>\n    );\n\n    return ReactDOM.createPortal(mobileNavMenu, this.bucket);\n  }\n}\n\nexport class NavMenu extends React.Component<{}, NavMenuState> {\n  constructor(props: {}) {\n    super(props);\n    this.state = {\n      isResponsiveDrawerOpen: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StyledNavMenuContainer>\n          <NavMenuLinksComponent />\n        </StyledNavMenuContainer>\n        <NavMenuResponsiveToggleButton\n          isResponsiveDrawerOpen={this.state.isResponsiveDrawerOpen}\n          onClick={() => this.toggleResponsiveMenuDrawer()}\n        />\n        <StyledNavMenuResponsiveContainer>\n          <NavMenuResponsiveDrawer\n            isResponsiveDrawerOpen={this.state.isResponsiveDrawerOpen}\n            closeDrawer={this.closeResponsiveMenuDrawer}\n          />\n        </StyledNavMenuResponsiveContainer>\n      </>\n    );\n  }\n\n  private toggleResponsiveMenuDrawer = (): void => {\n    this.setState({ isResponsiveDrawerOpen: !this.state.isResponsiveDrawerOpen });\n  };\n\n  private closeResponsiveMenuDrawer = (): void => {\n    this.setState({ isResponsiveDrawerOpen: false });\n  };\n}\n"
  },
  {
    "path": "packages/dapp/src/components/header/NavMenuResponsiveToggleButton.tsx",
    "content": "import * as React from \"react\";\n\nimport { CloseXIcon, HamburgerIcon } from \"@joincivil/elements\";\n\nimport { NavMenuState } from \"./NavBarTypes\";\nimport { StyledNavMenuResponsiveButton } from \"./styledComponents\";\n\nexport interface NavMenuResponsiveToggleButtonProps extends NavMenuState {\n  onClick(): void;\n}\n\nexport class NavMenuResponsiveToggleButton extends React.Component<NavMenuResponsiveToggleButtonProps> {\n  public render(): JSX.Element {\n    const Icon = this.props.isResponsiveDrawerOpen ? CloseXIcon : HamburgerIcon;\n\n    return (\n      <StyledNavMenuResponsiveButton>\n        <div onClick={this.props.onClick}>\n          <Icon />\n        </div>\n      </StyledNavMenuResponsiveButton>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/components/header/UserAccount.tsx",
    "content": "import * as React from \"react\";\n\nimport { NavLink } from \"./NavLink\";\nimport {\n  Arrow,\n  AvatarContainer,\n  CvlContainer,\n  UserAvatar,\n  NavUser,\n  StyledVisibleIfLoggedInLink,\n  NavBarButton,\n  BorderlessNavBarButton,\n  HandleContainer,\n  UserAvatarFigure,\n} from \"./styledComponents\";\nimport { NavLinkDashboardText } from \"./textComponents\";\nimport { ICivilContext, CivilContext, ClipLoader } from \"@joincivil/components\";\nimport { useDispatch } from \"react-redux\";\nimport { showWeb3LoginModal, showWeb3SignupModal } from \"../../redux/actionCreators/ui\";\nimport NavDrawer from \"./NavDrawer\";\n\nconst UserAccount: React.FunctionComponent = props => {\n  // context\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  if (civilCtx === null) {\n    // context still loading\n    return <></>;\n  }\n\n  // redux\n  const dispatch = useDispatch();\n\n  const civilUser = civilCtx.currentUser;\n  const userAccount = civilUser && civilUser.ethAddress;\n\n  // state\n  const [isUserDrawerOpen, setUserDrawerOpen] = React.useState(false);\n  const toggleDrawer = () => {\n    if (userAccount) {\n      setUserDrawerOpen(!isUserDrawerOpen);\n    }\n  };\n\n  async function onLoginPressed(): Promise<any> {\n    dispatch!(await showWeb3LoginModal());\n  }\n  async function onSignupPressed(): Promise<any> {\n    dispatch!(await showWeb3SignupModal());\n  }\n\n  if (civilUser) {\n    const userAccountElRef = React.createRef<HTMLDivElement>();\n\n    const tiny72AvatarDataUrl = civilUser.userChannel!.tiny72AvatarDataUrl;\n    const showFigure = !tiny72AvatarDataUrl;\n    const handle = civilUser.userChannel!.handle;\n    const initial = handle ? handle.charAt(0) : \"?\";\n\n    return (\n      <>\n        <StyledVisibleIfLoggedInLink>\n          <NavLink to=\"/dashboard\">\n            <NavLinkDashboardText />\n          </NavLink>\n        </StyledVisibleIfLoggedInLink>\n        <div ref={userAccountElRef}>\n          <NavUser onClick={(ev: any) => toggleDrawer()}>\n            <CvlContainer>\n              <AvatarContainer>\n                {tiny72AvatarDataUrl && <UserAvatar src={civilUser.userChannel!.tiny72AvatarDataUrl} />}\n                {showFigure && <UserAvatarFigure>{initial}</UserAvatarFigure>}\n              </AvatarContainer>\n              <HandleContainer>{civilUser.userChannel!.handle}</HandleContainer>\n              <Arrow isOpen={isUserDrawerOpen} />\n            </CvlContainer>\n          </NavUser>\n        </div>\n        {isUserDrawerOpen && (\n          <NavDrawer userAccountElRef={userAccountElRef} handleOutsideClick={() => setUserDrawerOpen(false)} />\n        )}\n      </>\n    );\n  } else if (civilCtx.auth.loading) {\n    return <ClipLoader size={10} />;\n  }\n\n  return (\n    <>\n      <BorderlessNavBarButton onClick={onLoginPressed}>Log In</BorderlessNavBarButton>\n      <NavBarButton onClick={onSignupPressed}>Sign Up</NavBarButton>\n    </>\n  );\n};\n\nexport default UserAccount;\n"
  },
  {
    "path": "packages/dapp/src/components/header/UserAccountContainer.tsx",
    "content": "import * as React from \"react\";\n\nconst UserAccount = React.lazy(async () => import(/* webpackChunkName: \"user-account\" */ \"./UserAccount\"));\n\nexport const UserAccountContainer: React.FunctionComponent = () => {\n  return (\n    <React.Suspense fallback={<></>}>\n      <UserAccount />\n    </React.Suspense>\n  );\n};\n\nexport default UserAccountContainer;\n"
  },
  {
    "path": "packages/dapp/src/components/header/UserNotificationBar.tsx",
    "content": "import * as React from \"react\";\nimport { ICivilContext, CivilContext } from \"@joincivil/components\";\nimport styled from \"styled-components\";\nimport { ApolloConsumer } from \"react-apollo\";\nimport gql from \"graphql-tag\";\n\nconst NotificationBar = styled.div`\n  width: 100%;\n  min-height: 28px;\n  background-color: #e0e6ff;\n  color: black;\n  display: flex;\n  justify-content: space-around;\n  align-items: center;\n  padding-top: 5px;\n  padding-bottom: 5px;\n`;\n\nconst setEmailMutation = gql`\n  mutation($input: ChannelsSetEmailInput!) {\n    userChannelSetEmail(input: $input) {\n      id\n    }\n  }\n`;\n\nconst UserNotificationBar: React.FunctionComponent = props => {\n  // context\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  if (civilCtx === null) {\n    // context still loading\n    return <></>;\n  }\n  const [hasResent, setHasResent] = React.useState(false);\n  const civilUser = civilCtx.currentUser;\n\n  if (civilUser) {\n    const isAwaitingEmailConfirmation = civilUser.userChannel!.isAwaitingEmailConfirmation;\n\n    if (isAwaitingEmailConfirmation) {\n      return (\n        <ApolloConsumer>\n          {client => (\n            <NotificationBar\n              onClick={async e => {\n                await client.mutate({\n                  mutation: setEmailMutation,\n                  variables: {\n                    input: {\n                      emailAddress: civilUser.userChannel!.EmailAddressRestricted,\n                      channelID: civilUser.userChannel!.id,\n                      addToMailing: false,\n                    },\n                  },\n                });\n                setHasResent(true);\n              }}\n            >\n              Please check your email to confirm your email address.\n              {!hasResent && <> Click this banner to resend confirmation email.</>}\n              {hasResent && <> Confirmation email has been resent.</>}\n            </NotificationBar>\n          )}\n        </ApolloConsumer>\n      );\n    }\n  }\n  return <></>;\n};\n\nexport default UserNotificationBar;\n"
  },
  {
    "path": "packages/dapp/src/components/header/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { colors, fonts, mediaQueries, Button, DarkButton } from \"@joincivil/elements\";\n\nimport { NavArrowProps } from \"./NavBarTypes\";\n\nexport const NavContainer = styled.div`\n  left: 0;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  z-index: 999;\n`;\n\nexport const NavOuter = styled.div`\n  align-items: center;\n  background-color: ${colors.primary.BLACK};\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_1};\n  color: ${colors.basic.WHITE};\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: 500;\n  justify-content: space-between;\n  letter-spacing: 1px;\n  min-height: 74px;\n  text-transform: uppercase;\n  padding: 10px 20px;\n  position: relative;\n  * {\n    box-sizing: border-box;\n  }\n\n  ${mediaQueries.MOBILE} {\n    min-height: 54px;\n    padding-top: 0;\n    padding-bottom: 0;\n    max-width: 100%;\n  }\n\n  & a {\n    color: ${colors.basic.WHITE};\n    text-decoration: none;\n    transition: color 0.2s;\n    white-space: nowrap;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_GRAY_2};\n    }\n  }\n`;\n\nexport const NavLogo = styled.div`\n  height: 21px;\n  margin-right: 12px;\n  width: 72px;\n\n  ${mediaQueries.MOBILE} {\n    margin-left: 22px;\n  }\n`;\n\nexport const NavInner = styled.div`\n  align-items: center;\n  display: flex;\n`;\n\nexport const NavInnerRight = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: flex-end;\n`;\n\nexport const NavAccent = styled.span`\n  margin: 0 15px;\n  &,\n  & a {\n    color: ${colors.accent.CIVIL_TEAL};\n  }\n`;\n\nexport const NavUser = styled.div`\n  align-items: center;\n  border-left: 1px solid ${colors.accent.CIVIL_GRAY_1};\n  cursor: pointer;\n  display: flex;\n  height: 30px;\n  justify-content: space-between;\n  margin-left: 15px;\n  padding-left: 15px;\n\n  ${mediaQueries.MOBILE} {\n    border-left: none;\n  }\n  ${mediaQueries.MOBILE_SMALL} {\n    padding-left: 0;\n  }\n`;\n\nexport const CvlContainer = styled.div`\n  align-items: center;\n  display: flex;\n  box-sizing: border-box;\n  justify-content: space-between;\n  padding-left: 20px;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    padding-left: 0;\n  }\n`;\n\nexport const BalancesContainer = styled.span`\n  display: inline-block;\n  flex-grow: 2;\n`;\n\nexport const UserCvlBalance = styled.span`\n  display: block;\n  font-size: 16px;\n  font-weight: 800;\n  line-height: 19px;\n  margin-left: 10px;\n`;\n\nexport const UserCvlVotingBalance = styled.span`\n  display: block;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 16px;\n  margin-left: 10px;\n`;\n\nexport const AvatarContainer = styled.div`\n  align-items: center;\n  display: flex;\n  width: 60px;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    width: auto;\n  }\n`;\n\nexport const HandleContainer = styled.div`\n  margin-right: 16px;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: inline;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n    max-width: 75px;\n    margin-right: 8px;\n  }\n`;\n\nexport const UserAvatarFigure = styled.figure`\n  background-color: #ef6b4a;\n  border: 2px solid ${colors.basic.WHITE};\n  border-radius: 50%;\n  height: 36px;\n  margin: 0 8px 0 0;\n  width: 36px;\n  display: flex;\n  justify-content: space-around;\n  align-items: center;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 25px;\n`;\n\nexport const UserAvatar = styled.img`\n  border-radius: 50%;\n  height: 36px;\n  margin: 0 8px 0 0;\n  width: 36px;\n`;\n\nexport const Arrow = styled.div<NavArrowProps>`\n  border-bottom: 2px solid ${colors.basic.WHITE};\n  border-left: 2px solid ${colors.basic.WHITE};\n  height: 8px;\n  transform: ${props => (props.isOpen ? \"rotate(135deg)\" : \"rotate(-45deg)\")};\n  transition: transform 0.25s;\n  width: 8px;\n`;\n\nexport const LogInButton = styled(Button)`\n  margin-left: 10px;\n`;\n\nexport const BorderlessNavBarButton = styled(DarkButton)`\n  white-space: nowrap;\n  font-size: 14px;\n  font-weight: bold;\n  letter-spacing: 1px;\n  padding: 15px;\n  text-align: center;\n`;\n\nexport const NavBarButton = styled(DarkButton)`\n  white-space: nowrap;\n  border: 2px solid ${colors.basic.WHITE};\n  font-size: 14px;\n  font-weight: bold;\n  letter-spacing: 1px;\n  padding: 15px;\n  text-align: center;\n\n  &:hover {\n    background: ${colors.basic.WHITE};\n    color: ${colors.primary.BLACK};\n  }\n\n  ${mediaQueries.MOBILE} {\n    padding-top: 8px;\n    padding-bottom: 8px;\n  }\n`;\n\nexport const StyledNavDrawer = styled.div`\n  background-color: ${colors.primary.BLACK};\n  bottom: 0;\n  min-height: 100%;\n  position: fixed;\n  overflow-y: scroll;\n  padding-bottom: 100px;\n  top: 62px;\n  right: 0;\n  width: 275px;\n  z-index: 1;\n  * {\n    box-sizing: border-box;\n  }\n\n  ${mediaQueries.MOBILE} {\n    z-index: 2;\n    top: 54px;\n  }\n`;\n\nexport const NavDrawerSection = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_1};\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 30px 25px;\n`;\n\nexport const NavDrawerSectionHeader = styled.div`\n  font-size: 11px;\n  font-weight: 800;\n  letter-spacing: 0.92px;\n  margin-bottom: 20px;\n  text-transform: uppercase;\n`;\n\nexport const NavDrawerRow = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 15px;\n`;\n\nexport const NavDrawerRowLabel = styled.div`\n  align-items: center;\n  display: flex;\n  font-size: 14px;\n  font-weight: 500;\n  line-height: 17px;\n`;\n\nexport const NavDrawerRowInfo = styled.div`\n  text-align: right;\n  width: 75%;\n`;\n\nexport const NavDrawerPill = styled.div`\n  background-color: ${colors.accent.CIVIL_BLUE};\n  border-radius: 12px;\n  color: ${colors.basic.WHITE};\n  font-size: 14px;\n  font-weight: 200;\n  min-width: 28px;\n  padding: 5px 8px;\n  text-align: center;\n`;\n\nexport const NavDrawerCvlBalance = styled.div`\n  color: ${colors.basic.WHITE};\n  font-size: 16px;\n  font-weight: 600;\n  line-height: 19px;\n`;\n\nexport const UserAddress = styled.span`\n  color: ${colors.basic.WHITE};\n  font-family: ${fonts.MONOSPACE};\n  font-size: 16px;\n  font-weight: 800;\n  line-height: 26px;\n  word-wrap: break-word;\n`;\n\nexport const NavDrawerBuyCvlBtn = styled(Button)`\n  font-weight: 600;\n  margin-top: 20px;\n  padding: 15px;\n  text-align: center;\n  width: 100%;\n`;\n\nexport const CopyButton = styled(Button)`\n  font-size: 10px;\n  font-weight: 600;\n  letter-spacing: 1px;\n  margin-top: 10px;\n  padding: 5px;\n`;\n\nexport const StyledNavMenuContainer = styled.div`\n  align-items: center;\n  display: flex;\n\n  & > a {\n    margin: 0 15px;\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport const StyledNavMenuResponsiveButton = styled.div`\n  display: none;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    left: 0;\n    position: absolute;\n  }\n`;\n\nexport const StyledNavMenuResponsiveContainer = styled.div`\n  display: none;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nexport const StyledMobileNavMenu = styled.div`\n  background-color: ${colors.primary.BLACK};\n  box-sizing: border-box;\n  display: none;\n  color: ${colors.basic.WHITE};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  font-weight: 500;\n  letter-spacing: 1px;\n  position: fixed;\n  overflow-y: scroll;\n  padding: 0 45px 10px;\n  top: 52px;\n  left: 0;\n  width: 100%;\n  z-index: 1;\n  * {\n    box-sizing: border-box;\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n\n  & a {\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_2};\n    color: ${colors.basic.WHITE};\n    display: block;\n    margin: 0;\n    padding: 15px 0;\n    text-decoration: none;\n    transition: color 0.2s;\n    width: 100%;\n    &:last-of-type {\n      border-bottom: none;\n    }\n    &:hover {\n      color: ${colors.accent.CIVIL_GRAY_2};\n    }\n  }\n`;\n\nexport const StyledVisibleIfLoggedInLink = styled.span`\n  display: inline-block;\n  margin: 0 15px;\n\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport const DropDownContain = styled.div`\n  padding: 6px 12px;\n  position: relative;\n  &:hover > div {\n    display: block;\n  }\n\n  ${mediaQueries.MOBILE} {\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_2};\n    padding: 15px 0;\n  }\n`;\n\nexport const DropDownLabel = styled.span`\n  align-items: center;\n  display: flex;\n\n  ${mediaQueries.MOBILE} {\n    color: ${colors.accent.CIVIL_GRAY_2};\n    display: block;\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_2};\n    padding-bottom: 15px;\n  }\n`;\n\nexport const DropDownArrow = styled.div`\n  border-bottom: 2px solid ${colors.basic.WHITE};\n  border-left: 2px solid ${colors.basic.WHITE};\n  height: 8px;\n  margin: 0 0 3px 5px;\n  transform: rotate(-45deg);\n  width: 8px;\n\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport const DropDownLinks = styled.div`\n  background-color: ${colors.primary.BLACK};\n  display: none;\n  left: 0;\n  padding: 16px 16px 11px;\n  position: absolute;\n  top: 25px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    padding: 0 0 0 16px;\n    position: relative;\n    top: 0;\n  }\n\n  & > a {\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_2};\n    display: block;\n    margin: 0;\n    padding: 15px 0;\n    white-space: nowrap;\n    width: 100%;\n    &:last-of-type {\n      border-bottom: none;\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/header/textComponents.tsx",
    "content": "import * as React from \"react\";\n\n// Nav Links\nexport const NavLinkRegistryText: React.FunctionComponent = props => <>Registry</>;\n\nexport const NavLinkRegistryHomeText: React.FunctionComponent = props => <>Registry Home</>;\n\nexport const NavLinkParameterizerText: React.FunctionComponent = props => <>Registry Parameters</>;\n\nexport const NavLinkContractAddressesText: React.FunctionComponent = props => <>Contract Addresses</>;\n\nexport const NavLinkCreateNewsroomText: React.FunctionComponent = props => <>Apply to Registry</>;\n\nexport const NavLinkStoryfeedText: React.FunctionComponent = props => <>Boosts</>;\nexport const NavLinkStoryBoostsText: React.FunctionComponent = props => <>Stories</>;\nexport const NavLinkProjectBoostsText: React.FunctionComponent = props => <>Projects</>;\nexport const NavLinkBrowseBoostsText: React.FunctionComponent = props => <>Browse Boosts</>;\nexport const NavLinkLaunchBoostText: React.FunctionComponent = props => <>Launch Boost</>;\nexport const NavLinkMyBoostsText: React.FunctionComponent = props => <>My Boosts</>;\n\nexport const NavLinkConstitutionText: React.FunctionComponent = props => <>Constitution</>;\n\nexport const NavLinkFoundationText: React.FunctionComponent = props => <>Foundation</>;\n\nexport const NavLinkPublishersText: React.FunctionComponent = props => <>Publishers</>;\nexport const NavLinkFaqText: React.FunctionComponent = props => <>Help</>;\n\nexport const NavLinkContactText: React.FunctionComponent = props => <>Contact</>;\n\nexport const NavLinkLaunchNewsroomText: React.FunctionComponent = props => <>How to launch a newsroom</>;\n\nexport const NavLinkWhitePaperText: React.FunctionComponent = props => <>White Paper</>;\n\nexport const NavLinkDashboardText: React.FunctionComponent = props => <>My Dashboard</>;\n\n// Nav Drawer\nexport const NavDrawerUserAddessText: React.FunctionComponent = props => <>Your Public Address</>;\n\nexport const NavDrawerBalanceText: React.FunctionComponent = props => <>Balance</>;\n\nexport const NavDrawerTotalBalanceText: React.FunctionComponent = props => <>Total Balance</>;\n\nexport const NavDrawerVotingBalanceText: React.FunctionComponent = props => <>Voting Tokens</>;\n\nexport const NavDrawerLoadingPrefText: React.FunctionComponent = props => <>Use GraphQL Server to Improve Load Time</>;\n\nexport const NavDrawerVotingBalanceToolTipText: React.FunctionComponent = props => (\n  <>This deposit is set aside for the duration of the challenge process.</>\n);\n\nexport const NavDrawerBuyCvlBtnText: React.FunctionComponent = props => <>Buy Civil Tokens</>;\n\nexport const NavDrawerCopyBtnText: React.FunctionComponent = props => <>Copy</>;\n\nexport const NavDrawerDashboardText: React.FunctionComponent = props => <>Dashboard</>;\n\nexport const NavDrawerClaimRewardsText: React.FunctionComponent = props => <>Claim Rewards</>;\n\nexport const NavDrawerRevealVotesText: React.FunctionComponent = props => <>Reveal Votes</>;\n\nexport const NavDrawerSubmittedChallengesText: React.FunctionComponent = props => <>Submitted Challenges</>;\n\nexport const NavDrawerVotedChallengesText: React.FunctionComponent = props => <>Challenges Voted On</>;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealAwaitingDecision.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { getFormattedTokenBalance, urlConstants as links } from \"@joincivil/utils\";\nimport {\n  AppealAwaitingDecisionCard as AppealAwaitingDecisionCardComponent,\n  AppealAwaitingDecisionCardProps,\n  ModalContent,\n} from \"@joincivil/components\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport {\n  ChallengeContainerProps,\n  connectChallengePhase,\n  connectChallengeResults,\n} from \"../utility/HigherOrderComponents\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nimport { AppealDetailProps } from \"./AppealDetail\";\n\nenum TransactionTypes {\n  GRANT_APPEAL = \"GRANT_APPEAL\",\n  CONFIRM_APPEAL = \"CONFIRM_APPEAL\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.GRANT_APPEAL]: \"Grant Appeal\",\n  [TransactionTypes.CONFIRM_APPEAL]: \"Confirm Appeal\",\n};\n\nconst denialSuffix = \", you need to confirm the transaction in your MetaMask wallet.\";\n\nconst transactionRejectionContent = {\n  [TransactionTypes.GRANT_APPEAL]: [\"The appeal was not granted\", `To grant the appeal${denialSuffix}`],\n  [TransactionTypes.CONFIRM_APPEAL]: [\"The appeal was not confirmed\", `To confirm the appeal${denialSuffix}`],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.GRANT_APPEAL]: [\n    \"There was a problem granting the appeal\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n  [TransactionTypes.CONFIRM_APPEAL]: [\n    \"There was a problem confirming the appeal\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.GRANT_APPEAL]: [\"The grant appeal transaction has been sent to the council multisig\", undefined],\n  [TransactionTypes.CONFIRM_APPEAL]: [\n    \"The grant appeal transaction was confirmed. If enough council members have confirmed, it will execute and grant the appeal.\",\n    undefined,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nconst AppealAwaitingDecisionCard = compose<\n  React.ComponentClass<ChallengeContainerProps & Partial<AppealAwaitingDecisionCardProps>>\n>(\n  connectChallengePhase,\n  connectChallengeResults,\n)(AppealAwaitingDecisionCardComponent);\n\ninterface AwaitingAppealDecisionState {\n  uriValue: string;\n}\n\nclass AwaitingAppealDecision extends React.Component<\n  AppealDetailProps & InjectedTransactionStatusModalProps,\n  AwaitingAppealDecisionState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: AppealDetailProps & InjectedTransactionStatusModalProps) {\n    super(props);\n    this.state = {\n      uriValue: \"\",\n    };\n  }\n  public render(): JSX.Element {\n    const appeal = this.props.appeal;\n    const requester = appeal.requester.toString();\n    const appealFeePaid = getFormattedTokenBalance(appeal.appealFeePaid);\n    const phaseLength = this.props.govtParameters.judgeAppealLen;\n    const transactions = this.getTransactions();\n    const endTime = parseInt(appeal.appealPhaseExpiry.toString(), 10);\n\n    if (transactions) {\n      this.props.setTransactions(transactions);\n    }\n\n    return (\n      <>\n        <AppealAwaitingDecisionCard\n          challengeID={this.props.challengeID.toString()}\n          phaseLength={phaseLength}\n          requester={requester}\n          appealFeePaid={appealFeePaid}\n          endTime={endTime}\n          transactions={transactions}\n          txIdToConfirm={this.props.txIdToConfirm}\n          onMobileTransactionClick={this.props.onMobileTransactionClick}\n          uriValue={this.state.uriValue}\n          onChange={this.onURIChange}\n          faqURL={links.FAQ_COMMUNITY_VETTING_PROCESS}\n        />\n      </>\n    );\n  }\n\n  private onURIChange = (name: string, value: string) => {\n    this.setState({ uriValue: value });\n  };\n\n  private getTransactions = (): any[] | undefined => {\n    const { isAwaitingAppealJudgement } = this.props.challengeState;\n    let transactions;\n    if (isAwaitingAppealJudgement && this.props.isMemberOfAppellate) {\n      if (this.props.txIdToConfirm) {\n        transactions = [\n          {\n            transaction: async () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: true,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: false,\n                transactionType: TransactionTypes.CONFIRM_APPEAL,\n              });\n              return this.confirmAppeal();\n            },\n            handleTransactionHash: (txHash: TxHash) => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: true,\n              });\n            },\n            postTransaction: () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: true,\n              });\n            },\n            handleTransactionError: this.props.handleTransactionError,\n          },\n        ];\n      } else {\n        transactions = [\n          {\n            transaction: async () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: true,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: false,\n                transactionType: TransactionTypes.GRANT_APPEAL,\n              });\n              return this.grantAppeal(this.state.uriValue);\n            },\n            handleTransactionHash: (txHash: TxHash) => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: true,\n              });\n            },\n            postTransaction: () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: true,\n              });\n            },\n            handleTransactionError: this.props.handleTransactionError,\n          },\n        ];\n      }\n    }\n    return transactions;\n  };\n\n  private grantAppeal = async (uri: string): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.grantAppeal(this.props.listingAddress, uri);\n  };\n\n  private confirmAppeal = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.confirmAppeal(this.props.txIdToConfirm!);\n  };\n}\n\nexport default compose<React.ComponentClass<AppealDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(AwaitingAppealDecision);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealChallengeCommitVote.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { BigNumber, formatEther, bigNumberify, parseEther, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  AppealChallengeCommitVoteCard as AppealChallengeCommitVoteCardComponent,\n  AppealChallengeCommitVoteCardProps,\n  CommitVoteSuccessIcon,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  ReviewVote,\n  ReviewVoteProps,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance, Parameters, urlConstants as links } from \"@joincivil/utils\";\n\nimport { routes } from \"../../constants\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { fetchSalt } from \"../../helpers/salt\";\nimport { saveVote } from \"../../helpers/vote\";\nimport {\n  ChallengeContainerProps,\n  connectChallengePhase,\n  connectChallengeResults,\n  connectParameters,\n} from \"../utility/HigherOrderComponents\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport { AppealChallengeDetailProps, ChallengeVoteState } from \"./AppealChallengeDetail\";\n\nenum TransactionTypes {\n  APPROVE_VOTING_RIGHTS = \"APPROVE_VOTING_RIGHTS\",\n  COMMIT_VOTE = \"COMMIT_VOTE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"Approve Voting Rights\",\n  [TransactionTypes.COMMIT_VOTE]: \"Commit Vote\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"1 of 2\",\n  [TransactionTypes.COMMIT_VOTE]: \"2 of 2\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [undefined, undefined],\n  [TransactionTypes.COMMIT_VOTE]: [\n    <>\n      ,\n      <CommitVoteSuccessIcon />\n      <div>Your vote was committed!</div>\n    </>,\n    <>\n      <ModalContent>\n        Please keep your secret phrase safe. You will need it to confirm your vote. Votes can not be counted and rewards\n        can not be claimed unless you confirm them.\n      </ModalContent>\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"Your vote was not committed\",\n    \"Before committing a vote, you need to confirm the approval of your voting token deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"Your vote was not committed\",\n    \"To commit a vote, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"The was an problem with commiting your vote\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>The number of tokens you are voting with does not exceed your available balance.</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"The was an problem with commiting your vote\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\ninterface AppealCommitCardKeyState {\n  key: number;\n}\n\nconst AppealChallengeCommitVoteCard = compose<\n  React.ComponentClass<ChallengeContainerProps & Partial<AppealChallengeCommitVoteCardProps>>\n>(\n  connectChallengePhase,\n  connectChallengeResults,\n  connectParameters,\n)(AppealChallengeCommitVoteCardComponent);\n\nclass AppealChallengeCommitVote extends React.Component<\n  AppealChallengeDetailProps & InjectedTransactionStatusModalProps,\n  ChallengeVoteState & AppealCommitCardKeyState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      isReviewVoteModalOpen: false,\n      voteOption: undefined,\n      numTokens: undefined,\n      key: new Date().valueOf(),\n    };\n  }\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.handleCommitVoteSuccessClose);\n  }\n\n  public render(): JSX.Element | null {\n    const { appealChallenge } = this.props;\n\n    const endTime = appealChallenge.poll.commitEndDate.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.challengeAppealCommitLen);\n\n    const tokenBalance = parseFloat(formatEther(this.props.balance || bigNumberify(0)));\n    const votingTokenBalance = parseFloat(formatEther(this.props.votingBalance || bigNumberify(0)));\n    const tokenBalanceDisplay = this.props.balance ? getFormattedTokenBalance(this.props.balance) : \"\";\n    const votingTokenBalanceDisplay = this.props.votingBalance\n      ? getFormattedTokenBalance(this.props.votingBalance)\n      : \"\";\n\n    const salt = fetchSalt(this.props.challengeID, this.props.user);\n\n    const userHasCommittedVote =\n      this.props.userAppealChallengeData && !!this.props.userAppealChallengeData.didUserCommit;\n\n    const props = {\n      endTime,\n      phaseLength,\n      challengeID: this.props.challengeID.toString(),\n      userHasCommittedVote,\n      onCommitMaxTokens: () => this.commitMaxTokens(),\n      tokenBalance,\n      votingTokenBalance,\n      tokenBalanceDisplay,\n      votingTokenBalanceDisplay,\n      salt,\n      voteOption: this.state.voteOption,\n      numTokens: this.state.numTokens,\n      onInputChange: this.updateCommitVoteState,\n      onReviewVote: this.handleReviewVote,\n      appealChallengeID: this.props.appealChallengeID.toString(),\n      appealGranted: this.props.appeal.appealGranted,\n      key: this.state.key,\n      onMobileTransactionClick: this.props.onMobileTransactionClick,\n      appealGrantedStatementURI: this.props.appeal.appealGrantedStatementURI,\n      faqURL: links.FAQ_VOTING_SECTION,\n    };\n\n    return (\n      <>\n        <AppealChallengeCommitVoteCard {...props} />\n        {this.renderReviewVoteModal()}\n      </>\n    );\n  }\n\n  private commitMaxTokens(): void {\n    let numTokens: BigNumber;\n    if (!this.props.votingBalance!.isZero()) {\n      numTokens = this.props.votingBalance!;\n    } else {\n      numTokens = this.props.balance!.add(this.props.votingBalance!);\n    }\n    const numTokensString = formatEther(numTokens);\n    this.setState(() => ({ numTokens: numTokensString }));\n  }\n\n  private renderReviewVoteModal(): JSX.Element {\n    const { challenge } = this.props;\n    const transactions = this.getTransactions();\n\n    const relativeListingDetailURL = formatRoute(routes.LISTING, { listingAddress: this.props.listingAddress });\n    const listingDetailURL = `https://${window.location.hostname}${relativeListingDetailURL}`;\n\n    const salt = fetchSalt(this.props.challengeID, this.props.user);\n\n    const props: ReviewVoteProps = {\n      newsroomName: \"this newsroom\",\n      listingDetailURL,\n      challengeID: this.props.appealChallengeID.toString(),\n      open: this.state.isReviewVoteModalOpen,\n      salt,\n      numTokens: this.state.numTokens,\n      voteOption: this.state.voteOption,\n      userAccount: this.props.user,\n      commitEndDate: challenge.poll.commitEndDate.toNumber(),\n      revealEndDate: challenge.poll.revealEndDate.toNumber(),\n      transactions,\n      postExecuteTransactions: this.closeReviewVoteModal,\n      handleClose: this.closeReviewVoteModal,\n      gasFaqURL: links.FAQ_GAS,\n      votingContractFaqURL: links.FAQ_WHAT_IS_PLCR_CONTRACT,\n    };\n\n    return <ReviewVote {...props} />;\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_VOTING_RIGHTS,\n          });\n          return this.approveVotingRights();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.COMMIT_VOTE,\n          });\n          return this.commitVoteOnChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private updateCommitVoteState = (data: any, callback?: () => void): void => {\n    if (callback) {\n      this.setState({ ...data }, callback);\n    } else {\n      this.setState({ ...data });\n    }\n  };\n\n  private handleReviewVote = () => {\n    this.setState({ isReviewVoteModalOpen: true });\n  };\n\n  private closeReviewVoteModal = () => {\n    this.setState({ isReviewVoteModalOpen: false });\n  };\n\n  private handleCommitVoteSuccessClose = () => {\n    this.props.updateTransactionStatusModalsState({ isTransactionSuccessModalOpen: false });\n    this.setState({ isReviewVoteModalOpen: false, key: new Date().valueOf() });\n  };\n\n  private approveVotingRights = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    const numTokens = parseEther(this.state.numTokens!.toString());\n    return this.context.approveVotingRightsForCommit(numTokens);\n  };\n\n  private commitVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const voteOption: BigNumber = new BigNumber(this.state.voteOption as string);\n    const pollID = this.props.appealChallengeID;\n    const saltStr = fetchSalt(pollID, this.props.user);\n    const salt: BigNumber = new BigNumber(saltStr as string);\n    const numTokens: BigNumber = parseEther(this.state.numTokens!.toString());\n    saveVote(pollID, this.props.user, voteOption);\n    return this.context.commitVote(pollID, voteOption, salt, numTokens);\n  };\n}\n\nexport default compose<React.ComponentClass<AppealChallengeDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(AppealChallengeCommitVote);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealChallengeDetail.tsx",
    "content": "import * as React from \"react\";\nimport {\n  AppealData,\n  AppealChallengeData,\n  ChallengeData,\n  EthAddress,\n  UserChallengeData,\n  BigNumber,\n} from \"@joincivil/typescript-types\";\nimport { appealChallengeHelpers } from \"@joincivil/utils\";\nimport AppealChallengeCommitVote from \"./AppealChallengeCommitVote\";\nimport AppealChallengeRevealVote from \"./AppealChallengeRevealVote\";\nimport AppealChallengeResolve from \"./AppealChallengeResolve\";\n\nexport interface AppealChallengeDetailProps {\n  listingAddress: EthAddress;\n  challengeID: BigNumber;\n  challenge: ChallengeData;\n  appealChallengeID: BigNumber;\n  appealChallenge: AppealChallengeData;\n  userAppealChallengeData?: UserChallengeData;\n  appeal: AppealData;\n  parameters: any;\n  govtParameters: any;\n  user: any;\n  balance: BigNumber;\n  votingBalance: BigNumber;\n  onMobileTransactionClick?(): any;\n}\n\nexport interface ChallengeVoteState {\n  voteOption?: string;\n  numTokens?: string;\n  salt?: string;\n  isReviewVoteModalOpen: boolean;\n}\n\nclass AppealChallengeDetail extends React.Component<AppealChallengeDetailProps> {\n  public render(): JSX.Element {\n    const challenge = this.props.appealChallenge;\n    const canResolveChallenge =\n      !appealChallengeHelpers.isAppealChallengeInCommitStage(challenge) &&\n      !appealChallengeHelpers.isAppealChallengeInRevealStage(challenge) &&\n      !challenge.resolved;\n    return (\n      <>\n        {appealChallengeHelpers.isAppealChallengeInCommitStage(challenge) && this.renderCommitStage()}\n        {appealChallengeHelpers.isAppealChallengeInRevealStage(challenge) && this.renderRevealStage()}\n        {canResolveChallenge && this.renderResolveAppealChallenge()}\n      </>\n    );\n  }\n\n  private renderCommitStage(): JSX.Element {\n    return <AppealChallengeCommitVote {...this.props} />;\n  }\n\n  private renderRevealStage(): JSX.Element {\n    return <AppealChallengeRevealVote {...this.props} key={this.props.user} />;\n  }\n\n  private renderResolveAppealChallenge(): JSX.Element {\n    return <AppealChallengeResolve {...this.props} />;\n  }\n}\n\nexport default AppealChallengeDetail;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealChallengeResolve.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport {\n  AppealChallengeResolveCard as AppealChallengeResolveCardComponent,\n  AppealChallengeResolveCardProps,\n  ModalContent,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance, urlConstants as links, appealChallengeHelpers } from \"@joincivil/utils\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport {\n  ChallengeContainerProps,\n  connectChallengePhase,\n  connectChallengeResults,\n} from \"../utility/HigherOrderComponents\";\nimport { AppealChallengeDetailProps } from \"./AppealChallengeDetail\";\n\nenum TransactionTypes {\n  RESOLVE_APPEAL_CHALLENGE = \"RESOLVE_APPEAL_CHALLENGE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.RESOLVE_APPEAL_CHALLENGE]: \"Resolve Appeal Challenge\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.RESOLVE_APPEAL_CHALLENGE]: [\n    \"Thanks for resolving this challenge.\",\n    <ModalContent>\n      Voters can now collect rewards from their votes on this challenge, if they are available.\n    </ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.RESOLVE_APPEAL_CHALLENGE]: [\n    \"The challenge was not resolved\",\n    \"To resolve the challenge, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.RESOLVE_APPEAL_CHALLENGE]: [\n    \"The was an problem with resolving this challenge\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface ChallengeResolveProps extends ChallengeContainerProps {\n  listingAddress: EthAddress;\n}\n\nconst AppealChallengeResolveCard = compose<\n  React.ComponentClass<ChallengeContainerProps & Partial<AppealChallengeResolveCardProps>>\n>(\n  connectChallengePhase,\n  connectChallengeResults,\n)(AppealChallengeResolveCardComponent);\n\n// A container for the Challenge Resolve Card component\nclass AppealChallengeResolve extends React.Component<AppealChallengeDetailProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public render(): JSX.Element | null {\n    const appealGranted = this.props.appeal.appealGranted;\n    const appealChallengeTotalVotes = this.props.appealChallenge.poll.votesAgainst.add(\n      this.props.appealChallenge.poll.votesFor,\n    );\n    const appealChallengeVotesFor = getFormattedTokenBalance(this.props.appealChallenge.poll.votesFor);\n    const appealChallengeVotesAgainst = getFormattedTokenBalance(this.props.appealChallenge.poll.votesAgainst);\n    const appealChallengePercentFor = this.props.appealChallenge.poll.votesFor\n      .mul(100)\n      .div(appealChallengeTotalVotes)\n      .toString();\n    const appealChallengePercentAgainst = this.props.appealChallenge.poll.votesAgainst\n      .mul(100)\n      .div(appealChallengeTotalVotes)\n      .toString();\n\n    const didAppealChallengeSucceed = appealChallengeHelpers.didAppealChallengeSucceed(this.props.appealChallenge);\n\n    const transactions = this.getTransactions();\n\n    return (\n      <>\n        <AppealChallengeResolveCard\n          challengeID={this.props.challengeID.toString()}\n          appealChallengeID={this.props.appealChallengeID.toString()}\n          appealGranted={appealGranted}\n          transactions={transactions}\n          appealChallengeTotalVotes={getFormattedTokenBalance(appealChallengeTotalVotes)}\n          appealChallengeVotesFor={appealChallengeVotesFor}\n          appealChallengeVotesAgainst={appealChallengeVotesAgainst}\n          appealChallengePercentFor={appealChallengePercentFor.toString()}\n          appealChallengePercentAgainst={appealChallengePercentAgainst.toString()}\n          didAppealChallengeSucceed={didAppealChallengeSucceed}\n          onMobileTransactionClick={this.props.onMobileTransactionClick}\n          appealGrantedStatementURI={this.props.appeal.appealGrantedStatementURI}\n          faqURL={links.FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS}\n        />\n      </>\n    );\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.RESOLVE_APPEAL_CHALLENGE,\n          });\n          return this.resolve();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private resolve = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.updateStatus(this.props.listingAddress);\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeResolveProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(AppealChallengeResolve);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealChallengeRevealVote.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  AppealChallengeRevealVoteCard as AppealChallengeRevealVoteCardComponent,\n  AppealChallengeRevealVoteCardProps,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  RevealVoteSuccessIcon,\n} from \"@joincivil/components\";\nimport { getLocalDateTimeStrings, Parameters, urlConstants as links } from \"@joincivil/utils\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { fetchSalt } from \"../../helpers/salt\";\nimport { fetchVote } from \"../../helpers/vote\";\nimport {\n  ChallengeContainerProps,\n  connectChallengePhase,\n  connectChallengeResults,\n  connectParameters,\n} from \"../utility/HigherOrderComponents\";\nimport {\n  InjectedTransactionStatusModalProps,\n  hasTransactionStatusModals,\n  TransactionStatusModalContentMap,\n} from \"../utility/TransactionStatusModalsHOC\";\nimport { AppealChallengeDetailProps, ChallengeVoteState } from \"./AppealChallengeDetail\";\n\nenum TransactionTypes {\n  REVEAL_VOTE = \"REVEAL_VOTE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.REVEAL_VOTE]: \"Confirm Vote\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.REVEAL_VOTE]: [\n    \"Your vote was not confirmed\",\n    \"To confirm your vote, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.REVEAL_VOTE]: [\n    \"The was an problem with revealing your vote\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>Your vote selection matches the vote you committed</ModalListItem>\n        <ModalListItem>Your secret phrase is correct</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\ninterface AppealRevealCardKeyState {\n  key: number;\n}\n\nconst AppealChallengeRevealVoteCard = compose<\n  React.ComponentClass<ChallengeContainerProps & Partial<AppealChallengeRevealVoteCardProps>>\n>(\n  connectChallengePhase,\n  connectChallengeResults,\n  connectParameters,\n)(AppealChallengeRevealVoteCardComponent);\n\nclass AppealChallengeRevealVote extends React.Component<\n  AppealChallengeDetailProps & InjectedTransactionStatusModalProps,\n  ChallengeVoteState & AppealRevealCardKeyState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: AppealChallengeDetailProps & InjectedTransactionStatusModalProps) {\n    super(props);\n    this.state = {\n      voteOption: this.getVoteOption(),\n      salt: fetchSalt(this.props.appealChallengeID, this.props.user),\n      isReviewVoteModalOpen: false,\n      numTokens: undefined,\n      key: new Date().valueOf(),\n    };\n  }\n\n  public componentWillMount(): void {\n    const transactionSuccessContent = this.getTransactionSuccessContent();\n    this.props.setTransactions(this.getTransactions());\n    this.props.setTransactionStatusModalConfig({\n      transactionSuccessContent,\n    });\n    this.props.setHandleTransactionSuccessButtonClick(this.handleRevealVoteSuccessClose);\n  }\n\n  public render(): JSX.Element | null {\n    const { appealChallenge } = this.props;\n\n    const userHasRevealedVote =\n      this.props.userAppealChallengeData && !!this.props.userAppealChallengeData.didUserReveal;\n    const userHasCommittedVote =\n      this.props.userAppealChallengeData && !!this.props.userAppealChallengeData.didUserCommit;\n\n    const endTime = appealChallenge.poll.revealEndDate.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.challengeAppealRevealLen);\n    const secondaryPhaseLength = this.props.parameters.get(Parameters.challengeAppealCommitLen);\n\n    const transactions = this.getTransactions();\n\n    return (\n      <>\n        <AppealChallengeRevealVoteCard\n          endTime={endTime}\n          phaseLength={phaseLength}\n          secondaryPhaseLength={secondaryPhaseLength}\n          challengeID={this.props.challengeID.toString()}\n          userHasRevealedVote={userHasRevealedVote}\n          userHasCommittedVote={userHasCommittedVote}\n          voteOption={this.state.voteOption}\n          salt={this.state.salt}\n          onInputChange={this.updateRevealVoteState}\n          transactions={transactions}\n          appealChallengeID={this.props.appealChallengeID.toString()}\n          appealGranted={this.props.appeal.appealGranted}\n          onMobileTransactionClick={this.props.onMobileTransactionClick}\n          appealGrantedStatementURI={this.props.appeal.appealGrantedStatementURI}\n          votingSmartContractFaqURL={links.FAQ_WHAT_IS_PLCR_CONTRACT}\n          key={this.state.key}\n          faqURL={links.FAQ_VOTING_SECTION}\n        />\n      </>\n    );\n  }\n\n  private getTransactionSuccessContent = (): TransactionStatusModalContentMap => {\n    const endTime = getLocalDateTimeStrings(this.props.appealChallenge.poll.revealEndDate.toNumber());\n    return {\n      [TransactionTypes.REVEAL_VOTE]: [\n        <>\n          <RevealVoteSuccessIcon />\n          <div>Thanks for confirming your vote.</div>\n        </>,\n        <>\n          <ModalContent>\n            We are still waiting for all voters to confirm their votes. Please check back after{\" \"}\n            <strong>\n              {endTime[0]} {endTime[1]}\n            </strong>{\" \"}\n            to see voting results. Thank you for your patience!\n          </ModalContent>\n        </>,\n      ],\n    };\n  };\n\n  private handleRevealVoteSuccessClose = (): void => {\n    this.props.updateTransactionStatusModalsState({ isTransactionSuccessModalOpen: false });\n    this.setState({ isReviewVoteModalOpen: false, key: new Date().valueOf() });\n  };\n\n  private getTransactions = (): any => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.REVEAL_VOTE,\n          });\n          return this.revealVoteOnChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private getVoteOption(): string | undefined {\n    const fetchedVote = fetchVote(this.props.appealChallengeID, this.props.user);\n    let voteOption;\n    if (fetchedVote) {\n      voteOption = fetchedVote.toString();\n    }\n    return voteOption;\n  }\n\n  private revealVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const pollID = this.props.appealChallengeID;\n    const voteOption: BigNumber = new BigNumber(this.state.voteOption as string);\n    const salt: BigNumber = new BigNumber(this.state.salt as string);\n    return this.context.revealVote(pollID, voteOption, salt);\n  };\n\n  private updateRevealVoteState = (data: any, callback?: () => void): void => {\n    if (callback) {\n      this.setState({ ...data }, callback);\n    } else {\n      this.setState({ ...data });\n    }\n  };\n}\n\nexport default compose<React.ComponentClass<AppealChallengeDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(AppealChallengeRevealVote);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealDetail.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport {\n  BigNumber,\n  AppealData,\n  ChallengeData,\n  EthAddress,\n  NewsroomWrapper,\n  UserChallengeData,\n} from \"@joincivil/typescript-types\";\nimport AppealChallengeDetail from \"./AppealChallengeDetail\";\nimport AppealAwaitingDecision from \"./AppealAwaitingDecision\";\nimport AppealResolve from \"./AppealResolve\";\nimport AppealSubmitChallenge from \"./AppealSubmitChallenge\";\n\nconst StyledDiv = styled.div`\n  display: flex;\n  flex-wrap: wrap;\n  width: 100%\n  color: black;\n`;\n\nexport interface AppealDetailProps {\n  listingAddress: EthAddress;\n  newsroom?: NewsroomWrapper;\n  appeal: AppealData;\n  challengeID: BigNumber;\n  challenge: ChallengeData;\n  challengeState: any;\n  userAppealChallengeData?: UserChallengeData;\n  parameters: any;\n  govtParameters: any;\n  user: EthAddress;\n  balance: BigNumber;\n  votingBalance: BigNumber;\n  isMemberOfAppellate: boolean;\n  txIdToConfirm?: number;\n  onMobileTransactionClick?(): any;\n}\n\nclass AppealDetail extends React.Component<AppealDetailProps> {\n  public render(): JSX.Element {\n    const appeal = this.props.appeal;\n    const { canAppealBeResolved, isAwaitingAppealChallenge } = this.props.challengeState;\n    const hasAppealChallenge = appeal.appealChallenge;\n    return (\n      <StyledDiv>\n        {!hasAppealChallenge &&\n          !canAppealBeResolved &&\n          !appeal.appealChallenge &&\n          !isAwaitingAppealChallenge &&\n          this.renderAwaitingAppealDecision()}\n        {isAwaitingAppealChallenge && this.renderChallengeAppealStage()}\n        {appeal.appealChallenge && !appeal.appealChallenge.resolved && (\n          <AppealChallengeDetail\n            listingAddress={this.props.listingAddress}\n            challengeID={this.props.challengeID}\n            challenge={this.props.challenge}\n            appeal={this.props.appeal}\n            appealChallengeID={appeal.appealChallengeID}\n            appealChallenge={appeal.appealChallenge}\n            userAppealChallengeData={this.props.userAppealChallengeData}\n            parameters={this.props.parameters}\n            govtParameters={this.props.govtParameters}\n            balance={this.props.balance}\n            votingBalance={this.props.votingBalance}\n            user={this.props.user}\n            onMobileTransactionClick={this.props.onMobileTransactionClick}\n          />\n        )}\n        {canAppealBeResolved && !appeal.appealChallenge && this.renderCanResolve()}\n      </StyledDiv>\n    );\n  }\n\n  private renderAwaitingAppealDecision(): JSX.Element {\n    return <AppealAwaitingDecision {...this.props} />;\n  }\n\n  private renderCanResolve(): JSX.Element {\n    return <AppealResolve {...this.props} />;\n  }\n\n  private renderChallengeAppealStage(): JSX.Element {\n    return <AppealSubmitChallenge {...this.props} />;\n  }\n}\n\nexport default AppealDetail;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealResolve.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  AppealResolveCard as AppealResolveCardComponent,\n  ModalContent,\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  AppealDecisionProps,\n} from \"@joincivil/components\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport {\n  ChallengeContainerProps,\n  connectChallengePhase,\n  connectChallengeResults,\n} from \"../utility/HigherOrderComponents\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nimport { AppealDetailProps } from \"./AppealDetail\";\n\nconst AppealResolveCard = compose<\n  React.ComponentType<\n    ListingDetailPhaseCardComponentProps & ChallengePhaseProps & ChallengeContainerProps & AppealDecisionProps\n  >\n>(\n  connectChallengeResults,\n  connectChallengePhase,\n)(AppealResolveCardComponent);\n\nenum TransactionTypes {\n  RESOLVE_APPEAL = \"RESOLVE_APPEAL\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.RESOLVE_APPEAL]: \"Resolve Appeal\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.RESOLVE_APPEAL]: [\n    \"The appeal was not resolved\",\n    \"To resolve the appeal, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.RESOLVE_APPEAL]: [\n    \"There was a problem resolving the appeal\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.RESOLVE_APPEAL]: [\n    \"The appeal was resolved\",\n    <ModalContent>\n      Voters can now collect rewards from their votes on this challenge, if they are available.\n    </ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass AppealResolve extends React.Component<AppealDetailProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public render(): JSX.Element {\n    const transactions = this.getTransactions();\n    const { appeal, challengeID, onMobileTransactionClick } = this.props;\n    const appealGranted = appeal.appealGranted;\n    const appealGrantedStatementURI = appeal.appealGrantedStatementURI;\n    return (\n      <>\n        <AppealResolveCard\n          challengeID={challengeID.toString()}\n          appealGranted={appealGranted}\n          appealGrantedStatementURI={appealGrantedStatementURI}\n          transactions={transactions}\n          onMobileTransactionClick={onMobileTransactionClick}\n          faqURL={links.FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS}\n        />\n      </>\n    );\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.RESOLVE_APPEAL,\n          });\n          return this.resolveAppeal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private resolveAppeal = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.updateStatus(this.props.listingAddress);\n  };\n}\n\nexport default compose<React.ComponentClass<AppealDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(AppealResolve);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/AppealSubmitChallenge.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport {\n  AppealDecisionCard as AppealDecisionCardComponent,\n  ListingDetailPhaseCardComponentProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n  AppealDecisionProps,\n} from \"@joincivil/components\";\nimport { urlConstants as links, Parameters } from \"@joincivil/utils\";\n\nimport { routes } from \"../../constants\";\nimport {\n  ChallengeContainerProps,\n  connectChallengePhase,\n  connectChallengeResults,\n  connectParameters,\n} from \"../utility/HigherOrderComponents\";\n\nimport { AppealDetailProps } from \"./AppealDetail\";\n\nconst AppealDecisionCard = compose<\n  React.ComponentType<\n    ListingDetailPhaseCardComponentProps &\n      PhaseWithExpiryProps &\n      ChallengePhaseProps &\n      ChallengeContainerProps &\n      AppealDecisionProps\n  >\n>(\n  connectChallengeResults,\n  connectChallengePhase,\n  connectParameters,\n)(AppealDecisionCardComponent);\n\nclass AppealSubmitChallenge extends React.Component<AppealDetailProps> {\n  public render(): JSX.Element {\n    const appeal = this.props.appeal;\n    const appealGranted = appeal.appealGranted;\n    const endTime = appeal.appealOpenToChallengeExpiry.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.challengeAppealLen);\n    const appealGrantedStatementURI = appeal.appealGrantedStatementURI;\n\n    const submitAppealChallengeURI = formatRoute(routes.SUBMIT_APPEAL_CHALLENGE, {\n      listingAddress: this.props.listingAddress,\n    });\n\n    return (\n      <AppealDecisionCard\n        endTime={endTime}\n        phaseLength={phaseLength}\n        challengeID={this.props.challengeID.toString()}\n        appealGrantedStatementURI={appealGrantedStatementURI}\n        appealGranted={appealGranted}\n        submitAppealChallengeURI={submitAppealChallengeURI}\n        faqURL={links.FAQ_COMMUNITY_VETTING_PROCESS}\n        onMobileTransactionClick={this.props.onMobileTransactionClick}\n      />\n    );\n  }\n}\n\nexport default AppealSubmitChallenge;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ApplicationUpdateStatus.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { InApplicationResolveCard, ModalContent } from \"@joincivil/components\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\n\nexport interface ApplicationUpdateStatusProps {\n  listingAddress: EthAddress;\n}\n\nenum TransactionTypes {\n  UPDATE_LISTING = \"UPDATE_LISTING\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.UPDATE_LISTING]: \"Add to Registry\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.UPDATE_LISTING]: [\"Thanks for adding this newsroom to the registry.\", <></>],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.UPDATE_LISTING]: [\n    \"The listing was not added to the Civil Registry\",\n    \"To add this listing to the registry, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.UPDATE_LISTING]: [\n    \"The was an problem with adding this listing\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ApplicationUpdateStatus extends React.Component<\n  ApplicationUpdateStatusProps & InjectedTransactionStatusModalProps\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentDidMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public render(): JSX.Element {\n    return (\n      <InApplicationResolveCard\n        transactions={this.getTransactions()}\n        faqURL={links.FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS}\n      />\n    );\n  }\n\n  // Transactions\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.UPDATE_LISTING,\n          });\n          return this.update();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private update = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.updateStatus(this.props.listingAddress);\n  };\n}\n\nexport default compose<React.ComponentClass<ApplicationUpdateStatusProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ApplicationUpdateStatus);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/Challenge.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Query } from \"react-apollo\";\nimport styled from \"styled-components/macro\";\nimport { formatRoute } from \"react-router-named-routes\";\n\nimport { routes } from \"../../constants\";\nimport ChallengeDetailContainer from \"./ChallengeDetail\";\nimport { CHALLENGE_QUERY, transformGraphQLDataIntoChallenge } from \"@joincivil/utils\";\n\nconst StyledPageOuter = styled.div`\n  margin: 0 auto;\n  width: 1200px;\n`;\n\nconst StyledBackLink = styled.div`\n  margin: 20px 0;\n`;\n\nconst StyledChallengeContainer = styled.div`\n  display: flex;\n\n  & > div ~ div {\n    margin-left: 60px;\n  }\n`;\n\nexport interface ChallengePageProps {\n  match: any;\n}\n\nclass ChallengePage extends React.Component<ChallengePageProps> {\n  public render(): JSX.Element {\n    const listingAddress = this.props.match.params.listingAddress;\n    const listingURL = formatRoute(routes.LISTING, { listingAddress });\n    const challengeID = this.props.match.params.challengeID;\n\n    return (\n      <Query query={CHALLENGE_QUERY} variables={{ challengeID }}>\n        {({ loading, error, data }: any): JSX.Element => {\n          if (loading) {\n            return <p />;\n          }\n          if (error) {\n            return <p>Error :</p>;\n          }\n          const challenge = {\n            listingAddress,\n            challengeID,\n            challenge: transformGraphQLDataIntoChallenge(data.challenge)!,\n          };\n          return (\n            <StyledPageOuter>\n              <StyledBackLink>\n                <Link to={listingURL}>&laquo; Back to Listing</Link>\n              </StyledBackLink>\n\n              <StyledChallengeContainer>\n                <ChallengeDetailContainer\n                  challengeData={challenge}\n                  listingAddress={listingAddress}\n                  challengeID={challengeID}\n                  showNotFoundMessage={true}\n                />\n              </StyledChallengeContainer>\n            </StyledPageOuter>\n          );\n        }}\n      </Query>\n    );\n  }\n}\n\nexport default ChallengePage;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ChallengeCommitVote.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { BigNumber, bigNumberify, formatEther, parseEther, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ChallengeCommitVoteCard as ChallengeCommitVoteCardComponent,\n  CommitVoteSuccessIcon,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  ReviewVote,\n  ReviewVoteProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance, Parameters } from \"@joincivil/utils\";\n\nimport { routes } from \"../../constants\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { fetchSalt } from \"../../helpers/salt\";\nimport { saveVote } from \"../../helpers/vote\";\nimport { ChallengeContainerProps, connectChallengePhase, ParametersProps } from \"../utility/HigherOrderComponents\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport { ChallengeDetailProps, ChallengeVoteState } from \"./ChallengeDetail\";\n\nconst ChallengeCommitVoteCard = compose<\n  React.ComponentType<PhaseWithExpiryProps & ChallengePhaseProps & ChallengeContainerProps>\n>(connectChallengePhase)(ChallengeCommitVoteCardComponent);\n\nenum TransactionTypes {\n  APPROVE_VOTING_RIGHTS = \"APPROVE_VOTING_RIGHTS\",\n  COMMIT_VOTE = \"COMMIT_VOTE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"Approve Voting Rights\",\n  [TransactionTypes.COMMIT_VOTE]: \"Commit Vote\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: \"1 of 2\",\n  [TransactionTypes.COMMIT_VOTE]: \"2 of 2\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [undefined, undefined],\n  [TransactionTypes.COMMIT_VOTE]: [\n    <>\n      <CommitVoteSuccessIcon />\n      <div>Your vote was committed!</div>\n    </>,\n    <>\n      <ModalContent>\n        Please keep your secret phrase safe. You will need it to confirm your vote. Votes can not be counted and rewards\n        can not be claimed unless you confirm them.\n      </ModalContent>\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"Your vote was not committed\",\n    \"Before committing a vote, you need to confirm the approval of your voting token deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"Your vote was not committed\",\n    \"To commit a vote, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_VOTING_RIGHTS]: [\n    \"The was an problem with commiting your vote\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>The number of tokens you are voting with does not exceed your available balance.</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.COMMIT_VOTE]: [\n    \"The was an problem with commiting your vote\",\n    <>\n      <ModalContent>Please retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\ninterface CommitCardKeyState {\n  key: number;\n}\n\nclass ChallengeCommitVote extends React.Component<\n  ChallengeDetailProps & InjectedTransactionStatusModalProps & ParametersProps,\n  ChallengeVoteState & CommitCardKeyState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      isReviewVoteModalOpen: false,\n      voteOption: undefined,\n      numTokens: undefined,\n      key: new Date().valueOf(),\n    };\n  }\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n    this.props.setHandleTransactionSuccessButtonClick(this.handleCommitVoteSuccessClose);\n  }\n\n  public render(): JSX.Element | null {\n    if (!this.props.parameters) {\n      return <></>;\n    }\n    const endTime = this.props.challenge.poll.commitEndDate.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.commitStageLen).toNumber();\n    const challenge = this.props.challenge;\n    const tokenBalance = parseFloat(formatEther(this.props.balance || bigNumberify(0)));\n    const votingTokenBalance = parseFloat(formatEther(this.props.votingBalance || bigNumberify(0)));\n    const tokenBalanceDisplay = this.props.balance ? getFormattedTokenBalance(this.props.balance) : \"\";\n    const votingTokenBalanceDisplay = this.props.votingBalance\n      ? getFormattedTokenBalance(this.props.votingBalance)\n      : \"\";\n    const userHasCommittedVote = this.props.userChallengeData && !!this.props.userChallengeData.didUserCommit;\n    if (!challenge) {\n      return null;\n    }\n    const salt = fetchSalt(this.props.challengeID, this.props.user);\n    const props = {\n      endTime,\n      phaseLength,\n      challengeID: this.props.challengeID.toString(),\n      userHasCommittedVote,\n      onInputChange: this.updateCommitVoteState,\n      onCommitMaxTokens: () => this.commitMaxTokens(),\n      onReviewVote: this.handleReviewVote,\n      onMobileTransactionClick: this.props.onMobileTransactionClick,\n      tokenBalance,\n      votingTokenBalance,\n      tokenBalanceDisplay,\n      votingTokenBalanceDisplay,\n      salt,\n      voteOption: this.state.voteOption,\n      numTokens: this.state.numTokens,\n      key: this.state.key,\n    };\n\n    return (\n      <>\n        <ChallengeCommitVoteCard {...props} />\n        {this.renderReviewVoteModal()}\n      </>\n    );\n  }\n\n  private commitMaxTokens(): void {\n    let numTokens: BigNumber;\n    if (!this.props.votingBalance!.isZero()) {\n      numTokens = this.props.votingBalance!;\n    } else {\n      numTokens = this.props.balance!.add(this.props.votingBalance!);\n    }\n    const numTokensString = formatEther(numTokens);\n    this.setState(() => ({ numTokens: numTokensString }));\n  }\n\n  private renderReviewVoteModal(): JSX.Element {\n    if (!this.props.parameters) {\n      return <></>;\n    }\n\n    const { challenge } = this.props;\n    const relativeListingDetailURL = formatRoute(routes.LISTING, { listingAddress: this.props.listingAddress });\n    const listingDetailURL = `https://${window.location.hostname}${relativeListingDetailURL}`;\n    const salt = fetchSalt(this.props.challengeID, this.props.user);\n\n    const props: ReviewVoteProps = {\n      newsroomName: (this.props.newsroom && this.props.newsroom.data.name) || \"this newsroom\",\n      listingDetailURL,\n      challengeID: this.props.challengeID.toString(),\n      open: this.state.isReviewVoteModalOpen!,\n      salt,\n      numTokens: this.state.numTokens,\n      voteOption: this.state.voteOption,\n      userAccount: this.props.user,\n      commitEndDate: challenge.poll.commitEndDate.toNumber(),\n      revealEndDate: challenge.poll.revealEndDate.toNumber(),\n      transactions: this.getTransactions(),\n      handleClose: this.closeReviewVoteModal,\n    };\n    return <ReviewVote {...props} />;\n  }\n\n  private getTransactions = (): any => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_VOTING_RIGHTS,\n          });\n          return this.approveVotingRights();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.COMMIT_VOTE,\n          });\n          return this.commitVoteOnChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private updateCommitVoteState = (data: any, callback?: () => void): void => {\n    if (callback) {\n      this.setState({ ...data }, callback);\n    } else {\n      this.setState({ ...data });\n    }\n  };\n\n  private handleReviewVote = () => {\n    this.setState({ isReviewVoteModalOpen: true });\n  };\n\n  private closeReviewVoteModal = () => {\n    this.setState({ isReviewVoteModalOpen: false });\n  };\n\n  private handleCommitVoteSuccessClose = () => {\n    this.props.updateTransactionStatusModalsState({ isTransactionSuccessModalOpen: false });\n    this.setState({ isReviewVoteModalOpen: false, key: new Date().valueOf() });\n  };\n\n  private approveVotingRights = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    const numTokens = parseEther(this.state.numTokens!.toString());\n    return this.context.approveVotingRightsForCommit(numTokens);\n  };\n\n  private commitVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const voteOption: BigNumber = bigNumberify(this.state.voteOption!);\n    const saltStr = fetchSalt(this.props.challengeID, this.props.user);\n    const salt: BigNumber = bigNumberify(saltStr!);\n    const numTokens: BigNumber = parseEther(this.state.numTokens!.toString());\n    saveVote(this.props.challengeID, this.props.user, voteOption);\n    return this.context.commitVote(this.props.challengeID, voteOption, salt, numTokens);\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeDetailProps & ParametersProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeCommitVote);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ChallengeDetail.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport styled from \"styled-components/macro\";\nimport {\n  BigNumber,\n  ChallengeData,\n  EthAddress,\n  UserChallengeData,\n  NewsroomWrapper,\n  WrappedChallengeData,\n} from \"@joincivil/typescript-types\";\nimport {\n  ChallengeRequestAppealCard,\n  CompleteChallengeResults as CompleteChallengeResultsComponent,\n  ListingDetailPhaseCardComponentProps,\n  PhaseWithExpiryProps,\n  ChallengePhaseProps,\n  ChallengeResultsProps,\n  RequestAppealProps,\n} from \"@joincivil/components\";\nimport {\n  urlConstants as links,\n  challengeHelpers,\n  userChallengeDataHelpers,\n  USER_CHALLENGE_DATA_QUERY,\n  transformGraphQLDataIntoSpecificUserChallenge,\n} from \"@joincivil/utils\";\n\nimport AppealDetail from \"./AppealDetail\";\nimport ChallengeCommitVote from \"./ChallengeCommitVote\";\nimport ChallengeRevealVote from \"./ChallengeRevealVote\";\nimport ChallengeRewardsDetail from \"./ChallengeRewardsDetail\";\n\nimport { routes } from \"../../constants\";\nimport { State } from \"../../redux/reducers\";\nimport { getIsMemberOfAppellate, getChallengeState } from \"../../selectors\";\nimport { fetchAndAddGrantAppealTx } from \"../../redux/actionCreators/challenges\";\nimport {\n  ChallengeContainerProps,\n  connectChallengeResults,\n  connectChallengePhase,\n  connectParameters,\n} from \"../utility/HigherOrderComponents\";\nimport { connectCompleteChallengeResults } from \"../utility/CompleteChallengeResultsHOC\";\nimport { Query } from \"react-apollo\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\n\nconst withChallengeResults = (\n  WrappedComponent: React.ComponentType<\n    ListingDetailPhaseCardComponentProps &\n      PhaseWithExpiryProps &\n      ChallengePhaseProps &\n      ChallengeResultsProps &\n      RequestAppealProps\n  >,\n) => {\n  return compose<\n    React.ComponentType<\n      ListingDetailPhaseCardComponentProps &\n        PhaseWithExpiryProps &\n        ChallengePhaseProps &\n        ChallengeContainerProps &\n        RequestAppealProps\n    >\n  >(\n    connectChallengeResults,\n    connectChallengePhase,\n  )(WrappedComponent);\n};\n\nconst StyledChallengeResults = styled.div`\n  width: 460px;\n`;\n\nexport interface ChallengeDetailContainerProps {\n  listingAddress: EthAddress;\n  newsroom?: NewsroomWrapper;\n  challengeData?: WrappedChallengeData;\n  challengeID: BigNumber;\n  appealChallengeID?: BigNumber;\n  showNotFoundMessage?: boolean;\n  listingPhaseState?: any;\n  onMobileTransactionClick?(): any;\n}\n\nexport interface ChallengeContainerReduxProps {\n  challengeState: any;\n  appealChallengeState?: any;\n  user: EthAddress;\n  balance: BigNumber;\n  votingBalance: BigNumber;\n  govtParameters: any;\n  isMemberOfAppellate: boolean;\n  txIdToConfirm?: number;\n  grantAppealTxDataFetching?: boolean;\n  grantAppealTxData?: any;\n}\n\nexport interface ChallengeDetailProps {\n  listingAddress: EthAddress;\n  newsroom?: NewsroomWrapper;\n  challengeID: BigNumber;\n  challenge: ChallengeData;\n  challengeState: any;\n  appealChallengeID?: BigNumber;\n  appealChallengeState?: any;\n  govtParameters?: any;\n  userChallengeData?: UserChallengeData;\n  userAppealChallengeData?: UserChallengeData;\n  user: EthAddress;\n  balance?: BigNumber;\n  votingBalance?: BigNumber;\n  isMemberOfAppellate: boolean;\n  txIdToConfirm?: number;\n  onMobileTransactionClick?(): any;\n}\n\nexport interface ChallengeVoteState {\n  isReviewVoteModalOpen?: boolean;\n  voteOption?: string;\n  numTokens?: string;\n  salt?: string;\n  requestAppealSummaryValue?: string;\n  requestAppealCiteConstitutionValue?: any;\n  requestAppealDetailsValue?: any;\n}\n\nexport interface ProgressModalPropsState {\n  isWaitingTransactionModalOpen?: boolean;\n  isTransactionProgressModalOpen?: boolean;\n  isTransactionSuccessModalOpen?: boolean;\n  isTransactionErrorModalOpen?: boolean;\n  isTransactionRejectionModalOpen?: boolean;\n  transactionIndex?: number;\n}\n\n// A container encapsultes the Commit Vote, Reveal Vote and Rewards phases for a Challenge.\n// @TODO(jon): Clean this up... by maybe separating into separate containers for each phase card component\nclass ChallengeDetail extends React.Component<ChallengeDetailProps> {\n  public render(): JSX.Element {\n    const { challenge } = this.props;\n    const { inCommitPhase, inRevealPhase } = this.props.challengeState;\n    const appealExists = challengeHelpers.doesChallengeHaveAppeal(challenge);\n    const canShowResult = challenge.resolved;\n\n    const inCanRequestAppeal = challengeHelpers.canRequestAppeal(challenge);\n\n    const renderState = {\n      inCommitPhase,\n      inRevealPhase,\n      inCanRequestAppeal,\n      canShowResult,\n      appealExists,\n    };\n\n    if (!this.props.user) {\n      return this.renderAllStages(renderState, {});\n    }\n\n    return (\n      <Query\n        query={USER_CHALLENGE_DATA_QUERY}\n        variables={{ userAddr: this.props.user, pollID: this.props.challengeID.toString() }}\n        pollInterval={30000}\n      >\n        {({ loading: userChallengeLoading, error: userChallengeError, data: userChallengeData }: any): JSX.Element => {\n          if (userChallengeLoading || userChallengeError) {\n            return this.renderAllStages(renderState);\n          } else {\n            const transformedUserChallengeData = transformGraphQLDataIntoSpecificUserChallenge(userChallengeData);\n            if (challenge.appeal && challenge.appeal.appealChallenge) {\n              return (\n                <Query\n                  query={USER_CHALLENGE_DATA_QUERY}\n                  variables={{ userAddr: this.props.user, pollID: challenge.appeal.appealChallengeID.toString() }}\n                  pollInterval={30000}\n                >\n                  {({\n                    loading: userAppealChallengeLoading,\n                    error: userAppealChallengeError,\n                    data: userAppealChallengeData,\n                  }: any): JSX.Element => {\n                    if (userAppealChallengeLoading || userAppealChallengeError) {\n                      return this.renderAllStages(renderState, transformedUserChallengeData);\n                    } else {\n                      const transformedUserAppealChallengeData = transformGraphQLDataIntoSpecificUserChallenge(\n                        userAppealChallengeData,\n                      );\n                      return this.renderAllStages(\n                        renderState,\n                        transformedUserChallengeData,\n                        transformedUserAppealChallengeData,\n                      );\n                    }\n                  }}\n                </Query>\n              );\n            } else {\n              return this.renderAllStages(renderState, transformedUserChallengeData);\n            }\n          }\n        }}\n      </Query>\n    );\n  }\n\n  private renderAllStages(\n    renderState: any,\n    userChallengeData?: UserChallengeData,\n    userAppealChallengeData?: UserChallengeData,\n  ): JSX.Element {\n    const { inCommitPhase, inRevealPhase, inCanRequestAppeal, canShowResult, appealExists } = renderState;\n\n    const canShowRewardsForm =\n      userChallengeDataHelpers.didUserCommit(userChallengeData) && this.props.challenge.resolved;\n    const canShowAppealChallengeRewardsFrom =\n      userChallengeDataHelpers.didUserCommit(userAppealChallengeData) &&\n      this.props.challenge.appeal!.appealChallenge!.resolved;\n\n    return (\n      <>\n        {inCommitPhase && this.renderCommitStage(userChallengeData)}\n        {inRevealPhase && this.renderRevealStage(userChallengeData)}\n        {inCanRequestAppeal && this.renderRequestAppealStage()}\n        {canShowResult && this.renderVoteResult()}\n        {appealExists && this.renderAppeal(userAppealChallengeData)}\n        {canShowRewardsForm && !inCommitPhase && !inRevealPhase && this.renderRewardsDetail(userChallengeData)}\n        {canShowAppealChallengeRewardsFrom && this.renderAppealChallengeRewardsDetail(userAppealChallengeData)}\n      </>\n    );\n  }\n\n  private renderAppeal(userAppealChallengeData?: UserChallengeData): JSX.Element {\n    const challenge = this.props.challenge;\n    return (\n      <AppealDetail\n        listingAddress={this.props.listingAddress}\n        newsroom={this.props.newsroom}\n        appeal={challenge.appeal!}\n        challengeID={this.props.challengeID}\n        challenge={challenge}\n        userAppealChallengeData={userAppealChallengeData}\n        challengeState={this.props.challengeState}\n        parameters={this.props.parameters}\n        govtParameters={this.props.govtParameters}\n        balance={this.props.balance || new BigNumber(0)}\n        votingBalance={this.props.votingBalance || new BigNumber(0)}\n        user={this.props.user}\n        isMemberOfAppellate={this.props.isMemberOfAppellate}\n        txIdToConfirm={this.props.txIdToConfirm}\n        onMobileTransactionClick={this.props.onMobileTransactionClick}\n      />\n    );\n  }\n\n  private renderCommitStage(userChallengeData?: UserChallengeData): JSX.Element | null {\n    if (userChallengeData) {\n      return <ChallengeCommitVote {...this.props} key={this.props.user} userChallengeData={userChallengeData} />;\n    } else {\n      return <ChallengeCommitVote {...this.props} key={this.props.user} />;\n    }\n  }\n\n  private renderRevealStage(userChallengeData?: UserChallengeData): JSX.Element | null {\n    if (userChallengeData) {\n      return <ChallengeRevealVote {...this.props} key={this.props.user} userChallengeData={userChallengeData} />;\n    } else {\n      return <ChallengeRevealVote {...this.props} key={this.props.user} />;\n    }\n  }\n\n  private renderRequestAppealStage(): JSX.Element {\n    const challenge = this.props.challenge;\n    const endTime = challenge.requestAppealExpiry.toNumber();\n    const phaseLength = this.props.govtParameters.requestAppealLen;\n    const ChallengeRequestAppeal = withChallengeResults(ChallengeRequestAppealCard);\n    const requestAppealURI = formatRoute(routes.REQUEST_APPEAL, { listingAddress: this.props.listingAddress });\n\n    return (\n      <>\n        <ChallengeRequestAppeal\n          challengeID={this.props.challengeID.toString()}\n          endTime={endTime}\n          phaseLength={phaseLength}\n          requestAppealURI={requestAppealURI}\n          faqURL={links.FAQ_COMMUNITY_VETTING_PROCESS}\n          onMobileTransactionClick={this.props.onMobileTransactionClick}\n        />\n      </>\n    );\n  }\n\n  private renderVoteResult(): JSX.Element {\n    const ChallengeResults = compose<React.ComponentType<ChallengeContainerProps>>(connectCompleteChallengeResults)(\n      CompleteChallengeResultsComponent,\n    );\n\n    return (\n      <StyledChallengeResults>\n        <ChallengeResults challengeID={this.props.challengeID} />\n      </StyledChallengeResults>\n    );\n  }\n\n  private renderRewardsDetail(userChallengeData?: UserChallengeData): JSX.Element {\n    return (\n      <ChallengeRewardsDetail\n        challengeID={this.props.challengeID}\n        challenge={this.props.challenge}\n        user={this.props.user}\n        userChallengeData={userChallengeData || this.props.userChallengeData}\n      />\n    );\n  }\n\n  private renderAppealChallengeRewardsDetail(userAppealChallengeData?: UserChallengeData): JSX.Element {\n    return (\n      <ChallengeRewardsDetail\n        challengeID={this.props.challenge.appeal!.appealChallengeID}\n        appealChallenge={this.props.challenge.appeal!.appealChallenge}\n        user={this.props.user}\n        userChallengeData={userAppealChallengeData || this.props.userAppealChallengeData}\n      />\n    );\n  }\n}\n\nclass ChallengeContainer extends React.Component<\n  ChallengeDetailContainerProps & ChallengeContainerReduxProps & DispatchProp<any>\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentDidUpdate(): void {\n    if (!this.props.challengeData) {\n      console.error(\"ChallengeDetail without challenge data. challengeID: \", this.props.challengeID);\n    }\n    if (!this.props.grantAppealTxData && !this.props.grantAppealTxDataFetching) {\n      this.props.dispatch!(fetchAndAddGrantAppealTx(this.context, this.props.listingAddress));\n    }\n  }\n\n  public render(): JSX.Element | null {\n    const challenge = this.props.challengeData && this.props.challengeData.challenge;\n    if (!challenge && this.props.showNotFoundMessage) {\n      return this.renderNoChallengeFound();\n    } else if (!challenge) {\n      return null;\n    }\n    return (\n      <ChallengeDetail\n        listingAddress={this.props.listingAddress}\n        newsroom={this.props.newsroom}\n        challengeID={this.props.challengeID}\n        challenge={challenge}\n        appealChallengeID={this.props.appealChallengeID}\n        challengeState={this.props.challengeState}\n        appealChallengeState={this.props.appealChallengeState}\n        user={this.props.user}\n        parameters={this.props.parameters}\n        balance={this.props.balance}\n        votingBalance={this.props.votingBalance}\n        govtParameters={this.props.govtParameters}\n        isMemberOfAppellate={this.props.isMemberOfAppellate}\n        txIdToConfirm={this.props.txIdToConfirm}\n        onMobileTransactionClick={this.props.onMobileTransactionClick}\n      />\n    );\n  }\n\n  private renderNoChallengeFound = (): JSX.Element => {\n    return <>This is not the challenge that you're looking for.</>;\n  };\n}\n\nconst makeMapStateToProps = () => {\n  const mapStateToProps = (\n    state: State,\n    ownProps: ChallengeDetailContainerProps,\n  ): ChallengeContainerReduxProps & ChallengeDetailContainerProps => {\n    const {\n      user,\n      govtParameters,\n      councilMultisigTransactions,\n      grantAppealTxs,\n      grantAppealTxsFetching,\n    } = state.networkDependent;\n    let txIdToConfirm;\n    const challengeData = ownProps.challengeData;\n\n    const grantAppealTxDataFetching = grantAppealTxsFetching.get(ownProps.listingAddress);\n    const grantAppealTx = grantAppealTxs.get(ownProps.listingAddress);\n    if (challengeData && challengeData.challenge && challengeData.challenge.appeal && grantAppealTx) {\n      const txData = grantAppealTx.data!;\n      const key = txData.substring(0, 74);\n      if (councilMultisigTransactions.has(key)) {\n        txIdToConfirm = councilMultisigTransactions.get(key).id;\n      }\n    }\n    const listingAddress = ownProps.listingAddress;\n    if (!listingAddress) {\n      console.error(\"no listing address found!\");\n    }\n    const userAcct = user.account;\n\n    const isMemberOfAppellate = getIsMemberOfAppellate(state);\n\n    return {\n      challengeData,\n      challengeState: getChallengeState(challengeData!),\n      user: userAcct.account,\n      balance: user.account.balance,\n      votingBalance: user.account.votingBalance,\n      govtParameters,\n      isMemberOfAppellate,\n      txIdToConfirm,\n      grantAppealTxDataFetching,\n      ...ownProps,\n    };\n  };\n\n  return mapStateToProps;\n};\n\nexport default compose(\n  connect(makeMapStateToProps),\n  connectParameters,\n)(ChallengeContainer);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ChallengeResolve.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport {\n  ListingDetailPhaseCardComponentProps,\n  ChallengeResolveCard as ChallengeResolveCardComponent,\n  ModalContent,\n} from \"@joincivil/components\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../utility/TransactionStatusModalsHOC\";\nimport {\n  ChallengeContainerProps,\n  connectChallengeResults,\n  connectChallengePhase,\n} from \"../utility/HigherOrderComponents\";\n\nenum TransactionTypes {\n  RESOLVE_CHALLENGE = \"RESOLVE_CHALLENGE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: \"Resolve Challenge\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: [\n    \"Thanks for resolving this challenge.\",\n    <ModalContent>\n      Voters can now collect rewards from their votes on this challenge, if they are available.\n    </ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: [\n    \"The challenge was not resolved\",\n    \"To resolve the challenge, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.RESOLVE_CHALLENGE]: [\n    \"The was an problem with resolving this challenge\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface ChallengeResolveProps extends ChallengeContainerProps {\n  listingAddress: EthAddress;\n  onMobileTransactionClick(): any;\n}\n\nconst ChallengeResolveCard = compose(\n  connectChallengePhase,\n  connectChallengeResults,\n)(ChallengeResolveCardComponent) as React.ComponentClass<ChallengeResolveProps & ListingDetailPhaseCardComponentProps>;\n\n// A container for the Challenge Resolve Card component\nclass ChallengeResolve extends React.Component<ChallengeResolveProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public componentWillMount(): void {\n    this.props.setTransactions(this.getTransactions());\n  }\n\n  public render(): JSX.Element | null {\n    const transactions = this.getTransactions();\n\n    return (\n      <ChallengeResolveCard\n        listingAddress={this.props.listingAddress}\n        challengeID={this.props.challengeID}\n        transactions={transactions}\n        onMobileTransactionClick={this.props.onMobileTransactionClick}\n        faqURL={links.FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS}\n      />\n    );\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.RESOLVE_CHALLENGE,\n          });\n          return this.resolve();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private resolve = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.updateStatus(this.props.listingAddress);\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeResolveProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeResolve);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ChallengeRevealVote.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { BigNumber, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  ChallengeRevealVoteCard as ChallengeRevealVoteCardComponent,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  RevealVoteSuccessIcon,\n  PhaseWithExpiryProps,\n  ListingDetailPhaseCardComponentProps,\n  ChallengePhaseProps,\n  RevealVoteProps,\n} from \"@joincivil/components\";\nimport { getLocalDateTimeStrings, urlConstants as links, Parameters } from \"@joincivil/utils\";\n\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { fetchSalt } from \"../../helpers/salt\";\nimport { fetchVote } from \"../../helpers/vote\";\nimport { ChallengeContainerProps, connectChallengePhase, ParametersProps } from \"../utility/HigherOrderComponents\";\nimport {\n  InjectedTransactionStatusModalProps,\n  hasTransactionStatusModals,\n  TransactionStatusModalContentMap,\n} from \"../utility/TransactionStatusModalsHOC\";\nimport { ChallengeDetailProps, ChallengeVoteState } from \"./ChallengeDetail\";\n\nconst ChallengeRevealVoteCard = compose<\n  React.ComponentType<\n    ListingDetailPhaseCardComponentProps &\n      PhaseWithExpiryProps &\n      ChallengePhaseProps &\n      ChallengeContainerProps &\n      RevealVoteProps\n  >\n>(connectChallengePhase)(ChallengeRevealVoteCardComponent);\n\nenum TransactionTypes {\n  REVEAL_VOTE = \"REVEAL_VOTE\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.REVEAL_VOTE]: \"Confirm Vote\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.REVEAL_VOTE]: [\n    \"Your vote was not confirmed\",\n    \"To confirm your vote, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.REVEAL_VOTE]: [\n    \"The was an problem with revealing your vote\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>Your vote selection matches the vote you committed</ModalListItem>\n        <ModalListItem>Your secret phrase is correct</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\ninterface RevealCardKeyState {\n  key: number;\n}\n\nclass ChallengeRevealVote extends React.Component<\n  ChallengeDetailProps & InjectedTransactionStatusModalProps & ParametersProps,\n  ChallengeVoteState & RevealCardKeyState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: ChallengeDetailProps & InjectedTransactionStatusModalProps & ParametersProps) {\n    super(props);\n    this.state = {\n      voteOption: this.getVoteOption(),\n      salt: fetchSalt(this.props.challengeID, this.props.user),\n      isReviewVoteModalOpen: false,\n      numTokens: undefined,\n      key: new Date().valueOf(),\n    };\n  }\n\n  public componentWillMount(): void {\n    const transactionSuccessContent = this.getTransactionSuccessContent();\n    this.props.setTransactions(this.getTransactions());\n    this.props.setTransactionStatusModalConfig({\n      transactionSuccessContent,\n    });\n    this.props.setHandleTransactionSuccessButtonClick(this.handleRevealVoteSuccessClose);\n  }\n\n  public render(): JSX.Element | null {\n    const endTime = this.props.challenge.poll.revealEndDate.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.revealStageLen).toNumber();\n    const secondaryPhaseLength = this.props.parameters.get(Parameters.commitStageLen).toNumber();\n    const challenge = this.props.challenge;\n    const userHasRevealedVote = this.props.userChallengeData && !!this.props.userChallengeData.didUserReveal;\n    const userHasCommittedVote = this.props.userChallengeData && !!this.props.userChallengeData.didUserCommit;\n    const transactions = this.getTransactions();\n\n    if (!challenge) {\n      return null;\n    }\n\n    return (\n      <>\n        <ChallengeRevealVoteCard\n          challengeID={this.props.challengeID.toString()}\n          endTime={endTime}\n          phaseLength={phaseLength}\n          secondaryPhaseLength={secondaryPhaseLength}\n          voteOption={this.state.voteOption}\n          salt={this.state.salt}\n          onInputChange={this.updateRevealVoteState}\n          onMobileTransactionClick={this.props.onMobileTransactionClick}\n          faqURL={links.FAQ_VOTING_SECTION}\n          votingSmartContractFaqURL={links.FAQ_WHAT_IS_PLCR_CONTRACT}\n          userHasRevealedVote={userHasRevealedVote}\n          userHasCommittedVote={userHasCommittedVote}\n          transactions={transactions}\n          key={this.state.key}\n        />\n      </>\n    );\n  }\n\n  private getVoteOption(): string | undefined {\n    const fetchedVote = fetchVote(this.props.challengeID, this.props.user);\n    let voteOption;\n    if (fetchedVote) {\n      voteOption = fetchedVote.toString();\n    }\n    return voteOption;\n  }\n\n  private getTransactionSuccessContent = (): TransactionStatusModalContentMap => {\n    const endTime = getLocalDateTimeStrings(this.props.challenge.poll.revealEndDate.toNumber());\n    return {\n      [TransactionTypes.REVEAL_VOTE]: [\n        <>\n          <RevealVoteSuccessIcon />\n          <div>Thanks for confirming your vote.</div>\n        </>,\n        <>\n          <ModalContent>\n            We are still waiting for all voters to confirm their votes. Please check back after{\" \"}\n            <strong>\n              {endTime[0]} {endTime[1]}\n            </strong>{\" \"}\n            to see voting results. Thank you for your patience!\n          </ModalContent>\n        </>,\n      ],\n    };\n  };\n\n  private getTransactions = (): any => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.REVEAL_VOTE,\n          });\n          return this.revealVoteOnChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private handleRevealVoteSuccessClose = (): void => {\n    this.props.updateTransactionStatusModalsState({ isTransactionSuccessModalOpen: false });\n    this.setState({ isReviewVoteModalOpen: false, key: new Date().valueOf() });\n  };\n\n  private revealVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const voteOption: BigNumber = new BigNumber(this.state.voteOption as string);\n    const salt: BigNumber = new BigNumber(this.state.salt as string);\n    return this.context.revealVote(this.props.challengeID, voteOption, salt);\n  };\n\n  private updateRevealVoteState = (data: any, callback?: () => void): void => {\n    if (callback) {\n      this.setState({ ...data }, callback);\n    } else {\n      this.setState({ ...data });\n    }\n  };\n}\n\nexport default compose<React.ComponentClass<ChallengeDetailProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ChallengeRevealVote);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ChallengeRewardsDetail.tsx",
    "content": "import * as React from \"react\";\nimport { ClaimRewards, RescueTokens } from \"@joincivil/components\";\nimport { StyledFormContainer, FormGroup } from \"../utility/FormElements\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport {\n  BigNumber,\n  AppealChallengeData,\n  UserChallengeData,\n  ChallengeData,\n  EthAddress,\n} from \"@joincivil/typescript-types\";\nimport { getFormattedTokenBalance, challengeHelpers, appealChallengeHelpers } from \"@joincivil/utils\";\n\nexport interface ChallengeRewardsDetailProps {\n  challengeID: BigNumber;\n  challenge?: ChallengeData;\n  appealChallenge?: AppealChallengeData;\n  user?: EthAddress;\n  userChallengeData?: UserChallengeData;\n}\n\nclass ChallengeRewardsDetail extends React.Component<ChallengeRewardsDetailProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public render(): JSX.Element {\n    const userChallengeData = this.props.userChallengeData;\n    let isWinner;\n    let isClaimRewardsVisible;\n    let isRescueTokensVisible;\n    let isClaimedRewardVisible;\n    if (userChallengeData) {\n      const challenge = this.props.challenge;\n      const appealChallenge = this.props.appealChallenge;\n      if (challenge) {\n        isWinner = challengeHelpers.isUserWinner(challenge, userChallengeData);\n        isClaimRewardsVisible = challengeHelpers.canUserCollectReward(challenge, userChallengeData);\n        isRescueTokensVisible = challengeHelpers.canRescueTokens(challenge, userChallengeData);\n      } else if (appealChallenge) {\n        isWinner = appealChallengeHelpers.isUserAppealChallengeWinner(appealChallenge, userChallengeData);\n        isClaimRewardsVisible = appealChallengeHelpers.canUserCollectAppealChallengeReward(\n          appealChallenge,\n          userChallengeData,\n        );\n        isRescueTokensVisible = appealChallengeHelpers.canRescueAppealChallengeTokens(\n          appealChallenge,\n          userChallengeData,\n        );\n      }\n      isClaimedRewardVisible = userChallengeData.didCollectAmount;\n    }\n\n    return (\n      <StyledFormContainer>\n        {!isWinner && (\n          <FormGroup>\n            Sorry, there are no rewards available for you for this challenge. Better luck next time!\n          </FormGroup>\n        )}\n\n        {isClaimedRewardVisible && (\n          <>\n            <h3>Reward Claimed</h3>\n            <label>\n              You have collected {getFormattedTokenBalance(this.props.userChallengeData!.didCollectAmount!)} tokens by\n              voting with the winning side of this challenge.\n            </label>\n          </>\n        )}\n\n        {isClaimRewardsVisible && (\n          <ClaimRewards\n            challengeID={this.props.challengeID.toString()}\n            transactions={[{ transaction: this.claimRewards }]}\n          />\n        )}\n\n        {isRescueTokensVisible && (\n          <RescueTokens\n            challengeID={this.props.challengeID.toString()}\n            transactions={[{ transaction: this.rescueTokens }]}\n          />\n        )}\n      </StyledFormContainer>\n    );\n  }\n\n  private claimRewards = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    return this.context.claimRewards(this.props.challengeID, this.props.userChallengeData!.salt!);\n  };\n\n  private rescueTokens = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    return this.context.rescueTokens(this.props.challengeID);\n  };\n}\n\nexport default ChallengeRewardsDetail;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ChallengesWithTokensToRescue.tsx",
    "content": ""
  },
  {
    "path": "packages/dapp/src/components/listing/EmailSignup.tsx",
    "content": "import * as React from \"react\";\nimport { EmailSignup as EmailSignupComponent, EmailSignupSuccess } from \"@joincivil/components\";\nimport { addToMailingList } from \"@joincivil/utils\";\nimport config from \"../../helpers/config\";\n\nexport interface EmailSignupState {\n  email: string;\n  errorMessage: string;\n  isSignupSuccess: boolean;\n  isRequestPending: boolean;\n}\n\nclass EmailSignup extends React.Component<{}, EmailSignupState> {\n  constructor(props: any) {\n    super(props);\n    this.state = {\n      email: \"\",\n      errorMessage: \"\",\n      isSignupSuccess: false,\n      isRequestPending: false,\n    };\n  }\n  public render(): JSX.Element {\n    const { email, errorMessage, isSignupSuccess, isRequestPending } = this.state;\n\n    if (isSignupSuccess) {\n      return <EmailSignupSuccess />;\n    }\n\n    return (\n      <EmailSignupComponent\n        onChange={this.onEmailSignupChange}\n        onSubmit={this.onEmailSignupSubmit}\n        email={email}\n        errorMessage={errorMessage}\n        isRequestPending={isRequestPending}\n      />\n    );\n  }\n\n  private onEmailSignupChange = (name: string, value: string): void => {\n    if (name === \"EmailSignupTextInput\") {\n      this.setState({ email: value });\n    }\n  };\n\n  private onEmailSignupSubmit = async (): Promise<void> => {\n    const { email } = this.state;\n\n    try {\n      this.setState(() => ({ isRequestPending: true }));\n      const listID = config.SENDGRID_REGISTRY_LIST_ID;\n      let success = false;\n      if (listID !== undefined) {\n        await addToMailingList(email, listID);\n        success = true;\n      }\n      this.setState(() => ({ email: \"\", isSignupSuccess: success, isRequestPending: false }));\n    } catch (err) {\n      this.setState(() => ({ errorMessage: err.message, isRequestPending: false }));\n    }\n  };\n}\n\nexport default EmailSignup;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/Listing.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Query } from \"react-apollo\";\nimport { ListingWrapper } from \"@joincivil/typescript-types\";\nimport { NewsroomState } from \"@joincivil/newsroom-signup\";\nimport { LoadingMessage } from \"@joincivil/components\";\n\nimport { State } from \"../../redux/reducers\";\nimport {\n  LISTING_WITH_CHARTER_REVISIONS_QUERY,\n  transformGraphQLDataIntoNewsroom,\n  transformGraphQLDataIntoListing,\n  transformGraphQLDataIntoCharterRevisions,\n} from \"@joincivil/utils\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\nimport ErrorNotFoundMsg from \"../utility/ErrorNotFound\";\n\nimport ListingRedux from \"./ListingRedux\";\n\nexport interface ListingPageProps {\n  match: any;\n  listingAddress: string;\n  history: any;\n  payment?: boolean;\n  newsroomDetails?: boolean;\n}\n\nexport interface PreListingReduxProps {\n  newsroom?: NewsroomState;\n  listing?: ListingWrapper;\n}\n\nclass ListingPageComponent extends React.Component<ListingPageProps> {\n  public render(): JSX.Element {\n    const listingID = this.props.listingAddress;\n    let addr;\n    let handle;\n    if (listingID.length < 42) {\n      handle = listingID;\n    } else {\n      addr = listingID;\n    }\n\n    return (\n      <Query query={LISTING_WITH_CHARTER_REVISIONS_QUERY} variables={{ addr, handle }} pollInterval={10000}>\n        {({ loading, error, data }: any): JSX.Element => {\n          if (loading || !data) {\n            return <LoadingMessage />;\n          }\n          if (error) {\n            return <ErrorLoadingDataMsg />;\n          }\n          if (!data.tcrListing || !data.charterRevisions) {\n            return <ErrorNotFoundMsg>We could not find the listing you were looking for.</ErrorNotFoundMsg>;\n          }\n          const newsroom = transformGraphQLDataIntoNewsroom(data.tcrListing, data.tcrListing.contractAddress);\n          const listing = transformGraphQLDataIntoListing(data.tcrListing, data.tcrListing.contractAddress);\n          const charterRevisions = transformGraphQLDataIntoCharterRevisions(data.charterRevisions);\n\n          const listingAddress = listing.address;\n          return (\n            <>\n              <ScrollToTopOnMount />\n              <ListingRedux\n                listingAddress={listingAddress}\n                listingId={listingID}\n                newsroom={newsroom}\n                listing={listing}\n                channelID={data.tcrListing.channel.id}\n                charterRevisions={charterRevisions}\n                payment={this.props.payment}\n                newsroomDetails={this.props.newsroomDetails}\n                match={this.props.match}\n                history={this.props.history}\n              />\n            </>\n          );\n        }}\n      </Query>\n    );\n  }\n}\n\nconst mapToStateToProps = (state: State, ownProps: ListingPageProps): ListingPageProps => {\n  return {\n    ...ownProps,\n    listingAddress: ownProps.match.params.listingAddress,\n  };\n};\n\nexport default connect(mapToStateToProps)(ListingPageComponent);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingChallengeStatement.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport sanitizeHtml from \"sanitize-html\";\nimport styled from \"styled-components/macro\";\nimport { State } from \"../../redux/reducers\";\nimport { ListingTabHeading } from \"./styledComponents\";\nimport { NewsroomWrapper, ListingWrapper } from \"@joincivil/typescript-types\";\nimport { getBareContent } from \"../../redux/actionCreators/newsrooms\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\n\nconst StyledChallengeStatementComponent = styled.div`\n  margin: 0 0 56px;\n`;\n\nconst StyledChallengeStatementSection = styled.div`\n  margin: 0 0 24px;\n`;\n\nexport interface ListingChallengeStatementProps {\n  listingAddress: string;\n  newsroom?: NewsroomWrapper;\n  listing?: ListingWrapper;\n  showCharterTab(): void;\n}\n\nexport interface ListingChallengeStatementReduxProps {\n  appealStatement: any;\n  challengeStatement?: any;\n  appealChallengeStatement?: any;\n}\n\nclass ListingChallengeStatement extends React.Component<\n  ListingChallengeStatementProps & ListingChallengeStatementReduxProps & DispatchProp<any>\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public async componentDidMount(): Promise<void> {\n    await this.getContents();\n  }\n\n  public async componentDidUpdate(\n    prevProps: ListingChallengeStatementProps & ListingChallengeStatementReduxProps,\n  ): Promise<void> {\n    if (prevProps.listing !== this.props.listing) {\n      await this.getContents();\n    }\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        {this.renderChallengeStatement()}\n        {this.renderAppealStatement()}\n        {this.renderAppealChallengeStatement()}\n      </>\n    );\n  }\n\n  private async getContents(): Promise<void> {\n    const { listing } = this.props;\n    if (listing && listing.data.challenge) {\n      this.props.dispatch!(await getBareContent(this.context, listing.data.challenge.challengeStatementURI!));\n      const { challenge } = listing.data;\n      if (challenge.appeal) {\n        this.props.dispatch!(await getBareContent(this.context, challenge.appeal.appealStatementURI!));\n      }\n    }\n  }\n\n  private renderAppealStatement = (): JSX.Element => {\n    if (!this.props.appealStatement) {\n      return <></>;\n    }\n    let parsed = this.props.appealStatement;\n    if (typeof parsed !== \"object\") {\n      try {\n        parsed = JSON.parse(this.props.appealStatement);\n      } catch (ex) {\n        console.warn(\"unable to parse appeal statement, possibly already parsed. ex: \", ex, parsed);\n      }\n    }\n\n    const summary = parsed.summary;\n    const cleanDetails = sanitizeHtml(parsed.details, {\n      allowedSchemes: sanitizeHtml.defaults.allowedSchemes.concat([\"bzz\"]),\n    });\n    return (\n      <StyledChallengeStatementComponent>\n        <ListingTabHeading>An appeal to the Civil Council has been requested.</ListingTabHeading>\n        <p>Should the Civil Council overturn this challenge result?</p>\n        <ListingTabHeading>Appeal Statement</ListingTabHeading>\n        <StyledChallengeStatementSection>\n          <b>Summary</b>\n          <div>{summary}</div>\n        </StyledChallengeStatementSection>\n        <StyledChallengeStatementSection>\n          <b>Additional Details</b>\n          <div dangerouslySetInnerHTML={{ __html: cleanDetails }} />\n        </StyledChallengeStatementSection>\n      </StyledChallengeStatementComponent>\n    );\n  };\n\n  private renderChallengeStatement = (): JSX.Element => {\n    if (!this.props.challengeStatement) {\n      return <></>;\n    }\n    let parsed = this.props.challengeStatement;\n    if (typeof parsed !== \"object\") {\n      try {\n        parsed = JSON.parse(this.props.challengeStatement);\n      } catch (ex) {\n        console.warn(\"unable to parse challenge statement, possibly already parsed. ex: \", ex);\n      }\n    }\n    const summary = parsed.summary || \"\";\n    const cleanCiteConstitution = parsed.citeConstitution\n      ? sanitizeHtml(parsed.citeConstitution, {\n          allowedSchemes: sanitizeHtml.defaults.allowedSchemes.concat([\"bzz\"]),\n        })\n      : \"\";\n    const cleanDetails = parsed.details\n      ? sanitizeHtml(parsed.details, {\n          allowedSchemes: sanitizeHtml.defaults.allowedSchemes.concat([\"bzz\"]),\n        })\n      : \"\";\n    return (\n      <StyledChallengeStatementComponent>\n        <ListingTabHeading>Newsroom listing is under challenge</ListingTabHeading>\n        <p>\n          Review the{\" \"}\n          <a href=\"#charter\" onClick={this.props.showCharterTab}>\n            Newsroom's Charter\n          </a>{\" \"}\n          and the Challenger's statement below. Then, evaluate the Newsroom based on the Civil Constitution before\n          casting a vote with your Civil tokens.\n        </p>\n        <ListingTabHeading>Challenge Statement</ListingTabHeading>\n        <StyledChallengeStatementSection>\n          <b>Summary</b>\n          <div>{summary}</div>\n        </StyledChallengeStatementSection>\n        <StyledChallengeStatementSection>\n          <b>Evidence From Civil Constitution</b>\n          <div dangerouslySetInnerHTML={{ __html: cleanCiteConstitution }} />\n        </StyledChallengeStatementSection>\n        <StyledChallengeStatementSection>\n          <b>Additional Details</b>\n          <div dangerouslySetInnerHTML={{ __html: cleanDetails }} />\n        </StyledChallengeStatementSection>\n      </StyledChallengeStatementComponent>\n    );\n  };\n\n  private renderAppealChallengeStatement = (): JSX.Element => {\n    if (!this.props.appealChallengeStatement) {\n      return <></>;\n    }\n    let parsed = this.props.appealChallengeStatement;\n    if (typeof parsed !== \"object\") {\n      try {\n        parsed = JSON.parse(this.props.appealChallengeStatement);\n      } catch (ex) {\n        console.warn(\"unable to parse appeal challenge  statement, possibly already parsed. ex: \", ex);\n      }\n    }\n\n    const summary = parsed.summary || \"\";\n    const cleanDetails = parsed.details\n      ? sanitizeHtml(parsed.details, {\n          allowedSchemes: sanitizeHtml.defaults.allowedSchemes.concat([\"bzz\"]),\n        })\n      : \"\";\n    return (\n      <StyledChallengeStatementComponent>\n        <ListingTabHeading>Newsroom listing is under challenge</ListingTabHeading>\n        <p>\n          Should the granted appeal be overturned? Read the challenger’s statement below and vote with your CVL tokens.\n        </p>\n        <ListingTabHeading>Appeal Challenge Statement</ListingTabHeading>\n        <StyledChallengeStatementSection>\n          <b>Summary</b>\n          <div>{summary}</div>\n        </StyledChallengeStatementSection>\n        <StyledChallengeStatementSection>\n          <b>Additional Details</b>\n          <div dangerouslySetInnerHTML={{ __html: cleanDetails }} />\n        </StyledChallengeStatementSection>\n      </StyledChallengeStatementComponent>\n    );\n  };\n}\n\nconst mapToStateToProps = (\n  state: State,\n  ownProps: ListingChallengeStatementProps,\n): ListingChallengeStatementProps & ListingChallengeStatementReduxProps => {\n  const challenge = {\n    challenge: ownProps.listing!.data.challenge!,\n    listingAddress: ownProps.listingAddress,\n    challengeID: ownProps.listing!.data.challengeID,\n  };\n\n  const { content } = state.networkDependent;\n  let challengeStatement: any = \"\";\n  let appealStatement: any = \"\";\n  let appealChallengeStatement: any = \"\";\n  if (challenge && challenge.challenge) {\n    challengeStatement = content.get(challenge.challenge.challengeStatementURI!);\n\n    if (challenge.challenge.appeal) {\n      appealStatement = content.get(challenge.challenge.appeal.appealStatementURI!);\n\n      if (challenge.challenge.appeal.appealChallenge) {\n        appealChallengeStatement = content.get(challenge.challenge.appeal.appealChallenge.appealChallengeStatementURI!);\n      }\n    }\n  }\n  return {\n    ...ownProps,\n    challengeStatement,\n    appealStatement,\n    appealChallengeStatement,\n  };\n};\n\nexport default connect(mapToStateToProps)(ListingChallengeStatement);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingCharter.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport styled from \"styled-components/macro\";\nimport { Map } from \"immutable\";\nimport { diffSentences } from \"diff\";\nimport {\n  fonts,\n  colors,\n  Button,\n  InvertedButton,\n  buttonSizes,\n  NorthEastArrow,\n  Dropdown,\n  DropdownGroup,\n  DropdownItem,\n  LoadingMessage,\n} from \"@joincivil/components\";\nimport {\n  ListingWrapper,\n  NewsroomWrapper,\n  CharterData,\n  EthContentHeader,\n  StorageHeader,\n  ContentData,\n} from \"@joincivil/typescript-types\";\nimport { renderPTagsFromLineBreaks, getLocalDateTimeStrings } from \"@joincivil/utils\";\nimport { State } from \"../../redux/reducers\";\nimport { getContent } from \"../../redux/actionCreators/newsrooms\";\nimport ListingCharterRosterMember from \"./ListingCharterRosterMember\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\n\nexport interface ListingCharterProps {\n  newsroom?: NewsroomWrapper;\n  listing?: ListingWrapper;\n  charterRevisionId?: number;\n  charterRevisions?: Map<number, Partial<EthContentHeader>>;\n  isListingUnderChallenge?: boolean;\n}\n\ninterface ListingCharterReduxProps {\n  content?: Map<string, ContentData>;\n}\n\ninterface ListingCharterState {\n  selectedCharterRevisionId?: number;\n  isDiffModeEnabled: boolean;\n}\n\nconst Wrapper = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n`;\nconst CharterHeading = styled.h2`\n  font: 800 32px/34px ${fonts.SERIF};\n  margin: 0 0 12px;\n  color: ${colors.primary.BLACK};\n`;\nconst CharterSubHeading = styled.h3`\n  font: 600 21px/34px ${fonts.SERIF};\n  margin: 24px 0 18px;\n  color: ${colors.primary.BLACK};\n`;\nconst Mission = styled.div`\n  margin-bottom: 40px;\n`;\n\nconst StyledCharterRevisionsHeader = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin: 0 0 20px;\n\n  & ${InvertedButton} {\n    border-width: 1px;\n    font-size: 12px;\n    font-weight: bold;\n    padding: 0 12px;\n    text-transform: none;\n    white-space: nowrap;\n  }\n\n  & ${DropdownItem} {\n    cursor: pointer;\n    font-size: 12px;\n    padding: 6px 12px;\n  }\n`;\n\nconst CharterDiffSummary = styled.p`\n  && {\n    font-size: 14px;\n    margin: 12px 0 0;\n  }\n`;\n\nconst CharterTimestamp = styled.p`\n  && {\n    font-size: 14px;\n    font-style: italic;\n    line-height: 16px;\n  }\n`;\n\nconst CharterLockedText = styled.span`\n  color: ${colors.accent.CIVIL_RED};\n  display: block;\n`;\n\nconst CharterTextAdded = styled.span`\n  background-color: ${colors.accent.CIVIL_GREEN_2};\n`;\n\nconst CharterTextRemoved = styled.span`\n  color: ${colors.accent.CIVIL_RED};\n  text-decoration: line-through;\n`;\n\nconst VisitNewsroomWrapper = styled.div`\n  padding-top: 32px;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  line-height: 32px;\n  text-align: right;\n`;\n\nclass ListingCharter extends React.Component<\n  ListingCharterProps & ListingCharterReduxProps & DispatchProp<any>,\n  ListingCharterState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: ListingCharterProps & DispatchProp) {\n    super(props);\n    this.state = {\n      selectedCharterRevisionId: props.charterRevisionId || 0,\n      isDiffModeEnabled: false,\n    };\n  }\n\n  public async componentDidUpdate(prevProps: ListingCharterProps, prevState: ListingCharterState): Promise<void> {\n    const { charterRevisions, dispatch } = this.props;\n    const { selectedCharterRevisionId, isDiffModeEnabled } = this.state;\n\n    if (prevState.selectedCharterRevisionId !== selectedCharterRevisionId && charterRevisions) {\n      const charterRevision = charterRevisions.get(selectedCharterRevisionId!);\n      if (charterRevision && charterRevision.uri) {\n        dispatch!(await getContent(this.context, charterRevision as StorageHeader));\n      }\n    }\n\n    if (isDiffModeEnabled && selectedCharterRevisionId && charterRevisions) {\n      const prevCharterRevisionId = selectedCharterRevisionId - 1;\n      const prevCharterRevision = charterRevisions.get(prevCharterRevisionId);\n      if (prevCharterRevision && prevCharterRevision.uri) {\n        dispatch!(await getContent(this.context, prevCharterRevision as StorageHeader));\n      }\n    }\n  }\n\n  public render(): JSX.Element {\n    const { listing } = this.props;\n    const charter = this.getSelectedCharterContent();\n    const prevCharter = this.getSelectedPreviousCharterContent();\n\n    if (!charter || !listing || !listing.data) {\n      return <LoadingMessage />;\n    }\n\n    if (typeof charter !== \"object\" || !charter.mission || !charter.roster) {\n      return <p style={{ color: \"red\" }}>Error: Newsroom charter is in an invalid format</p>;\n    }\n\n    return (\n      <Wrapper>\n        {this.renderCharterRevisionHeader()}\n\n        <Mission>\n          <CharterHeading>Our Mission</CharterHeading>\n          {this.renderCharterField(charter.mission.purpose, prevCharter && prevCharter.mission.purpose)}\n\n          <CharterSubHeading>Ownership Structure</CharterSubHeading>\n          {this.renderCharterField(charter.mission.structure, prevCharter && prevCharter.mission.structure)}\n\n          <CharterSubHeading>Current or Intended Revenue Sources</CharterSubHeading>\n          {this.renderCharterField(charter.mission.revenue, prevCharter && prevCharter.mission.revenue)}\n\n          <CharterSubHeading>Potential Conflicts of Interest</CharterSubHeading>\n          {this.renderCharterField(charter.mission.encumbrances, prevCharter && prevCharter.mission.encumbrances)}\n\n          <CharterSubHeading>Additional Information</CharterSubHeading>\n          {this.renderCharterField(charter.mission.miscellaneous, prevCharter && prevCharter.mission.miscellaneous)}\n        </Mission>\n\n        <CharterHeading>Team</CharterHeading>\n        {charter.roster.map((rosterMember, i) => (\n          <ListingCharterRosterMember key={i} member={rosterMember} />\n        ))}\n\n        <VisitNewsroomWrapper>\n          <Button size={buttonSizes.MEDIUM_WIDE} href={charter.newsroomUrl} target=\"_blank\">\n            Visit Newsroom <NorthEastArrow color={colors.basic.WHITE} />\n          </Button>\n        </VisitNewsroomWrapper>\n      </Wrapper>\n    );\n  }\n\n  private getSelectedCharterContent(): CharterData | undefined {\n    const { content, charterRevisions } = this.props;\n    const { selectedCharterRevisionId } = this.state;\n    let charterRevision;\n    let charter;\n    if (content && charterRevisions) {\n      charterRevision = charterRevisions.get(selectedCharterRevisionId!);\n      if (charterRevision && charterRevision.uri) {\n        charter = content.get(charterRevision.uri) as CharterData;\n      }\n    }\n    return charter;\n  }\n\n  private getSelectedPreviousCharterContent(): CharterData | undefined {\n    const { content, charterRevisions } = this.props;\n    const { selectedCharterRevisionId } = this.state;\n    let prevCharter;\n    if (content && charterRevisions && selectedCharterRevisionId) {\n      const prevCharterRevisionId = selectedCharterRevisionId - 1;\n      const prevCharterRevision = charterRevisions.get(prevCharterRevisionId!);\n\n      if (prevCharterRevision && prevCharterRevision.uri) {\n        prevCharter = content.get(prevCharterRevision.uri) as CharterData;\n      }\n    }\n    return prevCharter;\n  }\n\n  private getSelectedCharterTimestamp(): [string, string] | undefined {\n    const { charterRevisions } = this.props;\n    const { selectedCharterRevisionId } = this.state;\n\n    let charterTimestamp;\n    if (charterRevisions) {\n      const charterRevision = charterRevisions.get(selectedCharterRevisionId!);\n      charterTimestamp =\n        charterRevision && charterRevision.timestamp && getLocalDateTimeStrings(charterRevision.timestamp);\n    }\n    return charterTimestamp;\n  }\n\n  private isViewingFirstRevision(): boolean {\n    const { charterRevisions } = this.props;\n    const { selectedCharterRevisionId } = this.state;\n    let viewingFirstRevision = false;\n\n    if (charterRevisions) {\n      const revisionIdsSeq = charterRevisions!.keySeq().toIndexedSeq();\n      if (selectedCharterRevisionId !== undefined) {\n        viewingFirstRevision = revisionIdsSeq.indexOf(selectedCharterRevisionId) === 0;\n      }\n    }\n\n    return viewingFirstRevision;\n  }\n\n  private renderCharterRevisionHeader(): JSX.Element {\n    const { isDiffModeEnabled } = this.state;\n    if (isDiffModeEnabled) {\n      const charter = this.getSelectedCharterContent();\n      const prevCharter = this.getSelectedPreviousCharterContent();\n\n      if (!charter) {\n        return <></>;\n      }\n\n      return (\n        <StyledCharterRevisionsHeader>\n          <div>\n            <InvertedButton onClick={this.disableDiffMode} size={buttonSizes.SMALL}>\n              Done Viewing\n            </InvertedButton>\n            {this.renderDiffSummary(charter.mission, prevCharter && prevCharter.mission)}\n            {this.renderPendingUpdateMessage()}\n          </div>\n          <div>{this.renderCharterRevisionNav()}</div>\n        </StyledCharterRevisionsHeader>\n      );\n    }\n\n    return (\n      <StyledCharterRevisionsHeader>\n        <div>{this.renderSelectedCharterRevisionTimestamp()}</div>\n        <div>{this.renderCharterRevisionNav()}</div>\n      </StyledCharterRevisionsHeader>\n    );\n  }\n\n  private renderCharterField(charterField: string, prevCharterField?: string): JSX.Element {\n    const { isDiffModeEnabled } = this.state;\n    let out = <></>;\n\n    if (isDiffModeEnabled && (prevCharterField || this.isViewingFirstRevision())) {\n      const diff = diffSentences(prevCharterField || \"\", charterField);\n      out = (\n        <>\n          {diff.map(sentence => {\n            if (sentence.added) {\n              return renderPTagsFromLineBreaks(sentence.value, CharterTextAdded);\n            } else if (sentence.removed) {\n              return renderPTagsFromLineBreaks(sentence.value, CharterTextRemoved);\n            }\n            return renderPTagsFromLineBreaks(sentence.value);\n          })}\n        </>\n      );\n    } else {\n      out = renderPTagsFromLineBreaks(charterField);\n    }\n\n    return <>{out}</>;\n  }\n\n  private renderPendingUpdateMessage(): JSX.Element | null {\n    const { isListingUnderChallenge, charterRevisionId: frozenCharterRevisionId } = this.props;\n    const { selectedCharterRevisionId } = this.state;\n\n    let message = null;\n    if (isListingUnderChallenge && selectedCharterRevisionId! > frozenCharterRevisionId!) {\n      message = (\n        <p>\n          <CharterLockedText>\n            This charter update is pending the completion of this newsroom's in-progress challenge\n          </CharterLockedText>\n        </p>\n      );\n    }\n    return message;\n  }\n\n  private renderDiffSummary(charterMission: any, prevCharterMission: any): JSX.Element {\n    if (charterMission && prevCharterMission) {\n      const diffsSummary = Object.keys(charterMission).map(key => {\n        if (prevCharterMission && !prevCharterMission[key]) {\n          return [0, 0];\n        }\n        const fieldDiff = diffSentences(\n          !this.isViewingFirstRevision() ? prevCharterMission[key] : \"\",\n          charterMission[key],\n        );\n        const added = fieldDiff.filter(part => part.added).length;\n        const removed = fieldDiff.filter(part => part.removed).length;\n        return [added, removed];\n      });\n      const totalAdded = diffsSummary.map(diffSum => diffSum[0]).reduce((acc, value) => acc + value);\n      const totalRemoved = diffsSummary.map(diffSum => diffSum[1]).reduce((acc, value) => acc + value);\n      return (\n        <CharterDiffSummary>\n          Showing {totalAdded + totalRemoved} edit{totalAdded + totalRemoved !== 1 ? \"s\" : \"\"} with{\" \"}\n          <b>\n            {totalAdded} addition{totalAdded !== 1 ? \"s\" : \"\"}\n          </b>{\" \"}\n          and{\" \"}\n          <b>\n            {totalRemoved} deletion{totalRemoved !== 1 ? \"s\" : \"\"}\n          </b>\n        </CharterDiffSummary>\n      );\n    }\n    return <></>;\n  }\n\n  private renderSelectedCharterRevisionTimestamp(): JSX.Element {\n    const { isListingUnderChallenge, charterRevisionId: frozenCharterRevisionId } = this.props;\n    let out = <></>;\n\n    const charterTimestamp = this.getSelectedCharterTimestamp();\n\n    if (charterTimestamp) {\n      if (isListingUnderChallenge && frozenCharterRevisionId) {\n        out = (\n          <CharterTimestamp>\n            <CharterLockedText>\n              Charter is locked on the revision from {charterTimestamp[0]} {charterTimestamp[1]}\n            </CharterLockedText>{\" \"}\n            while under challenge.\n          </CharterTimestamp>\n        );\n      } else {\n        out = (\n          <CharterTimestamp>\n            Updated on {charterTimestamp[0]} {charterTimestamp[1]}\n          </CharterTimestamp>\n        );\n      }\n    }\n\n    return out;\n  }\n\n  private renderCharterRevisionNav(): JSX.Element {\n    const { charterRevisions } = this.props;\n    const { isDiffModeEnabled } = this.state;\n\n    let selectedRevisionLabel = \"\";\n    if (charterRevisions) {\n      if (isDiffModeEnabled) {\n        const charterTimestamp = this.getSelectedCharterTimestamp();\n        if (charterTimestamp) {\n          selectedRevisionLabel = `: ${charterTimestamp[0]}`;\n        }\n      }\n\n      const navToggleButton = (\n        <InvertedButton size={buttonSizes.SMALL}>View edit history{selectedRevisionLabel}</InvertedButton>\n      );\n      const sortedRevisions = charterRevisions!\n        .keySeq()\n        .sort((revA, revB) => {\n          if (revA < revB) {\n            return 1;\n          } else if (revA > revB) {\n            return -1;\n          }\n          return 0;\n        })\n        .toSet();\n\n      return (\n        <Dropdown target={navToggleButton} position=\"right\">\n          <DropdownGroup>\n            {sortedRevisions.map(itemRevisionId => {\n              const itemRevision = charterRevisions.get(itemRevisionId!);\n              const itemRevisionTimestamp = getLocalDateTimeStrings(itemRevision.timestamp!);\n              const selectRevisionId = () => {\n                this.selectRevisionId(itemRevisionId!);\n              };\n              return (\n                <DropdownItem onClick={selectRevisionId} key={itemRevision.timestamp!.valueOf()}>\n                  {itemRevisionTimestamp[0]} {itemRevisionTimestamp[1]}\n                </DropdownItem>\n              );\n            })}\n          </DropdownGroup>\n        </Dropdown>\n      );\n    }\n\n    return <></>;\n  }\n\n  private disableDiffMode = (): void => {\n    const { charterRevisionId: selectedCharterRevisionId } = this.props;\n    this.setState({ selectedCharterRevisionId, isDiffModeEnabled: false });\n  };\n\n  private selectRevisionId = (selectedCharterRevisionId: number): void => {\n    this.setState({ selectedCharterRevisionId, isDiffModeEnabled: true });\n  };\n}\n\nconst mapStateToProps = (\n  state: State,\n  ownProps: ListingCharterProps,\n): ListingCharterProps & ListingCharterReduxProps => {\n  const { content } = state.networkDependent;\n\n  return {\n    content,\n    ...ownProps,\n  };\n};\n\nexport default connect(mapStateToProps)(ListingCharter);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingCharterRosterMember.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { fonts, colors } from \"@joincivil/components\";\nimport { RosterMember } from \"@joincivil/typescript-types\";\nimport { renderPTagsFromLineBreaks } from \"@joincivil/utils\";\n\nexport interface ListingCharterRosterMemberProps {\n  member: RosterMember;\n}\n\nconst Wrapper = styled.div`\n  display: flex;\n  margin: 40px 0 48px;\n`;\n\nconst Avatar = styled.img`\n  width: 125px;\n  height: 125px;\n  min-width: 125px;\n  min-height: 125px;\n  border-radius: 50%;\n  object-fit: cover;\n`;\nconst Text = styled.div`\n  display: inline-block;\n  padding-left: 32px;\n  font-family: ${fonts.SANS_SERIF};\n`;\n\nconst Name = styled.h4`\n  font-size: 18px;\n  font-weight: bold;\n  letter-spacing: -0.39px;\n  color: ${colors.primary.BLACK};\n  margin: 0;\n`;\nconst Role = styled.div`\n  font-size: 15px;\n  line-height: 24px;\n  letter-spacing: -0.32px;\n  color: ${colors.accent.CIVIL_GRAY_2};\n`;\n\nconst Link = styled.a`\n  color: ${colors.accent.CIVIL_BLUE};\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE_FADED};\n  }\n`;\nconst Twitter = styled(Link)`\n  display: block;\n  margin-top: -5px;\n  font-size: 15px;\n  letter-spacing: -0.32px;\n`;\n\nconst Bio = styled.div`\n  margin-top: 6px;\n\n  p:last-child {\n    margin-bottom: 0;\n  }\n`;\n\n// From gravatar for now\nconst DEFAULT_AVATAR_URL = \"https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp&f=y&s=250\";\n\nclass ListingCharterRosterMember extends React.Component<ListingCharterRosterMemberProps> {\n  public render(): JSX.Element {\n    const { member } = this.props;\n\n    let twitterHandle;\n    if (member.socialUrls && member.socialUrls.twitter) {\n      const matches = member.socialUrls.twitter.match(/twitter\\.com\\/(?:#!\\/)?([^\\/#\\?]+)/);\n      if (matches && matches[1]) {\n        twitterHandle = matches[1];\n      }\n    }\n\n    return (\n      <Wrapper>\n        <Avatar src={member.avatarUrl || DEFAULT_AVATAR_URL} alt={member.name} />\n        <Text>\n          <Name>{member.name}</Name>\n          <Role>{member.role}</Role>\n          {twitterHandle && (\n            <Twitter href={member.socialUrls!.twitter} target=\"_blank\">\n              @{twitterHandle}\n            </Twitter>\n          )}\n          <Bio>{renderPTagsFromLineBreaks(member.bio)}</Bio>\n        </Text>\n      </Wrapper>\n    );\n  }\n}\n\nexport default ListingCharterRosterMember;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingDiscourse.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport styled from \"styled-components/macro\";\n\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { colors, FeatureFlag, LoadingMessage, ChevronAnchor } from \"@joincivil/components\";\n\nimport config from \"../../helpers/config\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\nimport ErrorNotFoundMsg from \"../utility/ErrorNotFound\";\n\nexport interface ListingDiscourseProps {\n  listingAddress: EthAddress;\n  network: string;\n}\n\ninterface DiscourseCommentsProps {\n  topicID: number;\n  isRinkebyNetwork: boolean;\n}\n\nconst discourseTopicIDQuery = gql`\n  query($addr: String!) {\n    listing(addr: $addr) {\n      discourseTopicID\n    }\n  }\n`;\n\nconst StyledLinkContainer = styled.div`\n  a {\n    font-size: 16px;\n  }\n\n  span {\n    color: ${colors.accent.CIVIL_GRAY_2};\n    font-size: 12px;\n    font-style: italic;\n  }\n`;\n\n// CoralTalk aka to-be-depreacted comments widget\nconst CoralTalk: React.FunctionComponent = props => {\n  const containerEl = React.useRef<HTMLDivElement>(null);\n\n  React.useEffect(() => {\n    const discourseUrl = config.DISCOURSE_URL;\n    const tag = document.createElement(\"script\");\n    tag.async = true;\n    tag.src = discourseUrl + \"/static/embed.js\";\n\n    const handleCallback = () => {\n      // @ts-ignore\n      window.Coral.Talk.render(containerEl.current, {\n        talk: discourseUrl,\n      });\n    };\n\n    tag.onload = handleCallback;\n    document.getElementsByTagName(\"body\")[0].appendChild(tag);\n  }, []);\n\n  return <div ref={containerEl} />;\n};\n\n// Discourse Comments\nconst DiscourseComments: React.FunctionComponent<DiscourseCommentsProps> = props => {\n  React.useEffect(() => {\n    if (!props.isRinkebyNetwork) {\n      (window as any).DiscourseEmbed = {\n        discourseUrl: \"https://community.civil.co/\",\n        topicId: props.topicID,\n      };\n\n      const { discourseUrl } = (window as any).DiscourseEmbed;\n      const tag = document.createElement(\"script\");\n      tag.async = true;\n      tag.src = discourseUrl + \"javascripts/embed.js\";\n\n      document.getElementsByTagName(\"body\")[0].appendChild(tag);\n    }\n  }, []);\n\n  // TODO(jon): Topics for Rinkeby newsrooms currently live in our Production\n  // hosted instance of Discourse, as we don't currently have a staging instance.\n  // These Rinkeby newsroom topics are currently hidden from non-Civil staff members\n  // in Discourse to prevent confusion in the forum, however this also prevents those\n  // topics from being embedded via the Discourse JS widget in the DApp.\n  //\n  // For now, we are simply displaying a link to the correct Discourse topic for Rinkeby\n  // newsrooms, but once we have a separate staging instance for Discourse, we should remove\n  // this check and just embed the comments for the topic from the staging instance.\n  //\n  // Rinkeby Newsroom category: https://community.civil.co/c/rinkeby-network/rinkeby-newsrooms\n  //\n  if (props.isRinkebyNetwork) {\n    return (\n      <StyledLinkContainer>\n        <ChevronAnchor href={`https://community.civil.co/t/${props.topicID}`}>\n          Join the discussion on Discourse\n        </ChevronAnchor>\n        <p>\n          <span>* Discourse embedding is not currently enabled for Rinkeby Test Network</span>\n        </p>\n      </StyledLinkContainer>\n    );\n  }\n\n  return <div id=\"discourse-comments\" />;\n};\n\nconst ListingDiscourse: React.FunctionComponent<ListingDiscourseProps> = props => {\n  return (\n    <FeatureFlag feature=\"embed_discourse\" replacementComponent={CoralTalk}>\n      <Query query={discourseTopicIDQuery} variables={{ addr: props.listingAddress }}>\n        {({ loading, error, data }: any): JSX.Element => {\n          if (loading) {\n            return <LoadingMessage />;\n          }\n          if (error) {\n            return <ErrorLoadingDataMsg />;\n          }\n          if (!data.listing || !data.listing.discourseTopicID) {\n            return <ErrorNotFoundMsg>We could not find the Discourse topic for this newsroom.</ErrorNotFoundMsg>;\n          }\n\n          const isRinkebyNetwork = parseInt(props.network, 10) === 4;\n          return <DiscourseComments topicID={data.listing.discourseTopicID} isRinkebyNetwork={isRinkebyNetwork} />;\n        }}\n      </Query>\n    </FeatureFlag>\n  );\n};\n\nexport default React.memo(ListingDiscourse);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingEvent.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport {\n  AppealGrantedEvent,\n  AppealRequestedEvent,\n  ApplicationEvent,\n  ChallengeEvent,\n  ChallengeCompletedEventProps,\n  ChallengeFailedEvent as ChallengeFailedEventComponent,\n  ChallengeSucceededEvent as ChallengeSucceededEventComponent,\n  DepositEvent,\n  GrantedAppealChallengedEvent,\n  ListingHistoryEventTimestampProps,\n  ListingWithdrawnEvent,\n  RejectedEvent,\n  TouchAndRemovedEvent,\n  WhitelistedEvent,\n  WithdrawalEvent,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\n\nimport { routes } from \"../../constants\";\nimport { ChallengeContainerProps, connectChallengeResults } from \"../utility/HigherOrderComponents\";\n\nexport interface ListingEventProps {\n  event: any;\n  listing: string;\n}\n\nconst challengeCompletedEventContainer = (WrappedComponent: React.FunctionComponent<ChallengeCompletedEventProps>) => {\n  return compose<React.ComponentClass<ListingHistoryEventTimestampProps & ChallengeContainerProps>>(\n    connectChallengeResults,\n  )(WrappedComponent);\n};\n\nclass ListingEvent extends React.Component<ListingEventProps> {\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element | null {\n    const wrappedEvent = this.props.event;\n\n    switch (wrappedEvent.event) {\n      case \"_AppealGranted\":\n        return <AppealGrantedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_AppealRequested\":\n        return <AppealRequestedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_Application\":\n        return this.renderApplicationEvent(wrappedEvent);\n\n      case \"_ApplicationRemoved\":\n        return <RejectedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_ApplicationWhitelisted\":\n        return <WhitelistedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_Challenge\":\n        return this.renderChallengeEvent(wrappedEvent);\n\n      case \"_ChallengeFailed\":\n        return this.renderChallengeFailedEvent(wrappedEvent);\n\n      case \"_ChallengeSucceeded\":\n        return this.renderChallengeSucceededEvent(wrappedEvent);\n\n      case \"_FailedChallengeOverturned\":\n        return this.renderChallengeSucceededEvent(wrappedEvent);\n\n      case \"_SuccessfulChallengeOverturned\":\n        return this.renderChallengeFailedEvent(wrappedEvent);\n\n      case \"_Deposit\":\n        return this.renderDepositEvent(wrappedEvent);\n\n      case \"_GrantedAppealChallenged\":\n        return <GrantedAppealChallengedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_ListingRemoved\":\n        return <RejectedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_ListingWithdrawn\":\n        return <ListingWithdrawnEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_TouchAndRemoved\":\n        return <TouchAndRemovedEvent timestamp={wrappedEvent.timestamp} />;\n\n      case \"_Withdrawal\":\n        return this.renderWithdrawalEvent(wrappedEvent);\n\n      default:\n        return null;\n    }\n  }\n\n  private renderWithdrawalEvent(wrappedEvent: any): JSX.Element {\n    const { withdrew } = wrappedEvent.args || wrappedEvent.returnValues;\n    const formattedDeposit = getFormattedTokenBalance(withdrew);\n    return <WithdrawalEvent timestamp={(wrappedEvent as any).timestamp} deposit={formattedDeposit} />;\n  }\n\n  private renderDepositEvent(wrappedEvent: any): JSX.Element {\n    const { added } = wrappedEvent.args || wrappedEvent.returnValues;\n    const formattedDeposit = getFormattedTokenBalance(added);\n    return <DepositEvent timestamp={(wrappedEvent as any).timestamp} deposit={formattedDeposit} />;\n  }\n\n  private renderApplicationEvent(wrappedEvent: any): JSX.Element {\n    const { deposit } = wrappedEvent.args || wrappedEvent.returnValues;\n    const formattedDeposit = getFormattedTokenBalance(deposit);\n    return <ApplicationEvent timestamp={(wrappedEvent as any).timestamp} deposit={formattedDeposit} />;\n  }\n\n  private renderChallengeEvent(wrappedEvent: any): JSX.Element {\n    const { challengeID, challenger } = wrappedEvent.args || wrappedEvent.returnValues;\n    const challengeURI = formatRoute(routes.CHALLENGE, {\n      listingAddress: this.props.listing,\n      challengeID: challengeID.toString(),\n    });\n    return (\n      <ChallengeEvent\n        timestamp={(wrappedEvent as any).timestamp}\n        challengeURI={challengeURI}\n        challenger={challenger}\n        challengeID={challengeID.toString()}\n      />\n    );\n  }\n\n  private renderChallengeFailedEvent(wrappedEvent: any): JSX.Element {\n    const { challengeID } = wrappedEvent.args || wrappedEvent.returnValues;\n    const ChallengeFailedComponent = challengeCompletedEventContainer(\n      ChallengeFailedEventComponent,\n    ) as React.ComponentClass<ListingHistoryEventTimestampProps & ChallengeContainerProps>;\n\n    return <ChallengeFailedComponent timestamp={wrappedEvent.timestamp} challengeID={challengeID} />;\n  }\n\n  private renderChallengeSucceededEvent(wrappedEvent: any): JSX.Element {\n    const { challengeID } = wrappedEvent.args || wrappedEvent.returnValues;\n    const ChallengeSucceededComponent = challengeCompletedEventContainer(ChallengeSucceededEventComponent);\n\n    return <ChallengeSucceededComponent timestamp={wrappedEvent.timestamp} challengeID={challengeID} />;\n  }\n}\n\nexport default ListingEvent;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingHeader.tsx",
    "content": "import * as React from \"react\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { ListingDetailHeader, ListingDetailHeaderProps } from \"@joincivil/components\";\nimport { EthAddress, ListingWrapper, NewsroomWrapper, CharterData } from \"@joincivil/typescript-types\";\nimport {\n  getFormattedTokenBalance,\n  getFormattedEthAddress,\n  getEtherscanBaseURL,\n  urlConstants as links,\n} from \"@joincivil/utils\";\n\nimport {\n  routes,\n  TRegistryListingType,\n  TRegistrySubListingType,\n  registryListingTypes,\n  registrySubListingTypes,\n} from \"../../constants\";\nexport interface ListingHeaderProps {\n  newsroom: NewsroomWrapper;\n  listing: ListingWrapper;\n  network: string;\n  userAccount?: EthAddress;\n  listingPhaseState: any;\n  charter?: CharterData;\n}\n\ninterface TRegistryURLDataParameters {\n  listingType?: TRegistryListingType;\n  subListingType?: TRegistrySubListingType;\n}\n\nfunction getRegistryURLData(listingPhaseState: any): [TRegistryURLDataParameters, string] {\n  let urlArg: TRegistryURLDataParameters = {};\n  let label = \"Registry\";\n\n  if (listingPhaseState.isWhitelisted) {\n    urlArg = { listingType: registryListingTypes.APPROVED };\n    label = \"Approved Newsrooms\";\n  } else if (listingPhaseState.isInApplication) {\n    urlArg = { listingType: registryListingTypes.IN_PROGRESS, subListingType: registrySubListingTypes.IN_APPLICATION };\n    label = \"Newsroom Applications\";\n  } else if (\n    listingPhaseState.inChallengeCommitVotePhase ||\n    listingPhaseState.inChallengeRevealPhase ||\n    listingPhaseState.isAwaitingAppealRequest\n  ) {\n    urlArg = { listingType: registryListingTypes.IN_PROGRESS, subListingType: registrySubListingTypes.UNDER_CHALLENGE };\n    label = \"Newsrooms Under Challenge\";\n  } else if (listingPhaseState.isAwaitingAppealJudgement || listingPhaseState.isAwaitingAppealChallenge) {\n    urlArg = { listingType: registryListingTypes.IN_PROGRESS, subListingType: registrySubListingTypes.UNDER_APPEAL };\n    label = \"Newsrooms Under Appeal\";\n  } else if (listingPhaseState.isInAppealChallengeRevealPhase || listingPhaseState.isInAppealChallengeCommitPhase) {\n    urlArg = {\n      listingType: registryListingTypes.IN_PROGRESS,\n      subListingType: registrySubListingTypes.UNDER_APPEAL_CHALLENGE,\n    };\n    label = \"Newsrooms Under Challenge\";\n  } else if (\n    listingPhaseState.canBeWhitelisted ||\n    listingPhaseState.canResolveChallenge ||\n    listingPhaseState.canListingAppealBeResolved ||\n    listingPhaseState.canListingAppealChallengeBeResolved\n  ) {\n    urlArg = { listingType: registryListingTypes.IN_PROGRESS, subListingType: registrySubListingTypes.READY_TO_UPDATE };\n    label = \"Newsrooms Ready To Update\";\n  } else if (listingPhaseState.isRejected) {\n    urlArg = { listingType: registryListingTypes.REJECTED };\n    label = \"Rejected Newsrooms\";\n  }\n\n  return [urlArg, label];\n}\n\nconst ListingHeader: React.FunctionComponent<ListingHeaderProps> = props => {\n  const registryURLData = getRegistryURLData(props.listingPhaseState);\n  const registryLinkText = registryURLData[1];\n  const etherscanBaseURL = getEtherscanBaseURL(props.network);\n\n  const headerProps: ListingDetailHeaderProps = {\n    listingAddress: getFormattedEthAddress(props.listing.address),\n    newsroomName: props.newsroom.data.name,\n    charter: props.charter,\n    owner: getFormattedEthAddress(props.listing.data.owner),\n    etherscanBaseURL,\n    registryURL: formatRoute(routes.REGISTRY_HOME, registryURLData[0]),\n\n    ethInfoModalLearnMoreURL: links.FAQ_WHAT_IS_SMART_CONTRACT,\n    registryLinkText,\n    unstakedDeposit: getFormattedTokenBalance(props.listing.data.unstakedDeposit),\n    ...props.listingPhaseState,\n  };\n  return <>{props.listing.data && <ListingDetailHeader {...headerProps} />}</>;\n};\n\nexport default ListingHeader;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingHistory.tsx",
    "content": "import * as React from \"react\";\nimport ListingEvent from \"./ListingEvent\";\nimport { ListingTabHeading } from \"./styledComponents\";\n\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\n\nexport interface ListingHistoryProps {\n  listingAddress: string;\n}\n\nexport interface ListingHistoryState {\n  error: undefined | string;\n}\n\nconst LISTING_QUERY = gql`\n  query($addr: String!) {\n    governanceEvents(addr: $addr) {\n      governanceEventType\n      creationDate\n      metadata {\n        key\n        value\n      }\n    }\n  }\n`;\n\nclass ListingHistory extends React.Component<ListingHistoryProps, ListingHistoryState> {\n  constructor(props: ListingHistoryProps) {\n    super(props);\n    this.state = {\n      error: undefined,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <ListingTabHeading>Listing History</ListingTabHeading>\n        {this.renderGraphQLHistory()}\n      </>\n    );\n  }\n\n  public renderGraphQLHistory(): JSX.Element {\n    return (\n      <Query query={LISTING_QUERY} variables={{ addr: this.props.listingAddress }}>\n        {({ loading, error, data }: any): JSX.Element => {\n          if (loading) {\n            return <p>Loading...</p>;\n          }\n          if (error) {\n            return <p>Error :(</p>;\n          }\n\n          return data.governanceEvents\n            .slice()\n            .reverse()\n            .map((event: any, i: number) => {\n              return (\n                <ListingEvent key={i} event={this.transformGraphQlEvent(event)} listing={this.props.listingAddress} />\n              );\n            });\n        }}\n      </Query>\n    );\n  }\n\n  public transformGraphQlEvent = (event: any): any => {\n    const args = {};\n    event.metadata.forEach((data: any) => {\n      const key = data.key.charAt(0).toLowerCase() + data.key.substring(1);\n      args[key] = data.value;\n    });\n    const date = new Date(event.creationDate).getTime() / 1000;\n    return {\n      event: \"_\" + event.governanceEventType,\n      timestamp: date * 1000,\n      args,\n    };\n  };\n}\n\nexport default ListingHistory;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingOwnerActions.tsx",
    "content": "import * as React from \"react\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { BigNumber, EthAddress, ListingWrapper, TxHash, NewsroomWrapper } from \"@joincivil/typescript-types\";\nimport { TransactionButton } from \"@joincivil/components\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { ViewModuleHeader } from \"../utility/ViewModules\";\nimport { hasTransactionStatusModals, InjectedTransactionStatusModalProps } from \"../utility/TransactionStatusModalsHOC\";\nimport { ModalContent } from \"@joincivil/components/build/ReviewVote/styledComponents\";\nimport { compose } from \"redux\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { Subscription } from \"rxjs\";\n\nenum TransactionTypes {\n  EXIT_LISTING = \"EXIT_LISTING\",\n  WITHDRAW_TOKENS = \"WITHDRAW_TOKENS\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.EXIT_LISTING]: \"Withdraw from Registry\",\n  [TransactionTypes.WITHDRAW_TOKENS]: \"Withdraw CVL from Newsroom Wallet\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.EXIT_LISTING]: \"1 of 1\",\n  [TransactionTypes.WITHDRAW_TOKENS]: \"1 of 1\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.EXIT_LISTING]: [\n    <>\n      <div>Your newsroom has exited the registry</div>\n    </>,\n    <>\n      <ModalContent>Your newsroom has exited from the registry. You may now withdraw your CVL tokens.</ModalContent>\n    </>,\n  ],\n  [TransactionTypes.WITHDRAW_TOKENS]: [\n    <>\n      <div>You have withdrawn your CVL tokens</div>\n    </>,\n    <>\n      <ModalContent>Your CVL tokens have been withdrawn to your personal wallet.</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.EXIT_LISTING]: [\n    \"Your newsroom has not exited the registry\",\n    \"To exit the registry, you need to confirm the transaction in your MetaMask wallet\",\n  ],\n  [TransactionTypes.WITHDRAW_TOKENS]: [\n    \"Your tokens have not been withdrawn\",\n    \"To withdraw your tokens, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.EXIT_LISTING]: [\n    \"The was an problem with exiting the registry\",\n    <>\n      <ModalContent>\n        Please retry your transaction. You can contact Customer Support if you continue to have issues.\n      </ModalContent>\n    </>,\n  ],\n  [TransactionTypes.WITHDRAW_TOKENS]: [\n    \"The was an problem with withdrawing your tokens\",\n    <>\n      <ModalContent>\n        Please retry your transaction. You can contact Customer Support if you continue to have issues.\n      </ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass ExitListing extends React.Component<OwnerListingViewProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <TransactionButton\n        transactions={[\n          {\n            transaction: async () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: true,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: false,\n                transactionType: TransactionTypes.EXIT_LISTING,\n              });\n              return this.exitListing();\n            },\n            handleTransactionHash: (txHash: TxHash) => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: true,\n              });\n            },\n            postTransaction: () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: true,\n              });\n            },\n            handleTransactionError: this.props.handleTransactionError,\n          },\n        ]}\n      >\n        Exit Listing\n      </TransactionButton>\n    );\n  }\n\n  private exitListing = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    return this.context.exitListing(this.props.listingAddress, this.props.listing.data.owner);\n  };\n}\n\nclass WithdrawTokens extends React.Component<OwnerListingViewProps & InjectedTransactionStatusModalProps> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <TransactionButton\n        transactions={[\n          {\n            transaction: async () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: true,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: false,\n                transactionType: TransactionTypes.WITHDRAW_TOKENS,\n              });\n              return this.withdrawTokensFromMultisig();\n            },\n            handleTransactionHash: (txHash: TxHash) => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: true,\n              });\n            },\n            postTransaction: () => {\n              this.props.updateTransactionStatusModalsState({\n                isWaitingTransactionModalOpen: false,\n                isTransactionProgressModalOpen: false,\n                isTransactionSuccessModalOpen: true,\n              });\n            },\n            handleTransactionError: this.props.handleTransactionError,\n          },\n        ]}\n      >\n        Withdraw Tokens\n      </TransactionButton>\n    );\n  }\n\n  private withdrawTokensFromMultisig = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    return this.context.withdrawTokensFromMultisig(this.props.newsroom.data.owner);\n  };\n}\n\nexport interface ListingOwnerActionsProps {\n  listing: ListingWrapper;\n  newsroom: NewsroomWrapper;\n}\n\nexport interface ListingOwnerActionsState {\n  cvlBalance: BigNumber;\n  tokenBalanceSubscription?: Subscription;\n}\n\nexport interface OwnerListingViewProps {\n  listingAddress: EthAddress;\n  listing: ListingWrapper;\n}\n\nclass ListingOwnerActions extends React.Component<\n  ListingOwnerActionsProps & InjectedTransactionStatusModalProps,\n  ListingOwnerActionsState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: ListingOwnerActionsProps & InjectedTransactionStatusModalProps) {\n    super(props);\n    this.state = {\n      cvlBalance: new BigNumber(0),\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    const civil = this.context.civil;\n    const cvl = await civil.cvlTokenSingletonTrusted();\n    const ownerCVLBalance = await cvl.getBalance(this.props.newsroom.data.owner);\n    this.setState({ cvlBalance: ownerCVLBalance });\n    const subscription = await cvl.balanceUpdate(\"latest\", this.props.newsroom.data.owner).subscribe(balance => {\n      this.setState({ cvlBalance: balance });\n    });\n    this.setState({ tokenBalanceSubscription: subscription });\n  }\n\n  public componentWillUnmount(): void {\n    if (this.state.tokenBalanceSubscription) {\n      this.state.tokenBalanceSubscription.unsubscribe();\n    }\n  }\n\n  public render(): JSX.Element {\n    const canExitListing = this.props.listing.data.isWhitelisted && !this.props.listing.data.challenge;\n    return (\n      <>\n        <ViewModuleHeader>Owner Actions</ViewModuleHeader>\n        <p>As an Owner of this listing, you can manage your listing here</p>\n        {canExitListing && (\n          <>\n            <p>\n              To remove your newsroom from the registry, click the button below. If you choose to rejoin the registry,\n              you will have to re-apply. Once this transaction has completed, you can withdraw your CVL tokens from your\n              newsroom wallet by clicking \"Withdraw Tokens\" below.\n            </p>\n            <ExitListing listingAddress={this.props.listing.address} {...this.props} />\n          </>\n        )}\n        <p>Newsroom Wallet CVL Balance: {getFormattedTokenBalance(this.state.cvlBalance)}</p>\n        {this.state.cvlBalance.gt(0) && (\n          <>\n            <p>\n              To withdraw your CVL tokens from your newsroom wallet into your personal wallet, click the button below.\n            </p>\n            <WithdrawTokens listingAddress={this.props.listing.address} {...this.props} />\n          </>\n        )}\n      </>\n    );\n  }\n}\n\nexport default compose<React.ComponentClass<ListingOwnerActionsProps>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ListingOwnerActions);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingPhaseActions.tsx",
    "content": "import * as React from \"react\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport styled from \"styled-components/macro\";\nimport { BigNumber, ListingWrapper, NewsroomWrapper } from \"@joincivil/typescript-types\";\nimport {\n  InApplicationCard,\n  RejectedCard as RejectedCardComponent,\n  Modal,\n  ProgressModalContentMobileUnsupported,\n  ChallengeResultsProps,\n  AppealChallengePhaseProps,\n  AppealDecisionProps,\n  ChallengePhaseProps,\n  WithdrawnCard,\n} from \"@joincivil/components\";\nimport { urlConstants as links, Parameters } from \"@joincivil/utils\";\n\nimport { getChallengeResultsProps, getAppealChallengeResultsProps } from \"../../helpers/transforms\";\nimport ChallengeDetailContainer from \"./ChallengeDetail\";\nimport ChallengeResolve from \"./ChallengeResolve\";\nimport { routes } from \"../../constants\";\nimport ApplicationUpdateStatus from \"./ApplicationUpdateStatus\";\nimport WhitelistedDetail from \"./WhitelistedDetail\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\n\nconst StyledContainer = styled.div`\n  margin: 0 0 80px;\n`;\n\nexport interface ListingPhaseActionsProps {\n  listing: ListingWrapper;\n  newsroom: NewsroomWrapper;\n  expiry?: number;\n  parameters: any;\n  govtParameters: any;\n  constitutionURI?: string;\n  listingPhaseState: any;\n  listingLastGovState?: string;\n}\n\nexport interface ListingPhaseActionsState {\n  isNoMobileTransactionVisible: boolean;\n}\n\nclass ListingPhaseActions extends React.Component<ListingPhaseActionsProps, ListingPhaseActionsState> {\n  constructor(props: ListingPhaseActionsProps) {\n    super(props);\n    this.state = { isNoMobileTransactionVisible: false };\n  }\n\n  public render(): JSX.Element {\n    const listing = this.props.listing;\n    const lastGovState = this.props.listingLastGovState;\n    const {\n      isInApplication,\n      isWhitelisted,\n      isRejected,\n      canBeWhitelisted,\n      canResolveChallenge,\n    } = this.props.listingPhaseState;\n    const challenge = this.props.listing.data.challenge;\n    if (lastGovState && lastGovState === \"GovernanceStateListingWithdrawn\") {\n      return <>{this.renderWithdrawn()}</>;\n    } else {\n      return (\n        <>\n          {isWhitelisted && (!challenge || challenge.resolved) && this.renderApplicationWhitelisted()}\n          {isRejected && (!challenge || challenge.resolved) && this.renderRejected()}\n          {isInApplication && this.renderApplicationPhase()}\n          {listing.data && (\n            <StyledContainer>\n              {canBeWhitelisted && this.renderCanWhitelist()}\n              {canResolveChallenge && this.renderCanResolve()}\n\n              {listing.data.challenge && !listing.data.challenge.resolved && !canResolveChallenge && (\n                <ChallengeDetailContainer\n                  challengeID={this.props.listing.data.challengeID}\n                  listingAddress={this.props.listing.address}\n                  newsroom={this.props.newsroom}\n                  challengeData={{\n                    listingAddress: this.props.listing.address,\n                    challengeID: this.props.listing.data.challengeID,\n                    challenge: this.props.listing.data.challenge!,\n                  }}\n                  onMobileTransactionClick={this.showNoMobileTransactionsModal}\n                />\n              )}\n            </StyledContainer>\n          )}\n\n          {this.renderNoMobileTransactions()}\n        </>\n      );\n    }\n  }\n\n  private renderCanWhitelist = (): JSX.Element => {\n    return <ApplicationUpdateStatus listingAddress={this.props.listing!.address} />;\n  };\n\n  private renderCanResolve(): JSX.Element {\n    return (\n      <ChallengeResolve\n        listingAddress={this.props.listing.address}\n        challengeID={this.props.listing.data.challengeID}\n        onMobileTransactionClick={this.showNoMobileTransactionsModal}\n      />\n    );\n  }\n\n  private renderApplicationWhitelisted(): JSX.Element {\n    let approvalDate;\n    if (this.props.listing.data.approvalDate) {\n      approvalDate = this.props.listing.data.approvalDate;\n    }\n    return (\n      <>\n        <WhitelistedDetail\n          listingAddress={this.props.listing.address}\n          constitutionURI={this.props.constitutionURI}\n          faqURL={links.FAQ_REGISTRY}\n          onMobileTransactionClick={this.showNoMobileTransactionsModal}\n          approvalDate={approvalDate}\n        />\n      </>\n    );\n  }\n\n  private renderWithdrawn(): JSX.Element {\n    const lastUpdatedDate = this.props.listing.data.lastUpdatedDate;\n    const lastUpdatedDateAsDate = lastUpdatedDate ? new Date(lastUpdatedDate.mul(1000).toNumber()) : new BigNumber(0);\n    return <WithdrawnCard listingRemovedTimestamp={lastUpdatedDateAsDate} />;\n  }\n\n  private renderRejected(): JSX.Element {\n    const data = this.props.listing.data;\n    const lastUpdatedDate = this.props.listing.data.lastUpdatedDate;\n\n    if (!data.prevChallenge) {\n      console.error(\"Error loading Listing prevChallenge data. listing address: \", this.props.listing.address);\n      return <ErrorLoadingDataMsg />;\n    } else {\n      const challengeResultsProps = getChallengeResultsProps(data.prevChallenge!) as ChallengeResultsProps;\n      let appealChallengeResultsProps;\n      const challengeProps: ChallengePhaseProps = {\n        challengeID: data.prevChallengeID!.toString(),\n      };\n      let appealProps: AppealDecisionProps = {};\n      if (data.prevChallenge && data.prevChallenge.appeal && data.prevChallenge.appeal.appealFeePaid) {\n        appealProps = {\n          appealRequested: !data.prevChallenge!.appeal!.appealFeePaid!.isZero(),\n          appealGranted: data.prevChallenge!.appeal!.appealGranted,\n          appealGrantedStatementURI: data.prevChallenge!.appeal!.appealGrantedStatementURI,\n        };\n      }\n      let appealChallengePhaseProps: AppealChallengePhaseProps = {};\n      if (data.prevChallenge!.appeal) {\n        appealChallengePhaseProps = { appealChallengeID: data.prevChallenge!.appeal!.appealChallengeID.toString() };\n      }\n      if (data.prevChallenge.appeal && data.prevChallenge.appeal.appealChallenge) {\n        appealChallengeResultsProps = getAppealChallengeResultsProps(data.prevChallenge.appeal.appealChallenge!);\n      }\n      return (\n        <RejectedCardComponent\n          faqURL={links.FAQ_REGISTRY}\n          {...challengeProps}\n          {...challengeResultsProps}\n          {...appealProps}\n          {...appealChallengeResultsProps}\n          {...appealChallengePhaseProps}\n          listingRemovedTimestamp={lastUpdatedDate!.toNumber()}\n        />\n      );\n    }\n  }\n\n  private renderApplicationPhase(): JSX.Element | null {\n    const endTime = this.props.listing!.data.appExpiry.toNumber();\n    const phaseLength = this.props.parameters.get(Parameters.applyStageLen);\n    if (!endTime || !phaseLength) {\n      return null;\n    }\n    const submitChallengeURI = formatRoute(routes.SUBMIT_CHALLENGE, { listingAddress: this.props.listing.address });\n\n    return (\n      <>\n        <InApplicationCard\n          endTime={endTime}\n          phaseLength={phaseLength}\n          submitChallengeURI={submitChallengeURI}\n          constitutionURI={this.props.constitutionURI}\n          faqURL={links.FAQ_CHALLENGE_SECTION}\n          learnMoreURL={links.FAQ_REGISTRY}\n          onMobileTransactionClick={this.showNoMobileTransactionsModal}\n        />\n      </>\n    );\n  }\n\n  private showNoMobileTransactionsModal = (): void => {\n    this.setState({ isNoMobileTransactionVisible: true });\n  };\n\n  private hideNoMobileTransactionsModal = (): void => {\n    this.setState({ isNoMobileTransactionVisible: false });\n  };\n\n  private renderNoMobileTransactions(): JSX.Element {\n    if (this.state.isNoMobileTransactionVisible) {\n      return (\n        <Modal textAlign=\"center\">\n          <ProgressModalContentMobileUnsupported hideModal={this.hideNoMobileTransactionsModal} />\n        </Modal>\n      );\n    }\n\n    return <></>;\n  }\n}\n\nexport default ListingPhaseActions;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/ListingRedux.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { Helmet } from \"react-helmet\";\nimport { withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\n\nimport { EthAddress, ListingWrapper, NewsroomWrapper, CharterData, StorageHeader } from \"@joincivil/typescript-types\";\nimport {\n  Tabs,\n  Tab,\n  StyledTab,\n  StyledContentRow,\n  StyledLeftContentWell,\n  StyledRightContentWell,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { listingTabs, TListingTab } from \"../../constants\";\nimport { State } from \"../../redux/reducers\";\nimport { getListingPhaseState, getIsUserNewsroomOwner } from \"../../selectors\";\nimport { getContent, getBareContent } from \"../../redux/actionCreators/newsrooms\";\nimport EmailSignup from \"./EmailSignup\";\nimport ListingOwnerActions from \"./ListingOwnerActions\";\nimport ListingDiscourse from \"./ListingDiscourse\";\nimport ListingHistory from \"./ListingHistory\";\nimport ListingHeader from \"./ListingHeader\";\nimport ListingCharter from \"./ListingCharter\";\nimport ListingPhaseActions from \"./ListingPhaseActions\";\nimport ListingChallengeStatement from \"./ListingChallengeStatement\";\nimport { ListingTabContent } from \"./styledComponents\";\nimport ErrorNotFoundMsg from \"../utility/ErrorNotFound\";\nimport { connectParameters } from \"../utility/HigherOrderComponents\";\nimport StoryFeed from \"../StoryFeed/StoryFeed\";\n\nconst TABS: TListingTab[] = [\n  listingTabs.STORYFEED,\n  listingTabs.CHARTER,\n  listingTabs.DISCUSSIONS,\n  listingTabs.HISTORY,\n  listingTabs.OWNER,\n];\n\nexport interface ListingPageComponentProps {\n  listingAddress: EthAddress;\n  listingId: string;\n  newsroom?: NewsroomWrapper;\n  listing?: ListingWrapper;\n  charterRevisions?: Map<number, StorageHeader>;\n  match?: any;\n  location: any;\n  history: any;\n  payment?: boolean;\n  newsroomDetails?: boolean;\n  channelID?: string;\n}\n\nexport interface ListingReduxProps {\n  listingAddress: EthAddress;\n  newsroom?: NewsroomWrapper;\n  listing?: ListingWrapper;\n  userAccount?: EthAddress;\n  isUserNewsroomOwner?: boolean;\n  listingPhaseState?: any;\n  charter?: CharterData;\n  charterRevisionId?: number;\n  charterRevision?: StorageHeader;\n  govtParameters: any;\n  network: string;\n  loadingFinished: boolean;\n}\n\ninterface ListingPageComponentState {\n  activeTabIndex: number;\n}\n\nclass ListingPageComponent extends React.Component<\n  ListingReduxProps & DispatchProp<any> & ListingPageComponentProps,\n  ListingPageComponentState\n> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  constructor(props: ListingReduxProps & DispatchProp<any> & ListingPageComponentProps) {\n    super(props);\n    this.state = { activeTabIndex: 0 };\n  }\n\n  public async componentDidUpdate(): Promise<void> {\n    if (this.props.newsroom) {\n      this.props.dispatch!(await getContent(this.context, this.props.newsroom.data.charterHeader!));\n    }\n    if (this.props.listing && this.props.listing.data.challenge) {\n      this.props.dispatch!(\n        await getBareContent(this.context, this.props.listing.data.challenge.challengeStatementURI!),\n      );\n    }\n    if (this.props.charterRevision && !this.props.charter) {\n      this.props.dispatch!(await getContent(this.context, this.props.charterRevision));\n    }\n  }\n\n  public async componentDidMount(): Promise<void> {\n    if (this.props.newsroom) {\n      this.props.dispatch!(await getContent(this.context, this.props.newsroom.data.charterHeader!));\n    }\n  }\n\n  public componentWillMount(): void {\n    const { activeTab } = this.props.match.params;\n    const listing = this.props.listing;\n    let activeTabIndex = 0;\n\n    if (activeTab) {\n      activeTabIndex = TABS.indexOf(activeTab) || 0;\n    } else if (listing && listing.data.isWhitelisted) {\n      activeTabIndex = 0;\n    } else if (listing && listing.data.challenge) {\n      activeTabIndex = 2;\n    } else {\n      activeTabIndex = 1;\n    }\n\n    this.setState({ activeTabIndex });\n  }\n\n  public render(): JSX.Element {\n    const { listing, newsroom, listingPhaseState, charterRevisionId, charterRevisions } = this.props;\n    const listingExistsAsNewsroom = listing && newsroom;\n\n    if (!listingExistsAsNewsroom) {\n      return <>{this.renderLoadingOrListingNotFound()}</>;\n    }\n\n    return (\n      <>\n        <Helmet title={`${newsroom!.data.name} - The Civil Registry`} />\n\n        <ListingHeader\n          userAccount={this.props.userAccount}\n          network={this.props.network}\n          listing={listing!}\n          newsroom={newsroom!}\n          listingPhaseState={this.props.listingPhaseState}\n          charter={this.props.charter}\n        />\n\n        <StyledContentRow reverseDirection={true}>\n          <StyledRightContentWell offsetTop={-100}>\n            <ListingPhaseActions\n              listingAddress={this.props.listing!.address}\n              listing={this.props.listing!}\n              newsroom={this.props.newsroom!}\n              listingPhaseState={this.props.listingPhaseState}\n              listingLastGovState={this.props.listing!.data.lastGovState}\n              parameters={this.props.parameters}\n              govtParameters={this.props.govtParameters}\n              constitutionURI={links.CONSTITUTION}\n            />\n            <EmailSignup />\n          </StyledRightContentWell>\n\n          <StyledLeftContentWell>\n            <Tabs TabComponent={StyledTab} activeIndex={this.state.activeTabIndex} onActiveTabChange={this.onTabChange}>\n              <Tab title=\"Storyfeed\">\n                <ListingTabContent>\n                  <StoryFeed\n                    queryFilterAlg=\"vw_post_fair_with_interleaved_boosts_2\"\n                    queryFilterChannelID={this.props.channelID}\n                    match={this.props.match}\n                    payment={this.props.payment}\n                    newsroom={this.props.newsroomDetails}\n                    onCloseStoryBoost={this.closeStoryBoost}\n                    onOpenStoryDetails={this.openStoryDetails}\n                    onOpenPayments={this.openPayments}\n                    isListingPageFeed={true}\n                  />\n                </ListingTabContent>\n              </Tab>\n              <Tab title=\"Charter\">\n                <ListingTabContent>\n                  <ListingCharter\n                    listing={listing!}\n                    newsroom={newsroom!}\n                    charterRevisionId={charterRevisionId}\n                    charterRevisions={charterRevisions}\n                    isListingUnderChallenge={listingPhaseState.isUnderChallenge}\n                  />\n                </ListingTabContent>\n              </Tab>\n\n              <Tab title=\"Discussions\">\n                <ListingTabContent>\n                  <ListingChallengeStatement\n                    listingAddress={this.props.listingAddress}\n                    listing={this.props.listing}\n                    showCharterTab={this.showCharterTab}\n                  />\n\n                  <p>\n                    Use this space to discuss or ask questions of the Civil community. When using this forum, you agree\n                    to adhere to our <a href={links.CODE_OF_CONDUCT}>code of conduct</a>. If you have questions, please{\" \"}\n                    <a href={links.CONTACT}>contact us</a>.\n                  </p>\n                  <ListingDiscourse listingAddress={this.props.listingAddress} network={this.props.network} />\n                </ListingTabContent>\n              </Tab>\n\n              <Tab title=\"History\">\n                <ListingTabContent>\n                  <ListingHistory listingAddress={this.props.listingAddress} />\n                </ListingTabContent>\n              </Tab>\n\n              {(this.props.isUserNewsroomOwner && this.props.listing && (\n                <Tab title=\"Owner Actions\">\n                  <ListingTabContent>\n                    <ListingOwnerActions listing={this.props.listing} newsroom={this.props.newsroom!} />\n                  </ListingTabContent>\n                </Tab>\n              )) || <></>}\n            </Tabs>\n          </StyledLeftContentWell>\n        </StyledContentRow>\n      </>\n    );\n  }\n\n  private renderLoadingOrListingNotFound(): JSX.Element {\n    return <ErrorNotFoundMsg>We could not find this Newsroom Listing</ErrorNotFoundMsg>;\n  }\n\n  private onTabChange = (newActiveTabIndex: number): void => {\n    const tabName = TABS[newActiveTabIndex];\n    this.setState({ activeTabIndex: newActiveTabIndex });\n    this.props.history.push(`/listing/${this.props.listingId}/${tabName}`);\n  };\n\n  private showCharterTab = (): void => {\n    this.onTabChange(0);\n  };\n\n  private closeStoryBoost = () => {\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/listing/\" + this.props.listingId + \"/storyfeed\",\n    });\n  };\n\n  private openStoryDetails = (postId: string) => {\n    this.context.fireAnalyticsEvent(\"listing story boost\", \"story details clicked\", postId);\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/listing/\" + this.props.listingId + \"/storyfeed/\" + postId,\n    });\n  };\n\n  private openPayments = (postId: string) => {\n    this.context.fireAnalyticsEvent(\"listing story boost\", \"boost button clicked\", postId);\n    let urlBase = this.props.location.pathname;\n    urlBase = urlBase.substring(0, urlBase.indexOf(\"/\"));\n    this.props.history.push({\n      pathname: urlBase + \"/listing/\" + this.props.listingId + \"/storyfeed/\" + postId + \"/payment\",\n    });\n  };\n}\n\nconst mapStateToProps = (state: State, ownProps: ListingPageComponentProps): ListingReduxProps => {\n  const { user, govtParameters, content, loadingFinished } = state.networkDependent;\n  const { network } = state;\n  const newsroom = ownProps.newsroom;\n\n  const listingPhaseState = getListingPhaseState(ownProps.listing);\n\n  let charter;\n  let charterUri;\n  let charterRevisionId =\n    newsroom && newsroom.data && newsroom.data.charterHeader && newsroom.data.charterHeader.revisionId;\n  let charterRevision;\n  if (listingPhaseState && listingPhaseState.isUnderChallenge && ownProps.listing && ownProps.listing.data.challenge) {\n    const challengeStatement = content.get(ownProps.listing.data.challenge.challengeStatementURI!);\n    if (challengeStatement && (challengeStatement as any).charterRevisionId !== undefined) {\n      charterRevisionId = (challengeStatement as any).charterRevisionId;\n    }\n    if (ownProps.charterRevisions) {\n      charterRevision = ownProps.charterRevisions.get(charterRevisionId!);\n      if (charterRevision) {\n        charter = content.get(charterRevision.uri) as CharterData;\n      }\n    }\n  } else {\n    if (newsroom && newsroom.data.charterHeader) {\n      charterUri = newsroom.data.charterHeader.uri;\n      charter = content.get(charterUri) as CharterData;\n      charterRevisionId = newsroom.data.charterHeader.revisionId;\n    }\n  }\n\n  return {\n    ...ownProps,\n    network,\n    listingPhaseState,\n    isUserNewsroomOwner: getIsUserNewsroomOwner(newsroom, user),\n    userAccount: user.account,\n    govtParameters,\n    charter,\n    charterRevisionId,\n    charterRevision,\n    loadingFinished,\n  };\n};\n\nexport default compose(\n  withRouter,\n  connect(mapStateToProps),\n  connectParameters,\n)(ListingPageComponent);\n"
  },
  {
    "path": "packages/dapp/src/components/listing/RequestAppeal.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { compose } from \"redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { EthAddress, BigNumber, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  InsufficientCVLForAppeal,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  RequestAppealStatement as RequestAppealStatementComponent,\n  RequestAppealStatementProps,\n  RequestAppealSuccessIcon,\n  SnackBar,\n} from \"@joincivil/components\";\nimport { getFormattedParameterValue, GovernmentParameters, urlConstants as links } from \"@joincivil/utils\";\n\nimport { routes } from \"../../constants\";\nimport { CivilHelperContext, CivilHelper } from \"../../apis/CivilHelper\";\nimport { State } from \"../../redux/reducers\";\nimport {\n  InjectedTransactionStatusModalProps,\n  hasTransactionStatusModals,\n  TransactionStatusModalContentMap,\n} from \"../utility/TransactionStatusModalsHOC\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\n\nexport interface RequestAppealPageProps {\n  match: any;\n  history?: any;\n}\n\ninterface RequestAppealProps {\n  listingAddress: EthAddress;\n  listingURI: string;\n  governanceGuideURI: string;\n  history?: any;\n}\n\ninterface RequestAppealReduxProps {\n  newsroomName: string;\n  appealFee: BigNumber;\n  judgeAppealLen: BigNumber;\n  balance: BigNumber;\n}\n\ninterface RequestAppealState {\n  appealStatementSummaryValue?: string;\n  appealStatementDetailsValue?: any;\n  appealStatementUri?: string;\n}\n\nenum TransactionTypes {\n  APPROVE_FOR_APPEAL_REQUEST = \"APPROVE_FOR_APPEAL_REQUEST\",\n  REQUEST_APPEAL = \"REQUEST_APPEAL\",\n  PUBLISH_CONTENT = \"PUBLISH_CONTENT\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_FOR_APPEAL_REQUEST]: \"Approve for Appeal Request\",\n  [TransactionTypes.PUBLISH_CONTENT]: \"Publish Statement\",\n  [TransactionTypes.REQUEST_APPEAL]: \"Appeal Request\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_FOR_APPEAL_REQUEST]: \"1 of 3\",\n  [TransactionTypes.PUBLISH_CONTENT]: \"2 of 3\",\n  [TransactionTypes.REQUEST_APPEAL]: \"3 of 3\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_FOR_APPEAL_REQUEST]: [\n    \"Your appeal request was not submitted\",\n    \"Before requesting an appeal, you need to confirm the approval of your appeal deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.REQUEST_APPEAL]: [\n    \"Your appeal request was not submitted\",\n    \"To request an appeal, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_FOR_APPEAL_REQUEST]: [\n    \"The was an problem with requesting your appeal\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>You have sufficient CVL in your account for the appeal fee</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.REQUEST_APPEAL]: [\n    \"The was an problem with requesting your appeal\",\n    <>\n      <ModalContent>Please check the retry your transaction</ModalContent>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass RequestAppealComponent extends React.Component<\n  RequestAppealProps & RequestAppealReduxProps & InjectedTransactionStatusModalProps,\n  RequestAppealState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public async componentWillMount(): Promise<void> {\n    const transactionSuccessContent = this.getTransactionSuccessContent();\n    this.props.setTransactions(this.getTransactions());\n    this.props.setTransactionStatusModalConfig({\n      transactionSuccessContent,\n    });\n    this.props.setHandleTransactionSuccessButtonClick(this.redirectToListingPage);\n\n    const { civil } = this.context;\n    if (civil && civil.currentProvider) {\n      await civil.currentProviderEnable();\n    }\n  }\n\n  public render(): JSX.Element {\n    const transactions = this.getTransactions();\n\n    const { listingURI, newsroomName, governanceGuideURI, appealFee, judgeAppealLen, balance: balanceBN } = this.props;\n\n    const displayAppealFee = getFormattedParameterValue(GovernmentParameters.appealFee, appealFee);\n    const displayJudgeAppealLen = getFormattedParameterValue(GovernmentParameters.judgeAppealLen, judgeAppealLen);\n    const balance = balanceBN === undefined ? new BigNumber(0) : balanceBN;\n    const isInsufficientBalance = balance.lt(appealFee);\n\n    const props: RequestAppealStatementProps = {\n      listingURI,\n      newsroomName,\n      constitutionURI: links.CONSTITUTION,\n      governanceGuideURI,\n      appealFee: displayAppealFee,\n      judgeAppealLen: displayJudgeAppealLen,\n      updateStatementValue: this.updateStatement,\n      transactions,\n      postExecuteTransactions: this.onSubmitAppealSuccess,\n    };\n\n    return (\n      <>\n        <ScrollToTopOnMount />\n        {isInsufficientBalance && appealFee && (\n          <InsufficientBalanceSnackBar minDeposit={displayAppealFee} buyCVLURL=\"/tokens\" />\n        )}\n        <RequestAppealStatementComponent {...props} />\n      </>\n    );\n  }\n\n  private updateStatement = (key: string, value: any): void => {\n    const stateKey = `appealStatement${key.charAt(0).toUpperCase()}${key.substring(1)}Value`;\n    this.setState(() => ({ [stateKey]: value }));\n  };\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            isIPFSUploadModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_FOR_APPEAL_REQUEST,\n          });\n          return this.context.approveForAppeal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isIPFSUploadModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.PUBLISH_CONTENT,\n          });\n          return this.postAppealStatement();\n        },\n        postTransaction: async (receipt: any) => {\n          this.setState({ appealStatementUri: receipt.uri });\n        },\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            isIPFSUploadModalOpen: false,\n            transactionType: TransactionTypes.REQUEST_APPEAL,\n          });\n          return this.appeal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private onSubmitAppealSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n  };\n\n  private getTransactionSuccessContent = (): TransactionStatusModalContentMap => {\n    return {\n      [TransactionTypes.APPROVE_FOR_APPEAL_REQUEST]: [undefined, undefined],\n      [TransactionTypes.REQUEST_APPEAL]: [\n        <>\n          <RequestAppealSuccessIcon />\n          <div>Your Request for Appeal was Submitted</div>\n        </>,\n        <>\n          <ModalContent>\n            The Civil Council has{\" \"}\n            {getFormattedParameterValue(GovernmentParameters.judgeAppealLen, this.props.judgeAppealLen)} to review the\n            vote. They will publish at least one public document outlining the Constitutional rationale for their\n            decision. Please check back for their decision.\n          </ModalContent>\n        </>,\n      ],\n    };\n  };\n\n  private redirectToListingPage = (): void => {\n    const listingURI = formatRoute(routes.LISTING, { listingAddress: this.props.listingAddress });\n    this.props.closeAllModals();\n    this.props.history.push(listingURI);\n  };\n\n  // Transactions\n\n  private postAppealStatement = async (): Promise<any> => {\n    const { appealStatementSummaryValue, appealStatementDetailsValue } = this.state;\n    const jsonToSave = {\n      summary: appealStatementSummaryValue,\n      details: appealStatementDetailsValue.toString(\"html\"),\n    };\n    return this.context.publishContent(JSON.stringify(jsonToSave));\n  };\n  private appeal = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.requestAppealWithUri(this.props.listingAddress, this.state.appealStatementUri!);\n  };\n}\n\ninterface InsufficientBalanceSnackBarProps {\n  buyCVLURL: string;\n  minDeposit: string;\n}\n\nconst InsufficientBalanceSnackBar: React.FunctionComponent<InsufficientBalanceSnackBarProps> = props => {\n  return (\n    <SnackBar>\n      <InsufficientCVLForAppeal minDeposit={props.minDeposit} buyCVLURL={props.buyCVLURL} />\n    </SnackBar>\n  );\n};\n\nconst mapStateToProps = (state: State, ownProps: RequestAppealProps): RequestAppealProps & RequestAppealReduxProps => {\n  const { newsrooms } = state;\n  const newsroom = newsrooms.get(ownProps.listingAddress);\n\n  let newsroomName = \"\";\n  if (newsroom) {\n    newsroomName = newsroom.wrapper.data.name;\n  }\n\n  const { govtParameters, user } = state.networkDependent;\n\n  let appealFee = new BigNumber(0);\n  let judgeAppealLen = new BigNumber(0);\n  if (govtParameters && Object.keys(govtParameters).length) {\n    appealFee = govtParameters[GovernmentParameters.appealFee];\n    judgeAppealLen = govtParameters[GovernmentParameters.judgeAppealLen];\n  }\n  let balance = new BigNumber(0);\n  if (user) {\n    balance = user.account.balance;\n  }\n\n  return {\n    newsroomName,\n    appealFee,\n    judgeAppealLen,\n    balance,\n    ...ownProps,\n  };\n};\n\nconst RequestAppeal = compose(\n  connect(mapStateToProps),\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(RequestAppealComponent) as React.ComponentClass<RequestAppealProps>;\n\nconst RequestAppealPage = (props: RequestAppealPageProps) => {\n  const listingAddress = props.match.params.listingAddress;\n  const listingURI = formatRoute(routes.LISTING, { listingAddress });\n  const governanceGuideURI = links.FAQ_REGISTRY;\n  return (\n    <RequestAppeal\n      listingAddress={listingAddress}\n      listingURI={listingURI}\n      governanceGuideURI={governanceGuideURI}\n      history={props.history}\n    />\n  );\n};\n\nexport default RequestAppealPage;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/RevealVoteDetail.tsx",
    "content": "import * as React from \"react\";\nimport { TransactionButton } from \"@joincivil/components\";\nimport { InputElement, StyledFormContainer, FormGroup } from \"../utility/FormElements\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport { revealVote } from \"../../apis/civilTCR\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nexport interface RevealVoteDetailProps {\n  challengeID: BigNumber;\n}\n\nexport interface RevealVoteDetailState {\n  voteOption?: string;\n  salt?: string;\n}\n\nclass RevealVoteDetail extends React.Component<RevealVoteDetailProps, RevealVoteDetailState> {\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <StyledFormContainer>\n        <h3>Reveal Vote</h3>\n\n        {/* @TODO(jon): We can remove this at some point in the near future\n          since the value still get stored in React and the user will never see it.\n          This is just here for debug purposes. */}\n        <FormGroup>\n          <label>\n            Poll ID\n            <InputElement type=\"text\" name=\"\" value={this.props.challengeID.toString()} readOnly={true} />\n          </label>\n        </FormGroup>\n\n        <FormGroup>\n          <label>\n            Support This Challenge (Vote Option)\n            <InputElement type=\"radio\" value=\"0\" name=\"voteOption\" onChange={this.updateRevealVoteParam} /> Yes\n            <InputElement type=\"radio\" value=\"1\" name=\"voteOption\" onChange={this.updateRevealVoteParam} /> No\n          </label>\n        </FormGroup>\n\n        <FormGroup>\n          <label>Salt</label>\n          <InputElement type=\"text\" name=\"salt\" onChange={this.updateRevealVoteParam} />\n        </FormGroup>\n\n        <FormGroup>\n          <TransactionButton transactions={[{ transaction: this.revealVoteOnChallenge }]}>\n            Reveal Vote\n          </TransactionButton>\n        </FormGroup>\n      </StyledFormContainer>\n    );\n  }\n\n  private updateRevealVoteParam = (event: any): void => {\n    const paramName = event.target.getAttribute(\"name\");\n    const val = event.target.value;\n    const newState = {};\n    newState[paramName] = val;\n    this.setState(newState);\n  };\n\n  private revealVoteOnChallenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    const voteOption: BigNumber = new BigNumber(this.state.voteOption as string);\n    const salt: BigNumber = new BigNumber(this.state.salt as string);\n    return revealVote(this.props.challengeID, voteOption, salt);\n  };\n}\n\nexport default RevealVoteDetail;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitAppealChallenge.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { EthAddress, BigNumber, TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  InsufficientCVLForAppealChallenge,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  SnackBar,\n  SubmitAppealChallengeStatement as SubmitAppealChallengeStatementComponent,\n  SubmitAppealChallengeStatementProps,\n  SubmitChallengeSuccessIcon,\n} from \"@joincivil/components\";\nimport { getFormattedParameterValue, Parameters, GovernmentParameters, urlConstants as links } from \"@joincivil/utils\";\n\nimport { routes } from \"../../constants\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { State } from \"../../redux/reducers\";\nimport {\n  InjectedTransactionStatusModalProps,\n  hasTransactionStatusModals,\n  TransactionStatusModalContentMap,\n} from \"../utility/TransactionStatusModalsHOC\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\nimport { connectParameters, ParametersProps } from \"../utility/HigherOrderComponents\";\n\nexport interface SubmitAppealChallengePageProps {\n  match: any;\n  history?: any;\n}\n\ninterface SubmitAppealChallengeProps {\n  history?: any;\n  listingAddress: EthAddress;\n  listingURI: string;\n  governanceGuideURI: string;\n}\n\ninterface SubmitAppealChallengeReduxProps {\n  newsroomName: string;\n  appealFee: BigNumber;\n  appealVotePercentage: BigNumber;\n  balance: BigNumber;\n}\n\ninterface SubmitAppealChallengeState {\n  challengeStatementSummaryValue?: string;\n  challengeStatementDetailsValue?: any;\n  appealChallengeStatementUri?: string;\n}\n\nenum TransactionTypes {\n  APPROVE_CHALLENGE_APPEAL = \"APPROVE_CHALLENGE_APPEAL\",\n  CHALLENGE_APPEAL = \"CHALLENGE_APPEAL\",\n  PUBLISH_CONTENT = \"PUBLISH_CONTENT\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_CHALLENGE_APPEAL]: \"Approve Challenge Appeal\",\n  [TransactionTypes.PUBLISH_CONTENT]: \"Publish Statement\",\n  [TransactionTypes.CHALLENGE_APPEAL]: \"Challenge Appeal\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_CHALLENGE_APPEAL]: \"1 of 3\",\n  [TransactionTypes.PUBLISH_CONTENT]: \"2 of 3\",\n  [TransactionTypes.CHALLENGE_APPEAL]: \"3 of 3\",\n};\n\nconst denialSuffix = \", you need to confirm the transaction in your MetaMask wallet.\";\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_CHALLENGE_APPEAL]: [\n    \"Your appeal challenge was not submitted\",\n    \"Before submitting an appeal challenge, you need to confirm that you approve the appeal fee deposit\",\n  ],\n  [TransactionTypes.CHALLENGE_APPEAL]: [\n    \"Your appeal challenge was not submitted\",\n    `To submit an appeal challenge${denialSuffix}`,\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_CHALLENGE_APPEAL]: [\n    \"There was a problem approving your appeal challenge\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>You have sufficient CVL in your account for the challenge fee</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.CHALLENGE_APPEAL]: [\n    \"There was a problem submitting your appeal challenge\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nclass SubmitAppealChallengeComponent extends React.Component<\n  SubmitAppealChallengeProps & SubmitAppealChallengeReduxProps & InjectedTransactionStatusModalProps & ParametersProps,\n  SubmitAppealChallengeState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public async componentWillMount(): Promise<void> {\n    const transactionSuccessContent = this.getTransactionSuccessContent();\n    this.props.setTransactions(this.getTransactions());\n    this.props.setTransactionStatusModalConfig({\n      transactionSuccessContent,\n    });\n    this.props.setHandleTransactionSuccessButtonClick(this.redirectToListingPage);\n\n    const { civil } = this.context;\n    if (civil && civil.currentProvider) {\n      await civil.currentProviderEnable();\n    }\n  }\n\n  public render(): JSX.Element {\n    const {\n      listingURI,\n      newsroomName,\n      governanceGuideURI,\n      appealFee,\n      appealVotePercentage,\n      balance: balanceBN,\n    } = this.props;\n\n    const { civil } = this.context;\n    const displayChallengeAppealCommitLen = getFormattedParameterValue(\n      Parameters.challengeAppealCommitLen,\n      civil.toBigNumber(this.props.parameters.get(Parameters.challengeAppealCommitLen)),\n    );\n    const displayChallengeAppealRevealLen = getFormattedParameterValue(\n      Parameters.challengeAppealRevealLen,\n      civil.toBigNumber(this.props.parameters.get(Parameters.challengeAppealRevealLen)),\n    );\n\n    const displayAppealFee = getFormattedParameterValue(GovernmentParameters.appealFee, civil.toBigNumber(appealFee));\n    const displayAppealVotePercentage = getFormattedParameterValue(\n      GovernmentParameters.appealVotePercentage,\n      civil.toBigNumber(appealVotePercentage),\n    );\n\n    const balance = civil.toBigNumber(balanceBN);\n    const isInsufficientBalance = balance.lt(civil.toBigNumber(appealFee));\n\n    const props: SubmitAppealChallengeStatementProps = {\n      listingURI,\n      newsroomName,\n      governanceGuideURI,\n      appealFee: displayAppealFee,\n      challengeAppealCommitLen: displayChallengeAppealCommitLen,\n      challengeAppealRevealLen: displayChallengeAppealRevealLen,\n      appealVotePercentage: displayAppealVotePercentage,\n      updateStatementValue: this.updateStatement,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onSubmitAppealChallengeSuccess,\n    };\n\n    return (\n      <>\n        <ScrollToTopOnMount />\n        {isInsufficientBalance && appealFee && (\n          <InsufficientBalanceSnackBar appealFee={displayAppealFee!} buyCVLURL=\"/tokens\" />\n        )}\n        <SubmitAppealChallengeStatementComponent {...props} />\n      </>\n    );\n  }\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_CHALLENGE_APPEAL,\n          });\n          return this.context.approveForChallengeGrantedAppeal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isIPFSUploadModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.PUBLISH_CONTENT,\n          });\n          return this.postAppealChallengeStatement();\n        },\n        postTransaction: async (receipt: any) => {\n          this.setState({ appealChallengeStatementUri: receipt.uri });\n        },\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.CHALLENGE_APPEAL,\n          });\n          return this.challengeGrantedAppeal();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        postTransaction: () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private getTransactionSuccessContent = (): TransactionStatusModalContentMap => {\n    return {\n      [TransactionTypes.APPROVE_CHALLENGE_APPEAL]: [undefined, undefined],\n      [TransactionTypes.CHALLENGE_APPEAL]: [\n        <>\n          <SubmitChallengeSuccessIcon />\n          <div>This granted appeal has now been challenged</div>\n        </>,\n        <>\n          <ModalContent>\n            This challenge is now accepting votes. The CVL token-holding community will have the next{\" \"}\n            {getFormattedParameterValue(\n              Parameters.challengeAppealCommitLen,\n              this.props.parameters.get(Parameters.challengeAppealCommitLen),\n            )}{\" \"}\n            to commit their secret votes, and{\" \"}\n            {getFormattedParameterValue(\n              Parameters.challengeAppealRevealLen,\n              this.props.parameters.get(Parameters.challengeAppealRevealLen),\n            )}{\" \"}\n            to confirm their vote. To prevent decision bias, all votes will be hidden using a secret phrase, until the\n            end of the voting. Only a supermajority (\n            {getFormattedParameterValue(GovernmentParameters.appealVotePercentage, this.props.appealVotePercentage)})\n            from the community can overturn the Civil Council's decision.\n          </ModalContent>\n          <ModalContent>\n            You may vote on your own challenge using your CVL voting tokens, which is separate from your challenge\n            deposit.\n          </ModalContent>\n        </>,\n      ],\n    };\n  };\n\n  private updateStatement = (key: string, value: any): void => {\n    const stateKey = `challengeStatement${key.charAt(0).toUpperCase()}${key.substring(1)}Value`;\n    this.setState(() => ({ [stateKey]: value }));\n  };\n\n  private onSubmitAppealChallengeSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n  };\n\n  private redirectToListingPage = (): void => {\n    const listingURI = formatRoute(routes.LISTING, { listingAddress: this.props.listingAddress });\n    this.props.closeAllModals();\n    this.props.history.push(listingURI);\n  };\n\n  // Transactions\n\n  private postAppealChallengeStatement = async (): Promise<any> => {\n    const { challengeStatementSummaryValue, challengeStatementDetailsValue } = this.state;\n    const jsonToSave = {\n      summary: challengeStatementSummaryValue,\n      details: challengeStatementDetailsValue.toString(\"html\"),\n    };\n    return this.context.publishContent(JSON.stringify(jsonToSave));\n  };\n\n  private challengeGrantedAppeal = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.challengeGrantedAppealWithUri(\n      this.props.listingAddress,\n      this.state.appealChallengeStatementUri!,\n    );\n  };\n}\n\nconst mapStateToProps = (\n  state: State,\n  ownProps: SubmitAppealChallengeProps,\n): SubmitAppealChallengeProps & SubmitAppealChallengeReduxProps => {\n  const { newsrooms } = state;\n  const newsroom = newsrooms.get(ownProps.listingAddress);\n\n  let newsroomName = \"\";\n  if (newsroom) {\n    newsroomName = newsroom.wrapper.data.name;\n  }\n\n  const { govtParameters, user } = state.networkDependent;\n\n  let appealFee = new BigNumber(0);\n  let appealVotePercentage = new BigNumber(0);\n\n  if (govtParameters && Object.keys(govtParameters).length) {\n    appealFee = govtParameters[GovernmentParameters.appealFee];\n    appealVotePercentage = govtParameters[GovernmentParameters.appealVotePercentage];\n  }\n  let balance = new BigNumber(0);\n  if (user && user.account && user.account.balance) {\n    balance = user.account.balance;\n  }\n\n  return {\n    newsroomName,\n    appealFee,\n    appealVotePercentage,\n    balance,\n    ...ownProps,\n  };\n};\n\ninterface InsufficientBalanceSnackBarProps {\n  buyCVLURL: string;\n  appealFee: string;\n}\n\nconst InsufficientBalanceSnackBar: React.FunctionComponent<InsufficientBalanceSnackBarProps> = props => {\n  return (\n    <SnackBar>\n      <InsufficientCVLForAppealChallenge appealFee={props.appealFee} buyCVLURL={props.buyCVLURL} />\n    </SnackBar>\n  );\n};\n\nconst SubmitAppealChallenge = compose(\n  connect(mapStateToProps),\n  hasTransactionStatusModals(transactionStatusModalConfig),\n  connectParameters,\n)(SubmitAppealChallengeComponent) as React.ComponentClass<SubmitAppealChallengeProps>;\n\nconst SubmitAppealChallengePage = (props: SubmitAppealChallengePageProps) => {\n  const listingAddress = props.match.params.listingAddress;\n  const listingURI = formatRoute(routes.LISTING, { listingAddress });\n  const governanceGuideURI = links.FAQ_REGISTRY;\n  return (\n    <SubmitAppealChallenge\n      listingAddress={listingAddress}\n      listingURI={listingURI}\n      governanceGuideURI={governanceGuideURI}\n      history={props.history}\n    />\n  );\n};\n\nexport default SubmitAppealChallengePage;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitChallenge/InsufficientBalanceSnackBar.tsx",
    "content": "import * as React from \"react\";\n\nimport { SnackBar, InsufficientCVLForChallenge } from \"@joincivil/components\";\n\nexport interface InsufficientBalanceSnackBarProps {\n  buyCVLURL: string;\n  minDeposit: string;\n}\n\nconst InsufficientBalanceSnackBar: React.FunctionComponent<InsufficientBalanceSnackBarProps> = props => {\n  return (\n    <SnackBar>\n      <InsufficientCVLForChallenge minDeposit={props.minDeposit} buyCVLURL={props.buyCVLURL} />\n    </SnackBar>\n  );\n};\n\nexport default InsufficientBalanceSnackBar;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitChallenge/SubmitChallenge.tsx",
    "content": "import * as React from \"react\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { routes } from \"../../../constants\";\nimport SubmitChallengeGraphQLApolloContainer from \"./SubmitChallengeGraphQLApolloContainer\";\n\nexport interface SubmitChallengePageProps {\n  match: any;\n  history?: any;\n}\n\nconst SubmitChallengePage = (props: SubmitChallengePageProps) => {\n  const { match, history } = props;\n  const listingAddress = match.params.listingAddress;\n  const listingURI = formatRoute(routes.LISTING, { listingAddress });\n  const governanceGuideURI = links.FAQ_REGISTRY;\n\n  return (\n    <SubmitChallengeGraphQLApolloContainer\n      listingAddress={listingAddress}\n      listingURI={listingURI}\n      governanceGuideURI={governanceGuideURI}\n      history={history}\n    />\n  );\n};\n\nexport default SubmitChallengePage;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitChallenge/SubmitChallengeGraphQLApolloContainer.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport { LoadingMessage } from \"@joincivil/components\";\nimport { LISTING_QUERY, transformGraphQLDataIntoNewsroom } from \"@joincivil/utils\";\nimport ErrorLoadingDataMsg from \"../../utility/ErrorLoadingData\";\n\nimport { SubmitChallengeProps } from \"./SubmitChallengeTypes\";\nimport SubmitChallengeViewComponent from \"./SubmitChallengeViewComponent\";\n\nconst SubmitChallengeGraphQLApolloContainer: React.FunctionComponent<SubmitChallengeProps> = props => {\n  const { listingAddress } = props;\n  return (\n    <Query query={LISTING_QUERY} variables={{ addr: listingAddress }}>\n      {({ loading, error, data }: any): JSX.Element => {\n        if (error) {\n          return <ErrorLoadingDataMsg />;\n        }\n        if (loading || !data) {\n          return <LoadingMessage />;\n        }\n\n        const newsroom = transformGraphQLDataIntoNewsroom(data.tcrListing, listingAddress);\n\n        const viewProps = {\n          newsroomName: newsroom.data.name,\n          charterRevisionId: newsroom.data.charterHeader!.revisionId,\n        };\n\n        return <SubmitChallengeViewComponent {...viewProps} {...props} />;\n      }}\n    </Query>\n  );\n};\n\nexport default SubmitChallengeGraphQLApolloContainer;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitChallenge/SubmitChallengeTypes.ts",
    "content": "import { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\n\nexport interface SubmitChallengeProps {\n  history?: any;\n  listingAddress: EthAddress;\n  listingURI: string;\n  governanceGuideURI: string;\n}\n\nexport interface SubmitChallengeReduxProps {\n  newsroomName: string;\n  charterRevisionId?: number;\n}\n\nexport interface SubmitChallengeReduxParametersProps {\n  balance: BigNumber;\n}\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitChallenge/SubmitChallengeViewComponent.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport styled from \"styled-components/macro\";\nimport { TxHash } from \"@joincivil/typescript-types\";\nimport { TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  colors,\n  Modal,\n  ModalHeading,\n  ModalContent,\n  ModalUnorderedList,\n  ModalListItem,\n  SubmitChallengeStatement as SubmitChallengeStatementComponent,\n  SubmitChallengeStatementProps,\n  SubmitChallengeSuccessIcon,\n  Button,\n  InvertedButton,\n  buttonSizes,\n} from \"@joincivil/components\";\nimport { getFormattedParameterValue, Parameters, urlConstants as links } from \"@joincivil/utils\";\n\nimport { State } from \"../../../redux/reducers\";\nimport { routes } from \"../../../constants\";\nimport ScrollToTopOnMount from \"../../utility/ScrollToTop\";\nimport { CivilHelper, CivilHelperContext } from \"../../../apis/CivilHelper\";\nimport {\n  InjectedTransactionStatusModalProps,\n  hasTransactionStatusModals,\n  TransactionStatusModalContentMap,\n} from \"../../utility/TransactionStatusModalsHOC\";\nimport {\n  SubmitChallengeProps,\n  SubmitChallengeReduxProps,\n  SubmitChallengeReduxParametersProps,\n} from \"./SubmitChallengeTypes\";\nimport InsufficientBalanceSnackBar from \"./InsufficientBalanceSnackBar\";\nimport { connectParameters, ParametersProps } from \"../../utility/HigherOrderComponents\";\n\nconst StyledConfirmModalContent = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 16px;\n  line-height: 26px;\n  margin: 0 0 10px;\n`;\n\nconst StyledConfirmModalButtons = styled.div`\n  display: flex;\n  justify-content: center;\n  margin: 20px 0 0;\n\n  ${InvertedButton}, ${Button} {\n    border-width: 1px;\n    font-size: 13px;\n    font-weight: bold;\n    letter-spacing: 0.2px;\n    line-height: 14px;\n    margin: 0 15px;\n    padding: 14px 0 15px;\n    text-align: center;\n    text-transform: none;\n    width: 203px;\n  }\n`;\n\nenum TransactionTypes {\n  APPROVE_FOR_CHALLENGE = \"APPROVE_FOR_CHALLENGE\",\n  CHALLENGE_LISTING = \"CHALLENGE_LISTING\",\n  PUBLISH_CONTENT = \"PUBLISH_CONTENT\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_FOR_CHALLENGE]: \"Approve for Challenge\",\n  [TransactionTypes.PUBLISH_CONTENT]: \"Publish Statement\",\n  [TransactionTypes.CHALLENGE_LISTING]: \"Challenge Listing\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_FOR_CHALLENGE]: \"1 of 3\",\n  [TransactionTypes.PUBLISH_CONTENT]: \"2 of 3\",\n  [TransactionTypes.CHALLENGE_LISTING]: \"3 of 3\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_FOR_CHALLENGE]: [\n    \"Your challenge was not submitted\",\n    \"Before submitting a challenge, you need to confirm the approval of your challenge deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.CHALLENGE_LISTING]: [\n    \"Your challenge was not submitted\",\n    \"To submit a challenge, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_FOR_CHALLENGE]: [\n    \"There was an problem with submitting your challenge\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>You have sufficient CVL in your account for the challenge fee</ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n  [TransactionTypes.CHALLENGE_LISTING]: [\n    \"The was an problem with submitting your challenge\",\n    <>\n      <ModalContent>Please check the following and retry your transaction</ModalContent>\n      <ModalUnorderedList>\n        <ModalListItem>\n          Your Challenge Statement has a Summary, Cites the Civil Constitution, and Details on your challenge\n        </ModalListItem>\n      </ModalUnorderedList>\n    </>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\ninterface SubmitChallengeState {\n  challengeStatementSummaryValue?: string;\n  challengeStatementCiteConstitutionValue?: any;\n  challengeStatementDetailsValue?: any;\n  challengeStatementUri?: string;\n  isConfirmModalVisible: boolean;\n}\n\nclass SubmitChallengeComponent extends React.Component<\n  SubmitChallengeProps &\n    SubmitChallengeReduxProps &\n    SubmitChallengeReduxParametersProps &\n    InjectedTransactionStatusModalProps &\n    DispatchProp<any> &\n    ParametersProps,\n  SubmitChallengeState\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public state = {\n    challengeStatementSummaryValue: undefined,\n    challengeStatementCiteConstitutionValue: undefined,\n    challengeStatementDetailsValue: undefined,\n    challengeStatementUri: undefined,\n    isConfirmModalVisible: true,\n  };\n\n  public async componentWillMount(): Promise<void> {\n    const transactionSuccessContent = this.getTransactionSuccessContent();\n    this.props.setTransactions(this.getTransactions());\n    this.props.setTransactionStatusModalConfig({\n      transactionSuccessContent,\n    });\n    this.props.setHandleTransactionSuccessButtonClick(this.redirectToListingPage);\n\n    const { civil } = this.context;\n    if (civil && civil.currentProvider) {\n      await civil.currentProviderEnable();\n    }\n  }\n\n  public render(): JSX.Element {\n    const { listingURI, newsroomName, governanceGuideURI, balance: balanceBN } = this.props;\n\n    const { civil } = this.context;\n\n    const displayMinDeposit = getFormattedParameterValue(\n      Parameters.minDeposit,\n      civil.toBigNumber(this.props.parameters.get(Parameters.minDeposit)),\n    );\n    const displayCommitStageLen = getFormattedParameterValue(\n      Parameters.commitStageLen,\n      civil.toBigNumber(this.props.parameters.get(Parameters.commitStageLen)),\n    );\n    const displayRevealStageLen = getFormattedParameterValue(\n      Parameters.revealStageLen,\n      civil.toBigNumber(this.props.parameters.get(Parameters.revealStageLen)),\n    );\n    let isInsufficientBalance;\n    if (!balanceBN) {\n      isInsufficientBalance = true;\n    } else {\n      isInsufficientBalance = balanceBN.lt(this.props.parameters.get(Parameters.minDeposit));\n    }\n\n    const props: SubmitChallengeStatementProps = {\n      listingURI,\n      newsroomName,\n      constitutionURI: links.CONSTITUTION,\n      governanceGuideURI,\n      minDeposit: displayMinDeposit,\n      commitStageLen: displayCommitStageLen,\n      revealStageLen: displayRevealStageLen,\n      updateStatementValue: this.updateStatement,\n      transactions: this.getTransactions(),\n      postExecuteTransactions: this.onSubmitChallengeSuccess,\n    };\n\n    return (\n      <>\n        <ScrollToTopOnMount />\n        {isInsufficientBalance && this.props.parameters.get(Parameters.minDeposit) && (\n          <InsufficientBalanceSnackBar minDeposit={displayMinDeposit!} buyCVLURL=\"/tokens\" />\n        )}\n        <SubmitChallengeStatementComponent {...props} />\n        {this.state.isConfirmModalVisible && this.renderConfirmationModal()}\n      </>\n    );\n  }\n\n  private renderConfirmationModal = (): JSX.Element => {\n    return (\n      <Modal width={558}>\n        <ModalHeading>Something to keep in mind</ModalHeading>\n        <StyledConfirmModalContent>Once a challenge is issued, it cannot be withdrawn.</StyledConfirmModalContent>\n        <StyledConfirmModalContent>\n          Before challenging a Newsroom, consider addressing your converns with the Newsroom directly in the Discussion\n          section.\n        </StyledConfirmModalContent>\n\n        <StyledConfirmModalButtons>\n          <InvertedButton size={buttonSizes.MEDIUM} onClick={this.closeConfirmationModalAndCancel}>\n            Cancel\n          </InvertedButton>\n          <Button size={buttonSizes.MEDIUM} onClick={this.closeConfirmationModal}>\n            I understand\n          </Button>\n        </StyledConfirmModalButtons>\n      </Modal>\n    );\n  };\n\n  private getTransactions = (): any[] => {\n    return [\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isTransactionErrorModalOpen: false,\n            isTransactionRejectionModalOpen: false,\n            transactionType: TransactionTypes.APPROVE_FOR_CHALLENGE,\n          });\n          return this.context.approveForChallenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isTransactionProgressModalOpen: true,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: false,\n            isIPFSUploadModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            transactionType: TransactionTypes.PUBLISH_CONTENT,\n          });\n          return this.postChallengeStatement();\n        },\n        postTransaction: async (receipt: any) => {\n          this.setState({ challengeStatementUri: receipt.uri });\n        },\n      },\n      {\n        transaction: async () => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n            isTransactionSuccessModalOpen: false,\n            isIPFSUploadModalOpen: false,\n            transactionType: TransactionTypes.CHALLENGE_LISTING,\n          });\n          return this.challenge();\n        },\n        handleTransactionHash: (txHash: TxHash) => {\n          this.props.updateTransactionStatusModalsState({\n            isWaitingTransactionModalOpen: true,\n            isTransactionProgressModalOpen: false,\n          });\n        },\n        handleTransactionError: this.props.handleTransactionError,\n      },\n    ];\n  };\n\n  private getTransactionSuccessContent = (): TransactionStatusModalContentMap => {\n    return {\n      [TransactionTypes.APPROVE_FOR_CHALLENGE]: [undefined, undefined],\n      [TransactionTypes.CHALLENGE_LISTING]: [\n        <>\n          <SubmitChallengeSuccessIcon />\n          <div>This Newsroom is now under challenge</div>\n        </>,\n        <>\n          <ModalContent>\n            To prevent decision bias, all votes will be hidden using a secret phrase, until the end of the voting\n            period.\n          </ModalContent>\n          <ModalContent>\n            You may vote on your own challenge using your CVL voting tokens, which is separate from your challenge\n            deposit.\n          </ModalContent>\n          <ModalContent>It may take a few minutes for the listing to appear as challenged.</ModalContent>\n        </>,\n      ],\n    };\n  };\n\n  private updateStatement = (key: string, value: any): void => {\n    const stateKey = `challengeStatement${key.charAt(0).toUpperCase()}${key.substring(1)}Value`;\n    this.setState(() => ({ [stateKey]: value }));\n  };\n\n  private onSubmitChallengeSuccess = (): void => {\n    this.props.updateTransactionStatusModalsState({\n      isWaitingTransactionModalOpen: false,\n      isTransactionProgressModalOpen: false,\n      isTransactionSuccessModalOpen: true,\n    });\n  };\n\n  private redirectToListingPage = (): void => {\n    const listingURI = formatRoute(routes.LISTING, { listingAddress: this.props.listingAddress });\n    this.props.closeAllModals();\n    this.props.history.push(listingURI);\n  };\n\n  private closeConfirmationModal = (): void => {\n    this.setState({ isConfirmModalVisible: false });\n  };\n\n  private closeConfirmationModalAndCancel = (): void => {\n    this.setState({ isConfirmModalVisible: false }, this.redirectToListingPage);\n  };\n\n  // Transactions\n  private postChallengeStatement = async (): Promise<any> => {\n    const {\n      challengeStatementSummaryValue,\n      challengeStatementCiteConstitutionValue,\n      challengeStatementDetailsValue,\n    } = this.state;\n    const { charterRevisionId } = this.props;\n\n    const jsonToSave = {\n      summary: challengeStatementSummaryValue,\n      citeConstitution: (challengeStatementCiteConstitutionValue as any).toString(\"html\"),\n      details: (challengeStatementDetailsValue as any).toString(\"html\"),\n      charterRevisionId,\n    };\n    return this.context.publishContent(JSON.stringify(jsonToSave));\n  };\n\n  private challenge = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.context.challengeListingWithUri(this.props.listingAddress, this.state.challengeStatementUri!);\n  };\n}\n\n// TODO(jon): Move `mapStateToProps` to `SubmitChallengeReduxContainer` and remove `connect` invocation once Parameters are queryable from GraphQL\nconst mapStateToProps = (\n  state: State,\n  ownProps: SubmitChallengeProps & SubmitChallengeReduxProps,\n): SubmitChallengeProps & SubmitChallengeReduxParametersProps => {\n  const { user } = state.networkDependent;\n\n  let balance;\n  if (user && user.account && user.account.balance) {\n    balance = user.account.balance;\n  }\n\n  return {\n    balance,\n    ...ownProps,\n  };\n};\n\nexport default compose(\n  connect(mapStateToProps),\n  hasTransactionStatusModals(transactionStatusModalConfig),\n  connectParameters,\n)(SubmitChallengeComponent) as React.ComponentClass<SubmitChallengeProps>;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/SubmitChallenge/index.ts",
    "content": "export { default } from \"./SubmitChallenge\";\n"
  },
  {
    "path": "packages/dapp/src/components/listing/WhitelistedDetail.tsx",
    "content": "import * as React from \"react\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { urlConstants as links } from \"@joincivil/utils\";\nimport { ListingDetailPhaseCardComponentProps, WhitelistedCard, WhitelistedCardProps } from \"@joincivil/components\";\n\nimport { routes } from \"../../constants\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\n\nexport interface WhitelistedCardSubmitChallengeProps {\n  listingAddress: string;\n  constitutionURI?: string;\n  approvalDate?: BigNumber;\n  onMobileTransactionClick(): any;\n}\n\nclass WhitelistedDetail extends React.Component<\n  ListingDetailPhaseCardComponentProps & WhitelistedCardProps & WhitelistedCardSubmitChallengeProps\n> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public render(): JSX.Element {\n    const submitChallengeURI = formatRoute(routes.SUBMIT_CHALLENGE, { listingAddress: this.props.listingAddress });\n    return (\n      <>\n        <WhitelistedCard\n          whitelistedTimestamp={this.props.approvalDate!.toNumber()}\n          submitChallengeURI={submitChallengeURI}\n          constitutionURI={this.props.constitutionURI}\n          learnMoreURL={links.FAQ_REGISTRY}\n          faqURL={links.FAQ_CHALLENGE_SECTION}\n          onMobileTransactionClick={this.props.onMobileTransactionClick}\n        />\n      </>\n    );\n  }\n}\n\nexport default WhitelistedDetail;\n"
  },
  {
    "path": "packages/dapp/src/components/listing/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { Heading, mediaQueries } from \"@joincivil/components\";\n\nexport const RightShark = styled.div`\n  margin: -100px 0 0 15px;\n`;\n\nexport const ListingTabHeading = styled(Heading)`\n  font-size: 32px;\n  line-height: 34px;\n  margin: 34px 0 10px;\n`;\n\nexport const ListingTabContent = styled.div`\n  font-size: 18px;\n  line-height: 33px;\n  padding: 40px 0 0;\n  width: 635px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 40px 0;\n    width: auto;\n  }\n\n  & p {\n    font-size: inherit;\n    line-height: inherit;\n  }\n`;\n\nexport const ListingTabIntro = styled.p`\n  font-size: 18px;\n  line-height: 33px;\n  margin: 0 0 40px;\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/EmptyRegistryTabContent.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n  Button,\n  buttonSizes,\n  RegistryEmptyIcon,\n  StyledRegistryEmpty,\n  StyledEmptyHeader,\n  StyledEmptyCopy,\n} from \"@joincivil/components\";\n\ninterface EmptyRegistryTabContent {\n  header: string;\n  copy: JSX.Element | string;\n}\n\nexport enum REGISTRY_PHASE_TAB_TYPES {\n  APPROVED,\n  REJECTED,\n  IN_APPLICATION,\n  UNDER_CHALLENGE,\n  UNDER_APPEAL,\n  UNDER_APPEAL_CHALLENGE,\n  READY_TO_UPDATE,\n}\n\nconst EMPTY_REGISTRY_TAB_CONTENT: { [index: number]: EmptyRegistryTabContent } = {\n  [REGISTRY_PHASE_TAB_TYPES.APPROVED]: {\n    header: \"There are no approved newsrooms\",\n    copy: (\n      <>\n        You can <Link to=\"/registry/under-challenge\">view new applications</Link> or{\" \"}\n        <Link to=\"/apply-to-registry\">apply to join the Civil Registry</Link>\n      </>\n    ),\n  },\n  [REGISTRY_PHASE_TAB_TYPES.REJECTED]: {\n    header: \"There are no rejected newsrooms\",\n    copy: (\n      <>\n        You can <Link to=\"/registry/in-progress/new-applications\">view new applications</Link> or{\" \"}\n        <Link to=\"/apply-to-registry\">apply to join the Civil Registry</Link>\n      </>\n    ),\n  },\n  [REGISTRY_PHASE_TAB_TYPES.IN_APPLICATION]: {\n    header: \"There are no new applications at this time\",\n    copy: (\n      <>\n        Join the community-approved ethical Newsrooms on Civil\n        <br />\n        <Button to=\"/apply-to-registry\" size={buttonSizes.SMALL}>\n          Apply to Registry\n        </Button>\n      </>\n    ),\n  },\n  [REGISTRY_PHASE_TAB_TYPES.UNDER_CHALLENGE]: {\n    header: \"There are no newsrooms under challenge at this time\",\n    copy: (\n      <>\n        You can <Link to=\"/registry/approved\">view approved newsrooms</Link> or{\" \"}\n        <Link to=\"/apply-to-registry\">apply to Registry</Link>\n      </>\n    ),\n  },\n  [REGISTRY_PHASE_TAB_TYPES.UNDER_APPEAL]: {\n    header: \"There are no appeals to the Civil Council at this time\",\n    copy: (\n      <>\n        You can <Link to=\"/registry/approved\">view approved newsrooms</Link> or{\" \"}\n        <Link to=\"/apply-to-registry\">apply to Registry</Link>\n      </>\n    ),\n  },\n  [REGISTRY_PHASE_TAB_TYPES.UNDER_APPEAL_CHALLENGE]: {\n    header: \"There are no Civil Council decisions under challenge at this time\",\n    copy: (\n      <>\n        You can <Link to=\"/registry/approved\">view approved newsrooms</Link> or{\" \"}\n        <Link to=\"/apply-to-registry\">apply to Registry</Link>\n      </>\n    ),\n  },\n  [REGISTRY_PHASE_TAB_TYPES.READY_TO_UPDATE]: {\n    header: \"There are no newsrooms with statuses ready to update at this time\",\n    copy: (\n      <>\n        You can <Link to=\"/registry/approved\">view approved newsrooms</Link> or{\" \"}\n        <Link to=\"/apply-to-registry\">apply to Registry</Link>\n      </>\n    ),\n  },\n};\n\nexport interface EmptyRegistryTabContentProps {\n  phaseTabType: number;\n}\n\nexport const EmptyRegistryTabContentComponent: React.FunctionComponent<EmptyRegistryTabContentProps> = props => {\n  const tabContent = EMPTY_REGISTRY_TAB_CONTENT[props.phaseTabType];\n  return (\n    <StyledRegistryEmpty>\n      <StyledEmptyHeader>{tabContent.header}</StyledEmptyHeader>\n      <RegistryEmptyIcon />\n      <StyledEmptyCopy>{tabContent.copy}</StyledEmptyCopy>\n    </StyledRegistryEmpty>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/ListItemStyle.tsx",
    "content": "import styled from \"styled-components/macro\";\n\nexport const SectionHeader = styled.span`\n  font-family: Libre-Franklin;\n  font-size: 12pt;\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/ListingList.tsx",
    "content": "import * as React from \"react\";\nimport { Set } from \"immutable\";\nimport ListingListItem from \"./ListingListItem\";\nimport { StyledListingSummaryList } from \"@joincivil/components\";\nimport { NewsroomListing } from \"@joincivil/typescript-types\";\n\nexport interface ListingListOwnProps {\n  ListingItemComponent?: any;\n  listings?: Set<NewsroomListing>;\n}\n\n// TODO(jon): Add support for various sorting comparator functions (alpha descending?)\nconst sortNewsroomByAlphaNameAscending = (a: NewsroomListing, b: NewsroomListing): number => {\n  const newsroomA = a!.newsroom;\n  const newsroomB = b!.newsroom;\n  const newsroomAName = newsroomA && newsroomA.data && newsroomA.data.name && newsroomA.data.name.toLowerCase();\n  const newsroomBName = newsroomB && newsroomB.data && newsroomB.data.name && newsroomB.data.name.toLowerCase();\n\n  if (newsroomAName && newsroomBName) {\n    if (newsroomAName < newsroomBName) {\n      return -1;\n    } else if (newsroomAName > newsroomBName) {\n      return 1;\n    }\n  }\n  return 0;\n};\n\nclass ListingList extends React.Component<ListingListOwnProps> {\n  public render(): JSX.Element {\n    let index = 0;\n    return (\n      <StyledListingSummaryList>\n        {this.props.listings &&\n          this.props.listings.sort(sortNewsroomByAlphaNameAscending).map(l => {\n            index++;\n            return (\n              <ListingListItem\n                listingAddress={l!.listing.address}\n                key={l!.listing.address}\n                newsroom={l!.newsroom}\n                listing={l!.listing}\n                handle={l!.handle}\n                even={index % 2 === 0}\n                ListingItemComponent={this.props.ListingItemComponent}\n              />\n            );\n          })}\n      </StyledListingSummaryList>\n    );\n  }\n}\n\nexport default ListingList;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/ListingListItem.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport { State } from \"../../redux/reducers\";\nimport { getListingPhaseState } from \"../../selectors\";\nimport { ListingWrapper, NewsroomWrapper, CharterData } from \"@joincivil/typescript-types\";\nimport {\n  ListingSummaryComponentProps,\n  ListingSummaryComponent,\n  ListingSummaryRejectedComponent,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { routes } from \"../../constants\";\nimport WhitelistedListingItem from \"./WhitelistedListingItem\";\nimport { getContent, getBareContent } from \"../../redux/actionCreators/newsrooms\";\nimport { getChallengeResultsProps, getAppealChallengeResultsProps } from \"../../helpers/transforms\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\n\nexport interface ListingListItemOwnProps {\n  listingAddress?: string;\n  ListingItemComponent?: any;\n  newsroom?: NewsroomWrapper;\n  listing?: ListingWrapper;\n  handle?: string;\n  even: boolean;\n  user?: string;\n  queryData?: any;\n}\n\nexport interface ListingListItemReduxProps {\n  listingPhaseState?: any;\n  charter?: CharterData;\n  challengeStatement?: any;\n  appealStatement?: any;\n  appealChallengeStatement?: any;\n}\n\nexport const transformListingSummaryViewProps = (\n  props: ListingListItemOwnProps & ListingListItemReduxProps & Partial<ListingSummaryComponentProps>,\n  usePrevChallenge: boolean = false,\n) => {\n  const { listingAddress, listing, newsroom, listingPhaseState, charter } = props;\n  const listingData = listing!.data;\n  const appExpiry = listingData.appExpiry && listingData.appExpiry.toNumber();\n  let challenge = listingData.challenge;\n  let challengeID = challenge && listingData.challengeID.toString();\n  if (!challenge && !listingData.isWhitelisted) {\n    challenge = listingData.prevChallenge;\n    challengeID = challenge && listingData.prevChallengeID!.toString();\n  }\n  const pollData = challenge && challenge.poll;\n  const commitEndDate = pollData && pollData.commitEndDate.toNumber();\n  const revealEndDate = pollData && pollData.revealEndDate.toNumber();\n  const requestAppealExpiry = challenge && challenge.requestAppealExpiry.toNumber();\n  const unstakedDeposit = listing && getFormattedTokenBalance(listing.data.unstakedDeposit);\n  const challengeStake = challenge && getFormattedTokenBalance(challenge.stake);\n  let challengeStatementSummary;\n  if (props.challengeStatement) {\n    try {\n      challengeStatementSummary = JSON.parse(props.challengeStatement as string).summary;\n    } catch (ex) {\n      challengeStatementSummary = props.challengeStatement.summary;\n    }\n  }\n\n  const appeal = challenge && challenge.appeal;\n\n  let appealStatementSummary;\n  if (props.appealStatement) {\n    try {\n      appealStatementSummary = JSON.parse(props.appealStatement as string).summary;\n    } catch (ex) {\n      appealStatementSummary = props.appealStatement.summary;\n    }\n  }\n  let appealChallengeCommitEndDate;\n  let appealChallengeRevealEndDate;\n  let appealPollData;\n  let appealChallengeID;\n  const appealChallenge = appeal && appeal.appealChallenge;\n  if (appealChallenge && appeal!.appealChallengeID) {\n    appealChallengeID = appeal!.appealChallengeID.toString();\n    appealPollData = appealChallenge.poll;\n    appealChallengeCommitEndDate = appealPollData && appealPollData.commitEndDate.toNumber();\n    appealChallengeRevealEndDate = appealPollData && appealPollData.revealEndDate.toNumber();\n  }\n\n  let appealChallengeStatementSummary;\n  if (props.appealChallengeStatement) {\n    try {\n      appealChallengeStatementSummary = JSON.parse(props.appealChallengeStatement as string).summary;\n    } catch (ex) {\n      appealChallengeStatementSummary = props.appealChallengeStatement.summary;\n    }\n  }\n\n  const appealPhaseExpiry = appeal && appeal.appealPhaseExpiry.toNumber();\n  const appealOpenToChallengeExpiry = appeal && appeal.appealOpenToChallengeExpiry.toNumber();\n\n  const newsroomData = newsroom!.data;\n  const routeID = props.handle || listingAddress;\n  const listingDetailURL = formatRoute(routes.LISTING, { listingAddress: routeID });\n\n  let challengeResultsProps = {};\n\n  if (challenge) {\n    challengeResultsProps = getChallengeResultsProps(challenge!);\n  }\n\n  let appealChallengeResultsProps;\n\n  if (appealChallenge) {\n    appealChallengeResultsProps = getAppealChallengeResultsProps(appealChallenge!);\n  }\n\n  return {\n    ...newsroomData,\n    listingAddress,\n    listingDetailURL,\n    charter,\n    ...listingPhaseState,\n    challengeID,\n    challengeStatementSummary,\n    appeal,\n    appealStatementSummary,\n    appExpiry,\n    commitEndDate,\n    revealEndDate,\n    requestAppealExpiry,\n    appealPhaseExpiry,\n    appealOpenToChallengeExpiry,\n    appealChallengeCommitEndDate,\n    appealChallengeRevealEndDate,\n    unstakedDeposit,\n    challengeStake,\n    ...challengeResultsProps,\n    ...appealChallengeResultsProps,\n    appealChallengeID,\n    appealChallengeStatementSummary,\n  };\n};\n\nexport const ListingItemBaseComponent: React.FunctionComponent<\n  ListingListItemOwnProps & ListingListItemReduxProps & Partial<ListingSummaryComponentProps>\n> = props => {\n  const ListingSummaryItem = props.ListingItemComponent || ListingSummaryComponent;\n  const listingViewProps = transformListingSummaryViewProps(props);\n\n  return <ListingSummaryItem {...listingViewProps} />;\n};\n\nconst RejectedListing: React.FunctionComponent<ListingListItemOwnProps & ListingListItemReduxProps> = props => {\n  const { listing } = props;\n  const listingViewProps = transformListingSummaryViewProps(props, true);\n  const data = listing!.data!;\n  if (!data.prevChallenge) {\n    console.error(\"No prevChallenge found for rejected listing. listing address: \", listing!.address);\n    return <ErrorLoadingDataMsg />;\n  } else {\n    const challengeResultsProps = getChallengeResultsProps(data.prevChallenge!);\n    return (\n      <ListingSummaryRejectedComponent\n        challengeID={data.prevChallengeID!.toString()}\n        {...listingViewProps}\n        {...challengeResultsProps}\n      />\n    );\n  }\n};\n\nclass ListingListItem extends React.Component<ListingListItemOwnProps & ListingListItemReduxProps & DispatchProp<any>> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  public async componentDidMount(): Promise<void> {\n    if (this.props.newsroom) {\n      this.props.dispatch!(await getContent(this.context, this.props.newsroom.data.charterHeader!));\n    }\n    const { listing } = this.props;\n    if (listing && listing.data.challenge) {\n      this.props.dispatch!(await getBareContent(this.context, listing.data.challenge.challengeStatementURI!));\n      if (listing.data.challenge.appeal) {\n        this.props.dispatch!(await getBareContent(this.context, listing.data.challenge.appeal.appealStatementURI!));\n\n        if (listing.data.challenge.appeal.appealChallenge) {\n          this.props.dispatch!(\n            await getBareContent(\n              this.context,\n              listing.data.challenge.appeal.appealChallenge.appealChallengeStatementURI!,\n            ),\n          );\n        }\n      }\n    }\n  }\n\n  public async componentDidUpdate(prevProps: ListingListItemOwnProps & ListingListItemReduxProps): Promise<void> {\n    if (prevProps.listing !== this.props.listing) {\n      const { listing } = this.props;\n      if (listing && listing.data.challenge) {\n        this.props.dispatch!(await getBareContent(this.context, listing.data.challenge.challengeStatementURI!));\n        if (listing.data.challenge.appeal) {\n          this.props.dispatch!(await getBareContent(this.context, listing.data.challenge.appeal.appealStatementURI!));\n\n          if (listing.data.challenge.appeal.appealChallenge) {\n            this.props.dispatch!(\n              await getBareContent(\n                this.context,\n                listing.data.challenge.appeal.appealChallenge.appealChallengeStatementURI!,\n              ),\n            );\n          }\n        }\n      }\n    }\n    if (prevProps.newsroom !== this.props.newsroom) {\n      if (this.props.newsroom) {\n        this.props.dispatch!(await getContent(this.context, this.props.newsroom.data.charterHeader!));\n      }\n    }\n  }\n\n  public render(): JSX.Element {\n    const { listing, newsroom, listingPhaseState } = this.props;\n    const listingExists = listing && listing.data && newsroom && listingPhaseState;\n    const isWhitelisted = listingExists && listingPhaseState.isWhitelisted;\n    const approvalDate = listing && listing.data.approvalDate;\n\n    return (\n      <>\n        {isWhitelisted && <WhitelistedListingItem {...this.props} approvalDate={approvalDate} />}\n        {listingExists && !isWhitelisted && !listingPhaseState.isRejected && (\n          <ListingItemBaseComponent {...this.props} />\n        )}\n        {listingExists && listingPhaseState.isRejected && <RejectedListing {...this.props} />}\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (\n  state: State,\n  ownProps: ListingListItemOwnProps,\n): ListingListItemReduxProps & ListingListItemOwnProps => {\n  const { content } = state.networkDependent;\n  let charter;\n  let challengeStatement;\n  let appealStatement;\n  let appealChallengeStatement;\n  if (ownProps.newsroom && ownProps.newsroom.data.charterHeader) {\n    charter = content.get(ownProps.newsroom.data.charterHeader.uri) as CharterData;\n  }\n  if (ownProps.listing && ownProps.listing.data.challenge) {\n    challengeStatement = content.get(ownProps.listing.data.challenge.challengeStatementURI!);\n    if (ownProps.listing.data.challenge.appeal) {\n      appealStatement = content.get(ownProps.listing.data.challenge.appeal.appealStatementURI!);\n\n      if (ownProps.listing.data.challenge.appeal.appealChallenge) {\n        appealChallengeStatement = content.get(\n          ownProps.listing.data.challenge.appeal.appealChallenge.appealChallengeStatementURI!,\n        );\n      }\n    }\n  }\n\n  return {\n    listingPhaseState: getListingPhaseState(ownProps.listing),\n    charter,\n    challengeStatement,\n    appealStatement,\n    appealChallengeStatement,\n    ...ownProps,\n  };\n};\n\nexport default connect(mapStateToProps)(ListingListItem);\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/Listings.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Helmet } from \"react-helmet\";\n\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  Hero,\n  HomepageHero,\n  Tabs,\n  Tab,\n  StyledTabNav,\n  StyledTabLarge,\n  ApprovedNewsroomsTabText,\n  ApplicationsInProgressTabText,\n  RejectedNewsroomsTabText,\n  LoadingMessage,\n} from \"@joincivil/components\";\nimport { urlConstants as links } from \"@joincivil/utils\";\n\nimport { State } from \"../../redux/reducers\";\nimport * as heroImgUrl from \"../images/img-hero-listings.png\";\nimport ScrollToTopOnMount from \"../utility/ScrollToTop\";\nimport { StyledPageContent } from \"../utility/styledComponents\";\n\nimport WhitelistedListingListContainer from \"./WhitelistedListingListContainer\";\nimport RejectedListingListContainer from \"./RejectedListingListContainer\";\nimport ListingsInProgressContainer from \"./ListingsInProgressContainer\";\n\nconst TABS: string[] = [\"approved\", \"in-progress\", \"rejected\"];\n\nexport interface ListingProps {\n  match?: any;\n  history: any;\n}\n\nexport interface ListingReduxProps {\n  govtParameters: any;\n  error: undefined | string;\n  loadingFinished: boolean;\n  userAcct: EthAddress;\n}\n\nclass Listings extends React.Component<ListingProps & ListingReduxProps> {\n  public render(): JSX.Element {\n    const { listingType } = this.props.match.params;\n    let activeIndex = 0;\n    if (listingType) {\n      activeIndex = TABS.indexOf(listingType) || 0;\n    }\n    return (\n      <>\n        <ScrollToTopOnMount />\n        <Hero backgroundImage={heroImgUrl}>\n          <HomepageHero\n            applyURL={links.APPLY}\n            buyCvlUrl={links.BECOME_A_MEMBER}\n            learnMoreURL={links.FAQ_COMMUNITY_VETTING_PROCESS}\n          />\n        </Hero>\n        {!this.props.loadingFinished && <LoadingMessage />}\n        {this.props.loadingFinished && (\n          <Tabs\n            activeIndex={activeIndex}\n            TabsNavComponent={StyledTabNav}\n            TabComponent={StyledTabLarge}\n            onActiveTabChange={this.onTabChange}\n          >\n            <Tab title={<ApprovedNewsroomsTabText />}>\n              <StyledPageContent>\n                <Helmet title=\"The Civil Registry - A community-driven space for curating quality journalism\" />\n                <WhitelistedListingListContainer />\n              </StyledPageContent>\n            </Tab>\n            <Tab title={<ApplicationsInProgressTabText />}>\n              <StyledPageContent>\n                <ListingsInProgressContainer\n                  match={this.props.match}\n                  history={this.props.history}\n                  govtParameters={this.props.govtParameters}\n                />\n              </StyledPageContent>\n            </Tab>\n            <Tab title={<RejectedNewsroomsTabText />}>\n              <StyledPageContent>\n                <Helmet title=\"Rejected Newsrooms - The Civil Registry\" />\n                <RejectedListingListContainer />\n              </StyledPageContent>\n            </Tab>\n          </Tabs>\n        )}\n      </>\n    );\n  }\n\n  private onTabChange = (activeIndex: number = 0): void => {\n    const tabName = TABS[activeIndex];\n    this.props.history.push(`/registry/${tabName}`);\n  };\n}\n\nconst mapStateToProps = (state: State, ownProps: ListingProps): ListingProps & ListingReduxProps => {\n  const { govtParameters, user } = state.networkDependent;\n  const userAcct = user && user.account && user.account.account;\n  return {\n    ...ownProps,\n    govtParameters,\n    error: undefined,\n    loadingFinished: true,\n    userAcct,\n  };\n};\n\nexport default connect(mapStateToProps)(Listings);\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/ListingsInProgress.tsx",
    "content": "import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { Set } from \"immutable\";\n\nimport { NewsroomListing } from \"@joincivil/typescript-types\";\nimport {\n  Tabs,\n  Tab,\n  StyledSquarePillTabNav,\n  StyledSquarePillTab,\n  NewApplicationsTabTitle,\n  UnderChallengeTabTitle,\n  AppealToCouncilTabTitle,\n  ChallengeCouncilAppealTabTitle,\n  ReadyToUpdateTabTitle,\n  ListingSummaryUnderChallengeComponent,\n  ListingSummaryReadyToUpdateComponent,\n} from \"@joincivil/components\";\n\nimport ListingList from \"./ListingList\";\nimport { EmptyRegistryTabContentComponent, REGISTRY_PHASE_TAB_TYPES } from \"./EmptyRegistryTabContent\";\nimport {\n  NewApplicationsTabDescription,\n  UnderChallengeTabDescription,\n  UnderAppealTabDescription,\n  UnderAppealChallengeTabDescription,\n  ReadyToUpdateTabDescription,\n} from \"./TabDescriptions\";\n\nexport interface ListingProps {\n  match?: any;\n  history?: any;\n}\n\nexport interface ListingsInProgressProps {\n  applications: Set<NewsroomListing>;\n  readyToWhitelistListings: Set<NewsroomListing>;\n  inChallengeCommitListings: Set<NewsroomListing>;\n  inChallengeRevealListings: Set<NewsroomListing>;\n  awaitingAppealRequestListings: Set<NewsroomListing>;\n  awaitingAppealJudgmentListings: Set<NewsroomListing>;\n  awaitingAppealChallengeListings: Set<NewsroomListing>;\n  appealChallengeCommitPhaseListings: Set<NewsroomListing>;\n  appealChallengeRevealPhaseListings: Set<NewsroomListing>;\n  resolveChallengeListings: Set<NewsroomListing>;\n  resolveAppealListings: Set<NewsroomListing>;\n  govtParameters: any;\n}\n\nconst TABS: string[] = [\n  \"new-applications\",\n  \"under-challenge\",\n  \"under-appeal\",\n  \"decision-challenged\",\n  \"ready-to-update\",\n];\n\nclass ListingsInProgress extends React.Component<ListingProps & ListingsInProgressProps> {\n  public render(): JSX.Element {\n    const { subListingType } = this.props.match.params;\n    let activeIndex = 0;\n    if (subListingType) {\n      activeIndex = TABS.indexOf(subListingType) || 0;\n    }\n    const applications = this.props.applications;\n    const beingChallenged = this.props.inChallengeCommitListings\n      .merge(this.props.inChallengeRevealListings)\n      .merge(this.props.awaitingAppealRequestListings);\n    const consideringAppeal = this.props.awaitingAppealJudgmentListings.merge(\n      this.props.awaitingAppealChallengeListings,\n    );\n    const appealChallenge = this.props.appealChallengeCommitPhaseListings.merge(\n      this.props.appealChallengeRevealPhaseListings,\n    );\n    const readyToUpdate = this.props.readyToWhitelistListings\n      .merge(this.props.resolveChallengeListings)\n      .merge(this.props.resolveAppealListings);\n\n    const newApplicationsTab = <NewApplicationsTabTitle count={applications.count()} />;\n    const underChallengeTab = <UnderChallengeTabTitle count={beingChallenged.count()} />;\n    const appealToCouncilTab = <AppealToCouncilTabTitle count={consideringAppeal.count()} />;\n    const challengeCouncilAppealTab = <ChallengeCouncilAppealTabTitle count={appealChallenge.count()} />;\n    const readyToUpdateTab = <ReadyToUpdateTabTitle count={readyToUpdate.count()} />;\n\n    return (\n      <Tabs\n        activeIndex={activeIndex}\n        TabsNavComponent={StyledSquarePillTabNav}\n        TabComponent={StyledSquarePillTab}\n        onActiveTabChange={this.onTabChange}\n      >\n        <Tab title={newApplicationsTab}>\n          <>\n            <Helmet title=\"New Applications - The Civil Registry\" />\n            {this.renderApplications()}\n          </>\n        </Tab>\n        <Tab title={underChallengeTab}>\n          <>\n            <Helmet title=\"Newsrooms Under Challenge - The Civil Registry\" />\n            {this.renderUnderChallenge()}\n          </>\n        </Tab>\n        <Tab title={appealToCouncilTab}>\n          <>\n            <Helmet title=\"Newsrooms Under Appeal - The Civil Registry\" />\n            {this.renderUnderAppeal()}\n          </>\n        </Tab>\n        <Tab title={challengeCouncilAppealTab}>\n          <>\n            <Helmet title=\"Newsrooms Decision Challenged- The Civil Registry\" />\n            {this.renderUnderAppealChallenge()}\n          </>\n        </Tab>\n        <Tab title={readyToUpdateTab}>\n          <>\n            <Helmet title=\"Newsrooms Ready To Update - The Civil Registry\" />\n            {this.renderReadyToUpdate()}\n          </>\n        </Tab>\n      </Tabs>\n    );\n  }\n\n  private renderApplications = (): JSX.Element => {\n    if (this.props.applications.count()) {\n      return (\n        <>\n          <NewApplicationsTabDescription />\n          <ListingList\n            ListingItemComponent={ListingSummaryUnderChallengeComponent}\n            listings={this.props.applications}\n          />\n        </>\n      );\n    }\n\n    return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.IN_APPLICATION} />;\n  };\n\n  private renderUnderChallenge = (): JSX.Element => {\n    const beingChallenged = this.props.inChallengeCommitListings\n      .merge(this.props.inChallengeRevealListings)\n      .merge(this.props.awaitingAppealRequestListings);\n\n    if (beingChallenged.count()) {\n      return (\n        <>\n          <UnderChallengeTabDescription />\n          <ListingList ListingItemComponent={ListingSummaryUnderChallengeComponent} listings={beingChallenged} />\n        </>\n      );\n    }\n\n    return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.UNDER_CHALLENGE} />;\n  };\n\n  private renderUnderAppeal = (): JSX.Element => {\n    const consideringAppeal = this.props.awaitingAppealJudgmentListings.merge(\n      this.props.awaitingAppealChallengeListings,\n    );\n\n    if (consideringAppeal.count()) {\n      return (\n        <>\n          <UnderAppealTabDescription />\n          <ListingList ListingItemComponent={ListingSummaryUnderChallengeComponent} listings={consideringAppeal} />\n        </>\n      );\n    }\n\n    return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.UNDER_APPEAL} />;\n  };\n\n  private renderUnderAppealChallenge = (): JSX.Element => {\n    const appealChallenge = this.props.appealChallengeCommitPhaseListings.merge(\n      this.props.appealChallengeRevealPhaseListings,\n    );\n\n    if (appealChallenge.count()) {\n      return (\n        <>\n          <UnderAppealChallengeTabDescription />\n          <ListingList ListingItemComponent={ListingSummaryUnderChallengeComponent} listings={appealChallenge} />;\n        </>\n      );\n    }\n\n    return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.UNDER_APPEAL_CHALLENGE} />;\n  };\n\n  private renderReadyToUpdate = (): JSX.Element => {\n    const readyToUpdate = this.props.readyToWhitelistListings\n      .merge(this.props.resolveChallengeListings)\n      .merge(this.props.resolveAppealListings);\n\n    if (readyToUpdate.count()) {\n      return (\n        <>\n          <ReadyToUpdateTabDescription />\n          <ListingList ListingItemComponent={ListingSummaryReadyToUpdateComponent} listings={readyToUpdate} />\n        </>\n      );\n    }\n\n    return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.READY_TO_UPDATE} />;\n  };\n\n  private onTabChange = (activeIndex: number = 0): void => {\n    const tabName = this.props.match.params.listingType;\n    const subTabName = TABS[activeIndex];\n    this.props.history.push(`/registry/${tabName}/${subTabName}`);\n  };\n}\n\nexport default ListingsInProgress;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/ListingsInProgressContainer.tsx",
    "content": "import * as React from \"react\";\nimport { Set } from \"immutable\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport {\n  LISTING_FRAGMENT,\n  transformGraphQLDataIntoListing,\n  transformGraphQLDataIntoNewsroom,\n  listingHelpers,\n} from \"@joincivil/utils\";\nimport { NewsroomListing } from \"@joincivil/typescript-types\";\nimport { LoadingMessage } from \"@joincivil/components\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\nimport ListingsInProgress from \"./ListingsInProgress\";\n\nexport interface ListingsInProgressProps {\n  match?: any;\n  history?: any;\n  govtParameters: any;\n}\nexport interface ListingsInProgressState {\n  increment: number;\n}\nconst LISTINGS_QUERY = gql`\n  query($activeChallenge: Boolean!, $currentApplication: Boolean!, $sortBy: ListingSort) {\n    listings(activeChallenge: $activeChallenge, currentApplication: $currentApplication, sortBy: $sortBy) {\n      ...ListingFragment\n    }\n  }\n  ${LISTING_FRAGMENT}\n`;\nclass ListingsInProgressContainer extends React.Component<ListingsInProgressProps, ListingsInProgressState> {\n  constructor(props: ListingsInProgressProps) {\n    super(props);\n    this.state = { increment: 0 };\n  }\n  public render(): JSX.Element {\n    return (\n      <Query\n        query={LISTINGS_QUERY}\n        variables={{ activeChallenge: true, currentApplication: true, sortBy: \"NAME\" }}\n        pollInterval={30000}\n      >\n        {({ loading, error, data }: any): JSX.Element => {\n          if (loading && !data) {\n            return <LoadingMessage />;\n          }\n          if (error) {\n            return <ErrorLoadingDataMsg />;\n          }\n          const map = Set<any>(data.listings);\n          const allListings: Set<NewsroomListing> = map\n            .map(listing => {\n              return {\n                listing: transformGraphQLDataIntoListing(listing, listing!.contractAddress),\n                newsroom: transformGraphQLDataIntoNewsroom(listing, listing!.contractAddress),\n              };\n            })\n            .toSet();\n\n          let soonestExpiry = Number.MAX_SAFE_INTEGER;\n          allListings.forEach(listing => {\n            const expiry = listingHelpers.getNextTimerExpiry(listing!.listing.data);\n            if (expiry > 0 && expiry < soonestExpiry) {\n              soonestExpiry = expiry;\n            }\n          });\n          const nowSeconds = Date.now() / 1000;\n          const delaySeconds = soonestExpiry - nowSeconds;\n          setTimeout(this.onTimerExpiry, delaySeconds * 1000);\n\n          const applications = allListings\n            .filter(listing => listingHelpers.isInApplicationPhase(listing!.listing.data))\n            .toSet();\n\n          const readyToWhitelistListings = allListings\n            .filter(listing => listingHelpers.canBeWhitelisted(listing!.listing.data))\n            .toSet();\n\n          const inChallengeCommitListings = allListings\n            .filter(listing => listingHelpers.isInChallengedCommitVotePhase(listing!.listing.data))\n            .toSet();\n\n          const inChallengeRevealListings = allListings\n            .filter(listing => listingHelpers.isInChallengedRevealVotePhase(listing!.listing.data))\n            .toSet();\n\n          const awaitingAppealRequestListings = allListings\n            .filter(listing => listingHelpers.isAwaitingAppealRequest(listing!.listing.data))\n            .toSet();\n\n          const awaitingAppealJudgmentListings = allListings\n            .filter(listing => listingHelpers.isListingAwaitingAppealJudgment(listing!.listing.data))\n            .toSet();\n\n          const awaitingAppealChallengeListings = allListings\n            .filter(listing => listingHelpers.isListingAwaitingAppealChallenge(listing!.listing.data))\n            .toSet();\n\n          const appealChallengeCommitPhaseListings = allListings\n            .filter(listing => listingHelpers.isInAppealChallengeCommitPhase(listing!.listing.data))\n            .toSet();\n\n          const appealChallengeRevealPhaseListings = allListings\n            .filter(listing => listingHelpers.isInAppealChallengeRevealPhase(listing!.listing.data))\n            .toSet();\n\n          const resolveChallengeListings = allListings\n            .filter(listing => listingHelpers.canChallengeBeResolved(listing!.listing.data))\n            .toSet();\n\n          const resolveAppealListings = allListings\n            .filter(listing => listingHelpers.canListingAppealBeResolved(listing!.listing.data))\n            .toSet();\n\n          return (\n            <>\n              <ListingsInProgress\n                applications={applications}\n                readyToWhitelistListings={readyToWhitelistListings}\n                inChallengeCommitListings={inChallengeCommitListings}\n                inChallengeRevealListings={inChallengeRevealListings}\n                awaitingAppealRequestListings={awaitingAppealRequestListings}\n                awaitingAppealJudgmentListings={awaitingAppealJudgmentListings}\n                awaitingAppealChallengeListings={awaitingAppealChallengeListings}\n                appealChallengeCommitPhaseListings={appealChallengeCommitPhaseListings}\n                appealChallengeRevealPhaseListings={appealChallengeRevealPhaseListings}\n                resolveChallengeListings={resolveChallengeListings}\n                resolveAppealListings={resolveAppealListings}\n                {...this.props}\n              />\n            </>\n          );\n        }}\n      </Query>\n    );\n  }\n  public onTimerExpiry = (): void => {\n    this.setState({ increment: this.state.increment + 1 });\n  };\n}\n\nexport default ListingsInProgressContainer;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/RejectedListingListContainer.tsx",
    "content": "import * as React from \"react\";\nimport { Set } from \"immutable\";\nimport { Button, ListingSummaryRejectedComponent, LoadingMessage } from \"@joincivil/components\";\nimport ListingList from \"./ListingList\";\nimport { EmptyRegistryTabContentComponent, REGISTRY_PHASE_TAB_TYPES } from \"./EmptyRegistryTabContent\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { LISTING_FRAGMENT, transformGraphQLDataIntoListing, transformGraphQLDataIntoNewsroom } from \"@joincivil/utils\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\nimport { NewsroomListing } from \"@joincivil/typescript-types\";\nimport { RejectedTabDescription } from \"./TabDescriptions\";\nimport styled from \"styled-components/macro\";\n\nconst LISTINGS_QUERY = gql`\n  query Listings($rejectedOnly: Boolean!, $sortBy: ListingSort, $cursor: String) {\n    tcrListings(rejectedOnly: $rejectedOnly, sortBy: $sortBy, first: 12, after: $cursor) {\n      edges {\n        node {\n          ...ListingFragment\n        }\n      }\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n    }\n  }\n  ${LISTING_FRAGMENT}\n`;\n\nconst LoadMoreContainer = styled.div`\n  display: flex;\n  justify-content: space-around;\n  width: 100%;\n`;\n\nclass RejectedListingListContainer extends React.Component {\n  public render(): JSX.Element {\n    return (\n      <Query query={LISTINGS_QUERY} variables={{ rejectedOnly: true, sortBy: \"NAME\" }}>\n        {({ loading, error, data: { tcrListings }, fetchMore }: any): JSX.Element => {\n          if (loading) {\n            return <LoadingMessage />;\n          }\n          if (error) {\n            return <ErrorLoadingDataMsg />;\n          }\n          const map = Set<NewsroomListing>(\n            tcrListings.edges.map((edge: any) => {\n              return {\n                listing: transformGraphQLDataIntoListing(edge.node, edge.node.contractAddress),\n                newsroom: transformGraphQLDataIntoNewsroom(edge.node, edge.node.contractAddress),\n              };\n            }),\n          );\n\n          if (!map.count()) {\n            return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.REJECTED} />;\n          }\n\n          return (\n            <>\n              <RejectedTabDescription />\n              <ListingList ListingItemComponent={ListingSummaryRejectedComponent} listings={map} />\n              {tcrListings.pageInfo.hasNextPage && (\n                <LoadMoreContainer>\n                  <Button\n                    onClick={() =>\n                      fetchMore({\n                        variables: {\n                          cursor: tcrListings.pageInfo.endCursor,\n                        },\n                        updateQuery: (previousResult: any, { fetchMoreResult }: any) => {\n                          const newEdges = fetchMoreResult.tcrListings.edges;\n                          const pageInfo = fetchMoreResult.tcrListings.pageInfo;\n\n                          return newEdges.length\n                            ? {\n                                tcrListings: {\n                                  __typename: previousResult.tcrListings.__typename,\n                                  edges: [...previousResult.tcrListings.edges, ...newEdges],\n                                  pageInfo,\n                                },\n                              }\n                            : previousResult;\n                        },\n                      })\n                    }\n                  >\n                    Load More\n                  </Button>\n                </LoadMoreContainer>\n              )}\n            </>\n          );\n        }}\n      </Query>\n    );\n  }\n}\n\nexport default RejectedListingListContainer;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/TabDescriptions.tsx",
    "content": "import * as React from \"react\";\nimport { urlConstants as links } from \"@joincivil/utils\";\nimport { StyledListingCopy } from \"../utility/styledComponents\";\n\nexport const WhitelistedTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    All approved Newsrooms agreed to uphold the journalistic principles in the{\" \"}\n    <a href={links.CONSTITUTION}>Civil Constitution</a>, and Newsrooms are subject to Civil's{\" \"}\n    <a href={links.FAQ_COMMUNITY_VETTING_PROCESS} target=\"_blank\">\n      community vetting process\n    </a>\n    .\n  </StyledListingCopy>\n);\n\nexport const RejectedTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    Rejected Newsrooms have been removed from the Civil Registry following a vote that they had violated the{\" \"}\n    <a href={links.CONSTITUTION}>Civil Constitution</a> in some way. Rejected Newsrooms can reapply to the Registry at\n    any time.{\" \"}\n    <a href={links.FAQ_CAN_REJECTED_NEWSROOMS_REAPPLY} target=\"_blank\">\n      Learn how\n    </a>\n    .\n  </StyledListingCopy>\n);\n\nexport const NewApplicationsTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    New applications are subject to Civil community review to ensure alignment with the{\" \"}\n    <a href={links.CONSTITUTION}>Civil Constitution</a>. If you believe any of these Newsrooms don't abide by the Civil\n    Constitution, you may challenge them at any time.{\" \"}\n    <a href={links.FAQ_HOW_TO_CHALLENGE} target=\"_blank\">\n      Learn how\n    </a>\n    .\n  </StyledListingCopy>\n);\n\nexport const UnderChallengeTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    These Newsrooms have been challenged by a community member who perceives they violated the{\" \"}\n    <a href={links.CONSTITUTION}>Civil Constitution</a>. You can vote to accept or reject the Newsroom from the Civil\n    Registry and potentially earn Civil tokens when you vote.{\" \"}\n    <a href={links.FAQ_HOW_TO_VOTE} target=\"_blank\">\n      Learn how\n    </a>\n    .\n  </StyledListingCopy>\n);\n\nexport const UnderAppealTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    The <a href={links.FOUNDATION}>Civil Council</a> has agreed to consider the appeals of these challenged Newsrooms.\n    Their decisions are based on the <a href={links.CONSTITUTION}>Civil Constitution</a>. If you disagree with the Civil\n    Council’s decision, you will have a chance to challenge it.{\" \"}\n    <a href={links.FAQ_HOW_TO_APPEAL} target=\"_blank\">\n      Learn how\n    </a>\n    .\n  </StyledListingCopy>\n);\n\nexport const UnderAppealChallengeTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    A community member has challenged the Civil Council's appeal decision on these Newsrooms' fate, based on the{\" \"}\n    <a href={links.CONSTITUTION}>Civil Constitution</a>. You can vote to uphold or overturn the Civil Council's decision\n    and potentially earn Civil tokens when you vote.{\" \"}\n    <a href={links.FAQ_HOW_TO_VOTE} target=\"_blank\">\n      Learn how\n    </a>\n    .\n  </StyledListingCopy>\n);\n\nexport const ReadyToUpdateTabDescription: React.FunctionComponent = props => (\n  <StyledListingCopy>\n    The Civil community has spoken and the vote results are in. In order to enact the decision, community members must\n    update the Newsroom's status.{\" \"}\n    <a href={links.FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS} target=\"_blank\">\n      Learn more\n    </a>\n    .\n  </StyledListingCopy>\n);\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/WhitelistedListingItem.tsx",
    "content": "import * as React from \"react\";\nimport { ListingListItemOwnProps, ListingListItemReduxProps, ListingItemBaseComponent } from \"./ListingListItem\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nexport interface WhitelistedCardProps {\n  approvalDate?: BigNumber;\n}\n\nconst WhitelistedListingItem = (props: ListingListItemOwnProps & ListingListItemReduxProps & WhitelistedCardProps) => {\n  return <ListingItemBaseComponent {...props} whitelistedTimestamp={props.approvalDate!.toNumber()} />;\n};\n\nexport default WhitelistedListingItem;\n"
  },
  {
    "path": "packages/dapp/src/components/listinglist/WhitelistedListingListContainer.tsx",
    "content": "import * as React from \"react\";\nimport { Set } from \"immutable\";\nimport { Button, ListingSummaryApprovedComponent, LoadingMessage } from \"@joincivil/components\";\nimport ListingList from \"./ListingList\";\nimport { EmptyRegistryTabContentComponent, REGISTRY_PHASE_TAB_TYPES } from \"./EmptyRegistryTabContent\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { NewsroomListing } from \"@joincivil/typescript-types\";\nimport { LISTING_FRAGMENT, transformGraphQLDataIntoListing, transformGraphQLDataIntoNewsroom } from \"@joincivil/utils\";\nimport ErrorLoadingDataMsg from \"../utility/ErrorLoadingData\";\nimport { WhitelistedTabDescription } from \"./TabDescriptions\";\nimport styled from \"styled-components/macro\";\n\nconst LISTINGS_QUERY = gql`\n  query Listings($whitelistedOnly: Boolean!, $sortBy: ListingSort, $cursor: String) {\n    tcrListings(whitelistedOnly: $whitelistedOnly, sortBy: $sortBy, first: 12, after: $cursor) {\n      edges {\n        node {\n          ...ListingFragment\n        }\n      }\n      pageInfo {\n        endCursor\n        hasNextPage\n      }\n    }\n  }\n  ${LISTING_FRAGMENT}\n`;\n\nconst LoadMoreContainer = styled.div`\n  display: flex;\n  justify-content: space-around;\n  width: 100%;\n`;\n\nconst WhitelistedListingListContainer = () => {\n  return (\n    <Query query={LISTINGS_QUERY} variables={{ whitelistedOnly: true, sortBy: \"NAME\" }}>\n      {({ loading, error, data, fetchMore }: any): JSX.Element => {\n        if (loading) {\n          return <LoadingMessage />;\n        }\n        if (error) {\n          return <ErrorLoadingDataMsg />;\n        }\n        const { tcrListings } = data;\n        const map = Set<NewsroomListing>(\n          tcrListings.edges.map((edge: any) => {\n            return {\n              listing: transformGraphQLDataIntoListing(edge.node, edge.node.contractAddress),\n              newsroom: transformGraphQLDataIntoNewsroom(edge.node, edge.node.contractAddress),\n              handle: edge.node.channel.handle,\n            };\n          }),\n        );\n\n        if (!map.count()) {\n          return <EmptyRegistryTabContentComponent phaseTabType={REGISTRY_PHASE_TAB_TYPES.APPROVED} />;\n        }\n\n        const predicate = (newsroomListing?: NewsroomListing) => {\n          const listing = newsroomListing && newsroomListing.listing;\n          return !!listing && !!listing.data && !!listing.data.challenge && !listing.data.challengeID.isZero();\n        };\n\n        const challengedListings = map.filter(predicate).toSet();\n        const unchallengedListings = map.filterNot(predicate).toSet();\n        const groupedListings = challengedListings.concat(unchallengedListings).toSet();\n\n        return (\n          <>\n            <WhitelistedTabDescription />\n            <ListingList ListingItemComponent={ListingSummaryApprovedComponent} listings={groupedListings} />\n            {tcrListings.pageInfo.hasNextPage && (\n              <LoadMoreContainer>\n                <Button\n                  onClick={() =>\n                    fetchMore({\n                      variables: {\n                        cursor: tcrListings.pageInfo.endCursor,\n                      },\n                      updateQuery: (previousResult: any, { fetchMoreResult }: any) => {\n                        const newEdges = fetchMoreResult.tcrListings.edges;\n                        const pageInfo = fetchMoreResult.tcrListings.pageInfo;\n\n                        return newEdges.length\n                          ? {\n                              tcrListings: {\n                                __typename: previousResult.tcrListings.__typename,\n                                edges: [...previousResult.tcrListings.edges, ...newEdges],\n                                pageInfo,\n                              },\n                            }\n                          : previousResult;\n                      },\n                    })\n                  }\n                >\n                  Load More\n                </Button>\n              </LoadMoreContainer>\n            )}\n          </>\n        );\n      }}\n    </Query>\n  );\n};\n\nexport default WhitelistedListingListContainer;\n"
  },
  {
    "path": "packages/dapp/src/components/newsroom/NewsroomDetail.tsx",
    "content": "import * as React from \"react\";\nimport { List } from \"immutable\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { Subscription } from \"rxjs\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\n\nexport interface NewsroomDetailState {\n  name: string;\n  error: string;\n  editorAddress: string;\n  reporterAddress: string;\n  owners: string[];\n  editors: List<string>;\n  compositeSubscription: Subscription;\n}\nexport interface NewsroomDetailProps {\n  address: EthAddress;\n  multisigAddr: string;\n  multisigBalance: BigNumber;\n}\n\nclass NewsroomDetail extends React.Component<NewsroomDetailProps, NewsroomDetailState> {\n  public static contextType = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: NewsroomDetailProps) {\n    super(props);\n    this.state = {\n      name: \"\",\n      error: \"\",\n      editorAddress: \"\",\n      reporterAddress: \"\",\n      owners: [],\n      editors: List<string>(),\n      compositeSubscription: new Subscription(),\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    return this.initNewsroom();\n  }\n\n  public componentWillUnmount(): void {\n    this.state.compositeSubscription.unsubscribe();\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        {this.state.error}\n        {this.state.error && <br />}\n        Newsroom Address: {this.props.address}\n        <br />\n        Name: {this.state.name}\n        <br />\n        Multisig: {this.props.multisigAddr || \"false\"}\n        <br />\n        {this.props.multisigAddr && (\n          <>\n            Multisig balance: {getFormattedTokenBalance(this.props.multisigBalance)}\n            <br />\n          </>\n        )}\n        Owners: {this.state.owners.join(\", \")}\n        <br />\n        Editors: {this.state.editors.join(\", \")}\n        <br />\n      </>\n    );\n  }\n\n  private initNewsroom = async () => {\n    const newsroom = await this.context.getNewsroom(this.props.address);\n    if (newsroom) {\n      this.setState({ name: await newsroom.getName() });\n      this.setState({ owners: await newsroom.owners() });\n      this.state.compositeSubscription.add(\n        newsroom\n          .editors()\n          .distinct()\n          .subscribe((addr: any) => this.setState({ editors: this.state.editors.push(addr) })),\n      );\n    }\n  };\n}\n\nexport default NewsroomDetail;\n"
  },
  {
    "path": "packages/dapp/src/components/newsroom/NewsroomManagement.tsx",
    "content": "import { TransactionButton } from \"@joincivil/components\";\nimport { Civil, TwoStepEthTransaction } from \"@joincivil/core\";\nimport { CivilErrors, NewsroomRoles } from \"@joincivil/utils\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { List } from \"immutable\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { formatRoute } from \"react-router-named-routes\";\nimport RichTextEditor from \"react-rte\";\nimport { Subscription } from \"rxjs\";\nimport { routes } from \"../../constants\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { PageView, ViewModule } from \"../utility/ViewModules\";\nimport NewsroomDetail from \"./NewsroomDetail\";\n\nexport interface NewsroomManagementState {\n  newsroom: any;\n  multisigAddr: string;\n  multisigBalance: BigNumber;\n  error: string;\n  editorAddress: string;\n  articleURL: string;\n  numTokens: string;\n  proposedArticleIds: List<string>;\n  compositeSubscription: Subscription;\n  value: any;\n  descValue: string;\n}\nexport interface NewsroomManagementProps {\n  match: any;\n  history: any;\n  initialValue: any;\n}\n\nclass NewsroomManagement extends React.Component<NewsroomManagementProps, NewsroomManagementState> {\n  public static contextType: React.Context<CivilHelper | undefined> = CivilHelperContext;\n  public context: CivilHelper;\n\n  constructor(props: NewsroomManagementProps) {\n    super(props);\n    this.state = {\n      newsroom: null,\n      multisigAddr: \"\",\n      multisigBalance: new BigNumber(0),\n      error: \"\",\n      editorAddress: \"\",\n      articleURL: \"\",\n      numTokens: \"\",\n      proposedArticleIds: List<string>(),\n      compositeSubscription: new Subscription(),\n      value: RichTextEditor.createEmptyValue(),\n      descValue: \"\",\n    };\n  }\n\n  public handleValueChange = (value: any) => {\n    this.setState({ value });\n  };\n\n  public onDescChange = (event: any) => {\n    this.setState({ descValue: event.target.value });\n  };\n\n  public async componentDidMount(): Promise<void> {\n    return this.initNewsroom();\n  }\n\n  public componentWillUnmount(): void {\n    this.state.compositeSubscription.unsubscribe();\n  }\n\n  public render(): JSX.Element {\n    return (\n      <PageView>\n        <ViewModule>\n          <span style={{ color: \"red\" }}>{this.state.error}</span>\n          {this.state.error && <br />}\n          <NewsroomDetail\n            address={this.props.match.params.newsroomAddress}\n            multisigAddr={this.state.multisigAddr}\n            multisigBalance={this.state.multisigBalance}\n          />\n          ProposedArticleIds:\n          <ul>\n            {this.state.proposedArticleIds.map(id => {\n              const articleAddress = \"/article/\" + this.props.match.params.newsroomAddress + \"/\" + id;\n              return (\n                <li key={id}>\n                  <Link to={articleAddress}>Article {id}</Link>\n                </li>\n              );\n            })}\n          </ul>\n          <br />\n          <input onChange={this.onEditorAddressChange} />\n          <TransactionButton transactions={[{ transaction: this.addEditor }]}>Add Editor</TransactionButton>\n          <br />\n          <input onChange={this.onArticleURLChange} />\n          <TransactionButton transactions={[{ transaction: this.submitArticle }]}>Submit Article</TransactionButton>\n          <br />\n          {this.state.multisigAddr && (\n            <>\n              <input value={this.state.numTokens} onChange={this.onNumTokensChange} />\n              <TransactionButton\n                transactions={[\n                  {\n                    transaction: this.sendTokenToMultisig,\n                    postTransaction: this.postSendToken,\n                  },\n                ]}\n              >\n                Send CVL to Multisig\n              </TransactionButton>\n              <br />\n            </>\n          )}\n          Short Description:\n          <br />\n          <textarea value={this.state.descValue} onChange={this.onDescChange} />\n          <br />\n          Charter:\n          <RichTextEditor value={this.state.value} onChange={this.handleValueChange} />\n          <br />\n          <TransactionButton transactions={[{ transaction: this.updateCharter }]}> Update Charter </TransactionButton>\n          <br />\n          <TransactionButton\n            transactions={[\n              {\n                transaction: this.approve,\n              },\n              {\n                transaction: this.applyToTCR,\n                postTransaction: this.postApply,\n              },\n            ]}\n          >\n            Apply to TCR\n          </TransactionButton>\n        </ViewModule>\n      </PageView>\n    );\n  }\n\n  private updateCharter = async (): Promise<TwoStepEthTransaction | void> => {\n    const newsroomInstance = await this.context.getNewsroom(this.props.match.params.newsroomAddress);\n    const jsonToSave = { desc: this.state.descValue, charter: this.state.value.toString(\"html\") };\n    return newsroomInstance.updateRevision(0, JSON.stringify(jsonToSave));\n  };\n\n  private approve = async (): Promise<TwoStepEthTransaction | void> => {\n    this.setState({ error: \"\" });\n    try {\n      return await this.context.approveForApply(this.state.multisigAddr);\n    } catch (e) {\n      if (e.message === CivilErrors.InsufficientToken) {\n        this.setState({\n          error:\n            (this.state.multisigAddr ? \"Newsroom multisig wallet\" : \"Your account\") +\n            \" has insufficient CVL token to apply\",\n        });\n      } else {\n        throw e;\n      }\n    }\n  };\n\n  private applyToTCR = async (): Promise<TwoStepEthTransaction | void> => {\n    if (this.state.error) {\n      return;\n    }\n    return this.context.applyToTCR(this.props.match.params.newsroomAddress, this.state.multisigAddr);\n  };\n\n  private postApply = (result: any) => {\n    const listingURI = formatRoute(routes.LISTING, { listingAddress: this.props.match.params.newsroomAddress });\n    this.props.history.push(listingURI);\n  };\n\n  private onArticleURLChange = async (e: any) => {\n    return this.setState({ articleURL: e.target.value });\n  };\n\n  private submitArticle = async (): Promise<TwoStepEthTransaction> => {\n    const newsroomInstance = await this.context.getNewsroom(this.props.match.params.newsroomAddress);\n    return newsroomInstance.publishRevision(this.state.articleURL);\n  };\n\n  private onEditorAddressChange = async (e: any) => {\n    return this.setState({ editorAddress: e.target.value });\n  };\n\n  private addEditor = async (): Promise<TwoStepEthTransaction> => {\n    return this.addRole(NewsroomRoles.Editor);\n  };\n\n  private addRole = async (role: NewsroomRoles): Promise<TwoStepEthTransaction> => {\n    const newsroomInstance = await getNewsroom(this.props.match.params.newsroomAddress);\n    return newsroomInstance.addRole(this.state.editorAddress, role);\n  };\n\n  private onNumTokensChange = async (e: any) => {\n    return this.setState({ numTokens: e.target.value });\n  };\n\n  private sendTokenToMultisig = async (): Promise<TwoStepEthTransaction | void> => {\n    const numTokens = parseEther(this.state.numTokens);\n    if (!numTokens) {\n      this.setState({ error: \"Please enter a valid number of tokens\" });\n      // TODO(tobek) returning leaves button in \"waiting for transaction\" state, should just do nothing\n      return;\n    }\n    this.setState({ error: \"\" });\n\n    const civil = new Civil();\n    const tcr = await civil.tcrSingletonTrusted();\n    const token = await tcr.getToken();\n    return token.transfer(this.state.multisigAddr, numTokens);\n  };\n\n  private postSendToken = async () => {\n    const civil = new Civil();\n    const tcr = await civil.tcrSingletonTrusted();\n    const token = await tcr.getToken();\n    const balance = await token.getBalance(this.state.multisigAddr);\n    this.setState({\n      multisigBalance: balance,\n      numTokens: \"\",\n    });\n    // TODO(tobek) should also update user's CVL balance in header nav\n  };\n\n  private initNewsroom = async () => {\n    const newsroom = await getNewsroom(this.props.match.params.newsroomAddress);\n    this.setState({ newsroom });\n\n    const data = await newsroom.getNewsroomData();\n    if (data.charter) {\n      const charterStuff =\n        typeof data.charter.content === \"string\" ? JSON.parse(data.charter.content) : data.charter.content;\n      this.setState({\n        descValue: charterStuff.desc,\n        value: RichTextEditor.createValueFromString(charterStuff.charter, \"html\"),\n      });\n    }\n    if (newsroom) {\n      this.state.compositeSubscription.add(\n        newsroom.revisions().subscribe((contentHeader: any) => {\n          this.setState({ proposedArticleIds: this.state.proposedArticleIds.push(contentHeader.id) });\n        }),\n      );\n\n      const multisigAddr = await newsroom.getMultisigAddress();\n      this.setState({ multisigAddr });\n      if (multisigAddr) {\n        const civil = new Civil();\n        const tcr = await civil.tcrSingletonTrusted();\n        const token = await tcr.getToken();\n        const balance = await token.getBalance(multisigAddr);\n        this.setState({ multisigBalance: balance });\n      }\n    }\n  };\n}\n\nexport default NewsroomManagement;\n"
  },
  {
    "path": "packages/dapp/src/components/newsroom/NewsroomManagementV2.tsx",
    "content": "import * as React from \"react\";\nimport { CivilContext, ICivilContext } from \"@joincivil/components\";\nimport { ethereumEnable } from \"@joincivil/utils\";\nimport { Newsroom } from \"@joincivil/newsroom-manager\";\n\nexport interface NewsroomManagementProps {\n  match: any;\n}\n\nexport interface NewsroomManagementState {\n  metamaskEnabled?: boolean;\n}\n\nexport default class NewsroomManagement extends React.Component<NewsroomManagementProps, NewsroomManagementState> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  constructor(props: NewsroomManagementProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public async componentDidMount(): Promise<void> {\n    this.setState({ metamaskEnabled: !!(await ethereumEnable()) });\n  }\n  public render(): JSX.Element {\n    const { civil } = this.context;\n    return (\n      <Newsroom\n        civil={civil}\n        address={this.props.match.params.newsroomAddress}\n        metamaskEnabled={this.state.metamaskEnabled}\n        allSteps={true}\n        enable={async () => {\n          this.setState({ metamaskEnabled: !!(await ethereumEnable()) });\n        }}\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/components/providers/AnalyticsProvider.tsx",
    "content": "import * as React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { CivilContext, ICivilContext } from \"@joincivil/components\";\nimport { analyticsEvent } from \"../../redux/actionCreators/analytics\";\nimport { catchWindowOnError } from \"../../redux/actionCreators/errors\";\n\nexport const AnalyticsProvider: React.FunctionComponent = ({ children }) => {\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  const dispatch = useDispatch();\n\n  React.useEffect(() => {\n    function fireAnalyticsEvent(category: string, action: string, label: string, value: number): void {\n      dispatch!(analyticsEvent({ category, action, label, value }));\n    }\n    civilCtx.setAnalyticsEvent(fireAnalyticsEvent);\n\n    window.onerror = (message: string, source: string, lineNum: string, colNum: string, errorObj: any) => {\n      dispatch!(catchWindowOnError(message, source, lineNum, colNum, errorObj));\n    };\n  }, [civilCtx, dispatch]);\n\n  return <>{children}</>;\n};\n\nexport default AnalyticsProvider;\n"
  },
  {
    "path": "packages/dapp/src/components/providers/AppProvider.tsx",
    "content": "import * as React from \"react\";\nimport { ApolloProvider } from \"react-apollo\";\nimport { ConnectedRouter } from \"connected-react-router\";\n\nimport { INFURA_WEBSOCKET_HOSTS } from \"@joincivil/ethapi\";\nimport { setNetworkValue, getApolloClient } from \"@joincivil/utils\";\nimport { CivilProvider } from \"@joincivil/components\";\n\nimport { ErrorBoundry } from \"../errors/ErrorBoundry\";\n\nimport config from \"../../helpers/config\";\nimport { store, history } from \"../../redux/store\";\nimport { Web3AuthWrapper } from \"../Web3AuthWrapper\";\nimport AnalyticsProvider from \"./AnalyticsProvider\";\n\nimport { Provider } from \"react-redux\";\n\nconsole.log(\"using config:\", config);\n\nif (config.DEFAULT_ETHEREUM_NETWORK) {\n  setNetworkValue(parseInt(config.DEFAULT_ETHEREUM_NETWORK, 10));\n}\nconst client = getApolloClient();\n\nconst pluginConfig = {\n  dmz: {\n    targetOrigin: config.KIRBY_TARGET_ORIGIN,\n    iframeSrc: config.KIRBY_IFRAME_SRC,\n  },\n  ethereum: {\n    defaultNetwork: config.DEFAULT_ETHEREUM_NETWORK === \"1\" ? \"mainnet\" : \"rinkeby\",\n    networks: {\n      mainnet: INFURA_WEBSOCKET_HOSTS.MAINNET + \"/\" + config.INFURA_APP_KEY,\n      rinkeby: INFURA_WEBSOCKET_HOSTS.RINKEBY + \"/\" + config.INFURA_APP_KEY,\n    },\n  },\n};\n\nexport const AppProvider: React.FunctionComponent = ({ children }) => {\n  const featureFlags = config.FEATURE_FLAGS ? config.FEATURE_FLAGS.split(\",\") : [];\n\n  return (\n    <ErrorBoundry>\n      <Provider store={store}>\n        <ApolloProvider client={client}>\n          <CivilProvider pluginConfig={pluginConfig} featureFlags={featureFlags} config={config}>\n            <AnalyticsProvider>\n              <ConnectedRouter history={history}>\n                <>\n                  {children}\n                  <Web3AuthWrapper />\n                </>\n              </ConnectedRouter>\n            </AnalyticsProvider>\n          </CivilProvider>\n        </ApolloProvider>\n      </Provider>\n    </ErrorBoundry>\n  );\n};\n\nexport default AppProvider;\n"
  },
  {
    "path": "packages/dapp/src/components/utility/AsyncComponent.tsx",
    "content": "import * as React from \"react\";\n\nexport default function AsyncComponent(Component: React.LazyExoticComponent<any>, extraProps?: any): any {\n  return (props: any) => (\n    <React.Suspense fallback={<div>Loading...</div>}>\n      <Component {...props} {...extraProps} />\n    </React.Suspense>\n  );\n}\n"
  },
  {
    "path": "packages/dapp/src/components/utility/CompleteChallengeResultsHOC.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { Query } from \"react-apollo\";\nimport { ChallengeResultsProps, AppealChallengeResultsProps, AppealChallengePhaseProps } from \"@joincivil/components\";\n\nimport { State } from \"../../redux/reducers\";\nimport { transformGraphQLDataIntoChallenge, CHALLENGE_QUERY } from \"@joincivil/utils\";\nimport { getChallengeResultsProps, getAppealChallengeResultsProps } from \"../../helpers/transforms\";\n\nimport { ChallengeContainerProps, ChallengeContainerReduxProps } from \"./HigherOrderComponents\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport ErrorLoadingDataMsg from \"./ErrorLoadingData\";\n\n/**\n * Given a `challengeID`, this container fetches the complete challenge data, including appeal and appeal challenge data from the Redux store or GraphQL\n * then extracts and passes props for rendering a Challenge Results component\n */\nexport const connectCompleteChallengeResults = <TOriginalProps extends ChallengeContainerProps>(\n  PresentationComponent:\n    | React.ComponentClass<\n        TOriginalProps & ChallengeResultsProps & AppealChallengePhaseProps & AppealChallengeResultsProps\n      >\n    | React.FunctionComponent<\n        TOriginalProps & ChallengeResultsProps & AppealChallengePhaseProps & AppealChallengeResultsProps\n      >,\n) => {\n  const mapStateToProps = (state: State, ownProps: TOriginalProps): TOriginalProps & ChallengeContainerReduxProps => {\n    const { user } = state.networkDependent;\n    let challengeID = ownProps.challengeID;\n    if (challengeID) {\n      challengeID = (challengeID.toString && challengeID.toString()) || challengeID;\n    }\n\n    const userAcct = user.account;\n    // Can't use spread here b/c of TS issue with spread and generics\n    // https://github.com/Microsoft/TypeScript/pull/13288\n    // tslint:disable-next-line:prefer-object-spread\n    return Object.assign({}, ownProps, {\n      challengeID,\n      user: userAcct.account,\n    });\n  };\n\n  class HOChallengeResultsContainer extends React.Component<\n    TOriginalProps & ChallengeContainerReduxProps & DispatchProp<any>\n  > {\n    public static contextType = CivilHelperContext;\n    public context: CivilHelper;\n\n    public render(): JSX.Element | null {\n      return (\n        <Query query={CHALLENGE_QUERY} variables={{ challengeID: this.props.challengeID }}>\n          {({ loading, error, data }: any): JSX.Element | null => {\n            if (loading) {\n              return null;\n            }\n            if (error) {\n              console.error(\"Eror loading Challenge Results. challengeID: \", this.props.challengeID);\n              return <ErrorLoadingDataMsg />;\n            }\n            const challenge = transformGraphQLDataIntoChallenge(data.challenge);\n            const challengeResultsProps = getChallengeResultsProps(challenge!) as ChallengeResultsProps;\n            let appealPhaseProps = {};\n            if (challenge && challenge.appeal) {\n              appealPhaseProps = {\n                appealRequested: !challenge.appeal.appealFeePaid.isZero(),\n                appealGranted: challenge.appeal.appealGranted,\n              };\n            }\n            let appealChallengePhaseProps = {};\n            if (challenge && challenge.appeal && challenge.appeal.appealChallengeID) {\n              appealChallengePhaseProps = {\n                appealChallengeID: challenge.appeal.appealChallengeID.toString(),\n              };\n            }\n            let appealChallengeResultsProps = {};\n            if (challenge && challenge.appeal && challenge.appeal.appealChallenge) {\n              appealChallengeResultsProps = getAppealChallengeResultsProps(\n                challenge.appeal.appealChallenge,\n              ) as AppealChallengeResultsProps;\n            }\n            const challengeID = this.props.challengeID && this.props.challengeID.toString();\n            return (\n              <PresentationComponent\n                {...this.props}\n                {...challengeResultsProps}\n                {...appealPhaseProps}\n                {...appealChallengePhaseProps}\n                {...appealChallengeResultsProps}\n                challengeID={challengeID}\n              />\n            );\n          }}\n        </Query>\n      );\n    }\n  }\n\n  return connect(mapStateToProps)(HOChallengeResultsContainer);\n};\n"
  },
  {
    "path": "packages/dapp/src/components/utility/CountdownTimer.tsx",
    "content": "import * as React from \"react\";\nimport { getReadableDuration } from \"@joincivil/utils\";\n\nexport interface CountdownTimerProps {\n  endTime: number;\n}\n\nexport interface CountdownTimerState {\n  secondsRemaining: number;\n  timer?: number;\n}\n\nclass CountdownTimer extends React.Component<CountdownTimerProps, CountdownTimerState> {\n  constructor(props: CountdownTimerProps) {\n    super(props);\n    this.state = {\n      secondsRemaining: 0,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    return this.initCountdown();\n  }\n\n  public render(): JSX.Element {\n    return this.renderApplicationPhase();\n  }\n\n  public componentWillUnmount(): void {\n    if (this.state.timer) {\n      window.clearInterval(this.state.timer);\n    }\n  }\n\n  private renderApplicationPhase(): JSX.Element {\n    return <>{this.getReadableTimeRemaining()}</>;\n  }\n\n  private getReadableTimeRemaining = (): string => {\n    return getReadableDuration(this.state.secondsRemaining);\n  };\n\n  // TODO(nickreynolds): move this all into redux\n  private initCountdown = async () => {\n    const timeRemaining = this.updateTimeRemaining();\n    if (timeRemaining > 0) {\n      this.setState({ timer: window.setInterval(this.updateTimeRemaining, 1000) });\n    } else {\n      window.clearInterval(this.state.timer);\n    }\n  };\n\n  private updateTimeRemaining = () => {\n    const expiry = this.props.endTime;\n    const currentTime = parseInt((Date.now() / 1000).toString(), 10); // convert from milliseconds\n    const secondsRemaining = expiry - currentTime;\n    this.setState({ secondsRemaining });\n    return secondsRemaining;\n  };\n}\n\nexport default CountdownTimer;\n"
  },
  {
    "path": "packages/dapp/src/components/utility/ErrorLoadingData.tsx",
    "content": "import * as React from \"react\";\n\nimport { ErrorLoadingData } from \"@joincivil/components\";\n\nimport { StyledInPageMsgContainer } from \"./styledComponents\";\n\nconst ErrorLoadingDataMsg = () => {\n  return (\n    <StyledInPageMsgContainer>\n      <ErrorLoadingData />\n    </StyledInPageMsgContainer>\n  );\n};\n\nexport default ErrorLoadingDataMsg;\n"
  },
  {
    "path": "packages/dapp/src/components/utility/ErrorNotFound.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { ErrorNotFound } from \"@joincivil/components\";\n\nimport { StyledInPageMsgContainer } from \"./styledComponents\";\n\nconst ErrorNotFoundMsg: React.FunctionComponent = props => {\n  const defaultCopy = \"We could not find the page you were looking for.\";\n  return (\n    <StyledInPageMsgContainer>\n      <ErrorNotFound>\n        {props.children || defaultCopy}\n        <p>\n          Please check the URL or view <Link to=\"/registry\">The Civil Registry</Link> to view all current newsroom\n          listings.\n        </p>\n      </ErrorNotFound>\n    </StyledInPageMsgContainer>\n  );\n};\n\nexport default ErrorNotFoundMsg;\n"
  },
  {
    "path": "packages/dapp/src/components/utility/FormElements.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\n\nexport const StyledFormContainer = styled.div`\n  margin: 1rem 0;\n`;\n\nexport const FormValidationMessage = styled.div`\n  color: #c00;\n  font-weight: bold;\n`;\n\nexport const FormGroup = styled.div`\n  margin: 0 0 1rem;\n`;\n\nexport interface InputElementProps {\n  type: string;\n  name?: string;\n  value?: string;\n  readOnly?: boolean;\n  onChange?(event: any): void;\n  validate?(event: any): void;\n}\n\nexport interface InputSelectElementProps {\n  options: string[];\n  name?: string;\n  value?: string;\n  onChange?(event: any): void;\n}\n\nexport class InputElement extends React.Component<InputElementProps> {\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <input\n        type={this.props.type}\n        name={this.props.name}\n        value={this.props.value}\n        readOnly={this.props.readOnly}\n        onChange={this.onChange}\n      />\n    );\n  }\n\n  private onChange = (event: any): void => {\n    if (this.props.onChange) {\n      this.props.onChange(event);\n    }\n\n    if (this.props.validate) {\n      this.props.validate(event);\n    }\n  };\n}\n\nexport class InputSelectElement extends React.Component<InputSelectElementProps> {\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <select name={this.props.name} value={this.props.value} onChange={this.onChange}>\n        {this.props.options.map(\n          (option: string): JSX.Element => {\n            const optionData = [option, option];\n            return <InputSelectOptionElement option={optionData as [string, string]} key={option} />;\n          },\n        )}\n      </select>\n    );\n  }\n\n  private onChange = (event: any): void => {\n    if (this.props.onChange) {\n      this.props.onChange(event);\n    }\n  };\n}\n\nexport interface InputElementOptionProps {\n  option: [string, string];\n}\n\nclass InputSelectOptionElement extends React.Component<InputElementOptionProps> {\n  constructor(props: any) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return <option value={this.props.option[1]}>{this.props.option[0]}</option>;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/components/utility/HigherOrderComponents.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport styled from \"styled-components/macro\";\nimport {\n  BigNumber,\n  EthAddress,\n  ListingWrapper,\n  WrappedChallengeData,\n  AppealChallengeData,\n  ParamPropChallengeData,\n} from \"@joincivil/typescript-types\";\nimport {\n  ChallengeResultsProps,\n  ChallengePhaseProps,\n  ProgressBarCountdownProps,\n  PHASE_TYPE_NAMES,\n  PHASE_TYPE_LABEL,\n  PHASE_TYPE_FLAVOR_TEXT,\n  AppealChallengeResultsProps,\n  ErrorLoadingData,\n} from \"@joincivil/components\";\nimport {\n  getFormattedTokenBalance,\n  Parameters,\n  transformGraphQLDataIntoChallenge,\n  CHALLENGE_QUERY,\n  PARAMETERS_QUERY,\n} from \"@joincivil/utils\";\nimport { State } from \"../../redux/reducers\";\nimport { Query } from \"react-apollo\";\nimport { getChallengeResultsProps, getAppealChallengeResultsProps } from \"../../helpers/transforms\";\nimport { CivilHelper, CivilHelperContext } from \"../../apis/CivilHelper\";\nimport { Map } from \"immutable\";\nimport { compose } from \"redux\";\n\nexport interface ListingContainerProps {\n  listingAddress: EthAddress;\n}\n\nexport interface ChallengeContainerProps {\n  challengeID?: BigNumber | string;\n  isProposalChallenge?: boolean;\n}\n\nexport interface AppealChallengeContainerProps {\n  appealChallengeID?: BigNumber | string;\n}\n\nexport interface ChallengeContainerReduxProps {\n  challengeData?: WrappedChallengeData;\n  appealChallengeData?: AppealChallengeData;\n  proposalChallengeData?: ParamPropChallengeData;\n  challengeDataRequestStatus?: any;\n  challengeState?: any;\n  dispensationPct?: any;\n  user: EthAddress;\n}\n\nexport interface PhaseCountdownTimerProps {\n  phaseType: string;\n  listing?: ListingWrapper;\n  challenge?: WrappedChallengeData;\n}\n\nexport interface PhaseCountdownReduxProps {\n  govtParameters: any;\n}\n\n/**\n * Generates a HO-Component Container for Challenge Succeeded/Failed Event\n * presentation components.\n * Given a `challengeID`, this container fetches the challenge data from the Redux store\n * then extracts and passes props for rendering a Challenge Results component\n */\nexport const connectChallengeResults = <TOriginalProps extends ChallengeContainerProps>(\n  PresentationComponent:\n    | React.ComponentClass<TOriginalProps & ChallengeResultsProps>\n    | React.FunctionComponent<TOriginalProps & ChallengeResultsProps>,\n) => {\n  const mapStateToProps = (state: State, ownProps: TOriginalProps): TOriginalProps & ChallengeContainerReduxProps => {\n    const { user } = state.networkDependent;\n\n    const userAcct = user.account;\n    // Can't use spread here b/c of TS issue with spread and generics\n    // https://github.com/Microsoft/TypeScript/pull/13288\n    // tslint:disable-next-line:prefer-object-spread\n    return Object.assign({}, ownProps, {\n      user: userAcct.account,\n    });\n  };\n\n  class HOChallengeResultsContainer extends React.Component<\n    TOriginalProps & ChallengeContainerReduxProps & DispatchProp<any>\n  > {\n    public static contextType = CivilHelperContext;\n    public context: CivilHelper;\n\n    public render(): JSX.Element | null {\n      return (\n        <Query query={CHALLENGE_QUERY} variables={{ challengeID: this.props.challengeID }}>\n          {({ loading, error, data }: any): JSX.Element | null => {\n            if (loading) {\n              return null;\n            }\n            if (error) {\n              return null;\n            }\n            const { challengeID } = this.props;\n            const challenge = transformGraphQLDataIntoChallenge(data.challenge);\n            const challengeResultsProps = getChallengeResultsProps(challenge!) as ChallengeResultsProps;\n\n            let appealPhaseProps = {};\n            if (challenge && challenge.appeal) {\n              appealPhaseProps = {\n                appealRequested: !challenge.appeal.appealFeePaid.isZero(),\n                appealGranted: challenge.appeal.appealGranted,\n              };\n            }\n            let appealChallengePhaseProps = {};\n            if (challenge && challenge.appeal && challenge.appeal.appealChallengeID) {\n              appealChallengePhaseProps = {\n                appealChallengeID: challenge.appeal.appealChallengeID.toString(),\n              };\n            }\n            let appealChallengeResultsProps = {};\n            if (challenge && challenge.appeal && challenge.appeal.appealChallenge) {\n              appealChallengeResultsProps = getAppealChallengeResultsProps(\n                challenge.appeal.appealChallenge,\n              ) as AppealChallengeResultsProps;\n            }\n\n            return (\n              <>\n                <PresentationComponent\n                  {...this.props}\n                  {...challengeResultsProps}\n                  {...appealPhaseProps}\n                  {...appealChallengePhaseProps}\n                  {...appealChallengeResultsProps}\n                  challengeID={challengeID!.toString()}\n                />\n              </>\n            );\n          }}\n        </Query>\n      );\n    }\n  }\n\n  return connect(mapStateToProps)(HOChallengeResultsContainer);\n};\n\nconst parametersArray = [\n  Parameters.minDeposit,\n  Parameters.pMinDeposit,\n  Parameters.applyStageLen,\n  Parameters.pApplyStageLen,\n  Parameters.commitStageLen,\n  Parameters.pCommitStageLen,\n  Parameters.revealStageLen,\n  Parameters.pRevealStageLen,\n  Parameters.dispensationPct,\n  Parameters.pDispensationPct,\n  Parameters.voteQuorum,\n  Parameters.pVoteQuorum,\n  Parameters.challengeAppealLen,\n  Parameters.challengeAppealCommitLen,\n  Parameters.challengeAppealRevealLen,\n];\n\nexport interface ParametersProps {\n  parameters: Map<string, BigNumber>;\n}\n\nexport const connectParameters = <TOriginalProps extends any>(\n  PresentationComponent: React.ComponentClass<TOriginalProps & ParametersProps>,\n) => {\n  class ParametersContainer extends React.Component<TOriginalProps> {\n    public render(): JSX.Element {\n      return (\n        <Query query={PARAMETERS_QUERY} variables={{ input: parametersArray }}>\n          {({ loading, error, data }) => {\n            if (loading) {\n              return <></>;\n            } else if (error) {\n              console.error(\"error retrieving parameters: \", error);\n              return <ErrorLoadingData />;\n            }\n            const parameters = Map<string, BigNumber>(\n              data.parameters.map(param => {\n                return [param.paramName, new BigNumber(param.value)];\n              }),\n            );\n            return <PresentationComponent parameters={parameters} {...this.props} />;\n          }}\n        </Query>\n      );\n    }\n  }\n\n  return ParametersContainer;\n};\n\n/**\n * Generates a HO-Component Container for My Dashboard Activity Item\n * presentation components.\n * Given a `endTime` and `paramName`, this container fetches the phase length from\n * the parameterizer and passes the props for rendering a Phase Countdown Progress\n * bar to the presentation component\n */\nexport const connectPhaseCountdownTimer = <TOriginalProps extends ChallengeContainerProps>(\n  PresentationComponent: React.ComponentType<ProgressBarCountdownProps>,\n) => {\n  const mapStateToProps = (\n    state: State,\n    ownProps: PhaseCountdownTimerProps,\n  ): PhaseCountdownTimerProps & PhaseCountdownReduxProps => {\n    const { govtParameters } = state.networkDependent;\n\n    return {\n      ...ownProps,\n      govtParameters,\n    };\n  };\n\n  class HOContainer extends React.Component<\n    PhaseCountdownTimerProps & PhaseCountdownReduxProps & DispatchProp<any> & ParametersProps\n  > {\n    public static contextType = CivilHelperContext;\n    public context: CivilHelper;\n\n    public render(): JSX.Element | null {\n      let displayLabel: string | React.FunctionComponent = \"\";\n      let flavorText;\n      let endTime = 0;\n      let totalSeconds = 0;\n\n      const { phaseType, challenge, parameters, govtParameters } = this.props;\n\n      switch (phaseType) {\n        case PHASE_TYPE_NAMES.CHALLENGE_COMMIT_VOTE:\n          if (challenge) {\n            endTime = challenge.challenge.poll.commitEndDate.toNumber();\n          }\n          totalSeconds = parameters.get(Parameters.commitStageLen).toNumber();\n          break;\n        case PHASE_TYPE_NAMES.CHALLENGE_REVEAL_VOTE:\n          if (challenge) {\n            endTime = challenge.challenge.poll.revealEndDate.toNumber();\n          }\n          totalSeconds = parameters.get(Parameters.revealStageLen).toNumber();\n          break;\n        case PHASE_TYPE_NAMES.CHALLENGE_AWAITING_APPEAL_REQUEST:\n          if (challenge) {\n            endTime = challenge.challenge.requestAppealExpiry.toNumber();\n          }\n          totalSeconds = govtParameters.requestAppealLen;\n          break;\n        case PHASE_TYPE_NAMES.CHALLENGE_AWAITING_APPEAL_JUDGEMENT:\n          if (challenge && challenge.challenge.appeal) {\n            endTime = challenge.challenge.appeal.appealPhaseExpiry.toNumber();\n          }\n          totalSeconds = govtParameters.judgeAppealLen;\n          break;\n        case PHASE_TYPE_NAMES.CHALLENGE_AWAITING_APPEAL_CHALLENGE:\n          if (challenge && challenge.challenge.appeal) {\n            endTime = challenge.challenge.appeal.appealOpenToChallengeExpiry.toNumber();\n          }\n          totalSeconds = parameters.get(Parameters.challengeAppealLen).toNumber();\n          break;\n        case PHASE_TYPE_NAMES.APPEAL_CHALLENGE_COMMIT_VOTE:\n          if (challenge && challenge.challenge.appeal && challenge.challenge.appeal.appealChallenge) {\n            endTime = challenge.challenge.appeal.appealChallenge.poll.commitEndDate.toNumber();\n          }\n          totalSeconds = parameters.get(Parameters.challengeAppealCommitLen).toNumber();\n          break;\n        case PHASE_TYPE_NAMES.APPEAL_CHALLENGE_REVEAL_VOTE:\n          if (challenge && challenge.challenge.appeal && challenge.challenge.appeal.appealChallenge) {\n            endTime = challenge.challenge.appeal.appealChallenge.poll.revealEndDate.toNumber();\n          }\n          totalSeconds = parameters.get(Parameters.challengeAppealRevealLen).toNumber();\n          break;\n      }\n\n      if (phaseType) {\n        displayLabel = PHASE_TYPE_LABEL[this.props.phaseType] || \"\";\n        flavorText = PHASE_TYPE_FLAVOR_TEXT[this.props.phaseType] || \"\";\n      }\n\n      const props = {\n        displayLabel,\n        flavorText,\n        endTime,\n        totalSeconds,\n      };\n\n      return <PresentationComponent {...props} />;\n    }\n  }\n\n  return compose(\n    connectParameters,\n    connect(mapStateToProps),\n  )(HOContainer);\n};\n\n/**\n * Generates a HO-Component Container for that gets the Challenge data\n * (challenger, reward pool, etc) * and passes those results to a\n * Presentation Component\n */\nexport const connectChallengePhase = <TChallengeContainerProps extends ChallengeContainerProps>(\n  PhaseCardComponent:\n    | React.ComponentClass<TChallengeContainerProps & ChallengePhaseProps>\n    | React.FunctionComponent<TChallengeContainerProps & ChallengePhaseProps>,\n) => {\n  const mapStateToProps = (\n    state: State,\n    ownProps: ChallengeContainerProps,\n  ): ChallengeContainerReduxProps & ChallengeContainerProps => {\n    const { user } = state.networkDependent;\n    const userAcct = user.account;\n    return {\n      ...ownProps,\n      challengeID: ownProps.challengeID!.toString(),\n      user: userAcct.account,\n    };\n  };\n\n  class HOChallengePhaseContainer extends React.Component<\n    TChallengeContainerProps & ChallengeContainerReduxProps & DispatchProp<any> & ParametersProps\n  > {\n    public static contextType = CivilHelperContext;\n    public context: CivilHelper;\n\n    public render(): JSX.Element | undefined {\n      const dispensationPct = this.props.parameters.get(Parameters.dispensationPct).toString();\n      return (\n        <Query query={CHALLENGE_QUERY} variables={{ challengeID: this.props.challengeID }}>\n          {({ loading, error, data }: any): JSX.Element | null => {\n            if (loading) {\n              return null;\n            }\n            if (error) {\n              return null;\n            }\n            const challenge = transformGraphQLDataIntoChallenge(data.challenge);\n            return (\n              <>\n                <PhaseCardComponent\n                  {...this.props}\n                  challenger={challenge!.challenger.toString()}\n                  isViewingUserChallenger={challenge!.challenger.toString() === this.props.user}\n                  rewardPool={getFormattedTokenBalance(challenge!.rewardPool)}\n                  stake={getFormattedTokenBalance(challenge!.stake)}\n                  dispensationPct={dispensationPct}\n                />\n              </>\n            );\n          }}\n        </Query>\n      );\n    }\n  }\n\n  return compose(\n    connectParameters,\n    connect(mapStateToProps),\n  )(HOChallengePhaseContainer);\n};\n"
  },
  {
    "path": "packages/dapp/src/components/utility/ScrollToTop.tsx",
    "content": "import * as React from \"react\";\n\nclass ScrollToTopOnMount extends React.Component {\n  public componentDidMount(): void {\n    window.scrollTo(0, 0);\n  }\n\n  public render(): null {\n    return null;\n  }\n}\n\nexport default ScrollToTopOnMount;\n"
  },
  {
    "path": "packages/dapp/src/components/utility/TransactionStatusModalsHOC.tsx",
    "content": "import * as React from \"react\";\nimport {\n  Button,\n  buttonSizes,\n  LoadingIndicator,\n  MetaMaskModal,\n  Modal,\n  ModalContentInsetContainer,\n  ModalHeading,\n  ModalContent,\n  ModalStepLabel,\n  ProgressModalContentError,\n  ProgressModalContentInProgress,\n} from \"@joincivil/components\";\n\nexport interface InjectedTransactionStatusModalProps {\n  setTransactions(transactions: any[]): void;\n  setHandleTransactionSuccessButtonClick(handleTransactionSuccessButtonClick: () => void): void;\n  setCancelTransaction(cancelTransaction: () => void): void;\n  setTransactionStatusModalConfig(newConfig: TransactionStatusModalsConfigProps): void;\n  updateTransactionStatusModalsState(newState: TransactionStatusModalState): void;\n  handleTransactionError(err: Error): void;\n  closeAllModals(): void;\n}\n\nexport interface TransactionStatusModalState {\n  isWaitingTransactionModalOpen?: boolean;\n  isTransactionProgressModalOpen?: boolean;\n  isTransactionSuccessModalOpen?: boolean;\n  isTransactionErrorModalOpen?: boolean;\n  isTransactionRejectionModalOpen?: boolean;\n  isIPFSUploadModalOpen?: boolean;\n  transactionType?: number | string;\n}\n\nexport type TransactionStatusModalContent = string | JSX.Element | undefined;\n\nexport interface TransactionStatusModalContentMap {\n  [index: string]: Array<string | JSX.Element | undefined>;\n}\n\nexport interface TransactionStatusModalsConfigProps {\n  transactionLabels?: { [index: string]: string };\n  multiStepTransactionLabels?: { [index: string]: string };\n  transactionSuccessContent?: TransactionStatusModalContentMap;\n  transactionRejectionContent?: TransactionStatusModalContentMap;\n  transactionErrorContent?: TransactionStatusModalContentMap;\n}\n\nexport const hasTransactionStatusModals = (transactionStatusModalConfig: TransactionStatusModalsConfigProps) => <\n  TOriginalProps extends {}\n>(\n  WrappedComponent: React.ComponentType<TOriginalProps & InjectedTransactionStatusModalProps>,\n) => {\n  return class ComponentWithTransactionStatusModals extends React.Component<\n    TOriginalProps & InjectedTransactionStatusModalProps,\n    TransactionStatusModalState\n  > {\n    public transactionStatusModalConfig: TransactionStatusModalsConfigProps;\n    public transactions: any[];\n    public cancelTransaction: () => void;\n    public handleTransactionSuccessButtonClick: () => void;\n\n    constructor(props: TOriginalProps & InjectedTransactionStatusModalProps) {\n      super(props);\n      this.transactionStatusModalConfig = transactionStatusModalConfig;\n      this.state = {\n        isWaitingTransactionModalOpen: false,\n        isTransactionProgressModalOpen: false,\n        isTransactionSuccessModalOpen: false,\n        isTransactionErrorModalOpen: false,\n        isTransactionRejectionModalOpen: false,\n        transactionType: undefined,\n      };\n    }\n\n    public render(): JSX.Element {\n      const cancelTransaction = this.cancelTransaction\n        ? this.cancelTransaction\n        : () => {\n            this.closeAllModals();\n          };\n      return (\n        <>\n          <WrappedComponent\n            setTransactions={this.setTransactions}\n            setCancelTransaction={this.setCancelTransaction}\n            setTransactionStatusModalConfig={this.setTransactionStatusModalConfig}\n            setHandleTransactionSuccessButtonClick={this.setHandleTransactionSuccessButtonClick}\n            updateTransactionStatusModalsState={(newState: TransactionStatusModalState) =>\n              this.updateTransactionStatusModalsState(newState)\n            }\n            handleTransactionError={(err: Error) => this.handleTransactionError(err)}\n            closeAllModals={this.closeAllModals}\n            {...this.props}\n          />\n          {this.renderAwaitingTransactionModal()}\n          {this.renderTransactionProgressModal()}\n          {this.renderIPFSUploadProgressModal()}\n          {this.renderTransactionSuccessModal()}\n          {this.renderTransactionErrorModal()}\n          {this.renderTransactionRejectionModal(cancelTransaction)}\n        </>\n      );\n    }\n\n    public updateTransactionStatusModalsState = (newState: TransactionStatusModalState) => {\n      this.setState(newState);\n    };\n\n    public renderTransactionSuccessModal(): JSX.Element | null {\n      if (!this.state.isTransactionSuccessModalOpen) {\n        return null;\n      }\n      const { transactionSuccessContent } = this.transactionStatusModalConfig;\n      const successContent = transactionSuccessContent![this.state.transactionType!];\n      const onClick = this.handleTransactionSuccessButtonClick || this.closeAllModals;\n\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <ModalHeading>{successContent[0]}</ModalHeading>\n          <ModalContentInsetContainer>{successContent[1]}</ModalContentInsetContainer>\n          <Button size={buttonSizes.MEDIUM} onClick={onClick}>\n            Ok, got it\n          </Button>\n        </Modal>\n      );\n    }\n\n    public renderAwaitingTransactionModal(): JSX.Element | null {\n      if (!this.state.isWaitingTransactionModalOpen) {\n        return null;\n      }\n      const { transactionLabels, multiStepTransactionLabels } = this.transactionStatusModalConfig;\n\n      const transactionLabel = transactionLabels![this.state.transactionType!];\n      const stepLabelText =\n        (multiStepTransactionLabels && multiStepTransactionLabels[this.state.transactionType!]) || \"1 of 1\";\n      const stepLabel = `Step ${stepLabelText} - ${transactionLabel}`;\n      return (\n        <MetaMaskModal waiting={true}>\n          <ModalStepLabel>{stepLabel}</ModalStepLabel>\n          <ModalHeading>Waiting for you to confirm in MetaMask</ModalHeading>\n        </MetaMaskModal>\n      );\n    }\n\n    public renderIPFSUploadProgressModal(): JSX.Element | null {\n      if (!this.state.isIPFSUploadModalOpen) {\n        return null;\n      }\n      const { transactionLabels, multiStepTransactionLabels } = this.transactionStatusModalConfig;\n      const transactionLabel = transactionLabels![this.state.transactionType!];\n      const stepLabelText =\n        (multiStepTransactionLabels && multiStepTransactionLabels[this.state.transactionType!]) || \"1 of 1\";\n      const stepLabel = `Step ${stepLabelText} - ${transactionLabel}`;\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <LoadingIndicator height={100} width={150} />\n          <ModalStepLabel>{stepLabel}</ModalStepLabel>\n          <ModalHeading>Posting to IPFS</ModalHeading>\n          <ModalContentInsetContainer>\n            <ModalContent>This can take several moments. Please don't close the tab.</ModalContent>\n            <ModalContent>\n              How about taking a little breather and standing for a bit? Maybe even stretching?\n            </ModalContent>\n          </ModalContentInsetContainer>\n        </Modal>\n      );\n    }\n\n    public renderTransactionProgressModal(): JSX.Element | null {\n      if (!this.state.isTransactionProgressModalOpen) {\n        return null;\n      }\n      const { transactionLabels, multiStepTransactionLabels } = this.transactionStatusModalConfig;\n      const transactionLabel = transactionLabels![this.state.transactionType!];\n      const stepLabelText =\n        (multiStepTransactionLabels && multiStepTransactionLabels[this.state.transactionType!]) || \"1 of 1\";\n      const stepLabel = `Step ${stepLabelText} - ${transactionLabel}`;\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <ProgressModalContentInProgress>\n            <ModalStepLabel>{stepLabel}</ModalStepLabel>\n            <ModalHeading>{transactionLabel}</ModalHeading>\n          </ProgressModalContentInProgress>\n        </Modal>\n      );\n    }\n\n    public renderTransactionRejectionModal(cancelTransaction: (() => void) | undefined): JSX.Element | null {\n      if (!this.state.isTransactionRejectionModalOpen) {\n        return null;\n      }\n\n      const { transactionRejectionContent } = this.transactionStatusModalConfig;\n      const denialContent = transactionRejectionContent![this.state.transactionType!];\n\n      return (\n        <MetaMaskModal\n          waiting={false}\n          denied={true}\n          denialText={denialContent[1] as string}\n          cancelTransaction={cancelTransaction}\n          restartTransactions={this.transactions}\n        >\n          <ModalHeading>{denialContent[0]}</ModalHeading>\n        </MetaMaskModal>\n      );\n    }\n\n    public renderTransactionErrorModal(): JSX.Element | null {\n      if (!this.state.isTransactionErrorModalOpen) {\n        return null;\n      }\n\n      const { transactionErrorContent } = this.transactionStatusModalConfig;\n\n      const message = transactionErrorContent![this.state.transactionType!];\n\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <ProgressModalContentError hideModal={() => this.closeAllModals()}>\n            <ModalHeading>{message[0]}</ModalHeading>\n            {message[1]}\n          </ProgressModalContentError>\n        </Modal>\n      );\n    }\n\n    public closeAllModals = (): void => {\n      this.setState({\n        isWaitingTransactionModalOpen: false,\n        isTransactionProgressModalOpen: false,\n        isTransactionSuccessModalOpen: false,\n        isTransactionErrorModalOpen: false,\n        isTransactionRejectionModalOpen: false,\n      });\n    };\n\n    public handleTransactionError = (err: Error) => {\n      const isErrorUserRejection = err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\";\n      this.setState(() => ({\n        isWaitingTransactionModalOpen: false,\n        isTransactionProgressModalOpen: false,\n        isTransactionSuccessModalOpen: false,\n        isTransactionErrorModalOpen: !isErrorUserRejection,\n        isTransactionRejectionModalOpen: isErrorUserRejection,\n      }));\n    };\n\n    public setTransactions = (transactions: any[]): void => {\n      this.transactions = transactions;\n    };\n\n    public setCancelTransaction = (cancelTransaction: () => void): void => {\n      this.cancelTransaction = cancelTransaction;\n    };\n\n    public setHandleTransactionSuccessButtonClick = (handleTransactionSuccessButtonClick: () => void): void => {\n      this.handleTransactionSuccessButtonClick = handleTransactionSuccessButtonClick;\n    };\n\n    public setTransactionStatusModalConfig = (newConfig: TransactionStatusModalsConfigProps): void => {\n      this.transactionStatusModalConfig = {\n        ...this.transactionStatusModalConfig,\n        ...newConfig,\n      };\n    };\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/components/utility/ViewModules.tsx",
    "content": "import styled from \"styled-components/macro\";\n\nexport const dappTheme = {\n  borderColor: \"#cecece\",\n};\n\nexport const PageView = styled.div`\n  display: flex;\n  flex-wrap: wrap;\n  margin: 0 1rem 2rem;\n\n  & > * {\n    flex: 1;\n  }\n`;\n\nexport const ViewModule = styled.div`\n  border: 1px solid #cecece;\n  border-radius: 3px;\n  margin: 1rem;\n  padding: 1rem 1rem 1.5rem;\n\n  & > & {\n    border-width: 1px 0 0;\n    padding: 1rem 0 0;\n    margin: 1rem 0 0;\n  }\n`;\n\nexport const ViewModuleHeader = styled.h3`\n  font-size: 1.125rem;\n  margin: 0 0 1rem;\n`;\n"
  },
  {
    "path": "packages/dapp/src/components/utility/WinningChallengeResultsHOC.tsx",
    "content": "import { challengeHelpers, appealChallengeHelpers, getFormattedTokenBalance } from \"@joincivil/utils\";\nimport { CHALLENGE_RESULTS_VOTE_TYPES } from \"@joincivil/components\";\n\nimport { BigNumber, ChallengeData, AppealChallengeData } from \"@joincivil/typescript-types\";\n\nexport interface WinningChallengeResultsProps {\n  displayExplanation?: boolean;\n}\n\nexport const getChallengeViewProps = (challenge: ChallengeData) => {\n  const totalVotes = challenge && challenge.poll.votesAgainst.add(challenge.poll.votesFor);\n\n  let voteType;\n  let votesCount;\n  let votesPercent;\n\n  if (challengeHelpers.didChallengeOriginallySucceed(challenge)) {\n    voteType = CHALLENGE_RESULTS_VOTE_TYPES.REMOVE;\n    votesCount = getFormattedTokenBalance(challenge.poll.votesAgainst);\n\n    votesPercent = totalVotes.isZero()\n      ? \"0\"\n      : challenge.poll.votesAgainst\n          .div(totalVotes)\n          .mul(new BigNumber(100))\n          .toString();\n  } else {\n    voteType = CHALLENGE_RESULTS_VOTE_TYPES.REMAIN;\n    votesCount = getFormattedTokenBalance(challenge.poll.votesFor);\n    votesPercent = totalVotes.isZero()\n      ? \"0\"\n      : challenge.poll.votesFor\n          .div(totalVotes)\n          .mul(new BigNumber(100))\n          .toString();\n  }\n  return { voteType, votesCount, votesPercent };\n};\n\nexport const getAppealChallengeViewProps = (appealChallenge: AppealChallengeData) => {\n  const totalVotes = appealChallenge && appealChallenge.poll.votesAgainst.add(appealChallenge.poll.votesFor);\n\n  let voteType;\n  let votesCount;\n  let votesPercent;\n\n  if (appealChallengeHelpers.didAppealChallengeSucceed(appealChallenge)) {\n    voteType = CHALLENGE_RESULTS_VOTE_TYPES.OVERTURN;\n    votesCount = getFormattedTokenBalance(appealChallenge.poll.votesFor);\n    votesPercent = totalVotes.isZero()\n      ? \"0\"\n      : appealChallenge.poll.votesFor\n          .div(totalVotes)\n          .mul(new BigNumber(100))\n          .toString();\n  } else {\n    voteType = CHALLENGE_RESULTS_VOTE_TYPES.UPHOLD;\n    votesCount = getFormattedTokenBalance(appealChallenge.poll.votesAgainst);\n    votesPercent = totalVotes.isZero()\n      ? \"0\"\n      : appealChallenge.poll.votesAgainst\n          .div(totalVotes)\n          .mul(new BigNumber(100))\n          .toString();\n  }\n  return { voteType, votesCount, votesPercent };\n};\n"
  },
  {
    "path": "packages/dapp/src/components/utility/styledComponents.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\nimport { mediaQueries } from \"@joincivil/components\";\n\nexport interface StyledPageContentProps {\n  centerContent?: boolean;\n}\n\nexport const StyledPageContent = styled.div<StyledPageContentProps>`\n  ${props =>\n    !props.centerContent\n      ? \"\"\n      : `\n    display: flex;\n    justify-content: center;\n  `} margin: 0 auto;\n  max-width: 1200px;\n`;\n\nexport const StyledPageContentWithPadding = styled(StyledPageContent)`\n  padding-top: 50px;\n`;\n\nexport const StyledListingCopy = styled.div`\n  font-size: 18px;\n  letter-spacing: -0.17px;\n  line-height: 33px;\n  padding: 0 200px 50px;\n  text-align: center;\n\n  ${mediaQueries.MOBILE} {\n    padding: 0 16px 31px;\n  }\n`;\n\nexport const StyledInPageMsgContainer = styled.div`\n  padding-top: 100px;\n  text-align: center;\n`;\n"
  },
  {
    "path": "packages/dapp/src/constants.ts",
    "content": "export enum embedRoutes {\n  STORY_BOOST = \"/embed/boost/story/:boostId\",\n  BOOST = \"/embed/boost/:boostId/:payment?\",\n}\n\nexport enum routes {\n  REGISTRY_HOME = \"/registry/:listingType/:subListingType?\",\n  REGISTRY_HOME_ROOT = \"/registry\",\n  HOMEPAGE = \"/\",\n  CONTRACT_ADDRESSES = \"/contract-addresses\",\n  LISTING = \"/listing/:listingAddress/:activeTab?/:postId?\",\n  LISTING_STORY_BOOST_PAYMENT = \"/listing/:listingAddress/:activeTab?/:postId/payment\",\n  SUBMIT_CHALLENGE = \"/listing/:listingAddress/submit-challenge\",\n  SUBMIT_APPEAL_CHALLENGE = \"/listing/:listingAddress/submit-appeal-challenge\",\n  REQUEST_APPEAL = \"/listing/:listingAddress/request-appeal\",\n  CHALLENGE = \"/listing/:listingAddress/challenge/:challengeID\",\n  CREATE_NEWSROOM = \"/create-newsroom\",\n  NEWSROOM_MANAGEMENT_V1 = \"/mgmt-v1/:newsroomAddress\",\n  PARAMETERIZER = \"/parameterizer\",\n  APPLY_TO_REGISTRY = \"/apply-to-registry/:action?\",\n  GOVERNMENT = \"/government\",\n  DASHBOARD = \"/dashboard/:activeDashboardTab/:activeDashboardSubTab?\",\n  DASHBOARD_ROOT = \"/dashboard\",\n  ACCOUNT = \"/account/:activeTab?\",\n  ACCOUNT_ROOT = \"/account\",\n  AUTH = \"/auth\",\n  AUTH_SIGNUP = \"/auth/signup\",\n  AUTH_SIGNUP_WEB3 = \"/auth/signup/web3\",\n  AUTH_LOGIN = \"/auth/login\",\n  AUTH_LOGIN_WEB3 = \"/auth/login/web3\",\n  AUTH_LOGOUT = \"/auth/logout\",\n  WALLET_HOME = \"/auth/wallet\",\n  CONFIRM_EMAIL = \"/auth/confirm-email\",\n  TOKEN_STOREFRONT = \"/tokens\",\n  BOOST_FEED = \"/boosts\",\n  BOOST = \"/boosts/:boostId\",\n  BOOST_EDIT = \"/boosts/:boostId/edit\",\n  BOOST_SUCCESS = \"/boosts/:boostId/success\",\n  BOOST_PAYMENT = \"/boosts/:boostId/payment\",\n  CHANNEL_ADMIN = \"/admin/:reference\",\n  MANAGE_NEWSROOM = \"/manage-newsroom/:newsroomAddress/:activeTab?\",\n  SET_HANDLE = \"/auth/set-handle\",\n  STORY_FEED = \"/storyfeed/:postId?\",\n  STORY_BOOST_PAYMENT = \"/storyfeed/:postId/payment\",\n  STORY_BOOST_NEWSROOM = \"/storyfeed/:postId/newsroom\",\n  GET_STARTED = \"/get-started\",\n}\n\nexport enum registryListingTypes {\n  APPROVED = \"approved\",\n  IN_PROGRESS = \"in-progress\",\n  REJECTED = \"rejected\",\n}\n\nexport enum registrySubListingTypes {\n  IN_APPLICATION = \"new-applications\",\n  UNDER_CHALLENGE = \"under-challenge\",\n  UNDER_APPEAL = \"under-appeal\",\n  UNDER_APPEAL_CHALLENGE = \"under-appeal-challenge\",\n  READY_TO_UPDATE = \"ready-to-update\",\n}\n\nexport type TRegistryListingType =\n  | registryListingTypes.APPROVED\n  | registryListingTypes.IN_PROGRESS\n  | registryListingTypes.REJECTED;\n\nexport type TRegistrySubListingType =\n  | registrySubListingTypes.IN_APPLICATION\n  | registrySubListingTypes.UNDER_CHALLENGE\n  | registrySubListingTypes.UNDER_APPEAL\n  | registrySubListingTypes.UNDER_APPEAL_CHALLENGE\n  | registrySubListingTypes.READY_TO_UPDATE;\n\nexport enum dashboardTabs {\n  TASKS = \"tasks\",\n  NEWSROOMS = \"newsrooms\",\n  CHALLENGES = \"challenges\",\n  ACTIVITY = \"activity\",\n}\n\nexport enum dashboardSubTabs {\n  TASKS_ALL = \"all\",\n  TASKS_REVEAL_VOTE = \"reveal-vote\",\n  TASKS_CLAIM_REWARDS = \"claim-rewards\",\n  TASKS_RESCUE_TOKENS = \"rescue-tokens\",\n  TASKS_TRANSFER_VOTING_TOKENS = \"transfer-voting-tokens\",\n  CHALLENGES_COMPLETED = \"completed\",\n  CHALLENGES_STAKED = \"staked\",\n}\n\nexport type TDashboardTab =\n  | dashboardTabs.TASKS\n  | dashboardTabs.NEWSROOMS\n  | dashboardTabs.CHALLENGES\n  | dashboardTabs.ACTIVITY;\n\nexport type TDashboardSubTab =\n  | dashboardSubTabs.TASKS_ALL\n  | dashboardSubTabs.TASKS_REVEAL_VOTE\n  | dashboardSubTabs.TASKS_CLAIM_REWARDS\n  | dashboardSubTabs.TASKS_RESCUE_TOKENS\n  | dashboardSubTabs.TASKS_TRANSFER_VOTING_TOKENS\n  | dashboardSubTabs.CHALLENGES_COMPLETED\n  | dashboardSubTabs.CHALLENGES_STAKED;\n\nexport enum listingTabs {\n  CHARTER = \"charter\",\n  DISCUSSIONS = \"discussions\",\n  HISTORY = \"history\",\n  BOOSTS = \"boosts\",\n  STORYFEED = \"storyfeed\",\n  OWNER = \"owner-actions\",\n}\n\nexport type TListingTab =\n  | listingTabs.CHARTER\n  | listingTabs.DISCUSSIONS\n  | listingTabs.HISTORY\n  | listingTabs.BOOSTS\n  | listingTabs.OWNER;\n"
  },
  {
    "path": "packages/dapp/src/embeds/BoostLoader.tsx",
    "content": "import * as React from \"react\";\nimport styled, { ThemeProvider } from \"styled-components/macro\";\nimport { useRouteMatch } from \"react-router\";\nimport {\n  CivilContext,\n  ICivilContext,\n  RENDER_CONTEXT,\n  CivilIcon,\n  DEFAULT_BUTTON_THEME,\n  DEFAULT_CHECKBOX_THEME,\n} from \"@joincivil/components\";\nimport { mediaQueries } from \"@joincivil/elements\";\nimport { Boost } from \"@joincivil/sdk\";\n\nimport { routes, embedRoutes } from \"../constants\";\nimport AppProvider from \"../components/providers/AppProvider\";\n\nconst EmbedWrapper = styled.div`\n  background: white; // obscure embed loading message outside iframe\n`;\nconst CivilLogoLink = styled.a`\n  position: absolute;\n  display: inline-block;\n  z-index: 2; // above basic stuff, below full screen modal mask\n  top: 0;\n  right: 0;\n  padding: 34px 30px 0 75px;\n  background: rgb(255, 255, 255);\n  background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 35%);\n  ${mediaQueries.MOBILE} {\n    padding-top: 25px;\n    padding-right: 10px;\n  }\n  ${mediaQueries.MOBILE_SMALL} {\n    padding-top: 22px;\n    padding-left: 60px;\n    background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 40%);\n  }\n  svg {\n    width: 50px;\n    height: auto;\n  }\n`;\n\nexport interface BoostLoaderParams {\n  boostId: string;\n  payment?: string;\n}\n\nconst BoostLoaderComponent: React.FunctionComponent = () => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  civilContext.renderContext = RENDER_CONTEXT.EMBED;\n  const theme = {\n    ...DEFAULT_CHECKBOX_THEME,\n    ...DEFAULT_BUTTON_THEME,\n    renderContext: RENDER_CONTEXT.EMBED,\n  };\n\n  // Due to a conflict between react-router v5's `BrowserRouter`, which we use, and react/redux `ConnectedRouter`, which we also use (and which would take an unknown/large refactor to change without breaking code splitting gains), neither `useParams` hook nor `withRouter` are receiving updates here, so we have to use `useRouteMatch` and manually provide the boost embed route. - @tobek\n  const { boostId, payment } = useRouteMatch<BoostLoaderParams>(embedRoutes.BOOST)!.params;\n\n  return (\n    <EmbedWrapper>\n      <CivilLogoLink href={routes.HOMEPAGE} target=\"_blank\">\n        <CivilIcon />\n      </CivilLogoLink>\n      <ThemeProvider theme={theme}>\n        <Boost boostId={boostId} open={true} payment={!!payment} disableOwnerCheck={true} />\n      </ThemeProvider>\n    </EmbedWrapper>\n  );\n};\n\nconst BoostLoader: React.FunctionComponent = () => {\n  return (\n    <React.Suspense fallback={<></>}>\n      <AppProvider>\n        <BoostLoaderComponent />\n      </AppProvider>\n    </React.Suspense>\n  );\n};\n\nexport default BoostLoader;\n"
  },
  {
    "path": "packages/dapp/src/embeds/EmbedsApp.tsx",
    "content": "import * as React from \"react\";\n\nimport { Route, Switch } from \"react-router-dom\";\nimport { embedRoutes } from \"../constants\";\n// apps\nconst StoryBoostLoader = React.lazy(async () =>\n  import(/* webpackChunkName: \"story-boost-loader\" */ \"./StoryBoostLoader\"),\n);\nconst BoostLoader = React.lazy(async () => import(/* webpackChunkName: \"boost-loader\" */ \"./BoostLoader\"));\n\nexport const EmbedsApp = () => {\n  return (\n    <Switch>\n      <Route path={embedRoutes.STORY_BOOST} render={() => <StoryBoostLoader />} />\n      <Route path={embedRoutes.BOOST} render={() => <BoostLoader />} />\n    </Switch>\n  );\n};\n\nexport default EmbedsApp;\n"
  },
  {
    "path": "packages/dapp/src/embeds/StoryBoostLoader.tsx",
    "content": "import * as React from \"react\";\nimport styled, { ThemeProvider } from \"styled-components/macro\";\n// @ts-ignore iframe-resizer types are crap and it thinks this module isn't exported\nimport { iframeResizerContentWindow } from \"iframe-resizer\";\nimport { useRouteMatch } from \"react-router\";\nimport {\n  CivilContext,\n  ICivilContext,\n  RENDER_CONTEXT,\n  AvatarLogin,\n  DEFAULT_BUTTON_THEME,\n  DEFAULT_CHECKBOX_THEME,\n} from \"@joincivil/components\";\nimport { StoryBoost } from \"@joincivil/sdk\";\n\nimport { embedRoutes } from \"../constants\";\nimport AppProvider from \"../components/providers/AppProvider\";\n\nconst EmbedWrapper = styled.div`\n  // obscure embed loading message outside iframe:\n  background: white;\n`;\nconst AvatarWrap = styled.div`\n  position: absolute;\n  display: inline-block;\n  z-index: 2; // above basic stuff, below full screen modal mask\n  top: 0;\n  right: 0;\n  padding: 6px 6px 0 16px;\n  background: rgb(255, 255, 255);\n  background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 25%);\n`;\n\n// @HACK We don't need to do anything with this object, but if we don't reference it then it looks like it gets optimized out and doesn't work.\nconsole.log(\"iframeResizerContentWindow loaded\", iframeResizerContentWindow);\n\nexport interface StoryBoostLoaderParams {\n  boostId: string;\n}\n\nconst StoryBoostLoaderComponent: React.FunctionComponent = () => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  civilContext.renderContext = RENDER_CONTEXT.EMBED;\n\n  // Due to a conflict between react-router v5's `BrowserRouter`, which we use, and react/redux `ConnectedRouter`, which we also use (and which would take an unknown/large refactor to change without breaking code splitting gains), neither `useParams` hook nor `withRouter` are receiving updates here, so we have to use `useRouteMatch` and manually provide the boost embed route. - @tobek\n  const { boostId } = useRouteMatch<StoryBoostLoaderParams>(embedRoutes.STORY_BOOST)!.params;\n\n  return (\n    <EmbedWrapper data-iframe-height>\n      <AvatarWrap>\n        <AvatarLogin />\n      </AvatarWrap>\n      <StoryBoost boostId={boostId} />\n    </EmbedWrapper>\n  );\n};\n\nconst StoryBoostLoader: React.FunctionComponent = () => {\n  const theme = {\n    ...DEFAULT_CHECKBOX_THEME,\n    ...DEFAULT_BUTTON_THEME,\n    renderContext: RENDER_CONTEXT.EMBED,\n  };\n\n  return (\n    <React.Suspense fallback={<></>}>\n      <ThemeProvider theme={theme}>\n        <AppProvider data-iframe-height>\n          <StoryBoostLoaderComponent />\n        </AppProvider>\n      </ThemeProvider>\n    </React.Suspense>\n  );\n};\n\nexport default StoryBoostLoader;\n"
  },
  {
    "path": "packages/dapp/src/globals.d.ts",
    "content": "declare module \"web3-providers-ws\";\n"
  },
  {
    "path": "packages/dapp/src/helpers/config.ts",
    "content": "export interface ConfigType {\n  ENVIRONMENT?: string;\n  MAINNET_GRAPHQL_URI?: string;\n  RINKEBY_GRAPHQL_URI?: string;\n  GANANCHE_GRAPHQL_URI?: string;\n  DISCOURSE_URL?: string;\n  DEFAULT_ETHEREUM_NETWORK?: string;\n  SUPPORTED_ETHEREUM_NETWORKS?: string;\n  SENDGRID_REGISTRY_LIST_ID?: string;\n  INFURA_APP_KEY?: string;\n  PORTIS_APP_ID?: string;\n  FEATURE_FLAGS?: string;\n  SENTRY_DSN?: string;\n  STRIPE_CLIENT_ID?: string;\n  STRIPE_API_KEY?: string;\n  STRIPE_PLATFORM_ACCOUNT_ID?: string;\n  APP_VERSION?: string;\n  KIRBY_TARGET_ORIGIN?: string;\n  KIRBY_IFRAME_SRC?: string;\n}\n\nconst defaultConfig: ConfigType = {\n  ENVIRONMENT: \"development\",\n  MAINNET_GRAPHQL_URI: process.env.REACT_APP_MAINNET_GRAPHQL_URI,\n  RINKEBY_GRAPHQL_URI: process.env.REACT_APP_RINKEBY_GRAPHQL_URI,\n  GANANCHE_GRAPHQL_URI: process.env.REACT_APP_GANANCHE_GRAPHQL_URI,\n  DISCOURSE_URL: process.env.REACT_APP_DISCOURSE_URL,\n  DEFAULT_ETHEREUM_NETWORK: process.env.REACT_APP_DEFAULT_ETHEREUM_NETWORK,\n  SUPPORTED_ETHEREUM_NETWORKS: process.env.REACT_APP_SUPPORTED_ETHEREUM_NETWORKS,\n  SENDGRID_REGISTRY_LIST_ID: process.env.REACT_APP_SENDGRID_REGISTRY_LIST_ID,\n  INFURA_APP_KEY: process.env.REACT_APP_INFURA_APP_KEY,\n  PORTIS_APP_ID: process.env.REACT_APP_PORTIS_APP_ID,\n  FEATURE_FLAGS: process.env.REACT_APP_FEATURE_FLAGS,\n  SENTRY_DSN: process.env.REACT_APP_SENTRY_DSN,\n  STRIPE_CLIENT_ID: process.env.REACT_APP_STRIPE_CLIENT_ID,\n  STRIPE_API_KEY: process.env.REACT_APP_STRIPE_API_KEY,\n  STRIPE_PLATFORM_ACCOUNT_ID: process.env.REACT_APP_STRIPE_PLATFORM_ACCOUNT_ID,\n  APP_VERSION: process.env.REACT_APP_APP_VERSION,\n  KIRBY_TARGET_ORIGIN: process.env.REACT_APP_KIRBY_TARGET_ORIGIN,\n  KIRBY_IFRAME_SRC: process.env.REACT_APP_KIRBY_IFRAME_SRC,\n};\n\nconst serverConfigString = (window as any).SERVER_CONFIG;\nlet serverConfig = {};\nif (serverConfigString !== \"$ENVIRONMENT\") {\n  try {\n    serverConfig = JSON.parse(serverConfigString);\n  } catch (e) {\n    console.log(\"error parsing server config: \", { serverConfigString, defaultConfig, e });\n  }\n}\n\nconst config: ConfigType = { ...defaultConfig, ...serverConfig };\nconsole.log(\"configuration loaded\", { config, defaultConfig, serverConfig });\n\nexport default config;\n"
  },
  {
    "path": "packages/dapp/src/helpers/contractAddresses.ts",
    "content": "import { Dispatch } from \"react-redux\";\nimport { setContractAddress } from \"../redux/actionCreators/contractAddresses\";\nimport { CivilHelper } from \"../apis/CivilHelper\";\n\nexport enum ContractAddressKeys {\n  TCR_ADDRESS = \"TCR_ADDRESS\",\n  PLCR_ADDRESS = \"PLCR_ADDRESS\",\n  TOKEN_ADDRESS = \"TOKEN_ADDRESS\",\n  PARAMETERIZER_ADDRESS = \"PARAMETERIZER_ADDRESS\",\n}\n\nexport async function initializeContractAddresses(helper: CivilHelper, dispatch: Dispatch<any>): Promise<void> {\n  const tcr = await helper.getTCR();\n\n  const tcrAddress = tcr.address;\n  dispatch(setContractAddress(ContractAddressKeys.TCR_ADDRESS, tcrAddress));\n\n  const votingAddress = await tcr.getVotingAddress();\n  dispatch(setContractAddress(ContractAddressKeys.PLCR_ADDRESS, votingAddress));\n\n  const tokenAddress = await tcr.getTokenAddress();\n  dispatch(setContractAddress(ContractAddressKeys.TOKEN_ADDRESS, tokenAddress));\n\n  const parameterizerAddress = await tcr.getParameterizerAddress();\n  dispatch(setContractAddress(ContractAddressKeys.PARAMETERIZER_ADDRESS, parameterizerAddress));\n}\n"
  },
  {
    "path": "packages/dapp/src/helpers/government.ts",
    "content": "import { Param, ParamProposalState } from \"@joincivil/typescript-types\";\nimport { Dispatch } from \"react-redux\";\nimport { GovernmentParameters } from \"@joincivil/utils\";\nimport {\n  multiSetGovtParameters,\n  setGovernmentParameter,\n  setConstitutionData,\n  setAppellate,\n  setController,\n  setAppellateMembers,\n  addCouncilMultisigTransaction,\n  addOrUpdateGovtProposal,\n  checkAndUpdateGovtParameterProposalState,\n} from \"../redux/actionCreators/government\";\nimport { CivilHelper } from \"../apis/CivilHelper\";\nimport { MultisigTransaction } from \"@joincivil/core/build/src/contracts/multisig/multisigtransaction\";\nimport { Observable } from \"rxjs\";\n\nconst paramProposalTimeouts = new Map<string, number>();\nconst setTimeoutTimeouts = new Map<string, number>();\n\nexport async function initializeGovernment(helper: CivilHelper, dispatch: Dispatch<any>): Promise<void> {\n  const paramKeys: string[] = Object.values(GovernmentParameters);\n  const parameterVals = await helper.getGovernmentParameters(paramKeys);\n  const paramObj = parameterVals.reduce((acc, item, index) => {\n    acc[paramKeys[index]] = item.toString();\n    return acc;\n  }, {});\n\n  dispatch(multiSetGovtParameters(paramObj));\n}\n\nexport async function initializeGovernmentParamSubscription(\n  helper: CivilHelper,\n  dispatch: Dispatch<any>,\n): Promise<void> {\n  const tcr = await helper.getTCR();\n  const civil = helper.civil;\n  const current = await civil.currentBlock();\n  const govt = await tcr.getGovernment();\n  govt.getParameterSet(current).subscribe(async (p: Param) => {\n    dispatch(setGovernmentParameter(p.paramName, p.value));\n  });\n}\n\nexport async function initializeGovtProposalsSubscriptions(\n  helper: CivilHelper,\n  dispatch: Dispatch<any>,\n): Promise<void> {\n  const tcr = await helper.getTCR();\n  const government = await tcr.getGovernment();\n  await Observable.merge(\n    government.propIDsInCommitPhase(),\n    government.propIDsInRevealPhase(),\n    government.propIDsToProcess(),\n  ).subscribe(async (propID: string) => {\n    const paramName = await government.getPropName(propID);\n    if (!paramName || !paramName.length) {\n      return;\n    }\n    const propValue = await government.getPropValue(propID);\n    const propState = await government.getPropState(propID);\n    const challengeID = await government.getChallengeID(propID);\n    const challengeCommitExpiry = !challengeID.isZero() ? await government.getPropCommitExpiry(propID) : undefined;\n    const challengeRevealExpiry = !challengeID.isZero() ? await government.getPropRevealExpiry(propID) : undefined;\n    const propProcessByExpiry = await government.getPropProcessBy(propID);\n\n    const paramProposal = {\n      id: propID,\n      paramName,\n      propValue,\n      state: propState,\n      propProcessByExpiry,\n      challenge: {\n        id: challengeID,\n        challengeCommitExpiry,\n        challengeRevealExpiry,\n      },\n    };\n    await setupGovtParamProposalCallback(paramProposal, true, dispatch);\n    dispatch(addOrUpdateGovtProposal(paramProposal));\n  });\n}\n\nasync function getNextTimerExpiry(paramProposal: any, dispatch: Dispatch<any>): Promise<number> {\n  let nextExpiry;\n\n  switch (paramProposal.state) {\n    case ParamProposalState.CHALLENGED_IN_COMMIT_VOTE_PHASE:\n      nextExpiry = paramProposal.challenge.challengeCommitExpiry.valueOf();\n      break;\n    case ParamProposalState.CHALLENGED_IN_REVEAL_VOTE_PHASE:\n      nextExpiry = paramProposal.challenge.challengeRevealExpiry.valueOf();\n      break;\n    case ParamProposalState.READY_TO_RESOLVE_CHALLENGE:\n      nextExpiry = paramProposal.propProcessByExpiry.valueOf();\n      break;\n    default:\n      nextExpiry = 0;\n  }\n\n  return nextExpiry;\n}\n\nasync function setupGovtParamProposalCallback(\n  helper: CivilHelper,\n  paramProposal: any,\n  isInit: boolean,\n  dispatch: Dispatch<any>,\n): Promise<void> {\n  if (paramProposalTimeouts.get(paramProposal.id)) {\n    clearTimeout(paramProposalTimeouts.get(paramProposal.id));\n    paramProposalTimeouts.delete(paramProposal.id);\n  }\n\n  if (setTimeoutTimeouts.get(paramProposal.id)) {\n    clearTimeout(setTimeoutTimeouts.get(paramProposal.id));\n    setTimeoutTimeouts.delete(paramProposal.id);\n  }\n\n  const now = Date.now();\n  const nextExpiry = await getNextTimerExpiry(paramProposal, dispatch);\n  const delay = nextExpiry - now;\n  if (delay > 0) {\n    paramProposalTimeouts.set(\n      paramProposal.id,\n      setTimeout(dispatch, delay, helper, checkAndUpdateGovtParameterProposalState(helper, paramProposal.id)),\n    );\n    setTimeoutTimeouts.set(\n      paramProposal.id,\n      setTimeout(setupGovtParamProposalCallback, delay, helper, paramProposal, false, dispatch),\n    );\n  }\n}\n\nexport async function initializeConstitution(helper: CivilHelper, dispatch: Dispatch<any>): Promise<void> {\n  const tcr = await helper.getTCR();\n  const govt = await tcr.getGovernment();\n  const council = await tcr.getCouncil();\n  const uri = await govt.getConstitutionURI();\n  dispatch(setConstitutionData(\"uri\", uri));\n\n  const hash = await govt.getConstitutionHash();\n  dispatch(setConstitutionData(\"hash\", hash));\n  const appellate = await govt.getAppellate();\n  dispatch(setAppellate(appellate));\n  const controller = await govt.getController();\n  dispatch(setController(controller));\n  const appellateMembers = await council.getAppellateMembers();\n  dispatch(setAppellateMembers(appellateMembers));\n\n  council.transactions().subscribe(async (transaction: MultisigTransaction) => {\n    dispatch(addCouncilMultisigTransaction(transaction));\n  });\n}\n"
  },
  {
    "path": "packages/dapp/src/helpers/links.ts",
    "content": "const FAQ_BASE_URL = \"https://help.civil.co\";\nexport const links = {\n  // Marketing site  / Foundation\n  MARKETING_SITE: \"https://learn.civil.co\",\n  REGISTRY: \"https://civil.co/\",\n  CONSTITUTION: \"https://learn.civil.co/constitution\",\n  FOUNDATION: \"https://civilfound.org\",\n  COUNCIL: \"https://civilfound.org/#civil-council\",\n  APPLY: \"/apply-to-registry\",\n  BECOME_A_MEMBER: \"/tokens\",\n  JOIN_AS_NEWSROOM: \"/apply-to-registry\",\n  CODE_OF_CONDUCT: \"https://learn.civil.co/code-of-conduct\",\n  CONTACT: \"https://learn.civil.co/contact\",\n  PRESS: \"https://learn.civil.co/press\",\n  TEAM: \"https://learn.civil.co/team\",\n  PARTNERS: \"https://learn.civil.co/partners\",\n  TERMS: \"https://learn.civil.co/terms\",\n  PRIVACY_POLICY: \"https://learn.civil.co/privacy-policy\",\n  CAREERS: \"https://learn.civil.co/jobs\",\n\n  // Blog\n  BLOG: \"https://blog.civil.co\",\n  DEV_BLOG: \"https://blog.civil.co/category/under-the-hood/\",\n\n  // Social / Github\n  COMMUNITY: \"https://community.civil.co/\",\n  GITHUB: \"https://github.com/joincivil\",\n  MEDIUM: \"https://blog.joincivil.com/\",\n  TWITTER: \"https://twitter.com/civil\",\n  TCR_ALERTS: \"https://twitter.com/civil_alerts\",\n  FACEBOOK: \"https://facebook.com/joincivil\",\n  INSTAGRAM: \"https://www.instagram.com/join_civil\",\n  TELEGRAM: \"https://t.me/join_civil\",\n  LINKEDIN: \"https://www.linkedin.com/company/civil-media-company/\",\n\n  // Email\n  EMAIL_SUPPORT: \"support@civil.co\",\n  EMAIL_MAILTO: \"mailto:support@civil.co\",\n  DEVELOPERS_MAILTO: \"mailto:developers@civil.co\",\n\n  // FAQ\n  FAQ_HOME: FAQ_BASE_URL,\n  FAQ_REGISTRY: FAQ_BASE_URL + \"/hc/en-us/categories/360001542132-Registry\",\n  FAQ_APPLY_TO_REGISTRY_SECTION: FAQ_BASE_URL + \"/hc/en-us/sections/360003838632-Applying-to-the-Registry\",\n  FAQ_CHALLENGE_SECTION: FAQ_BASE_URL + \"/hc/en-us/sections/360003838572-Challenge\",\n  FAQ_VOTING_SECTION: FAQ_BASE_URL + \"/hc/en-us/sections/360003838592-Voting\",\n  FAQ_APPLICATION_DEPOSIT: FAQ_BASE_URL + \"/hc/en-us/articles/360024542352-Why-do-I-need-to-apply-with-Civil-tokens-\",\n  FAQ_BROWSER_SUPPORT: FAQ_BASE_URL + \"/hc/en-us/articles/360022147571-Browser-Support\",\n  FAQ_COMMUNITY_VETTING_PROCESS:\n    FAQ_BASE_URL +\n    \"/hc/en-us/articles/360024853311-What-is-the-Civil-Registry-community-vetting-process-for-a-Newsroom-\",\n  FAQ_CAN_REJECTED_NEWSROOMS_REAPPLY:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360024545152-Can-rejected-Newsrooms-re-apply-to-the-Civil-Registry-\",\n  FAQ_GAS: FAQ_BASE_URL + \"/hc/en-us/articles/360016788791-What-is-Gas-\",\n  FAQ_GRANT: FAQ_BASE_URL + \"/hc/en-us/articles/360021942132-Civil-Foundation-Token-Grant\",\n  FAQ_HOW_TO_CHALLENGE: FAQ_BASE_URL + \"/hc/en-us/articles/360024546932-How-do-I-challenge-a-Newsroom-\",\n  FAQ_HOW_TO_VOTE: FAQ_BASE_URL + \"/hc/en-us/articles/360024855271-How-do-I-vote-in-a-challenge-\",\n  FAQ_HOW_TO_APPEAL: FAQ_BASE_URL + \"/hc/en-us/articles/360024855191-How-do-I-request-an-appeal-to-the-Civil-Council-\",\n  FAQ_HOW_TO_SETUP_METAMASK: FAQ_BASE_URL + \"/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\",\n  FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360024545012-How-do-I-update-a-Newsroom-s-status-on-the-Civil-Registry-\",\n  FAQ_SWITCH_NETWORKS: FAQ_BASE_URL + \"/hc/en-us/articles/360017414812-How-do-I-switch-networks-in-MetaMask-\",\n  FAQ_WHAT_IS_TUTORIAL: FAQ_BASE_URL + \"/hc/en-us/articles/360021949732-What-is-the-Civil-Tutorial-\",\n  FAQ_WHAT_IS_SMART_CONTRACT: FAQ_BASE_URL + \"/hc/en-us/articles/360016463832-What-is-a-newsroom-smart-contract-\",\n  FAQ_WHAT_IS_PLCR_CONTRACT: FAQ_BASE_URL + \"/hc/en-us/articles/360024544932-What-is-Civil-s-voting-smart-contract-\",\n  FAQ_WHAT_IS_PUBLIC_WALLET_ADDRESS: FAQ_BASE_URL + \"/hc/en-us/articles/360016566312-What-is-a-public-wallet-address-\",\n  FAQ_WALLETS: FAQ_BASE_URL + \"/hc/en-us/sections/360003838452-Wallets\",\n  FAQ_CHARTER_EXAMPLE: FAQ_BASE_URL + \"/hc/en-us/articles/360017689911-What-is-a-Charter-\",\n  FAQ_CHARTER_BEST_PRACTICES: \"https://blog.joincivil.com/creating-great-charters-6b37cbca47c3\",\n  FAQ_CVL_TOKENS: FAQ_BASE_URL + \"/hc/en-us/articles/360016409251-What-are-Civil-tokens-CVL-\",\n  FAQ_BOOSTS: FAQ_BASE_URL + \"/hc/en-us/categories/360001939731-Boosts\",\n  FAQ_BOOST_WITHDRAWL:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030195272-How-do-I-withdraw-my-ETH-proceeds-once-a-Boost-has-ended-\",\n  FAQ_BOOST_SUPPORTERS: FAQ_BASE_URL + \"/hc/en-us/sections/360005752331-Supporters\",\n  FAQ_BOOST_HOW_TO_SUPPORT: FAQ_BASE_URL + \"/hc/en-us/articles/360030520791-How-do-I-support-a-Boost-\",\n  FAQ_BOOST_WHEN_CHARGED: FAQ_BASE_URL + \"/hc/en-us/articles/360030521331-When-will-my-payment-be-charged-\",\n  FAQ_BOOST_CHARGED_IF_BOOST_FAILS:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030521471-Will-I-be-charged-if-the-Boost-does-not-hit-its-target-goal-date-\",\n  FAQ_BOOST_WHAT_PAYMENT_DATA:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030521711-What-information-can-others-see-about-my-payment-\",\n};\n"
  },
  {
    "path": "packages/dapp/src/helpers/listingEvents.ts",
    "content": "import { EthAddress, StorageHeader } from \"@joincivil/typescript-types\";\nimport { addNewsroom, setNewsroomMultisigAddress } from \"@joincivil/newsroom-signup\";\nimport { Dispatch } from \"react-redux\";\nimport { Subscription } from \"rxjs\";\nimport { addUserNewsroom, addContent, addCharterRevision } from \"../redux/actionCreators/newsrooms\";\n\nimport { CivilHelper } from \"../apis/CivilHelper\";\n\nconst allNewsroomContentRevisionsSubscriptions = new Map<EthAddress, Subscription>();\n\nexport async function getNewsroom(helper: CivilHelper, dispatch: Dispatch<any>, address: EthAddress): Promise<void> {\n  const civil = helper.civil;\n  const user = await civil.accountStream.first().toPromise();\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  const wrapper = await newsroom.getNewsroomWrapper();\n  dispatch(addNewsroom({ wrapper, address: civil.toChecksumAddress(wrapper.address), newsroom }));\n  if (user && wrapper.data.owners.includes(user)) {\n    const multiSigAddr = await newsroom.getMultisigAddress();\n    dispatch(setNewsroomMultisigAddress(address, multiSigAddr || \"\"));\n    dispatch(addUserNewsroom(address));\n  }\n\n  const newsroomCharterRevisionsSubscription = newsroom.revisions(0).subscribe(charterRevision => {\n    const { revisionId } = charterRevision;\n    dispatch(addCharterRevision(address, revisionId!, charterRevision));\n  });\n\n  allNewsroomContentRevisionsSubscriptions.set(address, newsroomCharterRevisionsSubscription);\n}\n\nasync function delay(ms: number): Promise<any> {\n  return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport async function getIPFSContent(\n  helper: CivilHelper,\n  header: StorageHeader,\n  dispatch: Dispatch<any>,\n  wait: number = 1000,\n  tries: number = 0,\n): Promise<void> {\n  const civil = helper.civil;\n  const content = await civil.getContent(header);\n  if (content) {\n    const parsedContent = JSON.parse(content.toString());\n    dispatch(addContent(header, parsedContent));\n  } else {\n    console.warn(\"Missing IPFS content for header:\", header);\n    if (header.uri !== \"\" && tries < 6) {\n      console.warn(\"Retrying getIPFSContent. wait = \" + wait + \"ms\");\n      await delay(wait);\n      return getIPFSContent(helper, header, dispatch, wait * 2, tries + 1);\n    } else if (header.uri !== \"\" && tries >= 6) {\n      console.error(\"Unable to find IPFS content after 6 tries. header: \", header);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/helpers/networkHelpers.ts",
    "content": "import config from \"./config\";\n\nexport const supportedNetworks: number[] = config.SUPPORTED_ETHEREUM_NETWORKS\n  ? config.SUPPORTED_ETHEREUM_NETWORKS.split(\",\").map(num => {\n      return parseInt(num, 10);\n    })\n  : [];\n\nexport const formattedNetworkNames: { [index: string]: string } = {\n  1: \"Main Ethereum Network\",\n  4: \"Rinkeby Test Network\",\n  50: \"Localhost 8545\",\n};\n\nexport function getFormattedNetworkNames(networkIDs: number[]): string[] {\n  return networkIDs.map(id => {\n    return formattedNetworkNames[id.toString()];\n  });\n}\n\nexport function isNetworkSupported(network: string | number): boolean {\n  let networkKey = network;\n  if (typeof networkKey === \"string\") {\n    networkKey = parseInt(networkKey, 10);\n  }\n  return supportedNetworks.includes(networkKey);\n}\n\nexport const isGraphQLSupportedOnNetwork = (network: number): boolean => {\n  return supportedNetworks.includes(network);\n};\n"
  },
  {
    "path": "packages/dapp/src/helpers/queryTransformations.ts",
    "content": ""
  },
  {
    "path": "packages/dapp/src/helpers/salt.ts",
    "content": "import * as store from \"store\";\nimport { randomSalt } from \"@joincivil/utils\";\nimport { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\nconst SALT_WORD_LENGTH = 4;\n\nexport function fetchSalt(\n  challengeId: BigNumber,\n  user: EthAddress | undefined,\n  forceRefresh: boolean = false,\n): string | undefined {\n  if (!user) {\n    return undefined;\n  }\n  const key = `salt:${challengeId.toString()}:${user}`;\n\n  // See if we have it saved first.\n  if (!forceRefresh) {\n    const savedSalt: string = store.get(key);\n\n    if (savedSalt) {\n      return savedSalt;\n    }\n  }\n\n  const salt = randomSalt(SALT_WORD_LENGTH).toString();\n\n  store.set(key, salt);\n\n  return salt;\n}\n"
  },
  {
    "path": "packages/dapp/src/helpers/tokenController.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { CivilHelper } from \"../apis/CivilHelper\";\n\nexport async function getCivilianWhitelist(helper: CivilHelper, user: EthAddress): Promise<boolean> {\n  const tcr = await helper.getTCR();\n  const token = await tcr.getToken();\n  return token.isCivilian(user);\n}\n\nexport async function getUnlockedWhitelist(helper: CivilHelper, user: EthAddress): Promise<boolean> {\n  const tcr = await helper.getTCR();\n  const token = await tcr.getToken();\n  return token.isUnlocked(user);\n}\n"
  },
  {
    "path": "packages/dapp/src/helpers/tokenEvents.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { Dispatch } from \"react-redux\";\nimport { Subscription } from \"rxjs\";\nimport { updateUserTokenBalance, updateUserVotingBalance } from \"../redux/actionCreators/userAccount\";\nimport { CivilHelper } from \"../apis/CivilHelper\";\n\nlet tokenBalanceSubscriptions: Subscription;\nlet votingBalanceSubscriptions: Subscription;\nexport async function initializeTokenSubscriptions(\n  helper: CivilHelper,\n  dispatch: Dispatch<any>,\n  user: EthAddress,\n): Promise<void> {\n  if (tokenBalanceSubscriptions) {\n    tokenBalanceSubscriptions.unsubscribe();\n  }\n  if (votingBalanceSubscriptions) {\n    votingBalanceSubscriptions.unsubscribe();\n  }\n\n  const tcr = await helper.getTCR();\n  const token = await tcr.getToken();\n  tokenBalanceSubscriptions = token.balanceUpdate(\"latest\", user).subscribe(balance => {\n    dispatch(updateUserTokenBalance(user, balance));\n  });\n\n  votingBalanceSubscriptions = tcr\n    .getVoting()\n    .balanceUpdate(\"latest\", user)\n    .subscribe(balance => {\n      dispatch(updateUserVotingBalance(user, balance));\n    });\n}\n"
  },
  {
    "path": "packages/dapp/src/helpers/transforms.ts",
    "content": "import { getFormattedTokenBalance, challengeHelpers, appealHelpers, appealChallengeHelpers } from \"@joincivil/utils\";\nimport { ChallengeResultsProps } from \"@joincivil/components\";\n\nimport { BigNumber, AppealChallengeData, ChallengeData } from \"@joincivil/typescript-types\";\n\nconst getBaseChallengeResults = (\n  challengeData: ChallengeData | AppealChallengeData,\n): Partial<ChallengeResultsProps> => {\n  let totalVotes = \"\";\n  let votesFor = \"\";\n  let votesAgainst = \"\";\n  let percentFor = \"\";\n  let percentAgainst = \"\";\n  const hundred = new BigNumber(100);\n\n  const totalVotesBN = challengeData.poll.votesAgainst.add(challengeData.poll.votesFor);\n  totalVotes = getFormattedTokenBalance(totalVotesBN);\n  votesFor = getFormattedTokenBalance(challengeData.poll.votesFor);\n  votesAgainst = getFormattedTokenBalance(challengeData.poll.votesAgainst);\n  if (challengeData.poll.votesFor.isZero()) {\n    percentFor = \"0\";\n    percentAgainst = \"100\";\n  } else {\n    percentFor = challengeData.poll.votesFor\n      .mul(hundred)\n      .div(totalVotesBN)\n      .toString();\n    percentAgainst = challengeData.poll.votesAgainst\n      .mul(hundred)\n      .div(totalVotesBN)\n      .toString();\n  }\n\n  return {\n    totalVotes,\n    votesFor,\n    votesAgainst,\n    percentFor,\n    percentAgainst,\n  };\n};\n\nexport const getChallengeResultsProps = (challengeData: ChallengeData): ChallengeResultsProps | {} => {\n  if (!challengeData) {\n    return {};\n  }\n  const baseChallengeResults = getBaseChallengeResults(challengeData);\n  const didChallengeSucceed = challengeHelpers.didChallengeSucceed(challengeData);\n  const didChallengeOriginallySucceed = challengeHelpers.didChallengeOriginallySucceed(challengeData);\n  const doesChallengeHaveAppeal = challengeHelpers.doesChallengeHaveAppeal(challengeData);\n  const isAwaitingAppealJudgement =\n    challengeData.appeal && appealHelpers.isAppealAwaitingJudgment(challengeData.appeal);\n\n  return {\n    ...(baseChallengeResults as ChallengeResultsProps),\n    didChallengeSucceed,\n    didChallengeOriginallySucceed,\n    doesChallengeHaveAppeal,\n    isAwaitingAppealJudgement,\n  };\n};\n\nexport const getAppealChallengeResultsProps = (appealChallengeData: AppealChallengeData) => {\n  if (!appealChallengeData) {\n    return {};\n  }\n  const {\n    totalVotes: appealChallengeTotalVotes,\n    votesFor: appealChallengeVotesFor,\n    votesAgainst: appealChallengeVotesAgainst,\n    percentFor: appealChallengePercentFor,\n    percentAgainst: appealChallengePercentAgainst,\n  } = getBaseChallengeResults(appealChallengeData);\n  const didAppealChallengeSucceed = appealChallengeHelpers.didAppealChallengeSucceed(appealChallengeData);\n\n  return {\n    appealChallengeTotalVotes,\n    appealChallengeVotesFor,\n    appealChallengeVotesAgainst,\n    appealChallengePercentFor,\n    appealChallengePercentAgainst,\n    didAppealChallengeSucceed,\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/helpers/vote.ts",
    "content": "import * as store from \"store\";\nimport { BigNumber, EthAddress } from \"@joincivil/typescript-types\";\n\nexport function fetchVote(challengeId: BigNumber, user: EthAddress | undefined): BigNumber | undefined {\n  if (!user) {\n    return undefined;\n  }\n  const key = `voteOption:${challengeId.toString()}:${user}`;\n\n  const savedVoteOption: string = store.get(key);\n  if (savedVoteOption) {\n    return new BigNumber(savedVoteOption);\n  } else {\n    return undefined;\n  }\n}\n\nexport function saveVote(challengeId: BigNumber, user: EthAddress, voteOption: BigNumber): void {\n  const key = `voteOption:${challengeId.toString()}:${user}`;\n  store.set(key, voteOption.toString());\n}\n"
  },
  {
    "path": "packages/dapp/src/index.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport * as Sentry from \"@sentry/browser\";\nimport { CaptureConsole } from \"@sentry/integrations\";\n\nimport { App } from \"./App\";\n\nimport config from \"./helpers/config\";\n\nSentry.init({\n  dsn: config.SENTRY_DSN,\n  environment: config.ENVIRONMENT,\n  release: config.APP_VERSION,\n  integrations(integrations: any[]): any[] {\n    return integrations\n      .filter(integration => integration.name !== \"Breadcrumbs\" || config.ENVIRONMENT === \"production\")\n      .concat(new CaptureConsole({ levels: [\"error\"] }));\n  },\n});\n\nReactDOM.render(<App />, document.getElementById(\"root\") as HTMLElement);\n"
  },
  {
    "path": "packages/dapp/src/react-app-env.d.ts",
    "content": "/// <reference types=\"react-scripts\" />\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/analytics.ts",
    "content": "import { AnyAction } from \"redux\";\n\nexport enum analyticsEventActions {\n  ANALYTICS_EVENT = \"ANALYTICS_EVENT\",\n}\n\nexport interface AnalyticsEvent {\n  category: string;\n  action: string;\n  label?: string;\n  value?: number;\n}\n\nexport const analyticsEvent = (event: AnalyticsEvent): AnyAction => {\n  return {\n    type: analyticsEventActions.ANALYTICS_EVENT,\n    event,\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/challenges.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { Dispatch } from \"react-redux\";\nimport { AnyAction } from \"redux\";\nimport { CivilHelper } from \"../../apis/CivilHelper\";\n\nexport enum challengeActions {\n  ADD_GRANT_APPEAL_TX = \"ADD_GRANT_APPEAL_TX\",\n  FETCH_GRANT_APPEAL_TX = \"FETCH_GRANT_APPEAL_TX\",\n}\n\nexport const addGrantAppealTx = (listingAddress: EthAddress, txData: any): AnyAction => {\n  return {\n    type: challengeActions.ADD_GRANT_APPEAL_TX,\n    data: { listingAddress, txData },\n  };\n};\n\nexport const fetchGrantAppealTx = (listingAddress: EthAddress) => {\n  return {\n    type: challengeActions.FETCH_GRANT_APPEAL_TX,\n    data: { listingAddress },\n  };\n};\n\nexport const fetchAndAddGrantAppealTx = (helper: CivilHelper, listingAddress: string): any => {\n  return async (dispatch: Dispatch<any>): Promise<AnyAction> => {\n    dispatch(fetchGrantAppealTx(listingAddress));\n    const tcr = await helper.getTCR();\n    const grantAppealTx = await tcr.getRawGrantAppealTxData(listingAddress);\n\n    return dispatch(addGrantAppealTx(listingAddress, grantAppealTx));\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/contractAddresses.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\n\nexport enum contractAddressesActions {\n  SET_CONTRACT_ADDRESS = \"SET_CONTRACT_ADDRESS\",\n}\n\nexport const setContractAddress = (contractAddressKey: string, contractAddressValue: EthAddress): AnyAction => {\n  return {\n    type: contractAddressesActions.SET_CONTRACT_ADDRESS,\n    key: contractAddressKey,\n    value: contractAddressValue,\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/errors.ts",
    "content": "import { AnyAction } from \"redux\";\n\nexport enum errorActions {\n  WINDOW_ON_ERROR = \"WINDOW_ON_ERROR\",\n}\n\nexport const catchWindowOnError = (\n  message: string,\n  source: string,\n  lineNum: string,\n  colNum: string,\n  errorObj: any,\n): AnyAction => {\n  const wrappedError = {\n    message,\n    source,\n    lineNum,\n    colNum,\n    errorObj,\n  };\n\n  return {\n    type: errorActions.WINDOW_ON_ERROR,\n    error: wrappedError,\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/government.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { Dispatch } from \"react-redux\";\nimport { MultisigTransaction } from \"@joincivil/core/build/src/contracts/multisig/multisigtransaction\";\nimport { CivilHelper } from \"../../apis/CivilHelper\";\n\nexport enum governmentActions {\n  ADD_OR_UPDATE_GOVT_PROPOSAL = \"ADD_OR_UPDATE_GOVT_PROPOSAL\",\n  SET_GOVT_PARAMETER = \"SET_GOVT_PARAMETER\",\n  MULTI_SET_GOVT_PARAMETERS = \"MULTI_SET_GOVT_PARAMETERS\",\n  ADD_GOVERNMENT_DATA = \"ADD_GOVERNMENT_DATA\",\n  SET_CONSTITUTION_DATA = \"SET_CONSTITUTION_DATA\",\n  SET_APPELLATE = \"SET_APPELLATE\",\n  SET_CONTROLLER = \"SET_CONTROLLER\",\n  SET_APPELLATE_MEMBERS = \"SET_APPELLATE_MEMBERS\",\n  ADD_COUNCIL_MULTISIG_TRANSACTION = \"ADD_COUNCIL_MULTISIG_TRANSACTION\",\n}\n\nexport const setGovernmentParameter = (paramName: string, paramValue: any): AnyAction => {\n  return {\n    type: governmentActions.SET_GOVT_PARAMETER,\n    paramName,\n    paramValue,\n  };\n};\n\nexport const multiSetGovtParameters = (paramsObj: object): AnyAction => {\n  return {\n    type: governmentActions.MULTI_SET_GOVT_PARAMETERS,\n    params: paramsObj,\n  };\n};\n\nexport const addOrUpdateGovtProposal = (proposal: object): AnyAction => {\n  return {\n    type: governmentActions.ADD_OR_UPDATE_GOVT_PROPOSAL,\n    proposal,\n  };\n};\n\nexport const addGovernmentData = (governmentDataKey: string, governmentDataValue: string): AnyAction => {\n  return {\n    type: governmentActions.ADD_GOVERNMENT_DATA,\n    data: {\n      key: governmentDataKey,\n      value: governmentDataValue,\n    },\n  };\n};\n\nexport const setConstitutionData = (constitutionDataKey: string, constitutionDataValue: string): AnyAction => {\n  return {\n    type: governmentActions.SET_CONSTITUTION_DATA,\n    data: {\n      key: constitutionDataKey,\n      value: constitutionDataValue,\n    },\n  };\n};\n\nexport const setAppellate = (appellate: string): AnyAction => {\n  return {\n    type: governmentActions.SET_APPELLATE,\n    data: appellate,\n  };\n};\n\nexport const setController = (controller: string): AnyAction => {\n  return {\n    type: governmentActions.SET_CONTROLLER,\n    data: controller,\n  };\n};\nexport const setAppellateMembers = (members: string[]): AnyAction => {\n  return {\n    type: governmentActions.SET_APPELLATE_MEMBERS,\n    data: members,\n  };\n};\n\nexport const addCouncilMultisigTransaction = (transaction: MultisigTransaction): AnyAction => {\n  return {\n    type: governmentActions.ADD_COUNCIL_MULTISIG_TRANSACTION,\n    data: transaction,\n  };\n};\n\nexport const checkAndUpdateGovtParameterProposalState = (helper: CivilHelper, paramPropID: string): any => {\n  return async (dispatch: Dispatch<any>, getState: any): Promise<AnyAction | undefined> => {\n    const { proposals } = getState().networkDependent;\n    const paramProposal = proposals.get(paramPropID);\n    if (!paramProposal) {\n      return;\n    }\n    const tcr = await helper.getTCR();\n    const government = await tcr.getGovernment();\n    const paramProposalState = await government.getPropState(paramPropID);\n\n    if (paramProposalState !== paramProposal.state) {\n      return dispatch(addOrUpdateGovtProposal({ ...paramProposal, state: paramProposalState }));\n    }\n\n    return;\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/network.ts",
    "content": "import { AnyAction } from \"redux\";\n\nexport enum networkActions {\n  SET_NETWORK = \"SET_NETWORK\",\n  SET_NETWORK_NAME = \"SET_NETWORK_NAME\",\n}\n\nconst internalSetNetwork = (network: string): AnyAction => {\n  return {\n    type: networkActions.SET_NETWORK,\n    data: network,\n  };\n};\n\nexport const setNetwork = (network: string): any => {\n  return (dispatch: any, getState: any): AnyAction => {\n    return dispatch(internalSetNetwork(network));\n  };\n};\n\nexport const setNetworkName = (networkName: string): AnyAction => {\n  return {\n    type: networkActions.SET_NETWORK_NAME,\n    data: networkName,\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/newsrooms.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { EthAddress, ContentData, StorageHeader } from \"@joincivil/typescript-types\";\nimport { getIPFSContent } from \"../../helpers/listingEvents\";\nimport { CivilHelper } from \"../../apis/CivilHelper\";\n\nexport enum newsroomActions {\n  ADD_USER_NEWSROOM = \"ADD_USER_NEWSROOM\",\n  ADD_CONTENT = \"ADD_CONTENT\",\n  FETCH_CONTENT = \"FETCH_CONTENT\",\n  ADD_CHARTER_REVISION = \"ADD_CHARTER_REVISION\",\n}\n\nexport const addUserNewsroom = (address: EthAddress): AnyAction => {\n  return {\n    type: newsroomActions.ADD_USER_NEWSROOM,\n    data: address,\n  };\n};\n\nexport const addContent = (header: StorageHeader, content: ContentData): AnyAction => {\n  return {\n    type: newsroomActions.ADD_CONTENT,\n    data: {\n      header,\n      content,\n    },\n  };\n};\n\nexport const addCharterRevision = (address: EthAddress, revisionId: number, header: StorageHeader) => {\n  return {\n    type: newsroomActions.ADD_CHARTER_REVISION,\n    data: {\n      address,\n      revisionId,\n      header,\n    },\n  };\n};\n\nexport const fetchContent = (header: StorageHeader): AnyAction => {\n  return {\n    type: newsroomActions.FETCH_CONTENT,\n    data: header,\n  };\n};\n\nexport const getContent = (helper: CivilHelper, header: StorageHeader): any => {\n  return async (dispatch: any, getState: any): Promise<AnyAction | void> => {\n    const contentFetched = getState().networkDependent.contentFetched;\n    if (!contentFetched.has(header.uri)) {\n      dispatch(fetchContent(header));\n      await getIPFSContent(helper, header, dispatch);\n    }\n  };\n};\n\nexport const getBareContent = (helper: CivilHelper, uri: string): any => {\n  return async (dispatch: any, getState: any): Promise<AnyAction | void> => {\n    const contentFetched = getState().networkDependent.contentFetched;\n    if (!contentFetched.has(uri)) {\n      await getIPFSContent(helper, { uri }, dispatch);\n      dispatch(fetchContent({ uri }));\n    }\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/ui.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { Dispatch } from \"react-redux\";\n\nexport enum uiActions {\n  ADD_OR_UPDATE_UI_STATE = \"ADD_OR_UPDATE_UI_STATE\",\n  SET_LOADING_FINISHED = \"SET_LOADING_FINISHED\",\n  SHOW_WEB3_AUTH_MODAL = \"SHOW_WEB3_AUTH_MODAL\",\n  SET_WEB3_AUTH_TYPE = \"SET_WEB3_AUTH_TYPE\",\n  HIDE_WEB3_AUTH_MODAL = \"HIDE_WEB3_AUTH_MODAL\",\n}\n\nexport const addOrUpdateUIState = (key: string, value: any): AnyAction => {\n  return {\n    type: uiActions.ADD_OR_UPDATE_UI_STATE,\n    key,\n    value,\n  };\n};\n\n// authType can be \"login\" or \"signup\"\nconst setWeb3AuthType = (value: string): AnyAction => {\n  return {\n    type: uiActions.SET_WEB3_AUTH_TYPE,\n    value,\n  };\n};\n\nconst showWeb3AuthModal = (): AnyAction => {\n  return {\n    type: uiActions.SHOW_WEB3_AUTH_MODAL,\n  };\n};\n\nexport const hideWeb3AuthModal = (): AnyAction => {\n  return {\n    type: uiActions.HIDE_WEB3_AUTH_MODAL,\n  };\n};\n\nexport const showWeb3LoginModal = async (): Promise<any> => {\n  return async (dispatch: Dispatch<any>, getState: any): Promise<AnyAction> => {\n    dispatch(setWeb3AuthType(\"login\"));\n    return dispatch(showWeb3AuthModal());\n  };\n};\n\nexport const showWeb3SignupModal = async (): Promise<any> => {\n  return async (dispatch: Dispatch<any>, getState: any): Promise<AnyAction> => {\n    dispatch(setWeb3AuthType(\"signup\"));\n    return dispatch(showWeb3AuthModal());\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/actionCreators/userAccount.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nexport enum userActions {\n  ADD_USER = \"ADD_USER\",\n  UPDATE_VOTING_BALANCE = \"UPDATE_VOTING_BALANCE\",\n  UPDATE_TOKEN_BALANCE = \"UPDATE_TOKEN_BALANCE\",\n}\n\nexport const addUser = (account: any, balance: BigNumber, votingBalance: BigNumber): AnyAction => {\n  return {\n    type: userActions.ADD_USER,\n    data: { account, balance, votingBalance },\n  };\n};\n\nexport const updateUserTokenBalance = (account: any, balance: BigNumber): AnyAction => {\n  return {\n    type: userActions.UPDATE_TOKEN_BALANCE,\n    data: { account, balance },\n  };\n};\n\nexport const updateUserVotingBalance = (account: any, votingBalance: BigNumber): AnyAction => {\n  return {\n    type: userActions.UPDATE_VOTING_BALANCE,\n    data: { account, votingBalance },\n  };\n};\n"
  },
  {
    "path": "packages/dapp/src/redux/analytics.ts",
    "content": "import { LOCATION_CHANGE } from \"connected-react-router\";\nimport { createMiddleware } from \"redux-beacon\";\nimport GoogleAnalytics, { trackPageView, trackEvent } from \"@redux-beacon/google-analytics\";\nimport { errorActions } from \"./actionCreators/errors\";\nimport { newsroomSignupAnalyticsEvents } from \"@joincivil/newsroom-signup\";\nimport { analyticsEventActions } from \"./actionCreators/analytics\";\nconst { ANALYTICS_EVENT } = analyticsEventActions;\n\nconst eventsMap = {\n  ...newsroomSignupAnalyticsEvents,\n\n  [LOCATION_CHANGE]: trackPageView((action: any) => {\n    return {\n      page: action.payload.location.pathname,\n    };\n  }),\n  [errorActions.WINDOW_ON_ERROR]: trackEvent((action, prevState, nextState) => {\n    const { error } = action;\n    return {\n      category: \"Error\",\n      action: error.message,\n      label: `Source: ${error.source} L${error.lineNum}-${error.colNum}`,\n    };\n  }),\n  [ANALYTICS_EVENT]: trackEvent(({ event }) => event),\n};\n\nexport const gaMiddleware = createMiddleware(eventsMap, GoogleAnalytics());\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/challenges.ts",
    "content": "import { Map } from \"immutable\";\nimport { AnyAction } from \"redux\";\nimport { TxDataAll } from \"@joincivil/typescript-types\";\nimport { challengeActions } from \"../actionCreators/challenges\";\n\nexport function grantAppealTxs(\n  state: Map<string, TxDataAll> = Map<string, TxDataAll>(),\n  action: AnyAction,\n): Map<string, TxDataAll> {\n  switch (action.type) {\n    case challengeActions.ADD_GRANT_APPEAL_TX:\n      return state.set(action.data.listingAddress, action.data.txData);\n    default:\n      return state;\n  }\n}\n\nexport function grantAppealTxsFetching(\n  state: Map<string, boolean> = Map<string, boolean>(),\n  action: AnyAction,\n): Map<string, boolean> {\n  switch (action.type) {\n    case challengeActions.FETCH_GRANT_APPEAL_TX:\n      return state.set(action.data.listingAddress, true);\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/contractAddresses.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { Map } from \"immutable\";\nimport { EthAddress } from \"@joincivil/core\";\nimport { contractAddressesActions } from \"../actionCreators/contractAddresses\";\n\nexport function contractAddresses(\n  state: Map<string, EthAddress> = Map<string, EthAddress>(),\n  action: AnyAction,\n): Map<string, EthAddress> {\n  switch (action.type) {\n    case contractAddressesActions.SET_CONTRACT_ADDRESS:\n      return state.set(action.key, action.value);\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/government.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { governmentActions } from \"../actionCreators/government\";\nimport { Map } from \"immutable\";\nimport { MultisigTransaction } from \"@joincivil/core/build/src/contracts/multisig/multisigtransaction\";\n\nexport function govtParameters(state: object = {}, action: AnyAction): object {\n  switch (action.type) {\n    case governmentActions.SET_GOVT_PARAMETER:\n      return { ...state, [action.paramName]: action.paramValue };\n    case governmentActions.MULTI_SET_GOVT_PARAMETERS:\n      return { ...state, ...action.params };\n    default:\n      return state;\n  }\n}\n\nexport function govtProposals(\n  state: Map<string, object> = Map<string, object>(),\n  action: AnyAction,\n): Map<string, object> {\n  switch (action.type) {\n    case governmentActions.ADD_OR_UPDATE_GOVT_PROPOSAL:\n      const newState = state.set(action.proposal.id, action.proposal);\n      return newState;\n    default:\n      return state;\n  }\n}\n\nexport function government(state: Map<string, string> = Map<string, string>(), action: AnyAction): Map<string, string> {\n  switch (action.type) {\n    case governmentActions.ADD_GOVERNMENT_DATA:\n      return state.set(action.data.key, action.data.value);\n    default:\n      return state;\n  }\n}\n\nexport function constitution(\n  state: Map<string, string> = Map<string, string>(),\n  action: AnyAction,\n): Map<string, string> {\n  switch (action.type) {\n    case governmentActions.SET_CONSTITUTION_DATA:\n      return state.set(action.data.key, action.data.value);\n    default:\n      return state;\n  }\n}\n\nexport function appellate(state: string = \"\", action: AnyAction): string {\n  switch (action.type) {\n    case governmentActions.SET_APPELLATE:\n      return action.data;\n    default:\n      return state;\n  }\n}\n\nexport function controller(state: string = \"\", action: AnyAction): string {\n  switch (action.type) {\n    case governmentActions.SET_CONTROLLER:\n      return action.data;\n    default:\n      return state;\n  }\n}\n\nexport function appellateMembers(state: string[] = [\"\"], action: AnyAction): string[] {\n  switch (action.type) {\n    case governmentActions.SET_APPELLATE_MEMBERS:\n      return action.data;\n    default:\n      return state;\n  }\n}\n\nexport function councilMultisigTransactions(\n  state: Map<string, MultisigTransaction> = Map<string, MultisigTransaction>(),\n  action: AnyAction,\n): Map<string, MultisigTransaction> {\n  switch (action.type) {\n    case governmentActions.ADD_COUNCIL_MULTISIG_TRANSACTION:\n      return state.set(action.data.information.data.substring(0, 74), action.data);\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/index.ts",
    "content": "import { combineReducers, AnyAction } from \"redux\";\nimport { grantAppealTxs, grantAppealTxsFetching } from \"./challenges\";\nimport {\n  government,\n  govtParameters,\n  constitution,\n  appellate,\n  controller,\n  appellateMembers,\n  councilMultisigTransactions,\n  govtProposals,\n} from \"./government\";\nimport { user } from \"./userAccount\";\nimport { network, networkName } from \"./network\";\nimport { ui, showWeb3AuthModal, web3AuthType } from \"./ui\";\nimport { contractAddresses } from \"./contractAddresses\";\nimport { Set, Map } from \"immutable\";\nimport { MultisigTransaction } from \"@joincivil/core\";\nimport { EthAddress, EthContentHeader, ContentData, TxDataAll } from \"@joincivil/typescript-types\";\nimport { currentUserNewsrooms, content, contentFetched, charterRevisions } from \"./newsrooms\";\nimport {\n  newsrooms,\n  NewsroomState,\n  newsroomUi,\n  newsroomUsers,\n  newsroomGovernment,\n  grantApplication,\n} from \"@joincivil/newsroom-signup\";\nimport { networkActions } from \"../actionCreators/network\";\n\nexport interface State {\n  networkDependent: NetworkDependentState;\n  network: string;\n  networkName: string;\n  ui: Map<string, any>;\n  showWeb3AuthModal: boolean;\n  web3AuthType: string;\n  newsrooms: Map<string, NewsroomState>;\n  newsroomUi: Map<string, any>;\n  newsroomUsers: Map<EthAddress, string>;\n  newsroomGovernment: Map<string, string>;\n  grantApplication: Map<string, boolean>;\n}\n\nexport interface NetworkDependentState {\n  currentUserNewsrooms: Set<string>;\n  content: Map<string, ContentData>;\n  contentFetched: Map<string, EthContentHeader>;\n  user: { account: any };\n  govtParameters: object;\n  govtProposals: Map<string, object>;\n  grantAppealTxs: Map<string, TxDataAll>;\n  grantAppealTxsFetching: Map<string, boolean>;\n  government: Map<string, string>;\n  constitution: Map<string, string>;\n  appellate: string;\n  controller: string;\n  appellateMembers: string[];\n  councilMultisigTransactions: Map<string, MultisigTransaction>;\n  contractAddresses: Map<string, EthAddress>;\n}\n\nconst networkDependentReducers = combineReducers({\n  currentUserNewsrooms,\n  content,\n  contentFetched,\n  charterRevisions,\n  user,\n  govtParameters,\n  govtProposals,\n  grantAppealTxs,\n  grantAppealTxsFetching,\n  government,\n  constitution,\n  appellate,\n  controller,\n  appellateMembers,\n  councilMultisigTransactions,\n  contractAddresses,\n});\n\nconst networkDependent = (state: any, action: AnyAction) => {\n  if (action.type === networkActions.SET_NETWORK) {\n    return networkDependentReducers(undefined, action);\n  }\n  return networkDependentReducers(state, action);\n};\nimport { connectRouter } from \"connected-react-router\";\n\nexport default (history: any) =>\n  combineReducers({\n    router: connectRouter(history),\n    newsrooms, // have to be top level because come from a package\n    newsroomUi,\n    newsroomUsers,\n    newsroomGovernment,\n    grantApplication,\n    networkDependent,\n    network,\n    networkName,\n    ui,\n    showWeb3AuthModal,\n    web3AuthType,\n  });\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/network.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { networkActions } from \"../actionCreators/network\";\nimport config from \"../../helpers/config\";\n\nexport function network(state: string = config.DEFAULT_ETHEREUM_NETWORK!, action: AnyAction): string {\n  switch (action.type) {\n    case networkActions.SET_NETWORK:\n      return action.data;\n    default:\n      return state;\n  }\n}\n\nexport function networkName(state: string = \"\", action: AnyAction): string {\n  switch (action.type) {\n    case networkActions.SET_NETWORK_NAME:\n      return action.data;\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/newsrooms.ts",
    "content": "import { Set, Map } from \"immutable\";\nimport { AnyAction } from \"redux\";\nimport { newsroomActions } from \"../actionCreators/newsrooms\";\nimport { EthAddress, StorageHeader, EthContentHeader, ContentData } from \"@joincivil/typescript-types\";\n\nexport function currentUserNewsrooms(state: Set<string> = Set<string>(), action: AnyAction): Set<string> {\n  switch (action.type) {\n    case newsroomActions.ADD_USER_NEWSROOM:\n      return state.add(action.data);\n    default:\n      return state;\n  }\n}\n\nexport function contentFetched(\n  state: Map<string, StorageHeader> = Map<string, StorageHeader>(),\n  action: AnyAction,\n): Map<string, StorageHeader> {\n  switch (action.type) {\n    case newsroomActions.FETCH_CONTENT:\n      const key = action.data.uri;\n      return state.set(key, action.data);\n    default:\n      return state;\n  }\n}\n\nexport function content(\n  state: Map<string, ContentData> = Map<string, ContentData>(),\n  action: AnyAction,\n): Map<string, ContentData> {\n  switch (action.type) {\n    case newsroomActions.ADD_CONTENT:\n      return state.set(action.data.header.uri, action.data.content);\n    default:\n      return state;\n  }\n}\n\nexport function charterRevisions(\n  state: Map<EthAddress, Map<number, EthContentHeader>> = Map<EthAddress, Map<number, EthContentHeader>>(),\n  action: AnyAction,\n): Map<EthAddress, Map<number, EthContentHeader>> {\n  switch (action.type) {\n    case newsroomActions.ADD_CHARTER_REVISION:\n      const { address, revisionId, header } = action.data;\n      let newsroomContentRevisions = state.get(address);\n      if (!newsroomContentRevisions) {\n        newsroomContentRevisions = Map<number, EthContentHeader>();\n      }\n      if (header.uri) {\n        return state.set(address, newsroomContentRevisions.set(revisionId, header));\n      }\n      return state;\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/ui.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { uiActions } from \"../actionCreators/ui\";\nimport { Map } from \"immutable\";\n\nexport function ui(state: Map<string, any> = Map<string, any>(), action: AnyAction): Map<string, any> {\n  switch (action.type) {\n    case uiActions.ADD_OR_UPDATE_UI_STATE:\n      return state.set(action.key, action.value);\n    default:\n      return state;\n  }\n}\n\nexport function web3AuthType(state: string = \"\", action: AnyAction): string {\n  switch (action.type) {\n    case uiActions.HIDE_WEB3_AUTH_MODAL:\n      return \"\";\n    case uiActions.SET_WEB3_AUTH_TYPE:\n      return action.value;\n    default:\n      return state;\n  }\n}\n\nexport function showWeb3AuthModal(state: boolean = false, action: AnyAction): boolean {\n  switch (action.type) {\n    case uiActions.SHOW_WEB3_AUTH_MODAL:\n      return true;\n    case uiActions.HIDE_WEB3_AUTH_MODAL:\n      return false;\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/reducers/userAccount.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { userActions } from \"../actionCreators/userAccount\";\n\nexport function user(state: { account: any } = { account: {} }, action: AnyAction): { account: any } {\n  const accountState = state.account;\n  switch (action.type) {\n    case userActions.ADD_USER:\n      return { account: action.data };\n    case userActions.UPDATE_VOTING_BALANCE:\n      return { account: { ...accountState, votingBalance: action.data.votingBalance } };\n    case userActions.UPDATE_TOKEN_BALANCE:\n      return { account: { ...accountState, balance: action.data.balance } };\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/redux/store.ts",
    "content": "import thunk from \"redux-thunk\";\nimport { createStore, compose, applyMiddleware } from \"redux\";\nimport { routerMiddleware } from \"connected-react-router\";\n\nimport { gaMiddleware } from \"./analytics\";\nimport { createBrowserHistory } from \"history\";\nimport createRootReducer from \"./reducers\";\n\nexport const history = createBrowserHistory();\n\nexport const store = createStore(\n  createRootReducer(history),\n  {},\n  compose(applyMiddleware(routerMiddleware(history), thunk, gaMiddleware)),\n);\n"
  },
  {
    "path": "packages/dapp/src/registerServiceWorker.ts",
    "content": "// tslint:disable:no-console\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n  window.location.hostname === \"localhost\" ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === \"[::1]\" ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\nexport default function register(): void {\n  if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL!, window.location.toString());\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won\"t work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener(\"load\", () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (!isLocalhost) {\n        // Is not local host. Just register service worker\n        registerValidSW(swUrl);\n      } else {\n        // This is running on localhost. Lets check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl: string): void {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker) {\n          installingWorker.onstatechange = () => {\n            if (installingWorker.state === \"installed\") {\n              if (navigator.serviceWorker.controller) {\n                // At this point, the old content will have been purged and\n                // the fresh content will have been added to the cache.\n                // It\"s the perfect time to display a \"New content is\n                // available; please refresh.\" message in your web app.\n                console.log(\"New content is available; please refresh.\");\n              } else {\n                // At this point, everything has been precached.\n                // It\"s the perfect time to display a\n                // \"Content is cached for offline use.\" message.\n                console.log(\"Content is cached for offline use.\");\n              }\n            }\n          };\n        }\n      };\n    })\n    .catch(error => {\n      console.error(\"Error during service worker registration:\", error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl: string): void {\n  // Check if the service worker can be found. If it can\"t reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      if (response.status === 404 || response.headers.get(\"content-type\")!.indexOf(\"javascript\") === -1) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready\n          .then(registration => {\n            registration\n              .unregister()\n              .then(() => {\n                window.location.reload();\n              })\n              .catch();\n          })\n          .catch();\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl);\n      }\n    })\n    .catch(() => {\n      console.log(\"No internet connection found. App is running in offline mode.\");\n    });\n}\n\nexport function unregister(): void {\n  if (\"serviceWorker\" in navigator) {\n    navigator.serviceWorker.ready\n      .then(registration => {\n        registration.unregister().catch();\n      })\n      .catch();\n  }\n}\n"
  },
  {
    "path": "packages/dapp/src/registry/LazyRegistryApp.tsx",
    "content": "import * as React from \"react\";\nimport { RegistryShell } from \"./RegistryShell\";\n\nconst AppProvider = React.lazy(async () =>\n  import(/* webpackChunkName: \"app-provider\" */ \"../components/providers/AppProvider\"),\n);\nconst RegistryApp = React.lazy(async () => import(/* webpackChunkName: \"registry\" */ \"./RegistryApp\"));\n\nconst LazyRegistryApp = () => {\n  return (\n    <React.Suspense fallback={<RegistryShell />}>\n      <AppProvider>\n        <RegistryApp />\n      </AppProvider>\n    </React.Suspense>\n  );\n};\n\nexport default LazyRegistryApp;\n"
  },
  {
    "path": "packages/dapp/src/registry/RegistryApp.tsx",
    "content": "import * as React from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Main from \"../components/Main\";\nimport Footer from \"../components/footer/Footer\";\nimport { NavBar } from \"../components/header/NavBar\";\nimport { CivilHelperProvider } from \"../apis/CivilHelper\";\n\nexport const RegistrySection: React.FunctionComponent = () => {\n  return (\n    <React.Suspense fallback={<></>}>\n      <CivilHelperProvider>\n        <Switch>\n          <Route>\n            <>\n              <NavBar />\n              <Main />\n              <Footer />\n            </>\n          </Route>\n        </Switch>\n      </CivilHelperProvider>\n    </React.Suspense>\n  );\n};\n\nexport default RegistrySection;\n"
  },
  {
    "path": "packages/dapp/src/registry/RegistryShell.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components/macro\";\n\nimport { NavBar } from \"../components/header/NavBar\";\nimport Footer from \"../components/footer/Footer\";\n\nconst Shell = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: start;\n  height: 100vh;\n`;\n\nconst Fill = styled.div`\n  flex-grow: 1;\n`;\n\nexport const RegistryShell = () => {\n  return (\n    <Shell>\n      <NavBar />\n      <Fill></Fill>\n      <Footer />\n    </Shell>\n  );\n};\n"
  },
  {
    "path": "packages/dapp/src/selectors/index.ts",
    "content": "import {\n  BigNumber,\n  EthAddress,\n  ListingWrapper,\n  WrappedChallengeData,\n  AppealChallengeData,\n  NewsroomWrapper,\n} from \"@joincivil/typescript-types\";\nimport { createSelector } from \"reselect\";\nimport { Set, Map } from \"immutable\";\nimport { listingHelpers, challengeHelpers, appealHelpers, appealChallengeHelpers } from \"@joincivil/utils\";\nimport { NewsroomState } from \"@joincivil/newsroom-signup\";\nimport { State } from \"../redux/reducers\";\n\nexport interface ListingContainerProps {\n  listingAddress?: EthAddress;\n  listing?: ListingWrapper;\n  newsroom?: NewsroomWrapper;\n}\n\nexport interface ChallengeContainerProps {\n  challengeID?: string | BigNumber;\n}\n\nexport interface AppealChallengeContainerProps {\n  appealChallengeID?: string | BigNumber;\n}\n\nexport interface ProposalParameterProps {\n  parameterName: string;\n}\n\nexport interface ProposalContainerProps {\n  propID?: string | BigNumber;\n}\n\n// Simple selectors from State. These don't look at component props or\n// return any derived props from state\nexport const getUser = (state: State) => state.networkDependent.user;\n\nexport const getGovtParameterProposals = (state: State) => state.networkDependent.govtProposals;\n\nexport const getAppellateMembers = (state: State) => state.networkDependent.appellateMembers;\n\n// end simple selectors\n\n// Memo-ized selectors. These selectors either return derived state and are\n// memo-ized by reselect to optimize rendering and/or use props to\n// return some derived data from state\nexport const getNewsroom = (state: State, props: ListingContainerProps): NewsroomState | undefined => {\n  if (!props.listingAddress) {\n    return;\n  }\n  return state.newsrooms.get(props.listingAddress);\n};\n\nexport const getIsUserNewsroomOwner = (newsroomWrapper?: NewsroomWrapper, user?: any) => {\n  if (!newsroomWrapper || !user) {\n    return;\n  }\n  const userAccount = user.account && user.account.account;\n  return newsroomWrapper.data.owners.includes(userAccount);\n};\n\nexport const getIsMemberOfAppellate = createSelector(\n  [getAppellateMembers, getUser],\n  (appellateMembers, user) => {\n    if (!appellateMembers || !user) {\n      return false;\n    }\n    return appellateMembers.includes(user.account.account);\n  },\n);\n\nexport const getListingAddress = (state: State, props: ListingContainerProps) => {\n  const { listing, listingAddress } = props;\n  if (!listing && !listingAddress) {\n    return;\n  }\n  const address = listingAddress || listing!.address;\n  return address;\n};\n\nexport const getChallengeID = (state: State, props: ChallengeContainerProps) => {\n  let { challengeID } = props;\n  if (!challengeID) {\n    return;\n  }\n  if (typeof challengeID !== \"string\") {\n    challengeID = challengeID.toString();\n  }\n  return challengeID;\n};\n\nexport const getAppealChallengeIDProp = (state: State, props: AppealChallengeContainerProps) => {\n  let { appealChallengeID } = props;\n  if (!appealChallengeID) {\n    return;\n  }\n  if (typeof appealChallengeID !== \"string\") {\n    appealChallengeID = appealChallengeID.toString();\n  }\n  return appealChallengeID;\n};\n\nexport const getProposalIDProp = (state: State, props: ProposalContainerProps) => {\n  let { propID } = props;\n  if (!propID) {\n    return;\n  }\n  if (typeof propID !== \"string\") {\n    propID = propID.toString();\n  }\n  return propID;\n};\n\nexport const getChallengeState = (challengeData: WrappedChallengeData) => {\n  const challenge = challengeData && challengeData.challenge;\n  const isResolved = challenge && challenge.resolved;\n  const inCommitPhase = challenge && challengeHelpers.isChallengeInCommitStage(challenge);\n  const inRevealPhase = challenge && challengeHelpers.isChallengeInRevealStage(challenge);\n  const canResolveChallenge = challenge && challengeHelpers.canResolveChallenge(challenge);\n  const canRequestAppeal = challenge && challengeHelpers.canRequestAppeal(challenge);\n  const doesChallengeHaveAppeal = challenge && challengeHelpers.doesChallengeHaveAppeal(challenge);\n  const isAwaitingAppealJudgement =\n    challenge && challenge.appeal && appealHelpers.isAppealAwaitingJudgment(challenge.appeal);\n  const canAppealBeResolved = challenge && challenge.appeal && appealHelpers.canAppealBeResolved(challenge.appeal);\n  const isAwaitingAppealChallenge =\n    challenge && challenge.appeal && appealHelpers.isAwaitingAppealChallenge(challenge.appeal);\n  const didChallengeSucceed = challenge && challengeHelpers.didChallengeSucceed(challenge);\n  const didChallengeOriginallySucceed = challenge && challengeHelpers.didChallengeOriginallySucceed(challenge);\n\n  const appealChallenge = challenge && challenge.appeal && challenge.appeal.appealChallenge;\n\n  const isAppealChallengeInCommitStage =\n    appealChallenge && appealChallengeHelpers.isAppealChallengeInCommitStage(appealChallenge);\n  const isAppealChallengeInRevealStage =\n    appealChallenge && appealChallengeHelpers.isAppealChallengeInRevealStage(appealChallenge);\n\n  return {\n    isResolved,\n    inCommitPhase,\n    inRevealPhase,\n    canRequestAppeal,\n    canResolveChallenge,\n    isAwaitingAppealJudgement,\n    isAwaitingAppealChallenge,\n    canAppealBeResolved,\n    didChallengeSucceed,\n    didChallengeOriginallySucceed,\n    doesChallengeHaveAppeal,\n    isAppealChallengeInCommitStage,\n    isAppealChallengeInRevealStage,\n  };\n};\n\nexport const getAppealChallengeState = (challengeData: AppealChallengeData) => {\n  const challenge = challengeData;\n  const isResolved = challenge && challenge.resolved;\n  const inCommitPhase = challenge && appealChallengeHelpers.isAppealChallengeInCommitStage(challenge);\n  const inRevealPhase = challenge && appealChallengeHelpers.isAppealChallengeInRevealStage(challenge);\n  const canResolveChallenge = challenge && appealChallengeHelpers.canAppealChallengeBeResolved(challenge);\n  const didChallengeSucceed = challenge && appealChallengeHelpers.didAppealChallengeSucceed(challenge);\n\n  return {\n    isResolved,\n    inCommitPhase,\n    inRevealPhase,\n    canResolveChallenge,\n    didAppealChallengeSucceed: didChallengeSucceed,\n  };\n};\n\nexport const getListingPhaseState = (listing?: ListingWrapper) => {\n  if (!listing) {\n    return;\n  }\n  const listingData = listing.data;\n  const challenge = listingData.challenge;\n  const appeal = challenge && challenge.appeal;\n\n  const isInApplication = listingHelpers.isInApplicationPhase(listingData);\n  const canBeChallenged = listingHelpers.canListingBeChallenged(listingData);\n  const canBeWhitelisted = listingHelpers.canBeWhitelisted(listingData);\n\n  const inChallengeCommitVotePhase = challenge && challengeHelpers.isChallengeInCommitStage(challenge);\n  const inChallengeRevealPhase = challenge && challengeHelpers.isChallengeInRevealStage(challenge);\n  const isAwaitingAppealRequest = listingHelpers.isAwaitingAppealRequest(listingData);\n  const canResolveChallenge = challenge && challengeHelpers.canResolveChallenge(challenge);\n  const didChallengeSucceed = challenge && challengeHelpers.didChallengeSucceed(challenge);\n  const didChallengeOriginallySucceed = challenge && challengeHelpers.didChallengeOriginallySucceed(challenge);\n\n  const doesChallengeHaveAppeal = challenge && challengeHelpers.doesChallengeHaveAppeal(challenge);\n  const isAwaitingAppealJudgement = listingHelpers.isListingAwaitingAppealJudgment(listingData);\n  const canListingAppealBeResolved = appeal && appealHelpers.canAppealBeResolved(appeal);\n\n  const isAwaitingAppealChallenge = listingHelpers.isListingAwaitingAppealChallenge(listingData);\n  const isInAppealChallengeCommitPhase = listingHelpers.isInAppealChallengeCommitPhase(listingData);\n  const isInAppealChallengeRevealPhase = listingHelpers.isInAppealChallengeRevealPhase(listingData);\n  const canListingAppealChallengeBeResolved = listingHelpers.canListingAppealChallengeBeResolved(listingData);\n\n  const isUnderChallenge = listingData.challenge && !listingData.challenge.resolved;\n  const isWhitelisted = listingData.isWhitelisted;\n  const isRejected = !isWhitelisted && !isInApplication && !canBeWhitelisted && !listingData.challenge;\n\n  const state = {\n    isInApplication,\n    canBeChallenged,\n    canBeWhitelisted,\n    canResolveChallenge,\n    inChallengeCommitVotePhase,\n    inChallengeRevealPhase,\n    isAwaitingAppealRequest,\n    isWhitelisted,\n    isUnderChallenge,\n    isRejected,\n    didChallengeSucceed,\n    didChallengeOriginallySucceed,\n    doesChallengeHaveAppeal,\n    isAwaitingAppealJudgement,\n    isAwaitingAppealChallenge,\n    canListingAppealBeResolved,\n    isInAppealChallengeCommitPhase,\n    isInAppealChallengeRevealPhase,\n    canListingAppealChallengeBeResolved,\n  };\n  return state;\n};\n\nexport const getProposalParameterName = (state: State, props: ProposalParameterProps) => {\n  const { parameterName } = props;\n  return parameterName;\n};\n\nexport const makeGetGovtProposalsByParameterName = () => {\n  return createSelector(\n    [getGovtParameterProposals, getProposalParameterName],\n    (parameterProposals: Map<string, any>, parameterName) => {\n      const proposalsForParameterName = parameterProposals\n        .filter((proposal, proposalID, iter): boolean => {\n          const { paramName: proposalParamName } = proposal;\n          return proposalParamName === parameterName;\n        })\n        .toSet() as Set<any>;\n      return proposalsForParameterName;\n    },\n  );\n};\n\n// end memoized selectors\n"
  },
  {
    "path": "packages/dapp/src/stories/StoriesApp.tsx",
    "content": "import * as React from \"react\";\n\nexport const StoriesApp = () => {\n  return <div>hello everyone!</div>;\n};\n\nexport default StoriesApp;\n"
  },
  {
    "path": "packages/dapp/src/typings.d.ts",
    "content": "declare module \"*.json\" {\n  const value: any;\n  export default value;\n}\n\ndeclare module \"slate\";\ndeclare module \"sort-by\";\ndeclare module \"react-ellipsis-text\";\ndeclare module \"react-rte\";\ndeclare module \"react-helmet\";\ndeclare module \"*.png\";\ndeclare module \"react-router-redux\";\ndeclare module \"react-router-named-routes\";\n"
  },
  {
    "path": "packages/dapp/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/dist\",\n    \"sourceMap\": true,\n    \"jsx\": \"preserve\",\n    \"moduleResolution\": \"node\",\n    \"rootDir\": \"src\",\n    \"noImplicitReturns\": true,\n    \"suppressImplicitAnyIndexErrors\": true,\n    \"strictPropertyInitialization\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"allowJs\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"resolveJsonModule\": true\n  },\n  \"exclude\": [\"node_modules\", \"build\", \"scripts\", \"acceptance-tests\", \"webpack\", \"jest\", \"src/setupTests.ts\"],\n  \"include\": [\"./**/*.ts\", \"./**/*.tsx\"],\n  \"types\": [\"react\", \"jest\"]\n}\n"
  },
  {
    "path": "packages/dapp/tsconfig.prod.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\"\n}\n"
  },
  {
    "path": "packages/dapp/tsconfig.test.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"module\": \"commonjs\"\n  }\n}\n"
  },
  {
    "path": "packages/dapp/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"],\n    \"no-var-requires\": false,\n    \"no-unused-variable\": [true, { \"ignore-pattern\": \"^React|styled|StyledComponentClass\" }],\n    \"whitespace\": false\n  }\n}\n"
  },
  {
    "path": "packages/dev-utils/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/dev-utils/README.md",
    "content": "# @joincivil/dev-utils\n\nUtilities shared between multiple JoinCivil packages used in development.\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n"
  },
  {
    "path": "packages/dev-utils/package.json",
    "content": "{\n  \"name\": \"@joincivil/dev-utils\",\n  \"version\": \"1.6.9\",\n  \"description\": \"Utilities shared between Civil packages\",\n  \"private\": false,\n  \"main\": \"build/src/index.js\",\n  \"types\": \"build/src/index.d.ts\",\n  \"bin\": {\n    \"civil-generate-from-files\": \"build/scripts/generate-from-files/bin.js\",\n    \"civil-strip-artifacts\": \"build/scripts/strip-artifacts.js\"\n  },\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"generate-from-files\": \"node build/scripts/generate-from-files/bin.js\",\n    \"strip-artifacts\": \"node build/scripts/strip-artifacts.js\",\n    \"lint\": \"tslint --project ./\",\n    \"tsc\": \"tsc\",\n    \"clean\": \"rimraf build/\"\n  },\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"argparse\": \"^1.0.9\",\n    \"bn-chai\": \"^1.0.1\",\n    \"bn.js\": \"^4.11.8\",\n    \"chai-as-promised\": \"^7.1.1\",\n    \"debug\": \"^4.1.0\",\n    \"dirty-chai\": \"^2.0.1\",\n    \"glob\": \"^7.1.2\",\n    \"handlebars\": \"^4.0.11\",\n    \"mkdirp\": \"^0.5.1\",\n    \"to-snake-case\": \"^1.0.0\",\n    \"web3\": \"^1.2.4\",\n    \"web3-core\": \"^1.2.4\",\n    \"web3-provider-engine\": \"^14.0.6\",\n    \"web3-providers-http\": \"^1.2.4\"\n  },\n  \"devDependencies\": {\n    \"@joincivil/tslint-rules\": \"^2.7.1\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@joincivil/typescript-typings\": \"^1.3.1\",\n    \"@types/argparse\": \"^1.0.33\",\n    \"@types/chai\": \"^4.1.1\",\n    \"@types/chai-as-promised\": \"^7.1.0\",\n    \"@types/debug\": \"0.0.30\",\n    \"@types/glob\": \"^5.0.35\",\n    \"@types/handlebars\": \"^4.0.36\",\n    \"@types/mkdirp\": \"^0.5.2\",\n    \"@types/node\": \"^10.12.0\",\n    \"rimraf\": \"^2.6.2\",\n    \"tslint\": \"^5.17.0\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/dev-utils/scripts/generate-from-files/bin.ts",
    "content": "#!/usr/bin/env node\nimport { ArgumentParser } from \"argparse\";\n\nimport { generateFromFiles } from \"./index\";\n\nconst USAGE = `\nThis tool is a script for the civil.ts library.\nIt allows generating source file from a glob input and using Mustache template\n\nFirst argument accepted is a glob of the files for the input,\nsecond is a file to be treadet as template\nthird is the output filena,e\n\nIt's in this packages because compiling civil.ts requires the generate artifacts file\nto work, so we can't easily generate the script using the config from there.\nAnd so we're gonna make it a seperate binary\n`;\n\nconst parser = new ArgumentParser({\n  addHelp: true,\n  description: USAGE,\n  prog: \"generate-from-files\",\n});\nparser.addArgument([\"inputGlob\"], {\n  help: \"Files that will be put as context for the template\",\n});\nparser.addArgument([\"templateFile\"], {\n  help: \"Mustache template file that will be rendered\",\n});\nparser.addArgument([\"outFile\"], {\n  help: \"File that the rendered tempalate will be saved\",\n});\nconst args = parser.parseArgs();\n\nconst { inputGlob, templateFile, outFile } = args;\ngenerateFromFiles(inputGlob, templateFile, outFile, console.log.bind(console)).catch(error => {\n  console.error(\"Failed to parse\", error);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/dev-utils/scripts/generate-from-files/index.ts",
    "content": "import * as Debug from \"debug\";\nimport * as fs from \"fs\";\nimport * as glob from \"glob\";\nimport * as Handlebars from \"handlebars\";\nimport * as mkdirp from \"mkdirp\";\nimport * as path from \"path\";\n\nimport { ContextData, helpers } from \"./utils\";\n\nconst debug = Debug(\"generate-from-files\");\n\nexport async function generateFromFiles(\n  inputGlob: string,\n  templateFile: string,\n  outFile: string,\n  logger: (...params: any[]) => void = debug,\n): Promise<void> {\n  const options: glob.IOptions = {\n    silent: true, // we throw the error\n    strict: true,\n    nodir: true, // Can't open a dir for reading\n  };\n  const inputs = glob.sync(inputGlob, options);\n  if (!inputs.length) {\n    throw new Error(\"No input files found\");\n  }\n  logger(`Found ${inputs.length} input files`);\n\n  mkdirp.sync(path.dirname(outFile));\n\n  const fileData = inputs.map(path.parse);\n\n  const context = {\n    files: fileData,\n  };\n\n  Handlebars.registerHelper(helpers);\n\n  logger(\"Rendering: \" + templateFile);\n  const templateString = fs.readFileSync(templateFile).toString();\n  const templateRenderer = Handlebars.compile<ContextData>(templateString);\n  fs.writeFileSync(outFile, templateRenderer(context));\n  logger(\"Wrote: \" + outFile);\n}\n"
  },
  {
    "path": "packages/dev-utils/scripts/generate-from-files/utils.ts",
    "content": "import * as path from \"path\";\nimport toSnakeCase = require(\"to-snake-case\");\n\nexport interface ContextData {\n  files: path.ParsedPath[];\n}\n\nexport const helpers = {\n  capitalize: (what: string) =>\n    what\n      .split(\" \")\n      .map(word => word[0].toUpperCase() + word.slice(1))\n      .join(\" \"),\n  snakecase: toSnakeCase,\n};\n"
  },
  {
    "path": "packages/dev-utils/scripts/strip-artifacts.ts",
    "content": "#!/usr/bin/env node\nimport * as fs from \"fs\";\nimport * as glob from \"glob\";\nimport * as mkdirp from \"mkdirp\";\nimport * as path from \"path\";\n\n/*\n * Artifacts in the newest version of Truffle have a lot of data we don't need nor want in our library\n * We're striping it to not leak and also have easier time managing JSONs\n * The only things we're leaving are:\n * - contractName\n * - abi\n * - bytecode (for deploying)\n * - deployedBytecode (for source code confirming)\n * - networks\n */\n\nconst JSON_WHITESPACE = 4;\nconst EXPECTED_ARGUMENT_COUNT = 4;\nconst ARGV_INPUT_GLOV = 2;\nconst ARGV_OUT_DIR = 3;\n\nfunction strip(filePath: string, outPath: string): void {\n  const data = JSON.parse(fs.readFileSync(filePath) as any);\n  // tslint:disable:object-literal-sort-keys\n  const filtered = {\n    contractName: data.contractName,\n    bytecode: data.bytecode,\n    deployedBytecode: data.deployedBytecode,\n    abi: data.abi,\n    networks: data.networks,\n  };\n  // tslint:enable:object-literal-sort-keys\n  fs.writeFileSync(outPath, JSON.stringify(filtered, null, JSON_WHITESPACE));\n  console.log(\"Written: \" + outPath);\n}\n\nif (process.argv.length !== EXPECTED_ARGUMENT_COUNT) {\n  console.error(\"Usage: \" + process.argv[0] + \" json_files_glob out_dir\");\n  process.exit();\n}\n\nconst FILES_GLOB = process.argv[ARGV_INPUT_GLOV];\nconst OUT_DIR = process.argv[ARGV_OUT_DIR];\n\n// Ensure out directory exists\nmkdirp.sync(OUT_DIR);\n\nglob(FILES_GLOB, (err, files) => {\n  if (err) {\n    console.error(\"Failed to parse glob\", err);\n    return process.exit(1);\n  }\n\n  files.forEach(filePath => {\n    const filename = path.basename(filePath);\n    const outPath = path.posix.format({\n      base: filename,\n      dir: OUT_DIR,\n    } as any);\n    strip(filePath, outPath);\n  });\n});\n"
  },
  {
    "path": "packages/dev-utils/src/index.ts",
    "content": "export * from \"./test\";\n"
  },
  {
    "path": "packages/dev-utils/src/modules.d.ts",
    "content": "declare module \"bn-chai\";\n\n// https://github.com/ethereum-ts/bn.js-typings/blob/master/index.d.ts\ndeclare module \"bn.js\" {\n  import { Buffer } from \"buffer\";\n\n  type Endianness = \"le\" | \"be\";\n\n  export class BN {\n    constructor(\n      number: number | string | number[] | ReadonlyArray<number> | Buffer,\n      base?: number,\n      endian?: Endianness,\n    );\n    clone(): BN;\n    toString(base?: number, length?: number): string;\n    toNumber(): number;\n    toJSON(): string;\n    toArray(endian?: Endianness, length?: number): number[];\n    toBuffer(endian?: Endianness, length?: number): Buffer;\n    bitLength(): number;\n    zeroBits(): number;\n    byteLength(): number;\n    isNeg(): boolean;\n    isEven(): boolean;\n    isOdd(): boolean;\n    isZero(): boolean;\n    cmp(b: any): number;\n    lt(b: any): boolean;\n    lte(b: any): boolean;\n    gt(b: any): boolean;\n    gte(b: any): boolean;\n    eq(b: any): boolean;\n    isBN(b: any): boolean;\n\n    neg(): BN;\n    abs(): BN;\n    add(b: BN | number): BN;\n    sub(b: BN | number): BN;\n    mul(b: BN | number): BN;\n    sqr(): BN;\n    pow(b: BN | number): BN;\n    div(b: BN | number): BN;\n    mod(b: BN): BN;\n    divRound(b: BN): BN;\n\n    or(b: BN): BN;\n    and(b: BN): BN;\n    xor(b: BN): BN;\n    setn(b: number): BN;\n    shln(b: number): BN;\n    shrn(b: number): BN;\n    testn(b: number): boolean;\n    maskn(b: number): BN;\n    bincn(b: number): BN;\n    notn(w: number): BN;\n\n    gcd(b: BN): BN;\n    egcd(b: BN): { a: BN; b: BN; gcd: BN };\n    invm(b: BN): BN;\n  }\n}\n"
  },
  {
    "path": "packages/dev-utils/src/test/bignumber-chai.ts",
    "content": "import { BN } from \"bn.js\";\n\n/* tslint:disable:only-arrow-functions */\n/* tslint:disable:no-invalid-this */\n/* tslint:disable:variable-name */\n\nexport default function(): (chai: any, utils: any) => void {\n  return (chai: any, utils: any): void => {\n    chai.Assertion.addProperty(\"bignumber\", function(): void {\n      utils.flag(this, \"bignumber\", true);\n    });\n\n    const convert = function(value: any, dp: any, rm: any): BN {\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        return new BN(value);\n      } else {\n        return value as BN;\n      }\n    };\n\n    const overwriteMethods = function(names: string[], fn: (expected: BN, actual: BN) => void): void {\n      function overwriteMethod(original: any): any {\n        return function(value: any, dp: any, rm: any): void {\n          if (utils.flag(this, \"bignumber\")) {\n            const expected = convert(value, dp, rm);\n            const actual = convert(this._obj, dp, rm);\n            fn.apply(this, [expected, actual]);\n          } else {\n            original.apply(this, arguments);\n          }\n        };\n      }\n      for (const name of names) {\n        chai.Assertion.overwriteMethod(name, overwriteMethod);\n      }\n    };\n\n    // BN.isEqualTo\n    overwriteMethods([\"equal\", \"equals\", \"eq\"], function(expected: BN, actual: BN): void {\n      this.assert(\n        expected.eq(actual),\n        \"expected #{act} to equal #{exp}\",\n        \"expected #{act} to be different from #{exp}\",\n        expected.toString(),\n        actual.toString(),\n      );\n    });\n\n    // BN.isGreaterThan\n    overwriteMethods([\"above\", \"gt\", \"greaterThan\"], function(expected: BN, actual: BN): void {\n      this.assert(\n        actual.gt(expected),\n        \"expected #{act} to be greater than #{exp}\",\n        \"expected #{act} to be less than or equal to #{exp}\",\n        expected.toString(),\n        actual.toString(),\n      );\n    });\n\n    // BN.isGreaterThanOrEqualTo\n    overwriteMethods([\"least\", \"gte\"], function(expected: BN, actual: BN): void {\n      this.assert(\n        actual.gte(expected),\n        \"expected #{act} to be greater than or equal to #{exp}\",\n        \"expected #{act} to be less than #{exp}\",\n        expected.toString(),\n        actual.toString(),\n      );\n    });\n\n    // BN.isLessThan\n    overwriteMethods([\"below\", \"lt\", \"lessThan\"], function(expected: BN, actual: BN): void {\n      this.assert(\n        actual.lt(expected),\n        \"expected #{act} to be less than #{exp}\",\n        \"expected #{act} to be greater than or equal to #{exp}\",\n        expected.toString(),\n        actual.toString(),\n      );\n    });\n\n    // BN.isLessThanOrEqualTo\n    overwriteMethods([\"most\", \"lte\"], function(expected: BN, actual: BN): void {\n      this.assert(\n        expected.lte(actual),\n        \"expected #{act} to be less than or equal to #{exp}\",\n        \"expected #{act} to be greater than #{exp}\",\n        expected.toString(),\n        actual.toString(),\n      );\n    });\n  };\n}\n"
  },
  {
    "path": "packages/dev-utils/src/test/index.ts",
    "content": "import * as chaiAsPromised from \"chai-as-promised\";\nimport * as dirtyChai from \"dirty-chai\";\nimport chaiBignumber from \"./bignumber-chai\";\n\nimport { TransactionReceipt, Log } from \"web3-core\";\nimport { HttpProvider } from \"web3-providers-http\";\n\nexport function configureChai(chai: any): void {\n  chai.config.includeStack = true;\n  chai.use(chaiBignumber());\n  chai.use(chaiAsPromised);\n  chai.use(dirtyChai);\n}\n\n// TODO(ritave): Create a mock provider\nexport function dummyWeb3Provider(): any {\n  return new HttpProvider(\"http://localhost:8545\");\n}\n\n// TODO(ritave): Duplicated code, use web3wrapper's rpc\nexport async function rpc(provider: any, method: string, ...params: any[]): Promise<any> {\n  // return provider.send(method, params);\n  return new Promise((resolve, reject) => {\n    provider.send(\n      {\n        id: new Date().getMilliseconds(),\n        jsonrpc: \"2.0\",\n        method,\n        params,\n      },\n      (err: Error, result: any) => {\n        if (err) {\n          return reject(err);\n        }\n        return resolve(result);\n      },\n    );\n  });\n}\n\nexport async function advanceEvmTime(time: number): Promise<void> {\n  await rpc(web3.currentProvider, \"evm_increaseTime\", time);\n  await rpc(web3.currentProvider, \"evm_mine\");\n}\n\nexport function getParamFromTxEvent<T>(tx: TransactionReceipt, param: string, event: string): T {\n  // @ts-ignore event exists in the log, this is a lie\n  const eventAny = tx.logs!.find(e => e.event === event);\n  if (eventAny === undefined) {\n    throw new Error(\"No event found with name: \" + event);\n  }\n  const foundEvent = eventAny as Log;\n  // @ts-ignore\n  const paramAny = foundEvent.args[param];\n  if (paramAny === undefined) {\n    throw new Error(\"No param found with name: \" + param + \" in event: \" + event);\n  }\n  return paramAny as T;\n}\n"
  },
  {
    "path": "packages/dev-utils/src/test/test.d.ts",
    "content": "declare module \"dirty-chai\";\ndeclare module \"chai-bignumber\";\ndeclare module \"bn.js\";\n\ndeclare namespace Chai {\n  interface Assertion {\n    (message?: string): Assertion;\n    bignumber: Assertion;\n  }\n  // dirty-chai and chai-as-promised working together\n  interface PromisedAssertion {\n    (message?: string): PromisedAssertion;\n    bignumber: PromisedAssertion;\n  }\n}\n\n// Injected by truffle\ndeclare var artifacts: { require: (name: string) => any };\ndeclare var contract: (contractName: string, tests: (accounts: string[]) => void) => void;\ndeclare var describe: (functionName: string, tests: () => void) => void;\ndeclare var it: (description: string, test?: () => Promise<void> | void) => void;\ndeclare var xit: (description: string, test?: () => Promise<void> | void) => void;\ndeclare var before: (func: () => Promise<void> | void) => void;\ndeclare var beforeEach: (func: () => Promise<void> | void) => void;\ndeclare var web3: any;\n"
  },
  {
    "path": "packages/dev-utils/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declarationDir\": \"build/\"\n  },\n  \"include\": [\"./src/**/*.ts\", \"./scripts/**/*.ts\", \"./test/**/*.ts\"]\n}\n"
  },
  {
    "path": "packages/dev-utils/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"]\n}\n"
  },
  {
    "path": "packages/elements/.babelrc",
    "content": "{\n  \"presets\": [\n    [\"@babel/preset-env\", { \"targets\": { \"node\": \"current\" } }],\n    \"@babel/preset-typescript\",\n    \"@babel/preset-react\"\n  ],\n  \"plugins\": [\"@babel/plugin-proposal-class-properties\"],\n  \"env\": {\n    \"test\": {\n      \"plugins\": [\"require-context-hook\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/elements/.gitignore",
    "content": "/out\n"
  },
  {
    "path": "packages/elements/.releaserc",
    "content": "{\n  \"plugins\": [\n    [\n      \"@semantic-release/commit-analyzer\",\n      {\n        \"preset\": \"angular\",\n        \"releaseRules\": [\n          { \"type\": \"docs\", \"scope\": \"README\", \"release\": \"patch\" },\n          { \"type\": \"refactor\", \"release\": \"patch\" },\n          { \"type\": \"style\", \"release\": \"patch\" }\n        ],\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\"]\n        }\n      }\n    ],\n    [\n      \"@semantic-release/release-notes-generator\",\n      {\n        \"preset\": \"angular\",\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\", \"BREAKING\"]\n        },\n        \"writerOpts\": {\n          \"commitsSort\": [\"subject\", \"scope\"]\n        }\n      }\n    ],\n    \"@semantic-release/npm\"\n  ]\n}\n"
  },
  {
    "path": "packages/elements/.storybook/config.ts",
    "content": "import { configure, addDecorator } from \"@storybook/react\";\nimport { withInfo } from \"@storybook/addon-info\";\n\n// automatically import all files ending in *.stories.tsx\nconst req = require.context(\"../src\", true, /.stories.tsx$/);\n\nfunction loadStories() {\n  addDecorator(withInfo);\n  req.keys().forEach(req);\n}\n\nconfigure(loadStories, module);\n"
  },
  {
    "path": "packages/elements/.storybook/preview-head.html",
    "content": "<link href=\"https://fonts.googleapis.com/css?family=Spectral:200,400,400i,700,800\" rel=\"stylesheet\">\n<link href=\"https://fonts.googleapis.com/css?family=Libre+Franklin:200,400,600,800\" rel=\"stylesheet\">\n"
  },
  {
    "path": "packages/elements/.storybook/register-context.ts",
    "content": "// @ts-ignore\nimport registerRequireContextHook from \"babel-plugin-require-context-hook/register\";\nregisterRequireContextHook();\n"
  },
  {
    "path": "packages/elements/.storybook/webpack.config.js",
    "content": "module.exports = ({ config, mode }) => {\n  config.module.rules.push({\n    test: /\\.tsx?$/,\n    use: [\n      {\n        loader: require.resolve(\"babel-loader\"),\n        options: {\n          presets: [require.resolve(\"babel-preset-react-app\")],\n        },\n      },\n      require.resolve(\"react-docgen-typescript-loader\"),\n    ],\n  });\n\n  config.resolve.extensions.push(\".ts\", \".tsx\");\n\n  return config;\n};\n"
  },
  {
    "path": "packages/elements/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/elements/jest.config.js",
    "content": "module.exports = {\n  transform: {\n    \"^.+\\\\.(ts|tsx)?$\": \"babel-jest\",\n  },\n  testPathIgnorePatterns: [\"/node_modules/\", \"src/__test__/setupTests.ts\", \"build\"],\n  moduleNameMapper: {\n    \"\\\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|css)$\":\n      \"<rootDir>src/__mocks__/fileMock.js\",\n  },\n  testRegex: \"(src/__test__/.*|\\\\.(test|spec))\\\\.(ts|tsx)$\",\n  setupFiles: [\"<rootDir>.storybook/register-context.ts\"],\n  setupFilesAfterEnv: [\"<rootDir>src/__test__/setupTests.ts\"],\n  moduleFileExtensions: [\"ts\", \"tsx\", \"js\", \"json\"],\n};\n"
  },
  {
    "path": "packages/elements/package.json",
    "content": "{\n  \"name\": \"@joincivil/elements\",\n  \"version\": \"0.0.1\",\n  \"description\": \"React component pattern library\",\n  \"module\": \"build/index.js\",\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"license\": \"Apache-2.0\",\n  \"sideEffects\": false,\n  \"scripts\": {\n    \"copy:images\": \"mkdir -p build/images && cp -a src/images/. build/images\",\n    \"build\": \"yarn clean && tsc && yarn copy:images\",\n    \"build:watch\": \"yarn clean && yarn copy:images && tsc -w\",\n    \"lint\": \"tslint --exclude \\\"**/storyFixtures/**\\\" --project ./\",\n    \"clean\": \"rimraf build/\",\n    \"prepublish\": \"run-s build\",\n    \"storybook\": \"start-storybook -p 9001\",\n    \"storybook:build\": \"build-storybook -c .storybook -o out\",\n    \"test\": \"NODE_ENV=test jest\",\n    \"shakeable\": \"agadoo\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.5.5\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.4.0\",\n    \"@babel/preset-react\": \"^7.0.0\",\n    \"@babel/preset-typescript\": \"^7.3.3\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@storybook/addon-actions\": \"^5.1.0\",\n    \"@storybook/addon-info\": \"^5.1.0\",\n    \"@storybook/addon-storyshots\": \"^5.2.1\",\n    \"@storybook/react\": \"^5.2.1\",\n    \"@types/classnames\": \"^2.2.3\",\n    \"@types/enzyme\": \"^3.1.9\",\n    \"@types/jest\": \"^23.3.5\",\n    \"@types/prop-types\": \"15.7.0\",\n    \"@types/react\": \"^16.8\",\n    \"@types/react-dom\": \"^16.8\",\n    \"@types/react-dropzone\": \"^4.2.2\",\n    \"@types/react-test-renderer\": \"^16.9.0\",\n    \"@types/storybook__addon-info\": \"^4.1.1\",\n    \"@types/storybook__react\": \"^3.0.7\",\n    \"agadoo\": \"^1.1.0\",\n    \"babel-jest\": \"^24.7.1\",\n    \"babel-loader\": \"^8.0.5\",\n    \"babel-plugin-require-context-hook\": \"^1.0.0\",\n    \"core-js\": \"^3.2.1\",\n    \"enzyme\": \"^3.3.0\",\n    \"enzyme-adapter-react-16\": \"^1.1.1\",\n    \"jest\": \"^24.6\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"react-docgen-typescript-loader\": \"^3.1.0\",\n    \"react-docgen-typescript-webpack-plugin\": \"^1.1.0\",\n    \"react-test-renderer\": \"^16.11.0\",\n    \"rimraf\": \"^2.6.2\",\n    \"storybook-react-router\": \"^1.0.1\",\n    \"strip-ansi\": \"^5.0.0\",\n    \"ts-jest\": \"^23.10.4\",\n    \"ts-loader\": \"^4\",\n    \"typescript\": \"^3.6.2\",\n    \"webpack\": \"^4\",\n    \"webpack-hot-middleware\": \"^2.21.1\"\n  },\n  \"peerDependencies\": {\n    \"@types/styled-components\": \"^4.1.18\",\n    \"react\": \"^16.11\",\n    \"react-dom\": \"^16.11\",\n    \"styled-components\": \"^5.0.0-beta.8\"\n  },\n  \"dependencies\": {\n    \"react-router-dom\": \"^5.1.2\",\n    \"react-transition-group\": \"^4.3.0\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/elements/public/foo",
    "content": "bar"
  },
  {
    "path": "packages/elements/src/__mocks__/fileMock.js",
    "content": "module.exports = 'test-file-stub';\n"
  },
  {
    "path": "packages/elements/src/__snapshots__/index.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Common / Nav / Nav Bar Nav Error Bar 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div>\n      hello world\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Common / Nav / Nav Bar\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Nav Error Bar\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    hello world\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    div\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/elements/src/__test__/setupTests.ts",
    "content": "import * as Enzyme from \"enzyme\";\n// @ts-ignore\nimport Adapter from \"enzyme-adapter-react-16\";\nEnzyme.configure({ adapter: new Adapter() });\n"
  },
  {
    "path": "packages/elements/src/__test__/storyshot.test.ts",
    "content": "import initStoryshots, { multiSnapshotWithOptions } from \"@storybook/addon-storyshots\";\n\ninitStoryshots({\n  test: multiSnapshotWithOptions(),\n});\n"
  },
  {
    "path": "packages/elements/src/buttons/Button.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors\";\nimport { fonts } from \"../text\";\nimport { ClipLoader } from \"../icons\";\n\nexport enum buttonSizes {\n  SMALL = \"SMALL\",\n  SMALL_WIDE = \"SMALL_WIDE\",\n  MEDIUM = \"MEDIUM\",\n  MEDIUM_WIDE = \"MEDIUM_WIDE\",\n  LARGE = \"LARGE\",\n  NEW_MEDIUM = \"NEW_MEDIUM\",\n}\n\nexport interface ButtonProps {\n  className?: string;\n  icon?: any;\n  to?: string;\n  active?: boolean;\n  disabled?: boolean;\n  inputRef?: any;\n  name?: string;\n  size?: buttonSizes;\n  href?: string;\n  target?: string;\n  fullWidth?: boolean;\n  width?: number;\n  children?: any;\n  // TODO(jorgelo): When a button with textTransform={\"none\"}, react throw this warning: React does not recognize the `textTransform` prop on a DOM element.\n  textTransform?: string;\n  type?: \"button\" | \"reset\" | \"submit\" | undefined;\n  loading?: boolean;\n  onClick?(ev: any): void;\n}\n\nexport interface ButtonTheme {\n  primaryButtonBackground?: string;\n  primaryButtonColor?: string;\n  primaryButtonFontWeight?: string;\n  primaryButtonHoverBackground?: string;\n  primaryButtonDisabledBackground?: string;\n  primaryButtonDisabledColor?: string;\n  primaryButtonTextTransform?: string;\n  invertedButtonBackground?: string;\n  invertedButtonColor?: string;\n  secondaryButtonBackground?: string;\n  secondaryButtonColor?: string;\n  secondaryButtonBorder?: string;\n  secondaryButtonHoverBackground?: string;\n  secondaryButtonHoverColor?: string;\n  darkButtonBackground?: string;\n  darkButtonColor?: string;\n  darkButtonHoverColor?: string;\n  darkButtonHoverBackground?: string;\n  darkButtonTextTransform?: string;\n  borderlessButtonColor?: string;\n  borderlessButtonHoverColor?: string;\n  borderlessButtonSize?: string;\n  sansSerifFont?: string;\n}\n\nconst PRIMARY_BUTTON_DEFAULT_THEME = {\n  primaryButtonBackground: colors.accent.CIVIL_BLUE,\n  primaryButtonColor: colors.basic.WHITE,\n  primaryButtonFontWeight: \"normal\",\n  primaryButtonHoverBackground: colors.accent.CIVIL_BLUE_FADED,\n  primaryButtonDisabledBackground: colors.accent.CIVIL_BLUE_VERY_FADED,\n  primaryButtonDisabledColor: colors.basic.WHITE,\n  primaryButtonTextTransform: \"uppercase\",\n  sansSerifFont: fonts.SANS_SERIF,\n};\n\nconst INVERTED_BUTTON_DEFAULT_THEME = {\n  invertedButtonBackground: colors.basic.WHITE,\n  invertedButtonColor: colors.accent.CIVIL_BLUE,\n};\n\nconst NEW_PRIMARY_BUTTON_DEFAULT_THEME = {\n  newPrimaryButtonBackground: colors.basic.WHITE,\n  newPrimaryButtonColor: colors.primary.BLACK,\n  newPrimaryButtonBorder: colors.accent.CIVIL_GRAY_7,\n  sansSerifFont: fonts.SANS_SERIF_BOLD,\n  newPrimaryButtonFontWeight: \"700\",\n};\n\nconst SECONDARY_BUTTON_DEFAULT_THEME = {\n  secondaryButtonBackground: colors.basic.WHITE,\n  secondaryButtonColor: colors.accent.CIVIL_GRAY_2,\n  secondaryButtonBorder: colors.accent.CIVIL_GRAY_3,\n  secondaryButtonHoverBackground: colors.accent.CIVIL_BLUE,\n  secondaryButtonHoverColor: colors.basic.WHITE,\n};\n\nconst DARK_BUTTON_DEFAULT_THEME = {\n  darkButtonBackground: colors.primary.BLACK,\n  darkButtonColor: colors.basic.WHITE,\n  darkButtonHoverColor: colors.basic.WHITE,\n  darkButtonHoverBackground: colors.accent.CIVIL_GRAY_1,\n  darkButtonTextTransform: \"none\",\n};\n\nconst BORDERLESS_BUTTON_DEFAULT_THEME = {\n  borderlessButtonColor: colors.primary.CIVIL_BLUE_1,\n  borderlessButtonHoverColor: colors.accent.CIVIL_BLUE_FADED,\n  borderlessButtonSize: \"15px\",\n};\n\nexport const DEFAULT_BUTTON_THEME = {\n  ...PRIMARY_BUTTON_DEFAULT_THEME,\n  ...INVERTED_BUTTON_DEFAULT_THEME,\n  ...NEW_PRIMARY_BUTTON_DEFAULT_THEME,\n  ...SECONDARY_BUTTON_DEFAULT_THEME,\n  ...DARK_BUTTON_DEFAULT_THEME,\n  ...BORDERLESS_BUTTON_DEFAULT_THEME,\n};\n\nconst paddingObject: { [index: string]: string } = {\n  [buttonSizes.SMALL]: \"8px 12px\",\n  [buttonSizes.SMALL_WIDE]: \"8px 60px\",\n  [buttonSizes.MEDIUM]: \"10px 25px\",\n  [buttonSizes.NEW_MEDIUM]: \"10px 25px\",\n  [buttonSizes.MEDIUM_WIDE]: \"9px 30px\",\n  [buttonSizes.LARGE]: \"20px 50px\",\n};\n\nconst spacingObject: { [index: string]: string } = {\n  [buttonSizes.SMALL]: \"0.5px\",\n  [buttonSizes.SMALL_WIDE]: \"0.2px\",\n  [buttonSizes.MEDIUM]: \"1px\",\n  [buttonSizes.NEW_MEDIUM]: \".18px\",\n  [buttonSizes.MEDIUM_WIDE]: \"0.2px\",\n  [buttonSizes.LARGE]: \"3px\",\n};\n\nconst fontObject: { [index: string]: string } = {\n  [buttonSizes.SMALL]: \"12px\",\n  [buttonSizes.MEDIUM]: \"18px\",\n  [buttonSizes.NEW_MEDIUM]: \"12px\",\n  [buttonSizes.MEDIUM_WIDE]: \"14px\",\n  [buttonSizes.LARGE]: \"24px\",\n};\n\nconst lineHeight: { [index: string]: string } = {\n  [buttonSizes.SMALL]: \"12px\",\n  [buttonSizes.MEDIUM]: \"18px\",\n  [buttonSizes.NEW_MEDIUM]: \"14px\",\n  [buttonSizes.MEDIUM_WIDE]: \"14px\",\n  [buttonSizes.LARGE]: \"24px\",\n};\n\nexport const ButtonComponent = (props: ButtonProps) => {\n  const activeClass = props.active ? \" active\" : \"\";\n  const disabledClass = props.disabled ? \" disabled\" : \"\";\n  const { children, className, onClick, disabled, to, href, target, type, inputRef, loading } = props;\n\n  const inner = loading ? <ClipLoader size={24} /> : children;\n\n  if (to) {\n    return (\n      <Link {...props} className={className + activeClass + disabledClass} to={to} ref={inputRef}>\n        {inner}\n      </Link>\n    );\n  }\n\n  if (href) {\n    return (\n      <a {...props} className={className + activeClass + disabledClass} href={href} target={target} ref={inputRef}>\n        {inner}\n      </a>\n    );\n  }\n\n  return (\n    <button\n      {...props}\n      className={className + activeClass + disabledClass}\n      onClick={onClick}\n      type={type || \"button\"}\n      disabled={disabled}\n      ref={inputRef}\n    >\n      {inner}\n    </button>\n  );\n};\n\nconst BaseButton = styled(ButtonComponent)`\n  text-decoration: none;\n  border-radius: 3px;\n  padding: ${(props: any) => paddingObject[props.size || buttonSizes.LARGE]};\n  font-family: ${(props: any) => props.theme.sansSerifFont};\n  cursor: pointer;\n  border: none;\n  letter-spacing: ${(props: any) => spacingObject[props.size || buttonSizes.LARGE]};\n  font-size: ${(props: any) => fontObject[props.size || buttonSizes.LARGE]};\n  transition: color 500ms, background-color 500ms, border-color 500ms;\n  outline: none;\n  display: inline-block;\n  ${(props: any) => (props.width ? `width: ${props.width}px;` : \"\")};\n  ${(props: any) => (props.fullWidth ? \"width: 100%;\" : \"\")};\n`;\n\nexport const Button = styled(BaseButton)`\n  background-color: ${props => props.theme.primaryButtonBackground};\n  border: 2px solid ${props => props.theme.primaryButtonBackground};\n  color: ${props => props.theme.primaryButtonColor};\n  font-weight: ${props => props.theme.primaryButtonFontWeight};\n  text-transform: ${props => (props.textTransform ? props.textTransform : props.theme.primaryButtonTextTransform)};\n  &:focus,\n  &:active,\n  &:hover {\n    background-color: ${props => props.theme.primaryButtonHoverBackground};\n    color: ${props => props.theme.primaryButtonColor};\n  }\n  &:disabled {\n    cursor: default;\n    background-color: ${props => props.theme.primaryButtonDisabledBackground};\n    color: ${props => props.theme.primaryButtonDisabledColor};\n    border-color: transparent;\n  }\n\n  ${ClipLoader} {\n    border-color: ${props => props.theme.primaryButtonColor};\n    border-bottom-color: transparent;\n  }\n`;\n\nButton.defaultProps = {\n  theme: PRIMARY_BUTTON_DEFAULT_THEME,\n};\n\nexport const InvertedButton = styled(BaseButton)`\n  text-transform: ${props => (props.textTransform ? props.textTransform : \"uppercase\")};\n  background-color: ${props => props.theme.invertedButtonBackground};\n  color: ${props => props.theme.invertedButtonColor};\n  border: 2px solid ${props => props.theme.invertedButtonColor};\n  &:focus,\n  &:active,\n  &:hover {\n    background-color: ${props => props.theme.invertedButtonColor};\n    color: ${props => props.theme.invertedButtonBackground};\n  }\n\n  ${ClipLoader} {\n    border-color: ${props => props.theme.invertedButtonColor};\n    border-bottom-color: transparent;\n  }\n`;\n\nInvertedButton.defaultProps = {\n  theme: INVERTED_BUTTON_DEFAULT_THEME,\n};\n\nexport const NewPrimaryButton = styled(BaseButton)`\n  background-color: ${props => props.theme.newPrimaryButtonBackground};\n  color: ${props => props.theme.newPrimaryButtonColor};\n  border: 1px solid ${props => props.theme.newPrimaryButtonBorder};\n  font-family: ${(props: any) => props.theme.sansSerifFont};\n  font-weight: ${props => props.theme.newPrimaryButtonFontWeight};\n  line-height: ${(props: any) => lineHeight[props.size || buttonSizes.NEW_MEDIUM]};\n`;\n\nNewPrimaryButton.defaultProps = {\n  theme: NEW_PRIMARY_BUTTON_DEFAULT_THEME,\n};\n\nexport const SecondaryButton = styled(BaseButton)`\n  background-color: ${props => props.theme.secondaryButtonBackground};\n  color: ${props => props.theme.secondaryButtonColor};\n  border: 1px solid ${props => props.theme.secondaryButtonBorder};\n  &:focus,\n  &:hover,\n  &.active {\n    background-color: ${props => props.theme.secondaryButtonHoverBackground};\n    border: 1px solid ${props => props.theme.secondaryButtonHoverBackground};\n    color: ${props => props.theme.secondaryButtonHoverColor};\n  }\n\n  ${ClipLoader} {\n    border-color: ${props => props.theme.secondaryButtonColor};\n    border-bottom-color: transparent;\n  }\n`;\n\nSecondaryButton.defaultProps = {\n  theme: SECONDARY_BUTTON_DEFAULT_THEME,\n};\n\nexport const DarkButton = styled(BaseButton)`\n  background-color: ${props => props.theme.darkButtonBackground};\n  color: ${props => props.theme.darkButtonColor};\n  text-transform: ${props => props.theme.darkButtonTextTransform};\n  &:focus,\n  &:hover,\n  &.active {\n    color: ${props => props.theme.darkButtonHoverColor};\n    background-color: ${props => props.theme.darkButtonHoverBackground};\n  }\n\n  ${ClipLoader} {\n    border-color: ${props => props.theme.darkButtonColor};\n    border-bottom-color: transparent;\n  }\n`;\n\nDarkButton.defaultProps = {\n  theme: DARK_BUTTON_DEFAULT_THEME,\n};\n\nexport const CancelButton = styled(SecondaryButton)`\n  color: ${colors.accent.CIVIL_BLUE};\n  border: none;\n  &:focus,\n  &:active,\n  &:hover {\n    background-color: ${colors.accent.CIVIL_RED_VERY_FADED};\n    border: none;\n    color: ${colors.accent.CIVIL_RED};\n  }\n`;\n\nexport const BorderlessButton = styled(Button)`\n  border: none;\n  font-family: ${props => props.theme.sansSerifFont};\n  color: ${props => props.theme.borderlessButtonColor};\n  font-weight: 700;\n  margin-left: 8px;\n  letter-spacing: 0.7px;\n  padding: ${paddingObject[buttonSizes.SMALL]};\n  font-size: ${props => props.theme.borderlessButtonSize};\n  background-color: transparent;\n  &:focus,\n  &:active,\n  &:hover {\n    background-color: transparent;\n    color: ${props => props.theme.borderlessButtonHoverColor};\n  }\n\n  ${ClipLoader} {\n    border-color: ${props => props.theme.borderlessButtonColor};\n    border-bottom-color: transparent;\n  }\n`;\n\nBorderlessButton.defaultProps = {\n  theme: BORDERLESS_BUTTON_DEFAULT_THEME,\n};\n"
  },
  {
    "path": "packages/elements/src/buttons/CTAButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors } from \"../colors/index\";\n\nimport { DarkButton } from \"./Button\";\n\nexport const CTAButton = styled(DarkButton)`\n  border: 2px solid ${colors.basic.WHITE};\n  font-size: 14px;\n  font-weight: bold;\n  letter-spacing: 1px;\n  margin-left: 30px;\n  text-align: center;\n  width: 180px;\n  &:hover {\n    background: ${colors.basic.WHITE};\n    color: ${colors.primary.BLACK};\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/buttons/CloseXButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors/index\";\nimport { CloseXIcon } from \"../icons/index\";\n\nexport const CloseXBtnStyled = styled.button`\n  background-color: ${colors.basic.WHITE};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 50%;\n  cursor: pointer;\n  padding: 0;\n  height: 32px;\n  width: 32px;\n\n  svg path {\n    transition: fill 0.2s ease;\n  }\n\n  &:hover {\n    svg path {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport interface CloseXButtonProps {\n  onClick(ev: any): void;\n}\n\nexport const CloseXButton: React.FunctionComponent<CloseXButtonProps> = props => {\n  return (\n    <CloseXBtnStyled onClick={props.onClick}>\n      <CloseXIcon color={colors.accent.CIVIL_GRAY_2} width={32} height={32} />\n    </CloseXBtnStyled>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/buttons/PaymentButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors/index\";\nimport { TipIcon } from \"../icons/index\";\n\nexport interface PaymentBtnStyleProps {\n  border?: boolean;\n}\n\nexport const PaymentBtnStyled = styled.button`\n  align-items: center;\n  background-color: ${colors.basic.WHITE};\n  border: ${(props: PaymentBtnStyleProps) => (props.border ? \"1px solid\" + colors.accent.CIVIL_BLUE : \"none\")};\n  border-radius: 2px;\n  color: ${(props: PaymentBtnStyleProps) => (props.border ? colors.accent.CIVIL_GRAY_0 : colors.accent.CIVIL_GRAY_2)};\n  cursor: pointer;\n  display: flex;\n  font-size: ${(props: PaymentBtnStyleProps) => (props.border ? \"13px\" : \"12px\")};\n  font-weight: ${(props: PaymentBtnStyleProps) => (props.border ? \"700\" : \"400\")};\n  justify-content: center;\n  outline: none;\n  padding: ${(props: PaymentBtnStyleProps) => (props.border ? \"3px 8px\" : \"0\")};\n  transition: color 0.2s ease;\n\n  svg {\n    margin-right: 2px;\n\n    path {\n      fill: ${colors.accent.CIVIL_GRAY_0};\n      transition: fill 0.2s ease;\n    }\n  }\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n\n    svg path {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport interface PaymentButtonProps {\n  border?: boolean;\n  label?: string;\n  className?: string;\n  onClick(ev: any): void;\n}\n\nexport const PaymentButton: React.FunctionComponent<PaymentButtonProps> = props => {\n  return (\n    <PaymentBtnStyled className={props.className} onClick={props.onClick} border={props.border}>\n      <TipIcon />\n      {props.label || \"Boost\"}\n    </PaymentBtnStyled>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/buttons/ShareButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors/index\";\nimport { ShareIcon } from \"../icons/index\";\n\nexport interface ShareBtnStyleProps {\n  textBottom?: boolean;\n}\n\nexport const ShareBtnStyled = styled.button`\n  align-items: center;\n  background-color: ${colors.basic.WHITE};\n  border: none;\n  color: ${colors.accent.CIVIL_GRAY_2};\n  cursor: pointer;\n  display: flex;\n  flex-direction: ${(props: ShareBtnStyleProps) => (props.textBottom ? \"column\" : \"row\")};\n  font-size: 12px;\n  justify-content: center;\n  line-height: 1;\n  outline: none;\n  padding: 0;\n  transition: color 0.2s ease;\n\n  svg {\n    margin: ${(props: ShareBtnStyleProps) => (props.textBottom ? \"0\" : \"0 2px 0 0\")};\n\n    path {\n      fill: ${colors.accent.CIVIL_GRAY_0};\n      transition: fill 0.2s ease;\n    }\n  }\n\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n\n    svg path {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport interface ShareButtonProps {\n  textBottom?: boolean;\n  onClick(ev: any): void;\n}\n\nexport const ShareButton: React.FunctionComponent<ShareButtonProps> = props => {\n  return (\n    <ShareBtnStyled onClick={props.onClick} textBottom={props.textBottom}>\n      <ShareIcon />\n      Share\n    </ShareBtnStyled>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/buttons/index.ts",
    "content": "export * from \"./Button\";\nexport * from \"./CloseXButton\";\nexport * from \"./CTAButton\";\nexport * from \"./PaymentButton\";\nexport * from \"./ShareButton\";\n"
  },
  {
    "path": "packages/elements/src/colors/index.ts",
    "content": "export const colors = {\n  primary: {\n    BLACK: \"#000000\",\n    CIVIL_GRAY_0: \"#3F3C39\",\n    CIVIL_GRAY_1: \"#5A5653\",\n    CIVIL_GRAY_2: \"#7D7373\",\n    CIVIL_BLUE_1: \"#2B56FF\",\n  },\n  accent: {\n    CIVIL_YELLOW: \"#FFF120\", // Civil-wide accent color\n    CIVIL_YELLOW_VERY_FADED: \"#FFFDE9\",\n    CIVIL_BLUE: \"#2B56FF\",\n    CIVIL_BLUE_FADED: \"#4066FF\", // accent color associated with Newsmakers; use on black\n    CIVIL_BLUE_VERY_FADED: \"rgba(43, 86, 255, 0.5)\",\n    CIVIL_BLUE_VERY_FADED_2: \"rgba(43, 86, 255, 0.06)\",\n    CIVIL_BLUE_FADED_2: \"#E9EEFF\",\n    CIVIL_TEAL: \"#30E8BD\",\n    CIVIL_TEAL_FADED: \"#97F3DE\", // accent color associated with Citizens; use as a highlight in text\n    CIVIL_TEAL_FADED_2: \"#C1F8EB\",\n    CIVIL_TEAL_DARK: \"#00C189\",\n    CIVIL_RED: \"#FF0C1A\", // Civil-wide accent color\n    CIVIL_RED_2: \"#EF3F39\",\n    CIVIL_RED_FADED: \"rgba(242, 82, 74, 0.56)\",\n    CIVIL_RED_VERY_FADED: \"rgba(255, 12, 26, 0.10)\",\n    CIVIL_RED_ULTRA_FADED: \"#FFF7F8\",\n    CIVIL_GRAY_0: \"#3F3C39\",\n    CIVIL_GRAY_1: \"#5A5653\",\n    CIVIL_GRAY_2: \"#7D7373\", // Civil-wide accent color\n    CIVIL_GRAY_3: \"#C4C2C0\",\n    CIVIL_GRAY_4: \"#E9E9EA\",\n    CIVIL_GRAY_5: \"#F4F4F4\",\n    CIVIL_GRAY_6: \"#FCFCFC\",\n    CIVIL_GRAY_7: \"#9B9B9B\", // NewPrimaryButton border color\n    CIVIL_ORANGE: \"#FFA716\",\n    CIVIL_GREEN: \"#0D9D33\",\n    CIVIL_GREEN_1: \"#29cb42\",\n    CIVIL_GREEN_2: \"#ACF2BD\",\n    CIVIL_PURPLE_1: \"#9013FE\",\n  },\n  basic: {\n    WHITE: \"#FFFFFF\",\n  },\n};\n"
  },
  {
    "path": "packages/elements/src/containers/Hero.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors } from \"../colors/index\";\nimport { mediaQueries } from \"./mediaQueries\";\nimport { fonts } from \"../text/fonts\";\n\nconst HeroOuter = styled.div`\n  background-color: ${colors.primary.BLACK};\n  background-image: ${(props: HeroProps) => (props.backgroundImage ? \"url(\" + props.backgroundImage + \")\" : \"none\")};\n  background-repeat: no-repeat;\n  background-size: cover;\n  font-family: ${fonts.SANS_SERIF};\n  padding: 78px 15px 32px;\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport const HeroInner = styled.div`\n  align-items: center;\n  color: ${colors.basic.WHITE};\n  display: flex;\n  flex-direction: column;\n  margin: 0 auto;\n  max-width: 920px;\n  text-align: center;\n  width: 100%;\n`;\n\nexport const StyledHeroHeading = styled.h2`\n  font-family: ${fonts.SERIF};\n  font-size: 48px;\n  font-weight: 200;\n  letter-spacing: -1px;\n  line-height: 40px;\n  margin: 0 auto 10px;\n`;\n\nexport const StyledHeroCopy = styled.div`\n  font-size: 18px;\n  letter-spacing: -0.12px;\n  line-height: 33px;\n  margin: 0 0 40px;\n  text-align: center;\n  p {\n    margin: 0 0 18px;\n  }\n  a {\n    color: ${colors.basic.WHITE};\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  }\n`;\n\nexport const StyledButtonContainer = styled.div`\n  display: flex;\n  justify-content: center;\n`;\n\nexport const StyledExplore = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_3};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 15px;\n  text-transform: uppercase;\n  text-align: center;\n  margin: 88px 0 0;\n  div {\n    margin: 12px 0 0;\n  }\n`;\n\nexport interface HeroProps {\n  backgroundImage?: string;\n  className?: string;\n}\n\nexport const Hero: React.FunctionComponent<HeroProps> = props => {\n  return (\n    <HeroOuter backgroundImage={props.backgroundImage} className={props.className}>\n      <HeroInner>{props.children}</HeroInner>\n    </HeroOuter>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/containers/Panel.tsx",
    "content": "import * as React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors\";\nimport { CloseXButton } from \"../buttons\";\nimport { mediaQueries } from \"./\";\n\nconst PanelStyled = styled.div`\n  background-color: ${colors.basic.WHITE};\n  border-left: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.35);\n  bottom: 0;\n  padding: 20px;\n  position: fixed;\n  overflow: auto;\n  right: 0;\n  top: 74px;\n  width: 360px;\n  z-index: 3;\n\n  &.panel-enter {\n    transform: translate(100%, 0);\n  }\n  &.panel-enter-active {\n    transform: translate(0);\n    transition: transform 300ms;\n  }\n  &.panel-exit {\n    transform: translate(0);\n  }\n  &.panel-exit-active {\n    transform: translate(100%, 0);\n    transition: transform 300ms;\n  }\n\n  ${mediaQueries.MOBILE} {\n    top: 54px;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    border-left: none;\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    width: 100%;\n\n    &.panel-enter {\n      transform: translate(0, 100%);\n    }\n    &.panel-enter-active {\n      transform: translate(0);\n      transition: transform 300ms;\n    }\n    &.panel-exit {\n      transform: translate(0);\n    }\n    &.panel-exit-active {\n      transform: translate(0, 100%);\n      transition: transform 300ms;\n    }\n  }\n`;\n\nconst PanelClose = styled.div`\n  position: absolute;\n  right: 20px;\n  top: 20px;\n`;\n\nexport interface PanelProps {\n  open: boolean;\n  handleClose?(): void;\n}\n\nexport const Panel: React.FunctionComponent<PanelProps> = props => {\n  return (\n    <CSSTransition in={props.open} timeout={300} classNames=\"panel\" unmountOnExit>\n      <PanelStyled>\n        {props.handleClose && (\n          <PanelClose>\n            <CloseXButton onClick={props.handleClose} />\n          </PanelClose>\n        )}\n        {props.children}\n      </PanelStyled>\n    </CSSTransition>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/containers/index.ts",
    "content": "export * from \"./Hero\";\nexport * from \"./mediaQueries\";\nexport * from \"./Panel\";\n"
  },
  {
    "path": "packages/elements/src/containers/mediaQueries.ts",
    "content": "export const mediaQueries = {\n  MOBILE: \"@media only screen and (max-width: 1030px)\",\n  MOBILE_SMALL: \"@media only screen and (max-width: 640px)\",\n  COARSE_POINTER: \"@media (pointer: coarse)\",\n  HOVER: \"@media (hover: hover)\",\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ApplicationInProgressIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface ApplicationInProgressProps {\n  height?: string;\n  width?: string;\n}\n\nexport const ApplicationInProgressIcon: React.FunctionComponent<ApplicationInProgressProps> = props => {\n  const color = colors.primary.CIVIL_GRAY_2;\n  const width = props.width || \"19\";\n  const height = props.height || \"18\";\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 19 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M9 0c3.316 0 6.253 1.8 7.768 4.547l2.18-2.179v6.158h-6.159l2.653-2.652c-1.231-2.369-3.6-3.98-6.442-3.98-3.884 0-7.105 3.222-7.105 7.106S5.115 16.105 9 16.105c3.126 0 5.684-1.99 6.726-4.737h1.99C16.674 15.158 13.168 18 9 18c-5.021 0-9-4.074-9-9s4.074-9 9-9zM7.401 4.737v4.831l4.453 2.653.758-1.232-3.79-2.273v-3.98h-1.42z\"\n        fill={color}\n        opacity=\".9\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ApprovedNewsroomsIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface ApprovedNewsroomsProps {\n  height?: string;\n  width?: string;\n}\n\nexport const ApprovedNewsroomsIcon: React.FunctionComponent<ApprovedNewsroomsProps> = props => {\n  const color = colors.primary.CIVIL_GRAY_2;\n  const width = props.width || \"18\";\n  const height = props.height || \"18\";\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <circle fill=\"none\" stroke={color} cx=\"9\" cy=\"9\" r=\"8.25\" />\n      <path fill={color} d=\"M12.6 5l-5.13 5.17L5.4 8.09 4 9.5 7.47 13 14 6.41z\" />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ArticleIndexIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ArticleIndexIconProps {\n  color?: string;\n  size?: number;\n}\n\nexport const ArticleIndexIcon = (props: ArticleIndexIconProps): JSX.Element => {\n  const color = props.color || \"#444\";\n  const size = props.size || 24;\n\n  return (\n    <svg width={size} height={size} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <path d=\"m0 0h24v24h-24z\" opacity=\".3\" />\n        <path\n          d=\"m10.0732422 0 5.9267578 6.11658537v10.88536583c0 1.0989268-.9 1.9980488-2 1.9980488h-12.01c-1.1 0-1.99-.899122-1.99-1.9980488l.08324219-15.00390242c0-1.09892683.89-1.99804878 1.99-1.99804878zm-8.0732422 17.0019512h12v-10.98926827h-5v-3.89512195h-7zm2.5-6.0126829 3.5-3.99609757 3.5 3.99609757h-2.23125v3.9780488h-2.5375v-3.9780488z\"\n          fill={color}\n          fillRule=\"nonzero\"\n          transform=\"translate(4 3)\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ArticleIndexPanelIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const ArticleIndexPanelIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <path d=\"m0 0h18v18h-18z\" opacity=\".3\" />\n        <g fill={colors.primary.BLACK} fillOpacity=\".5\" fillRule=\"nonzero\">\n          <path\n            d=\"m12 9.07439826-1.5 1.43373974v-5.17480467h-3.75v-2.97061012h-5.25v11.35156249h3.52038574l1.49697153 1.5238095h-5.02485727c-.825 0-1.4925-.6857142-1.4925-1.5238095l.06243164-11.44270832c0-.83809524.6675-1.52380952 1.4925-1.52380952h6l4.44506836 4.66480654z\"\n            transform=\"translate(3 1)\"\n          />\n          <path d=\"m15.52 11.5-3.591 3.877-1.449-1.559-.98 1.057 2.429 2.625 4.571-4.943z\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ArticleSignIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ArticleSignIconProps {\n  color?: string;\n  size?: number;\n}\n\nexport const ArticleSignIcon: React.FunctionComponent<ArticleSignIconProps> = props => {\n  const color = props.color || \"#444\";\n  const size = (props.size || 24).toString();\n\n  return (\n    <svg width={size} height={size} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"0 0 24 0 24 24 0 24\" />\n        <g transform=\"translate(3 4)\" fillRule=\"nonzero\" fill={color}>\n          <path d=\"M8 8C10.21 8 12 6.21 12 4 12 1.79 10.21 0 8 0 5.79 0 4 1.79 4 4 4 6.21 5.79 8 8 8ZM8 2C9.1 2 10 2.9 10 4 10 5.1 9.1 6 8 6 6.9 6 6 5.1 6 4 6 2.9 6.9 2 8 2Z\" />\n          <path d=\"M2 14C2.2 13.37 4.57 12.32 6.96 12.06L9 10.06C8.61 10.02 8.32 10 8 10 5.33 10 0 11.34 0 14L0 16 9 16 7 14 2 14Z\" />\n          <polygon points=\"17.6 8.5 12.47 13.67 10.4 11.59 9 13 12.47 16.5 19 9.91\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ArticleSignPanelIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const ArticleSignPanelIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\" opacity=\".3\">\n        <path d=\"m0 0h20v20h-20z\" />\n        <g fill={colors.primary.BLACK} fillRule=\"nonzero\" transform=\"translate(1.667 1.667)\">\n          <path d=\"m8.33333333 0c-4.6 0-8.33333333 3.73333333-8.33333333 8.33333333 0 4.59999997 3.73333333 8.33333337 8.33333333 8.33333337 4.59999997 0 8.33333337-3.7333334 8.33333337-8.33333337 0-4.6-3.7333334-8.33333333-8.33333337-8.33333333zm-4.10833333 13.5666667c.35833333-.75 2.54166667-1.4833334 4.10833333-1.4833334 1.56666667 0 3.75833337.7333334 4.10833337 1.4833334-1.1333334.9-2.55833337 1.4333333-4.10833337 1.4333333s-2.975-.5333333-4.10833333-1.4333333zm9.4083333-1.2083334c-1.1916666-1.45-4.0833333-1.9416666-5.29999997-1.9416666-1.21666666 0-4.10833333.4916666-5.3 1.9416666-.85-1.1166666-1.36666666-2.5083333-1.36666666-4.02499997 0-3.675 2.99166666-6.66666666 6.66666666-6.66666666 3.67499997 0 6.66666667 2.99166666 6.66666667 6.66666666 0 1.51666667-.5166667 2.90833337-1.3666667 4.02499997z\" />\n          <path d=\"m8.33333333 3.33333333c-1.61666666 0-2.91666666 1.3-2.91666666 2.91666667s1.3 2.91666667 2.91666666 2.91666667c1.61666667 0 2.91666667-1.3 2.91666667-2.91666667s-1.3-2.91666667-2.91666667-2.91666667zm0 4.16666667c-.69166666 0-1.25-.55833333-1.25-1.25s.55833334-1.25 1.25-1.25c.69166667 0 1.25.55833333 1.25 1.25s-.55833333 1.25-1.25 1.25z\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/AvatarGenericIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface AvatarGenericIconProps {\n  size?: number;\n  color?: string;\n  className?: string;\n}\n\nexport const AvatarGenericIcon: React.FunctionComponent<AvatarGenericIconProps> = props => {\n  const size = (props.size || 20).toString();\n  const color = props.color || \"#9B9B9B\";\n\n  return (\n    <svg\n      width={size}\n      height={size}\n      className={props.className}\n      viewBox=\"0 0 20 20\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g stroke=\"none\" strokeWidth=\"1\" fill={color} fillRule=\"evenodd\">\n        <path d=\"M10,0 C15.5,0 20,4.5 20,10 C20,15.5 15.5,20 10,20 C4.5,20 0,15.5 0,10 C0,4.5 4.5,0 10,0 Z M10,2 C5.581722,2 2,5.581722 2,10 C2,11.8075589 2.59947447,13.4751029 3.61045414,14.814663 C4.95335464,13.6348241 8.18364054,13 10,13 C11.8163595,13 15.0466454,13.6348241 16.388888,14.8146228 C17.4005255,13.4751029 18,11.8075589 18,10 C18,5.581722 14.418278,2 10,2 Z M10,4 C12.2666667,4 14,5.73333333 14,8 C14,10.2666667 12.2666667,12 10,12 C7.73333333,12 6,10.2666667 6,8 C6,5.73333333 7.73333333,4 10,4 Z\"></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/BellIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface BellIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const BellIcon: React.FunctionComponent<BellIconProps> = props => {\n  const color = props.color || colors.primary.BLACK;\n  const width = (props.width || 21).toString();\n  const height = (props.height || 24).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 21 24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={color} fillRule=\"evenodd\">\n        <path d=\"M10.065 24C11.342 24 12.387 22.955 12.387 21.677L7.742 21.677C7.742 22.955 8.787 24 10.065 24L10.065 24ZM17.761 16.577L17.761 10.065C17.761 6.394 15.274 3.434 11.841 2.605L11.841 1.776C11.841 0.829 11.012 0 10.065 0 9.117 0 8.288 0.829 8.288 1.776L8.288 2.605C4.855 3.434 2.368 6.394 2.368 10.065L2.368 16.577 0 18.945 0 20.129 20.129 20.129 20.129 18.945 17.761 16.577 17.761 16.577Z\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/BookreaderIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const BookreaderIcon: React.FunctionComponent = props => {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"70\" height=\"70\" viewBox=\"0 0 70 70\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={colors.primary.BLACK} fillRule=\"evenodd\">\n        <path d=\"M35 29.67C40.992 29.67 45.867 24.795 45.867 18.803 45.867 12.812 40.992 7.936 35 7.936 29.008 7.936 24.133 12.811 24.133 18.803 24.133 24.795 29.008 29.67 35 29.67ZM35 9.157C40.319 9.157 44.646 13.484 44.646 18.803 44.646 24.122 40.319 28.449 35 28.449 29.681 28.449 25.354 24.122 25.354 18.803 25.354 13.484 29.681 9.157 35 9.157Z\" />\n        <path d=\"M8.088 43.479C8.088 45.694 8.408 51.05 11.371 52.947 12.002 53.351 12.703 53.57 13.471 53.606L13.471 55.818 34.39 61.911 34.39 62.267 35 62.089 35.61 62.267 35.61 61.911 56.53 55.818 56.53 53.607C57.297 53.571 57.999 53.351 58.63 52.948 61.593 51.05 61.913 45.694 61.913 43.48 61.913 39.771 58.642 38.08 56.531 37.594L56.531 25.879 35 32.986 13.47 25.88 13.47 37.594C11.359 38.079 8.088 39.77 8.088 43.479ZM56.502 39.242L56.529 38.865C57.876 39.251 60.69 40.423 60.69 43.479 60.69 45.05 60.494 50.302 57.971 51.919 56.92 52.591 55.53 52.537 53.838 51.759 52.035 50.929 51.041 50.008 50.885 49.024 50.643 47.501 52.376 45.898 53.522 44.837L55.301 43.164 53.332 43.486C52.672 43.595 51.168 43.649 50.73 43.126 50.568 42.932 50.565 42.607 50.722 42.159 51.076 41.155 51.85 41.083 53.188 41.041 54.431 41.003 55.976 40.954 56.502 39.242ZM35.61 34.07L55.309 27.569 55.309 38.964C55.048 39.689 54.464 39.78 53.151 39.821 51.914 39.859 50.218 39.912 49.571 41.754 49.184 42.855 49.48 43.535 49.796 43.911 50.275 44.482 51.086 44.695 51.833 44.758 50.643 45.94 49.405 47.483 49.68 49.216 49.908 50.648 51.101 51.843 53.329 52.869 54.024 53.189 54.685 53.406 55.309 53.519L55.309 54.903 35.61 60.64 35.61 34.07ZM14.691 27.569L34.39 34.07 34.39 60.64 14.691 54.902 14.691 53.518C15.316 53.404 15.977 53.188 16.671 52.868 18.899 51.842 20.092 50.647 20.32 49.215 20.595 47.482 19.358 45.939 18.167 44.758 18.914 44.695 19.725 44.481 20.204 43.91 20.52 43.534 20.815 42.855 20.429 41.753 19.782 39.911 18.086 39.858 16.849 39.82 15.536 39.78 14.951 39.688 14.691 38.963L14.691 27.569ZM13.47 38.86L13.47 39.062 13.497 39.242C14.024 40.955 15.569 41.004 16.811 41.042 18.15 41.083 18.924 41.156 19.277 42.16 19.434 42.608 19.432 42.933 19.27 43.127 18.832 43.65 17.327 43.596 16.667 43.487L14.698 43.165 16.477 44.838C17.623 45.899 19.356 47.502 19.114 49.024 18.958 50.009 17.964 50.93 16.161 51.76 14.468 52.539 13.078 52.592 12.029 51.92 9.505 50.303 9.309 45.051 9.309 43.48 9.309 40.388 12.12 39.236 13.47 38.86Z\" />\n        <path d=\"M18.874 66.134C17.868 66.134 17.049 66.953 17.049 67.959 17.049 68.965 17.868 69.783 18.874 69.783 19.88 69.783 20.699 68.965 20.699 67.959 20.699 66.953 19.881 66.134 18.874 66.134ZM18.874 69.377C18.093 69.377 17.456 68.74 17.456 67.959 17.456 67.177 18.093 66.541 18.874 66.541 19.655 66.541 20.292 67.177 20.292 67.959 20.292 68.74 19.656 69.377 18.874 69.377Z\" />\n        <path d=\"M1.213 23.533L2.826 22.685 4.439 23.533 4.132 21.737 5.437 20.464 3.633 20.202 2.826 18.568 2.019 20.202 0.216 20.464 1.521 21.737 1.213 23.533ZM1.09 20.748L2.29 20.574 2.826 19.488 3.362 20.574 4.562 20.748 3.695 21.595 3.899 22.79 2.826 22.227 1.753 22.79 1.958 21.595 1.09 20.748Z\" />\n        <path d=\"M17.812 4.908L18.925 4.323 20.039 4.908 19.826 3.668 20.727 2.79 19.482 2.609 18.925 1.481 18.368 2.609 17.123 2.79 18.024 3.668 17.812 4.908ZM17.998 3.073L18.64 2.981 18.926 2.4 19.213 2.981 19.854 3.073 19.39 3.526 19.499 4.164 18.926 3.863 18.353 4.164 18.462 3.526 17.998 3.073Z\" />\n        <path d=\"M64.98 51.334L65.881 52.212 65.669 53.452 66.782 52.866 67.896 53.452 67.683 52.212 68.585 51.334 67.339 51.152 66.782 50.024 66.226 51.152 64.98 51.334ZM66.782 50.944L67.069 51.524 67.71 51.617 67.246 52.069 67.355 52.708 66.782 52.406 66.209 52.708 66.318 52.069 65.855 51.617 66.496 51.524 66.782 50.944Z\" />\n        <path d=\"M66.782 7.435L66.048 9.696 63.672 9.696 65.594 11.093 64.86 13.353 66.782 11.956 68.705 13.353 67.971 11.093 69.893 9.696 67.517 9.696 66.782 7.435ZM67.492 10.938L67.931 12.287 66.782 11.453 65.634 12.287 66.073 10.938 64.924 10.103 66.345 10.103 66.783 8.752 67.222 10.103 68.642 10.103 67.492 10.938Z\" />\n        <path d=\"M60.307 3.867C61.313 3.867 62.132 3.048 62.132 2.042 62.132 1.036 61.313 0.217 60.307 0.217 59.301 0.217 58.482 1.036 58.482 2.042 58.482 3.048 59.3 3.867 60.307 3.867ZM60.307 0.624C61.088 0.624 61.725 1.261 61.725 2.042 61.725 2.824 61.088 3.46 60.307 3.46 59.525 3.46 58.889 2.824 58.889 2.042 58.889 1.261 59.524 0.624 60.307 0.624Z\" />\n        <path d=\"M66.579 35.803C66.579 36.604 67.231 37.256 68.033 37.256 68.834 37.256 69.486 36.604 69.486 35.803 69.486 35.001 68.834 34.349 68.033 34.349 67.231 34.349 66.579 35.001 66.579 35.803ZM68.033 34.756C68.61 34.756 69.079 35.225 69.079 35.803 69.079 36.38 68.61 36.849 68.033 36.849 67.456 36.849 66.986 36.38 66.986 35.803 66.986 35.225 67.456 34.756 68.033 34.756Z\" />\n        <path d=\"M8.073 11.815C9.133 11.815 9.995 10.953 9.995 9.894 9.995 8.834 9.133 7.972 8.073 7.972 7.013 7.972 6.151 8.834 6.151 9.894 6.151 10.953 7.013 11.815 8.073 11.815ZM8.073 8.379C8.908 8.379 9.588 9.058 9.588 9.894 9.588 10.729 8.908 11.408 8.073 11.408 7.238 11.408 6.558 10.729 6.558 9.894 6.558 9.058 7.238 8.379 8.073 8.379Z\" />\n        <path d=\"M13.89 67.582L13.791 67.976C14.056 68.043 14.324 68.103 14.595 68.157L14.676 67.758C14.411 67.706 14.149 67.647 13.89 67.582Z\" />\n        <path d=\"M6.995 63.886C6.606 63.532 6.231 63.155 5.88 62.766L5.578 63.039C5.937 63.438 6.322 63.824 6.721 64.187L6.995 63.886Z\" />\n        <path d=\"M9.526 65.77C9.077 65.5 8.636 65.204 8.214 64.89L7.97 65.216C8.403 65.539 8.856 65.842 9.316 66.118L9.526 65.77Z\" />\n        <path d=\"M10.918 66.516L10.744 66.884C11.23 67.115 11.734 67.324 12.24 67.505L12.378 67.122C11.884 66.945 11.393 66.742 10.918 66.516Z\" />\n        <path d=\"M3.655 60.438C3.931 60.9 4.233 61.353 4.553 61.786L4.88 61.544C4.569 61.121 4.273 60.679 4.004 60.229L3.655 60.438Z\" />\n        <path d=\"M2.196 55.868C2.068 55.359 1.964 54.838 1.888 54.321L1.485 54.38C1.564 54.912 1.67 55.446 1.8 55.967L2.196 55.868Z\" />\n        <path d=\"M2.272 57.516C2.452 58.02 2.661 58.523 2.891 59.012L3.259 58.837C3.034 58.361 2.83 57.87 2.654 57.379L2.272 57.516Z\" />\n        <path d=\"M1.307 51.973C1.307 52.24 1.314 52.506 1.327 52.77L1.733 52.751C1.721 52.493 1.714 52.233 1.714 51.973 1.714 51.706 1.721 51.439 1.734 51.171L1.328 51.151C1.314 51.426 1.307 51.7 1.307 51.973Z\" />\n        <path d=\"M2.03 48.796L1.631 48.716C1.577 48.987 1.529 49.257 1.49 49.528L1.892 49.588C1.931 49.324 1.977 49.059 2.03 48.796Z\" />\n        <path d=\"M68.939 57.8L68.532 57.792C68.527 58.06 68.512 58.326 68.488 58.59L68.893 58.627C68.918 58.354 68.934 58.079 68.939 57.8Z\" />\n        <path d=\"M66.054 65.168C66.455 64.716 66.822 64.23 67.146 63.724L66.804 63.505C66.491 63.992 66.137 64.461 65.75 64.897L66.054 65.168Z\" />\n        <path d=\"M61.485 67.862C60.942 68.072 60.38 68.239 59.813 68.361L59.897 68.759C60.486 68.633 61.068 68.459 61.632 68.241L61.485 67.862Z\" />\n        <path d=\"M67.624 61.965L67.998 62.127C68.238 61.574 68.436 60.998 68.585 60.414L68.191 60.313C68.047 60.876 67.856 61.432 67.624 61.965Z\" />\n        <path d=\"M64.49 66.107C64.04 66.476 63.558 66.811 63.057 67.104L63.262 67.456C63.782 67.152 64.282 66.804 64.748 66.422L64.49 66.107Z\" />\n        <path d=\"M58.076 68.588C57.812 68.601 57.547 68.607 57.276 68.6L57.268 69.007C57.346 69.009 57.424 69.009 57.503 69.009 57.702 69.009 57.9 69.005 58.097 68.994L58.076 68.588Z\" />\n        <rect x=\"67.829\" y=\"19.028\" width=\"1\" height=\"1.628\" />\n        <rect x=\"67.829\" y=\"28.795\" width=\"1\" height=\"1.628\" />\n        <rect x=\"67.829\" y=\"22.284\" width=\"1\" height=\"1.628\" />\n        <rect x=\"67.829\" y=\"25.539\" width=\"1\" height=\"1.628\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/BrainIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const BrainIcon: React.FunctionComponent = props => {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"74\" height=\"74\" viewBox=\"0 0 74 74\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={colors.primary.BLACK} fillRule=\"evenodd\">\n        <path d=\"M15.655 32.216C14.873 34.266 15.594 36.476 15.871 37.188 14.916 40.662 17.583 42.734 19.452 43.493 19.57 44.285 19.944 44.946 20.569 45.46 22.338 46.914 25.706 46.726 27.107 46.573 27.918 50.057 30.993 50.102 33.271 50.135 34.108 50.148 34.898 50.158 35.482 50.318 37.083 50.755 40.307 56.437 41.961 59.916L42.188 60.39 47.399 59.122 47.369 58.586C47.361 58.443 47.19 55.685 45.725 53.361 46.699 53.487 47.865 53.472 48.793 52.961 49.456 52.596 49.918 52.037 50.171 51.297 51.265 51.131 54.034 50.525 55.289 48.576 55.946 47.557 56.09 46.351 55.723 44.983 56.199 44.681 56.56 44.306 56.802 43.86 57.319 42.906 57.134 41.905 56.959 41.354 57.584 40.581 57.877 39.694 57.834 38.713 57.726 36.304 55.557 34.056 54.835 33.371 54.833 28.189 49.386 26.433 48.05 26.081 46.661 23.753 44.955 22.368 42.978 21.963 40.789 21.513 38.903 22.409 38.079 22.9 36.451 21.568 34.715 20.962 32.929 21.106 30.21 21.321 28.172 23.195 27.43 23.978 25.518 23.399 23.78 23.513 22.26 24.317 19.714 25.662 18.592 28.522 18.284 29.456 16.998 30.087 16.115 31.014 15.655 32.216ZM54.206 47.875C53.002 49.75 49.64 50.067 49.607 50.07L49.13 50.113 49.032 50.58C48.906 51.171 48.625 51.58 48.172 51.83 47.003 52.473 44.933 51.948 44.236 51.691L41.122 50.542 43.578 52.774C45.328 54.364 45.868 57.008 46.023 58.13L42.899 58.89C42.086 57.223 40.013 53.167 38.007 50.806 41.392 50.783 43.768 48.553 44.686 47.526 45.934 48.373 47.249 48.716 48.598 48.547 50.984 48.249 52.73 46.425 53.277 45.784 53.733 45.721 54.149 45.631 54.525 45.516 54.736 46.439 54.63 47.215 54.206 47.875ZM19.076 30.511L19.359 30.386 19.44 30.087C19.448 30.054 20.353 26.783 22.863 25.458 24.163 24.772 25.696 24.729 27.417 25.332L27.846 25.482 28.131 25.13C28.152 25.105 30.201 22.617 33.03 22.394 34.598 22.262 36.132 22.874 37.595 24.186L37.99 24.541 38.415 24.221C38.434 24.206 40.396 22.753 42.718 23.227 44.385 23.569 45.848 24.826 47.07 26.964L47.216 27.219 47.503 27.277C47.758 27.328 53.74 28.599 53.539 33.624L53.526 33.934 53.76 34.137C53.786 34.16 56.444 36.497 56.544 38.774 56.576 39.532 56.317 40.186 55.752 40.772L55.441 41.1 55.639 41.506C55.644 41.516 56.095 42.467 55.663 43.252 55.293 43.925 54.326 44.368 52.868 44.533L52.593 44.564 52.426 44.785C52.41 44.807 50.748 46.976 48.439 47.265 47.261 47.413 46.099 47.033 44.982 46.139L44.456 45.718 44.058 46.263C44.027 46.304 40.969 50.393 36.403 49.331 36.204 49.212 36.01 49.124 35.822 49.072 35.08 48.87 34.21 48.857 33.291 48.843 30.512 48.803 28.66 48.567 28.27 45.763L28.179 45.106 27.525 45.215C26.317 45.418 22.861 45.674 21.391 44.463 20.945 44.096 20.722 43.62 20.705 43.01L20.692 42.555 20.259 42.415C20.085 42.358 16.02 40.989 17.17 37.346L17.244 37.11 17.142 36.885C17.132 36.862 16.125 34.593 16.864 32.668 17.227 31.722 17.972 30.996 19.076 30.511Z\" />\n        <path d=\"M29.103 36.516L29.169 36.132C29.326 35.223 30.033 32.72 31.407 32.063 31.984 31.786 32.643 31.863 33.418 32.293 34.401 32.839 35.259 33.31 36.047 33.713 36.049 33.714 36.05 33.716 36.053 33.717L36.053 33.716C37.17 34.287 38.142 34.717 39.096 35.005 38.329 35.417 37.347 35.889 36.374 36.198 36.114 36.282 35.42 36.502 35.283 37.117 35.145 37.734 35.634 38.186 36.152 38.664 36.746 39.216 37.422 39.839 37.381 40.654 37.366 40.964 37.266 41.08 37.192 41.14 36.726 41.518 35.367 41.301 34.275 41.126 33.587 41.016 32.938 40.912 32.375 40.911L32.373 42.202C32.834 42.202 33.434 42.298 34.071 42.399 34.808 42.518 35.559 42.638 36.239 42.638 36.929 42.638 37.546 42.514 38.006 42.141 38.417 41.807 38.64 41.329 38.67 40.717 38.74 39.3 37.71 38.347 37.028 37.717 36.936 37.631 36.827 37.53 36.733 37.438 36.744 37.435 36.754 37.431 36.765 37.428 38.612 36.841 40.432 35.754 41.018 35.387 41.65 35.45 42.312 35.461 43.039 35.412 45.929 35.232 46.626 36.628 47.245 38.486 47.817 40.203 48.936 41.642 50.027 42.067 50.276 42.165 50.502 42.202 50.702 42.202 51.015 42.202 51.266 42.11 51.445 42.01L50.818 40.882C50.791 40.897 50.705 40.944 50.494 40.863 49.883 40.626 48.966 39.568 48.468 38.076 47.916 36.422 47.119 34.686 44.825 34.222 45.601 32.809 47.098 32.908 47.118 32.914L47.494 31.68C47.109 31.548 46.152 31.587 45.236 32.074 44.65 32.384 43.901 32.986 43.459 34.107 43.294 34.109 43.13 34.111 42.954 34.123 40.617 34.271 39.029 33.785 36.621 32.555 36.333 32.097 37.26 29.716 38.577 27.541L37.473 26.872C37.114 27.466 35.591 30.068 35.34 31.876 34.933 31.655 34.506 31.419 34.045 31.163 32.891 30.522 31.817 30.433 30.849 30.896 29.551 31.518 28.787 33.031 28.358 34.236 27.23 32.707 25.459 32.08 24.678 31.81 24.559 31.768 24.467 31.738 24.414 31.714L23.839 32.87C23.917 32.909 24.061 32.962 24.255 33.03 25.082 33.316 26.897 33.959 27.681 35.617L21.328 37.668 21.725 38.896 29.103 36.516Z\" />\n        <polygon\n          transform=\"translate(56.81 23.39)rotate(29.4)translate(-56.81 -23.39)\"\n          points=\"56.163 20.173 57.454 20.173 57.454 26.615 56.163 26.615\"\n        />\n        <rect x=\"43.272\" y=\"13.95\" width=\"1.291\" height=\"5.027\" />\n        <polygon\n          transform=\"translate(25.75 16.97)rotate(51.75)translate(-25.75 -16.97)\"\n          points=\"23.129 16.328 28.376 16.328 28.376 17.618 23.129 17.618\"\n        />\n        <polygon\n          transform=\"translate(13.77 25.44)rotate(-160.74)translate(-13.77 -25.44)\"\n          points=\"11.465 24.798 16.075 24.798 16.075 26.089 11.465 26.089\"\n        />\n        <polygon\n          transform=\"translate(12.55 47.02)rotate(-44.14)translate(-12.55 -47.02)\"\n          points=\"9.55 46.375 15.545 46.375 15.545 47.666 9.55 47.666\"\n        />\n        <polygon\n          transform=\"translate(21.2 54.2)rotate(-68.13)translate(-21.2 -54.2)\"\n          points=\"18.316 53.554 24.093 53.554 24.093 54.845 18.316 54.845\"\n        />\n        <polygon\n          transform=\"translate(32.67 57.48)rotate(-173.42)translate(-32.67 -57.48)\"\n          points=\"32.029 54.895 33.32 54.895 33.32 60.068 32.029 60.068\"\n        />\n        <polygon\n          transform=\"translate(57.493145 55.46)rotate(-137.92)translate(-57.49 -55.46)\"\n          points=\"54.441 54.818 60.545 54.818 60.545 56.109 54.441 56.109\"\n        />\n        <rect x=\"59.758\" y=\"42.34\" width=\"5.208\" height=\"1.291\" />\n        <rect x=\"9.035\" y=\"35.377\" width=\"3.511\" height=\"1.291\" />\n        <polygon\n          transform=\"translate(61.79 32.71)rotate(-125.47)translate(-61.79 -32.71)\"\n          points=\"61.145 30.206 62.437 30.206 62.437 35.209 61.145 35.209\"\n        />\n        <path d=\"M21.745 71.842C21.745 70.778 20.879 69.913 19.816 69.913 18.752 69.913 17.886 70.778 17.886 71.842 17.886 72.905 18.752 73.771 19.816 73.771 20.879 73.771 21.745 72.906 21.745 71.842ZM18.316 71.842C18.316 71.015 18.988 70.343 19.815 70.343 20.642 70.343 21.314 71.015 21.314 71.842 21.314 72.669 20.642 73.341 19.815 73.341 18.988 73.341 18.316 72.669 18.316 71.842Z\" />\n        <path d=\"M2.85 19.63L1.998 21.358 0.089 21.634 1.471 22.979 1.144 24.878 2.849 23.981 4.554 24.878 4.229 22.978 5.609 21.633 3.703 21.357 2.85 19.63ZM3.768 22.828L3.984 24.091 2.85 23.496 1.717 24.091 1.933 22.828 1.015 21.934 2.284 21.75 2.85 20.6 3.418 21.75 4.685 21.934 3.768 22.828Z\" />\n        <path d=\"M20.458 2.758L19.868 1.565 19.28 2.758 17.964 2.949 18.916 3.877 18.691 5.188 19.867 4.569 21.045 5.187 20.82 3.877 21.772 2.949 20.458 2.758ZM20.476 4.402L19.869 4.084 19.264 4.401 19.379 3.728 18.89 3.249 19.567 3.151 19.87 2.537 20.174 3.151 20.852 3.249 20.361 3.728 20.476 4.402Z\" />\n        <path d=\"M68.556 54.266L69.508 55.195 69.283 56.506 70.46 55.886 71.637 56.506 71.413 55.195 72.364 54.266 71.049 54.074 70.459 52.882 69.87 54.074 68.556 54.266ZM70.461 53.855L70.765 54.468 71.442 54.567 70.952 55.046 71.068 55.72 70.462 55.402 69.856 55.72 69.971 55.046 69.482 54.567 70.159 54.468 70.461 53.855Z\" />\n        <path d=\"M70.461 7.86L69.685 10.25 67.173 10.25 69.204 11.727 68.428 14.115 70.461 12.639 72.492 14.115 71.717 11.727 73.748 10.25 71.236 10.25 70.461 7.86ZM71.211 11.563L71.674 12.99 70.461 12.108 69.247 12.99 69.71 11.563 68.496 10.681 69.997 10.681 70.461 9.254 70.924 10.681 72.425 10.681 71.211 11.563Z\" />\n        <path d=\"M63.615 0.23C62.552 0.23 61.686 1.095 61.686 2.159 61.686 3.222 62.552 4.088 63.615 4.088 64.679 4.088 65.544 3.222 65.544 2.159 65.544 1.095 64.679 0.23 63.615 0.23ZM63.615 3.658C62.788 3.658 62.116 2.986 62.116 2.159 62.116 1.332 62.788 0.66 63.615 0.66 64.442 0.66 65.114 1.332 65.114 2.159 65.114 2.986 64.442 3.658 63.615 3.658Z\" />\n        <path d=\"M70.246 37.848C70.246 38.696 70.935 39.385 71.783 39.385 72.63 39.385 73.319 38.696 73.319 37.848 73.319 37.001 72.63 36.312 71.783 36.312 70.935 36.312 70.246 37.001 70.246 37.848ZM71.783 36.742C72.393 36.742 72.889 37.238 72.889 37.848 72.889 38.458 72.393 38.955 71.783 38.955 71.173 38.955 70.676 38.458 70.676 37.848 70.676 37.238 71.173 36.742 71.783 36.742Z\" />\n        <path d=\"M8.396 8.427C7.276 8.427 6.366 9.339 6.366 10.458 6.366 11.578 7.277 12.49 8.396 12.49 9.516 12.49 10.427 11.578 10.427 10.458 10.427 9.339 9.517 8.427 8.396 8.427ZM8.396 12.06C7.514 12.06 6.796 11.342 6.796 10.459 6.796 9.577 7.514 8.858 8.396 8.858 9.278 8.858 9.997 9.577 9.997 10.459 9.997 11.342 9.278 12.06 8.396 12.06Z\" />\n        <path d=\"M15.377 71.631C15.097 71.575 14.821 71.512 14.547 71.444L14.441 71.86C14.721 71.931 15.004 71.994 15.29 72.053L15.377 71.631Z\" />\n        <path d=\"M8.288 68.943C8.741 69.282 9.22 69.603 9.71 69.896L9.932 69.528C9.454 69.241 8.987 68.928 8.545 68.598L8.288 68.943Z\" />\n        <path d=\"M6.968 67.853L7.257 67.535C6.846 67.16 6.45 66.763 6.079 66.351L5.76 66.64C6.14 67.062 6.546 67.469 6.968 67.853Z\" />\n        <path d=\"M1.243 54.943C1.243 55.225 1.25 55.505 1.263 55.786L1.693 55.766C1.68 55.493 1.674 55.219 1.674 54.944 1.674 54.662 1.68 54.379 1.694 54.097L1.264 54.075C1.25 54.364 1.243 54.654 1.243 54.943Z\" />\n        <path d=\"M12.803 71.363L12.947 70.957C12.427 70.771 11.907 70.555 11.405 70.317L11.22 70.705C11.736 70.95 12.268 71.171 12.803 71.363Z\" />\n        <path d=\"M1.431 57.488C1.515 58.052 1.628 58.617 1.766 59.165L2.182 59.061C2.048 58.526 1.939 57.976 1.856 57.424L1.431 57.488Z\" />\n        <path d=\"M3.308 62.199C3.072 61.698 2.857 61.179 2.669 60.657L2.264 60.801C2.457 61.337 2.676 61.869 2.92 62.382L3.308 62.199Z\" />\n        <path d=\"M4.095 63.671L3.725 63.891C4.016 64.377 4.335 64.857 4.675 65.315L5.021 65.06C4.69 64.612 4.378 64.145 4.095 63.671Z\" />\n        <path d=\"M1.437 52.358L1.862 52.421C1.904 52.142 1.952 51.864 2.008 51.585L1.587 51.499C1.528 51.786 1.479 52.072 1.437 52.358Z\" />\n        <path d=\"M72.74 61.102L72.31 61.095C72.305 61.378 72.289 61.66 72.264 61.939L72.692 61.978C72.719 61.688 72.735 61.397 72.74 61.102Z\" />\n        <path d=\"M69.689 68.891C70.113 68.415 70.502 67.902 70.845 67.367L70.482 67.134C70.152 67.651 69.778 68.146 69.368 68.606L69.689 68.891Z\" />\n        <path d=\"M63.092 72.267L63.181 72.687C63.804 72.555 64.421 72.37 65.016 72.14L64.859 71.738C64.287 71.962 63.692 72.139 63.092 72.267Z\" />\n        <path d=\"M68.31 70.217L68.038 69.884C67.564 70.272 67.053 70.627 66.523 70.938L66.739 71.31C67.29 70.987 67.818 70.619 68.31 70.217Z\" />\n        <path d=\"M71.35 65.505L71.745 65.677C71.999 65.091 72.208 64.482 72.366 63.866L71.95 63.759C71.796 64.353 71.595 64.941 71.35 65.505Z\" />\n        <path d=\"M60.412 72.52L60.403 72.95C60.484 72.952 60.565 72.953 60.645 72.953 60.857 72.953 61.068 72.947 61.279 72.936L61.257 72.506C60.978 72.52 60.698 72.528 60.412 72.52Z\" />\n        <rect x=\"71.567\" y=\"23.557\" width=\"1\" height=\"1.721\" />\n        <rect x=\"71.567\" y=\"30.441\" width=\"1\" height=\"1.721\" />\n        <rect x=\"71.567\" y=\"20.115\" width=\"1\" height=\"1.721\" />\n        <rect x=\"71.567\" y=\"28.056\" width=\"1\" height=\"1.721\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CCAmexIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const CCAmexIcon: React.FunctionComponent = props => {\n  return (\n    <svg height=\"16\" viewBox=\"0 0 24 16\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\">\n        <rect fill=\"#016fd0\" height=\"16\" rx=\"2\" width=\"24\" />\n        <path\n          d=\"m13.764 13.394v-5.702l10.148.01v1.574l-1.173 1.254 1.173 1.265v1.608h-1.873l-.995-1.098-.988 1.102z\"\n          fill=\"#fffffe\"\n        />\n        <path d=\"m14.442 12.769v-4.449h3.772v1.025h-2.551v.695h2.49v1.008h-2.49v.684h2.551v1.037z\" fill=\"#016fd0\" />\n        <path\n          d=\"m18.195 12.769 2.088-2.227-2.088-2.222h1.616l1.275 1.41 1.279-1.41h1.547v.035l-2.043 2.187 2.043 2.164v.063h-1.562l-1.298-1.424-1.285 1.424z\"\n          fill=\"#016fd0\"\n        />\n        <path d=\"m14.237 2.632h2.446l.86 1.951v-1.951h3.019l.521 1.462.523-1.462h2.306v5.701h-12.187z\" fill=\"#fffffe\" />\n        <g fill=\"#016fd0\" transform=\"translate(12 3)\">\n          <path d=\"m2.7004641.25135912-1.9740111 4.44517127h1.3539006l.3724199-.89016575h2.0179447l.3721547.89016575h1.3875801l-1.96579-4.44517127zm.1696353 2.55743646.592-1.41507182.5915581 1.41507182z\" />\n          <path d=\"m6.212 4.696v-4.445l1.903.006.979 2.733.986-2.739h1.832v4.445l-1.179.01v-3.053l-1.113 3.043h-1.075l-1.136-3.054v3.054z\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CCDiscoverIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const CCDiscoverIcon: React.FunctionComponent = props => {\n  return (\n    <svg height=\"16\" viewBox=\"0 0 26 16\" width=\"26\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" transform=\"translate(1)\">\n        <path\n          d=\"m21.9972414 15.75h.0021396c.9550873.0081106 1.738679-.7727475 1.7506273-1.7458445v-11.99785331c-.0038381-.47061298-.191145-.92013113-.5202786-1.24950041-.3282978-.3285329-.7708136-.51065293-1.2324883-.50680176h-19.9966114c-.45954607-.00385117-.90206187.17826886-1.23035972.50680176-.32913363.32936928-.51644046.77888743-.52027859 1.24746158v11.98943234c.00383813.4706129.19114496.9201311.52027859 1.2495004.32829785.3285329.77081365.5106529 1.23248834.5068039z\"\n          fill={colors.basic.WHITE}\n          stroke={colors.primary.BLACK}\n          strokeOpacity=\".2\"\n          strokeWidth=\".5\"\n        />\n        <path\n          d=\"m12.6124138 15.9999283h9.3848276c.5267803.0044081 1.0337342-.2006364 1.4093283-.5700224.3755941-.3693859.5890588-.8728522.5934303-1.3996328v-2.3586207c-3.5438332 2.0343098-7.3872071 3.4951271-11.3875862 4.3282759z\"\n          fill=\"#f27712\"\n        />\n        <path\n          d=\"m23.1724138 9.29647999h-.8524138l-.96-1.2662069h-.0910345v1.2662069h-.6951724v-3.14482759h1.0262069c.8027586 0 1.2662069.33103448 1.2662069.92689655 0 .48827586-.2896552.80275862-.8110345.90206897zm-1.0262069-2.19310345c0-.3062069-.2317241-.46344828-.662069-.46344828h-.2151724v.95172414h.1986207c.4468966 0 .6786207-.16551724.6786207-.48827586zm-4.0055172-.95172414h1.9696551v.52965517h-1.2744827v.70344828h1.2248276v.53793103h-1.2248276v.8524138h1.2744827v.52965517h-1.9696551zm-2.2344828 3.22758621-1.5062069-3.23586207h.7613793l.9517241 2.11862069.96-2.11862069h.7448276l-1.5227586 3.23586207h-.3724138zm-6.29793104-.00827587c-1.05931034 0-1.88689655-.72-1.88689655-1.65517241 0-.91034483.84413793-1.64689655 1.90344828-1.64689655.29793103 0 .54620691.05793103.85241381.19034483v.72827586c-.231888-.22782196-.54388895-.3555938-.86896554-.35586207-.66206896 0-1.16689655.48-1.16689655 1.08413793 0 .63724138.49655172 1.09241379 1.2 1.09241379.31448276 0 .55448279-.09931034.83586209-.3475862v.72827586c-.3144828.13241379-.57931037.18206896-.86896554.18206896zm-2.10206896-1.03448275c0 .61241379-.50482759 1.03448275-1.23310345 1.03448275-.52965517 0-.91034483-.18206896-1.23310345-.59586206l.45517241-.38896552c.15724138.28137931.42206897.42206896.75310345.42206896.31448276 0 .53793104-.19034482.53793104-.43862069 0-.14068965-.0662069-.24827586-.20689656-.33103448-.15426112-.07485737-.31489915-.13578903-.48-.18206896-.6537931-.20689656-.87724137-.43034483-.87724137-.86896552 0-.51310345.48-.90206897 1.10896551-.90206897.39724138 0 .75310345.12413793 1.05103449.35586207l-.36413794.41379311c-.14432175-.15821992-.34860375-.24834433-.56275862-.24827587-.29793103 0-.51310344.14896552-.51310344.34758621 0 .16551724.12413793.25655172.53793103.39724138.79448276.24827586 1.0262069.48 1.0262069.99310345zm-3.41793104-2.18482759h.69517242v3.15310345h-.69517242zm-2.23448276 3.15310345h-1.02620689v-3.15310345h1.02620689c1.12551724 0 1.90344828.64551724 1.90344828 1.57241379 0 .47172414-.23172414.91862069-.63724138 1.21655173-.34758621.24827586-.73655172.36413793-1.27448276.36413793zm.81103449-2.36689655c-.23172414-.18206897-.49655173-.24827587-.95172414-.24827587h-.19034483v2.08551725h.19034483c.44689655 0 .72827586-.08275862.95172414-.24827587.24-.19862069.38068965-.49655172.38068965-.80275862 0-.30620689-.14068965-.59586207-.38068965-.78620689z\"\n          fill={colors.primary.BLACK}\n        />\n        <path\n          d=\"m12.4137931 6.06889378c-.9103448 0-1.6551724.72827586-1.6551724 1.63034483 0 .96.7117241 1.68 1.6551724 1.68.9268966 0 1.6551724-.72827587 1.6551724-1.65517242s-.72-1.65517241-1.6551724-1.65517241z\"\n          fill=\"#f27712\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CCMastercardIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const CCMastercardIcon: React.FunctionComponent = props => {\n  return (\n    <svg height=\"16\" viewBox=\"0 0 24 16\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\">\n        <rect fill=\"#141413\" height=\"16\" rx=\"2\" width=\"24\" />\n        <circle cx=\"9\" cy=\"8\" fill=\"#eb001b\" r=\"5\" />\n        <circle cx=\"15\" cy=\"8\" fill=\"#f79e1b\" r=\"5\" />\n        <path\n          d=\"m12 3.99963381c1.2144467.91220633 2 2.36454836 2 4.00036619s-.7855533 3.0881599-2 4.0003662c-1.2144467-.9122063-2-2.36454837-2-4.0003662s.7855533-3.08815986 2-4.00036619z\"\n          fill=\"#ff5f00\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CCSecurityCodeIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const CCSecurityCodeIcon: React.FunctionComponent = props => {\n  return (\n    <svg height=\"20\" viewBox=\"0 0 28 20\" width=\"28\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <path d=\"m-2 1h32v20h-32z\" />\n        <g transform=\"translate(2 2)\">\n          <rect fill=\"#ddd\" height=\"14\" rx=\"1.5\" width=\"21\" y=\"2\" />\n          <path d=\"m0 5h21v2h-21z\" fill=\"#b4b4b4\" />\n          <rect fill={colors.basic.WHITE} height=\"2\" rx=\"1\" width=\"17\" x=\"2\" y=\"9\" />\n          <circle cx=\"19\" cy=\"5\" fill=\"#565656\" r=\"5\" />\n          <path\n            d=\"m17.5983957 6.65187166h-2.2159091v-.54224599h.8342246v-2.5078877l-.7508021.48489305-.2659091-.44318182.975-.63088236h.6830214v3.09705883h.7403743zm.9176471-2.15334225h.3180481c.323262 0 .5318182-.17727273.5318182-.44839572v-.1407754c0-.26069519-.1720588-.4223262-.4640374-.4223262-.2971926 0-.5057487.1512032-.6673797.43275401l-.4171123-.36497327c.2346256-.37540107.6152406-.60481283 1.1209893-.60481283.6725936 0 1.0949198.30240642 1.0949198.94371658 0 .43796791-.2346257.74558823-.6204546.81858289v.07820855c.4483957.06256685.6882353.34933155.6882353.81336899 0 .68823529-.4588235 1.11056149-1.2148396 1.11056149-.5266042 0-.9280748-.22941176-1.1835561-.67259358l.4744652-.35975936c.1720589.33890374.3910428.49532086.703877.49532086.3441177 0 .5474599-.19812835.5474599-.50574867v-.1459893c0-.30240642-.2189839-.49532086-.5995989-.49532086h-.3128342zm4.2910428-1.48596257v.5474599h-1.465107l-.0834225 1.27740642h.0782086c.0834225-.31283423.3076203-.52139038.6830214-.52139038.594385 0 .9802139.35975936.9802139 1.14184492 0 .80294118-.4223262 1.2565508-1.2304813 1.2565508-.5213904 0-.9228609-.23462567-1.1470588-.66737968l.4692513-.36497326c.1459893.30240642.3754011.49532086.6882353.49532086.3441177 0 .5370321-.18770054.5370321-.57874332v-.17727273c0-.39104278-.1929144-.57874331-.5370321-.57874331-.21377 0-.3910428.09906417-.5109625.2815508l-.5526738-.07299465.1251337-2.03863637z\"\n            fill={colors.basic.WHITE}\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CCVisaIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const CCVisaIcon: React.FunctionComponent = props => {\n  return (\n    <svg height=\"16\" viewBox=\"0 0 24 16\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\">\n        <rect\n          fill={colors.basic.WHITE}\n          height=\"15.5\"\n          rx=\"2\"\n          stroke={colors.primary.BLACK}\n          strokeOpacity=\".2\"\n          strokeWidth=\".5\"\n          width=\"23.5\"\n          x=\".25\"\n          y=\".25\"\n        />\n        <path\n          d=\"m2.78773262 5.91443732c-.52314173-.28693137-1.12019372-.51769955-1.78773262-.6778442l.0280005-.12471102h2.73697872c.37098332.01300346.67201191.12462375.76996714.51882925l.59482061 2.83587917.18221641.85413565 1.66598301-4.20884407h1.79882257l-2.67390785 6.1656463h-1.79891559zm7.31224258 5.36963648h-1.70114643l1.06401886-6.1721917h1.70105337zm6.1668069-6.02129922-.2313529 1.3328108-.1538632-.06554092c-.3078194-.12479829-.7141522-.2495093-1.2671852-.2363313-.6716398 0-.9728545.26905813-.9798314.53174543 0 .28895604.3643786.47938251.9593659.76179318.9801104.43993579 1.4347231.97831385 1.4279323 1.68093694-.0137677 1.28044789-1.1758348 2.10786929-2.9607967 2.10786929-.7631763-.0066327-1.4982591-.1579615-1.8972429-.3284901l.2380507-1.38552277.224004.09861682c.5530331.23004776.9169465.32831555 1.5961213.32831555.4897761 0 1.0149017-.19060107 1.0215995-.60409358 0-.26923267-.2237249-.46637906-.8818761-.76842582-.6439184-.29558867-1.5048639-.78797464-1.4909101-1.67447884.0072559-1.20155443 1.1902536-2.04197926 2.8701904-2.04197926.6580581 0 1.1902536.13788902 1.5257944.26277458zm2.2609703 3.83471102h1.4139786c-.0699548-.30859213-.3921-1.78601186-.3921-1.78601186l-.1188858-.5318327c-.0840015.22978594-.2308878.60409353-.2238179.59091553 0 0-.5390794 1.3723448-.6791749 1.72692903zm2.0998512-3.9856035 1.3723964 6.1721044h-1.5750977s-.1541422-.7091684-.2029803-.9258637h-2.1841317c-.0631639.1640705-.3570296.9258637-.3570296.9258637h-1.7849619l2.5268355-5.65999506c.1750729-.40057632.4833574-.51210934.889132-.51210934z\"\n          fill=\"#171e6c\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ChallengeMarkIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface ChallengeMarkIconProps {\n  height?: number;\n  width?: number;\n}\n\nexport const ChallengeMarkIcon: React.FunctionComponent<ChallengeMarkIconProps> = props => {\n  const width = (props.width || 40).toString();\n  const height = (props.height || 40).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 40 40\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-282, -18)\" fill={colors.accent.CIVIL_ORANGE}>\n          <path d=\"M308.909553,20 L312.325,27.674 L320,31.0904474 L316.923,38 L320,44.9095526 L312.325,48.325 L308.909553,56 L302,52.923 L295.090447,56 L291.674,48.325 L284,44.9095526 L287.076,38 L284,31.0904474 L291.674,27.674 L295.090447,20 L302,23.076 L308.909553,20 Z M311,36.3125 L293,36.3125 L293,39.6875 L311,39.6875 L311,36.3125 Z\"></path>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/Chevron.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\n// @NOTE: See also `DisclosureArrowIcon` - slightly thicker version.\n\nexport interface ChevronProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const Chevron = (props: ChevronProps) => {\n  const height = props.height || 14;\n  const width = props.width || 14;\n  return (\n    <svg\n      className={props.className}\n      width={width}\n      height={height}\n      viewBox=\"0 0 14 14\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"0 0 18 0 18 18 0 18\"></polygon>\n        <polygon\n          className=\"chevron-icon\"\n          fill={colors.primary.CIVIL_BLUE_1}\n          fillRule=\"nonzero\"\n          points=\"7.5 4.5 6.4425 5.5575 9.8775 9 6.4425 12.4425 7.5 13.5 12 9\"\n        ></polygon>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CircleLockIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface CircleLockIconProps {\n  color?: string;\n  className?: string;\n}\n\nexport const CircleLockIcon: React.FunctionComponent<CircleLockIconProps> = props => {\n  const color = props.color || \"#8B8581\";\n  return (\n    <svg\n      width=\"24px\"\n      height=\"24px\"\n      viewBox=\"0 0 24 24\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={props.className}\n    >\n      <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 1)\">\n        <circle id=\"Oval-2\" stroke={color} strokeWidth=\"2\" cx=\"12\" cy=\"12\" r=\"9\"></circle>\n        <path\n          d=\"M9.49609375,16.6660156 L14.5742188,16.6660156 C15.2480469,16.6660156 15.5703125,16.3339844 15.5703125,15.6015625 L15.5703125,11.6953125 C15.5703125,11.0507812 15.3261719,10.71875 14.8085938,10.640625 L14.8085938,9.47851562 C14.8085938,7.57421875 13.65625,6.34375 12.0351562,6.34375 C10.4140625,6.34375 9.26171875,7.57421875 9.26171875,9.47851562 L9.26171875,10.6503906 C8.74414062,10.7285156 8.5,11.0605469 8.5,11.6953125 L8.5,15.6015625 C8.5,16.3339844 8.82226562,16.6660156 9.49609375,16.6660156 Z M10.2773438,9.37109375 C10.2773438,8.140625 10.9804688,7.33007812 12.0351562,7.33007812 C13.0898438,7.33007812 13.7929688,8.140625 13.7929688,9.37109375 L13.7929688,10.6308594 L10.2773438,10.6308594 L10.2773438,9.37109375 Z\"\n          fill={color}\n          fillRule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CivilIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors\";\n\nexport interface CivilIconProps {\n  className?: string;\n  color?: string;\n  height?: number;\n  width?: number;\n  preventBlueOnHover?: boolean;\n}\n\nconst _CivilIcon = (props: CivilIconProps) => {\n  const height = props.height || 21;\n  const width = props.width || 72;\n  return (\n    <svg\n      height={height}\n      viewBox=\"0 0 72 21\"\n      width={width}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={props.className}\n    >\n      <g fill={props.color || colors.primary.BLACK} fillRule=\"evenodd\" transform=\"translate(0 .457)\">\n        <path d=\"M.5 10c0-5.76 4.357-10 9.856-10 3.58 0 6.069 1.414 7.729 3.77L15.75 5.445c-1.297-1.728-2.905-2.67-5.499-2.67-3.838 0-6.64 3.089-6.64 7.225 0 4.24 2.853 7.225 6.744 7.225 2.49 0 4.357-.942 5.81-2.827L18.5 16.02C16.529 18.691 13.987 20 10.252 20 4.805 20 .5 15.76.5 10M22.5 20h3V1h-3zM29 1h3.382l5.782 13.228L43.782 1H47l-8.782 20h-.163zM50.5 20h3V1h-3zM59.5 1h3.175v16.344H71.5V20h-12z\" />\n      </g>\n    </svg>\n  );\n};\n\nexport const CivilIcon = styled(_CivilIcon)`\n  a &:hover g {\n    fill: ${(p: CivilIconProps) => (p.preventBlueOnHover ? p.color : colors.accent.CIVIL_BLUE)};\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/CivilTutorialIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface CivilTutorialIconProps {\n  color?: string;\n}\n\nexport const CivilTutorialIcon: React.FunctionComponent<CivilTutorialIconProps> = props => {\n  const color = props.color || colors.accent.CIVIL_BLUE;\n\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-1.5 -1.5)\">\n          <polygon points=\"0 0 22.909 0 22.909 22.909 0 22.909\" />\n          <path\n            d=\"M14.318 3.818L14.318 10.5 4.935 10.5 4.372 11.063 3.818 11.617 3.818 3.818 14.318 3.818ZM15.273 1.909L2.864 1.909C2.339 1.909 1.909 2.339 1.909 2.864L1.909 16.227 5.727 12.409 15.273 12.409C15.798 12.409 16.227 11.98 16.227 11.455L16.227 2.864C16.227 2.339 15.798 1.909 15.273 1.909ZM20.045 5.727L18.136 5.727 18.136 14.318 5.727 14.318 5.727 16.227C5.727 16.752 6.157 17.182 6.682 17.182L17.182 17.182 21 21 21 6.682C21 6.157 20.57 5.727 20.045 5.727Z\"\n            fill={color}\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ClipLoader.tsx",
    "content": "import * as React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport { colors } from \"../colors\";\n\nexport interface ClipLoaderProps {\n  size?: number;\n  theme?: { clipLoaderColor: string };\n}\n\nconst clip = keyframes`\n0% {transform: rotate(0deg) scale(1)}\n50% {transform: rotate(180deg) scale(1)}\n100% {transform: rotate(360deg) scale(1)}\n`;\n\nexport const ClipLoader = styled.div<ClipLoaderProps>`\n  background: transparent;\n  width: ${(props: any) => props.size}px;\n  height: ${(props: any) => props.size}px;\n  border-radius: 100%;\n  border: 2px solid;\n  border-color: ${props => props.theme.clipLoaderColor};\n  border-bottom-color: transparent;\n  display: inline-block;\n  animation: ${clip} 0.75s 0s infinite linear;\n  animation-fill-mode: both;\n`;\n\nClipLoader.defaultProps = {\n  size: 35,\n  theme: {\n    clipLoaderColor: colors.accent.CIVIL_GRAY_2,\n  },\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ClockIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ClockIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const ClockIcon: React.FunctionComponent<ClockIconProps> = props => {\n  const color = props.color || \"#8B8581\";\n  const width = (props.width || 18).toString();\n  const height = (props.height || 18).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={color} fillRule=\"evenodd\">\n        <path d=\"M9 0C4.05 0 0 4.05 0 9 0 13.95 4.05 18 9 18 13.95 18 18 13.95 18 9 18 4.05 13.95 0 9 0L9 0ZM9 16.2C5.04 16.2 1.8 12.96 1.8 9 1.8 5.04 5.04 1.8 9 1.8 12.96 1.8 16.2 5.04 16.2 9 16.2 12.96 12.96 16.2 9 16.2L9 16.2Z\" />\n        <polygon points=\"9.45 4.5 8.1 4.5 8.1 9.9 12.78 12.78 13.5 11.61 9.45 9.18\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CloseXIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface CloseXIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const CloseXIcon: React.FunctionComponent<CloseXIconProps> = props => {\n  const color = props.color || colors.basic.WHITE;\n  const width = (props.width || 42).toString();\n  const height = (props.height || 42).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        fill={color}\n        fillRule=\"evenodd\"\n        d=\"M20.571 18.657l6.01-6.01 1.415 1.414-6.01 6.01 6.01 6.01-1.415 1.415-6.01-6.01-6.01 6.01-1.415-1.415 6.01-6.01-6.01-6.01 1.415-1.415 6.01 6.01z\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CommitVoteSuccessIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const CommitVoteSuccessIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <circle fillRule=\"nonzero\" cx=\"50\" cy=\"50\" r=\"50\" fill={colors.accent.CIVIL_TEAL} />\n        <path\n          d=\"M76.965 58.739C76.832 58.365 76.478 58.115 76.081 58.116L68.863 58.116 68.863 47.561C68.86 45.671 67.328 44.14 65.438 44.136L64.193 44.136 64.193 40.736C64.191 39.426 63.698 38.163 62.81 37.199L44.826 18.611C43.049 16.776 40.214 16.472 38.088 17.889L29.489 23.624C28.003 24.605 27.209 26.349 27.446 28.114L29.121 40.923C29.148 42.637 29.774 44.287 30.89 45.587L33.941 49.137 33.941 58.098 27.919 58.098C27.522 58.096 27.168 58.346 27.035 58.72L22.053 73.709C21.952 73.996 21.997 74.314 22.172 74.561 22.348 74.809 22.634 74.956 22.938 74.955L81.062 74.955C81.366 74.956 81.652 74.809 81.828 74.561 82.003 74.314 82.048 73.996 81.947 73.709L76.965 58.739ZM30.989 40.855C30.992 40.817 30.992 40.78 30.989 40.742L29.308 27.877C29.169 26.813 29.654 25.764 30.554 25.181L39.122 19.445C40.498 18.529 42.331 18.725 43.481 19.912L61.459 38.476C62.024 39.093 62.337 39.9 62.337 40.736L62.337 44.111 45.057 44.111 43.811 41.695C43.579 41.234 43.017 41.049 42.556 41.281 42.096 41.513 41.91 42.075 42.142 42.536L49.167 56.441C49.792 57.684 49.587 59.184 48.651 60.214 47.715 61.244 46.242 61.591 44.945 61.087L44.739 61.006C44.031 60.73 43.436 60.223 43.052 59.567L38.412 51.584C38.253 51.311 38.07 51.052 37.864 50.812L32.31 44.373C31.468 43.393 31 42.146 30.989 40.855ZM36.438 52.063C36.572 52.218 36.69 52.385 36.793 52.562L41.414 60.508C42.01 61.529 42.934 62.319 44.035 62.749L44.241 62.83C44.85 63.068 45.499 63.191 46.153 63.191 47.966 63.184 49.647 62.239 50.596 60.693 51.545 59.147 51.626 57.221 50.811 55.601L45.997 45.98 65.438 45.98C66.298 45.98 66.995 46.677 66.995 47.536L66.995 67.196 35.809 67.196 35.809 51.31 36.438 52.063ZM24.233 73.093L28.592 59.972 33.941 59.972 33.941 67.196 31.207 67.196C30.692 67.196 30.273 67.614 30.273 68.13 30.273 68.646 30.692 69.064 31.207 69.064L71.46 69.064C71.976 69.064 72.394 68.646 72.394 68.13 72.394 67.614 71.976 67.196 71.46 67.196L68.863 67.196 68.863 59.966 75.402 59.966 79.761 73.086 24.233 73.093Z\"\n          fillRule=\"nonzero\"\n          fill={colors.primary.BLACK}\n        />\n        <path\n          d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71Z\"\n          stroke={colors.basic.WHITE}\n          strokeWidth=\"3\"\n          fill={colors.basic.WHITE}\n        />\n        <path\n          d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71ZM83.6 89L77.6 83 79.28 81.32 83.6 85.64 92.72 76.52 94.4 78.2 83.6 89 83.6 89Z\"\n          fill={colors.accent.CIVIL_BLUE}\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/CvlToken.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const CvlToken: React.FunctionComponent = props => {\n  const color = colors.basic.WHITE;\n\n  return (\n    <svg width=\"32\" height=\"33\" viewBox=\"0 0 32 33\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g transform=\"translate(1 1)\" fill=\"none\" fillRule=\"evenodd\">\n        <ellipse stroke={color} cx=\"17\" cy=\"15.5\" rx=\"13\" ry=\"15.5\" />\n        <path\n          d=\"M15 .172A11.117 11.117 0 0 0 13.051 0C5.864 0 0 6.921 0 15.5S5.864 31 13.051 31c.658 0 1.309-.058 1.949-.172C8.558 29.71 3.642 23.26 3.642 15.5 3.642 7.74 8.558 1.29 15 .172z\"\n          stroke={color}\n        />\n        <text fontFamily=\"LibreFranklin-Bold, Libre Franklin\" fontSize=\"9\" fill={color}>\n          <tspan x=\"8\" y=\"18\">\n            CVL\n          </tspan>\n        </text>\n        <path\n          d=\"M8 1h3v1.227H8zM3.813 3.864H8V5.09H3.812zM2.125 6.727H5.5v1.227H2.125zM0 12.455h3.813v1.227H0zM0 15.318h3.813v1.227H0zM0 18.182h3.813v1.227H0zM1 21.046h3.938v1.227H1zM2.969 23.909h3.094v1.227H2.969zM5.063 26.773h3.812V28H5.062zM1 9.59h3.375v1.228H1z\"\n          fill={color}\n          fillRule=\"nonzero\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/DashboardNewsroomApplicationIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface DashboardNewsroomApplicationIconProps {\n  height?: number;\n  width?: number;\n}\n\nexport const DashboardNewsroomApplicationIcon: React.FunctionComponent<\n  DashboardNewsroomApplicationIconProps\n> = props => {\n  const width = (props.width || 34).toString();\n  const height = (props.height || 34).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 34 34\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <defs>\n        <rect x=\"518\" y=\"148\" width=\"760\" height=\"875\" />\n        <filter x=\"-0.8%\" y=\"-0.7%\" width=\"101.6%\" height=\"101.4%\" filterUnits=\"objectBoundingBox\">\n          <feOffset dx=\"0\" dy=\"0\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n          <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" />\n          <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\" />\n          <feColorMatrix\n            values=\"0 0 0 0 0.768627451   0 0 0 0 0.760784314   0 0 0 0 0.752941176  0 0 0 1 0\"\n            type=\"matrix\"\n            in=\"shadowBlurOuter1\"\n          />\n        </filter>\n      </defs>\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-887.000000, -288.000000)\">\n          <rect fill={colors.basic.WHITE} x=\"0\" y=\"0\" width=\"1440\" height=\"1352\" />\n          <polygon fillOpacity=\"0.06\" fill={colors.accent.CIVIL_BLUE} points=\"0 67 1440 67 1440 664 0 664\" />\n          <g>\n            <use fill=\"black\" fillOpacity=\"1\" filter=\"url(#filter-2)\" />\n            <rect stroke={colors.accent.CIVIL_GRAY_4} fillRule=\"evenodd\" x=\"518.5\" y=\"148.5\" width=\"759\" height=\"874\" />\n          </g>\n          <g transform=\"translate(662.000000, 281.000000)\">\n            <g transform=\"translate(225.000000, 7.000000)\">\n              <path d=\"M0,0 L26,0 L26,27 L0,27 L0,0 Z M3,3 L3,24 L23,24 L23,3 L3,3 Z\" fill={colors.accent.CIVIL_BLUE} />\n              <path d=\"M6,6 L20,6 L20,13 L6,13 L6,6 Z M8,8 L8,11 L18,11 L18,8 L8,8 Z\" fill={colors.accent.CIVIL_BLUE} />\n              <polygon fill={colors.accent.CIVIL_BLUE} points=\"6 14.95 20 14.95 20 16.95 6 16.95\" />\n              <polygon fill={colors.accent.CIVIL_BLUE} points=\"6 18.85 20 18.85 20 20.85 6 20.85\" />\n              <g transform=\"translate(16.000000, 15.950000)\">\n                <circle\n                  fill={colors.accent.CIVIL_BLUE}\n                  fillRule=\"nonzero\"\n                  cx=\"9.2607145\"\n                  cy=\"9.2607145\"\n                  r=\"8.2607145\"\n                />\n                <path\n                  d=\"M9.9,4.5 L8.1,4.5 L8.1,8.1 L4.5,8.1 L4.5,9.9 L8.1,9.9 L8.1,13.5 L9.9,13.5 L9.9,9.9 L13.5,9.9 L13.5,8.1 L9.9,8.1 L9.9,4.5 L9.9,4.5 Z M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M9,16.2 C5.04,16.2 1.8,12.96 1.8,9 C1.8,5.04 5.04,1.8 9,1.8 C12.96,1.8 16.2,5.04 16.2,9 C16.2,12.96 12.96,16.2 9,16.2 L9,16.2 Z\"\n                  fill={colors.basic.WHITE}\n                />\n              </g>\n            </g>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/DisclosureArrowIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface DisclosureArrowIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const DisclosureArrowIcon: React.FunctionComponent<DisclosureArrowIconProps> = props => {\n  const color = props.color || colors.accent.CIVIL_BLUE;\n  const width = (props.width || 8).toString();\n  const height = (props.height || 12).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 8 12\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={color} fillRule=\"evenodd\">\n        <g transform=\"translate(-693, -56)\">\n          <polygon points=\"694.4 56 693 57.4 697.6 62 693 66.6 694.4 68 700.4 62\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/DropdownArrow.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const DropdownArrow: React.FunctionComponent = props => {\n  const color = colors.accent.CIVIL_GRAY_0;\n\n  return (\n    <svg height=\"5\" width=\"10\" viewBox=\"0 0 10 5\" xmlns=\"http://www.w3.org/2000/svg\">\n      <polygon points=\"0,0 10,0 5,5\" fill={color} stroke=\"none\" />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/EmbedIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const EmbedIcon = () => {\n  return (\n    <svg width=\"32px\" height=\"32px\" viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"4 4 28 4 28 28 4 28\"></polygon>\n        <path\n          d=\"M9.42130253,10.2684345 C10.3266052,9.36313187 11.7034439,10.7399706 10.7981413,11.6452732 L6.35806996,16.0849552 L10.7981413,20.5250265 C11.7034439,21.4303291 10.3266052,22.8071678 9.42130253,21.9018652 L4.29281186,16.7733745 C3.91277945,16.3933421 3.91277945,15.7765682 4.29281186,15.3965358 L9.42130253,10.2684345 Z M17.0772424,7.74721537 C17.4074345,6.51211003 19.2857914,7.01401759 18.9555993,8.2495123 L14.6222174,24.4234737 C14.2920253,25.658579 12.4136684,25.1566715 12.7438605,23.9211768 L17.0772424,7.74721537 Z M20.9017079,11.6452732 C19.9964053,10.7399706 21.373244,9.36313187 22.2785466,10.2684345 L27.4070373,15.3965358 C27.7870697,15.7765682 27.7870697,16.3933421 27.4070373,16.7733745 L22.2785466,21.9018652 C21.373244,22.8071678 19.9964053,21.4303291 20.9017079,20.5250265 L25.3417792,16.0849552 L20.9017079,11.6452732 Z\"\n          fill=\"#191919\"\n          fillRule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ErrorIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ErrorIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const ErrorIcon: React.FunctionComponent<ErrorIconProps> = props => {\n  const height = (props.height || 28).toString();\n  const width = (props.width || 28).toString();\n  return (\n    <svg\n      className={props.className}\n      height={height}\n      viewBox=\"0 0 28 28\"\n      width={width}\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <path d=\"m0 0h28v28h-28z\" />\n        <path\n          d=\"m12.8333333 17.5h2.3333334v2.3333333h-2.3333334zm0-9.33333333h2.3333334v7.00000003h-2.3333334zm1.155-5.83333334c-6.43999997 0-11.65499997 5.22666667-11.65499997 11.66666667s5.215 11.6666667 11.65499997 11.6666667c6.4516667 0 11.6783334-5.2266667 11.6783334-11.6666667s-5.2266667-11.66666667-11.6783334-11.66666667zm.0116667 20.99999997c-5.15666667 0-9.33333333-4.1766666-9.33333333-9.3333333 0-5.15666667 4.17666666-9.33333333 9.33333333-9.33333333 5.1566667 0 9.3333333 4.17666666 9.3333333 9.33333333 0 5.1566667-4.1766666 9.3333333-9.3333333 9.3333333z\"\n          fill=\"#f2524a\"\n          fillRule=\"nonzero\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ExamIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const ExamIcon: React.FunctionComponent = props => {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"70\" height=\"70\" viewBox=\"0 0 70 70\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={colors.primary.BLACK} fillRule=\"evenodd\">\n        <path d=\"M13.683 62.064L56.317 62.064 56.317 20.618 49.735 12.209 46.574 8.17 46.39 7.936 13.683 7.936 13.683 62.064ZM46.704 10.317L48.929 13.161 54.453 20.219 46.704 20.219 46.704 10.317ZM14.903 9.157L45.483 9.157 45.483 21.44 55.097 21.44 55.097 60.843 14.903 60.843 14.903 9.157Z\" />\n        <path d=\"M47.632 31.191L43.315 27.832 27.587 48.063 27.517 48.153 25.328 55.424 26.593 54.663 31.156 53.733 32.58 55.747 34.976 53.067 36.437 54.891 43.809 50.257 43.16 49.223 36.708 53.277 35.027 51.178 32.692 53.789 31.693 52.379 29.723 52.779 31.837 51.507 47.632 31.191ZM27.408 52.747L28.396 49.466 30.346 50.98 27.408 52.747ZM28.925 48.33L43.529 29.546 45.919 31.406 31.316 50.188 28.925 48.33Z\" />\n        <rect x=\"32.635\" y=\"22.613\" width=\"12.216\" height=\"1.221\" />\n        <rect x=\"32.635\" y=\"33.31\" width=\"3.936\" height=\"1.221\" />\n        <path d=\"M27.145 26.747C29.087 26.747 30.668 25.167 30.668 23.224 30.668 21.281 29.087 19.701 27.145 19.701 25.202 19.701 23.622 21.281 23.622 23.224 23.622 25.167 25.202 26.747 27.145 26.747ZM27.145 20.922C28.414 20.922 29.447 21.955 29.447 23.224 29.447 24.493 28.414 25.526 27.145 25.526 25.875 25.526 24.843 24.493 24.843 23.224 24.843 21.955 25.876 20.922 27.145 20.922Z\" />\n        <path d=\"M30.668 33.921C30.668 31.978 29.087 30.398 27.145 30.398 25.202 30.398 23.622 31.978 23.622 33.921 23.622 35.864 25.202 37.443 27.145 37.443 29.087 37.443 30.668 35.864 30.668 33.921ZM24.843 33.921C24.843 32.651 25.876 31.619 27.145 31.619 28.413 31.619 29.447 32.652 29.447 33.921 29.447 35.19 28.414 36.223 27.145 36.223 25.875 36.223 24.843 35.19 24.843 33.921Z\" />\n        <path d=\"M20.635 67.959C20.635 66.953 19.816 66.134 18.81 66.134 17.804 66.134 16.985 66.953 16.985 67.959 16.985 68.965 17.804 69.783 18.81 69.783 19.816 69.783 20.635 68.965 20.635 67.959ZM17.391 67.959C17.391 67.176 18.027 66.541 18.809 66.541 19.59 66.541 20.227 67.176 20.227 67.959 20.227 68.741 19.59 69.377 18.809 69.377 18.027 69.377 17.391 68.741 17.391 67.959Z\" />\n        <path d=\"M2.761 18.569L1.954 20.202 0.151 20.464 1.456 21.736 1.148 23.533 2.761 22.685 4.374 23.533 4.067 21.736 5.372 20.464 3.568 20.202 2.761 18.569ZM3.629 21.594L3.833 22.789 2.76 22.226 1.687 22.789 1.892 21.594 1.026 20.748 2.225 20.574 2.761 19.487 3.297 20.574 4.496 20.748 3.629 21.594Z\" />\n        <path d=\"M19.417 2.609L18.86 1.481 18.303 2.609 17.058 2.789 17.959 3.668 17.747 4.907 18.86 4.322 19.974 4.907 19.761 3.668 20.662 2.789 19.417 2.609ZM19.433 4.163L18.86 3.863 18.287 4.163 18.396 3.526 17.932 3.073 18.574 2.981 18.86 2.4 19.147 2.981 19.788 3.073 19.324 3.526 19.433 4.163Z\" />\n        <path d=\"M64.915 51.333L65.816 52.211 65.604 53.452 66.717 52.865 67.831 53.452 67.618 52.211 68.519 51.333 67.274 51.151 66.717 50.024 66.161 51.151 64.915 51.333ZM66.717 50.944L67.004 51.524 67.645 51.618 67.181 52.07 67.29 52.708 66.717 52.407 66.144 52.708 66.253 52.07 65.789 51.618 66.431 51.524 66.717 50.944Z\" />\n        <path d=\"M66.717 7.435L65.983 9.696 63.607 9.696 65.529 11.093 64.795 13.352 66.717 11.955 68.64 13.352 67.906 11.093 69.827 9.696 67.452 9.696 66.717 7.435ZM67.427 10.938L67.866 12.287 66.717 11.454 65.569 12.287 66.008 10.938 64.859 10.104 66.279 10.104 66.718 8.754 67.157 10.104 68.577 10.104 67.427 10.938Z\" />\n        <path d=\"M60.242 0.217C59.235 0.217 58.417 1.036 58.417 2.042 58.417 3.048 59.235 3.867 60.242 3.867 61.248 3.867 62.066 3.048 62.066 2.042 62.066 1.036 61.248 0.217 60.242 0.217ZM60.242 3.46C59.46 3.46 58.824 2.824 58.824 2.042 58.824 1.26 59.46 0.624 60.242 0.624 61.023 0.624 61.659 1.26 61.659 2.042 61.659 2.824 61.023 3.46 60.242 3.46Z\" />\n        <path d=\"M66.514 35.803C66.514 36.604 67.166 37.256 67.968 37.256 68.769 37.256 69.421 36.604 69.421 35.803 69.421 35.001 68.769 34.349 67.968 34.349 67.166 34.349 66.514 35.001 66.514 35.803ZM67.968 34.756C68.545 34.756 69.014 35.225 69.014 35.803 69.014 36.38 68.545 36.849 67.968 36.849 67.39 36.849 66.921 36.38 66.921 35.803 66.921 35.225 67.39 34.756 67.968 34.756Z\" />\n        <path d=\"M6.086 9.893C6.086 10.953 6.948 11.815 8.008 11.815 9.067 11.815 9.929 10.952 9.929 9.893 9.929 8.834 9.067 7.972 8.008 7.972 6.948 7.972 6.086 8.834 6.086 9.893ZM8.008 8.379C8.843 8.379 9.522 9.058 9.522 9.893 9.522 10.728 8.843 11.408 8.008 11.408 7.173 11.408 6.493 10.728 6.493 9.893 6.493 9.058 7.173 8.379 8.008 8.379Z\" />\n        <path d=\"M14.53 68.158L14.61 67.759C14.346 67.706 14.085 67.647 13.826 67.582L13.727 67.976C13.991 68.043 14.26 68.103 14.53 68.158Z\" />\n        <path d=\"M12.175 67.505L12.313 67.122C11.819 66.945 11.329 66.742 10.853 66.517L10.679 66.884C11.167 67.115 11.67 67.324 12.175 67.505Z\" />\n        <path d=\"M6.93 63.885C6.541 63.53 6.166 63.154 5.815 62.765L5.513 63.038C5.872 63.436 6.257 63.822 6.656 64.185L6.93 63.885Z\" />\n        <path d=\"M9.461 65.771C9.01 65.5 8.568 65.204 8.148 64.891L7.905 65.216C8.335 65.538 8.787 65.842 9.251 66.118L9.461 65.771Z\" />\n        <path d=\"M3.938 60.228L3.59 60.438C3.867 60.902 4.169 61.355 4.488 61.785L4.815 61.543C4.504 61.124 4.209 60.682 3.938 60.228Z\" />\n        <path d=\"M1.42 54.379C1.498 54.909 1.605 55.444 1.736 55.967L2.131 55.868C2.002 55.357 1.899 54.836 1.822 54.32L1.42 54.379Z\" />\n        <path d=\"M1.242 51.973C1.242 52.239 1.249 52.504 1.262 52.769L1.668 52.751C1.656 52.493 1.649 52.233 1.649 51.973 1.649 51.707 1.656 51.439 1.669 51.172L1.262 51.151C1.249 51.426 1.242 51.7 1.242 51.973Z\" />\n        <path d=\"M3.194 58.836C2.968 58.36 2.765 57.87 2.589 57.378L2.206 57.515C2.387 58.019 2.595 58.522 2.826 59.011L3.194 58.836Z\" />\n        <path d=\"M1.424 49.527L1.827 49.588C1.866 49.324 1.912 49.06 1.965 48.796L1.566 48.716C1.512 48.987 1.464 49.257 1.424 49.527Z\" />\n        <path d=\"M68.874 57.8L68.467 57.792C68.462 58.06 68.447 58.327 68.423 58.591L68.828 58.627C68.853 58.354 68.869 58.078 68.874 57.8Z\" />\n        <path d=\"M61.419 67.861C60.877 68.072 60.315 68.239 59.747 68.361L59.831 68.758C60.421 68.633 61.003 68.458 61.566 68.24L61.419 67.861Z\" />\n        <path d=\"M65.989 65.168C66.389 64.717 66.757 64.232 67.081 63.725L66.738 63.505C66.426 63.995 66.072 64.463 65.684 64.897L65.989 65.168Z\" />\n        <path d=\"M67.559 61.965L67.933 62.127C68.173 61.574 68.37 60.998 68.519 60.414L68.125 60.312C67.981 60.876 67.791 61.432 67.559 61.965Z\" />\n        <path d=\"M64.683 66.422L64.425 66.107C63.978 66.474 63.495 66.809 62.992 67.104L63.198 67.456C63.719 67.15 64.218 66.802 64.683 66.422Z\" />\n        <path d=\"M58.011 68.588C57.747 68.602 57.481 68.607 57.211 68.601L57.203 69.008C57.28 69.009 57.356 69.01 57.433 69.01 57.634 69.01 57.833 69.005 58.032 68.995L58.011 68.588Z\" />\n        <rect x=\"67.764\" y=\"25.539\" width=\"1\" height=\"1.628\" />\n        <rect x=\"67.764\" y=\"19.028\" width=\"1\" height=\"1.628\" />\n        <rect x=\"67.764\" y=\"28.795\" width=\"1\" height=\"1.628\" />\n        <rect x=\"67.764\" y=\"22.284\" width=\"1\" height=\"1.628\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ExchangeArrowsIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const ExchangeArrowsIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"#8B8581\" fillRule=\"evenodd\">\n        <g transform=\"translate(-336 -216)\">\n          <path\n            d=\"M349,228 L349,221 L347,221 L347,228 L344,228 L348,232 L352,228 L349,228 L349,228 Z M342,214 L338,218 L341,218 L341,225 L343,225 L343,218 L346,218 L342,214 L342,214 Z\"\n            transform=\"translate(345 223) rotate(90) translate(-345 -223)\"\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ExpandDownArrow.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface ExpandDownArrowProps {\n  color?: string;\n  height?: number;\n  opacity?: number;\n  width?: number;\n}\n\nexport const ExpandDownArrow: React.FunctionComponent<ExpandDownArrowProps> = props => {\n  const color = props.color || colors.basic.WHITE;\n  const width = (props.width || 8).toString();\n  const height = (props.height || 12).toString();\n  const opacity = (props.opacity || 0.86).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 12 8\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path fill={color} fillRule=\"evenodd\" opacity={opacity} d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\" />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/FacebookIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface FacebookIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nconst _FacebookIcon = (props: FacebookIconProps) => {\n  const height = props.height || 23;\n  const width = props.width || 23;\n  return (\n    <svg\n      height={height}\n      viewBox=\"0 0 22 23\"\n      width={width}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={props.className}\n    >\n      <path\n        d=\"m63 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-1 1.99137931v2.98706897h-2c-.6 0-1 .39827586-1 .99568965v1.99137931h3v2.98706896h-3v6.9698276h-3v-6.9698276h-2v-2.98706896h2v-2.48922414c0-1.89181034 1.6-3.48491379 3.5-3.48491379z\"\n        fill=\"#8b8581\"\n        fillRule=\"evenodd\"\n        transform=\"translate(-44 .457)\"\n      />\n    </svg>\n  );\n};\n\nexport const FacebookIcon = styled(_FacebookIcon)`\n  &:hover path {\n    fill: white;\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/GrantSubmitIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface GrantSubmitIcon {\n  height?: number;\n  width?: number;\n}\n\nexport const GrantSubmitIcon: React.FunctionComponent<GrantSubmitIcon> = props => {\n  const width = (props.width || 82).toString();\n  const height = (props.height || 82).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 82 82\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <circle cx=\"41\" cy=\"41\" r=\"41\" fill=\"#90E8D3\" />\n        <g fill=\"#000\" transform=\"translate(11 10)\">\n          <path\n            fillRule=\"nonzero\"\n            d=\"M2.86742813,19.5094459 L57.2076375,19.5094459 C57.6222497,19.5093254 57.9875374,19.238741 58.1058429,18.8441062 C58.2241484,18.4494714 58.0673687,18.0245305 57.7203375,17.7992193 L30.5502281,0.151842414 C30.238919,-0.050912319 29.8361467,-0.050912319 29.5248375,0.151842414 L2.3547375,17.7992193 C2.00770626,18.0245305 1.85092658,18.4494714 1.9692321,18.8441062 C2.08753763,19.238741 2.45282526,19.5093254 2.8674375,19.5094459 L2.86742813,19.5094459 Z M30.0375,2.0434531 L54.0609375,17.6473769 L6.0140625,17.6473769 L30.0375,2.0434531 Z\"\n          />\n          <path\n            fillRule=\"nonzero\"\n            d=\"M30.0375,8.31748034 C28.0624928,8.31785569 26.4616926,9.90808967 26.4619032,11.8694761 C26.4621137,13.8308626 28.0632553,15.4207576 30.0382625,15.4207148 C32.0132697,15.4206719 33.6143413,13.8307075 33.6144656,11.869321 C33.6124137,9.90836017 32.0120789,8.31926622 30.0375,8.31748034 L30.0375,8.31748034 Z M30.0375,13.5586366 C29.097967,13.5582612 28.3366081,12.8016113 28.3369032,11.8685578 C28.3371983,10.9355043 29.0990356,10.1793294 30.0385687,10.1795402 C30.9781017,10.1797509 31.739595,10.9362675 31.7394656,11.869321 C31.7385708,12.8022952 30.9769535,13.55826 30.0375,13.5586552 L30.0375,13.5586366 Z\"\n          />\n          <path d=\"M7.99712813 22.8371679L7.99712813 48.8102369C7.99712813 49.324433 8.41686117 49.7412714 8.93462813 49.7412714 9.45239508 49.7412714 9.87212813 49.324433 9.87212813 48.8102369L9.87212813 22.8371679C9.87212813 22.3229718 9.45239508 21.9061334 8.93462813 21.9061334 8.41686117 21.9061334 7.99712813 22.3229718 7.99712813 22.8371679zM22.4322469 22.8371679L22.4322469 48.8102369C22.4322469 49.324433 22.8519799 49.7412714 23.3697469 49.7412714 23.8875138 49.7412714 24.3072469 49.324433 24.3072469 48.8102369L24.3072469 22.8371679C24.3072469 22.3229718 23.8875138 21.9061334 23.3697469 21.9061334 22.8519799 21.9061334 22.4322469 22.3229718 22.4322469 22.8371679zM36.8664563 22.8371679L36.8664563 48.8102369C36.8664563 49.324433 37.2861893 49.7412714 37.8039563 49.7412714 38.3217232 49.7412714 38.7414563 49.324433 38.7414563 48.8102369L38.7414563 22.8371679C38.7414563 22.3229718 38.3217232 21.9061334 37.8039563 21.9061334 37.2861893 21.9061334 36.8664563 22.3229718 36.8664563 22.8371679zM51.301575 22.8371679L51.301575 48.8102369C51.301575 49.324433 51.721308 49.7412714 52.239075 49.7412714 52.756842 49.7412714 53.176575 49.324433 53.176575 48.8102369L53.176575 22.8371679C53.176575 22.3229718 52.756842 21.9061334 52.239075 21.9061334 51.721308 21.9061334 51.301575 22.3229718 51.301575 22.8371679zM1.50695625 54L58.4930437 54C59.0108107 54 59.4305437 53.5831617 59.4305437 53.0689655 59.4305437 52.5547694 59.0108107 52.137931 58.4930437 52.137931L1.50695625 52.137931C.989189297 52.137931.56945625 52.5547694.56945625 53.0689655.56945625 53.5831617.989189297 54 1.50695625 54z\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/GreenCheckMark.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface GreenCheckMark {\n  height?: number;\n  width?: number;\n}\n\nexport const GreenCheckMark: React.FunctionComponent<GreenCheckMark> = props => {\n  const height = (props.height || 26).toString();\n  const width = (props.width || 26).toString();\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\">\n      <circle fill={colors.accent.CIVIL_TEAL} cx=\"12\" cy=\"12\" r=\"12\" />\n      <path\n        d=\"m9.464 17.092-3.466-3.415-1.156 1.138 4.622 4.553 9.904-9.756-1.155-1.138z\"\n        transform=\"translate(1 -1)\"\n        fill={colors.basic.WHITE}\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/HamburgerIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface HamburgerIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const HamburgerIcon: React.FunctionComponent<HamburgerIconProps> = props => {\n  const color = props.color || colors.basic.WHITE;\n  const width = (props.width || 42).toString();\n  const height = (props.height || 42).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 42 42\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path fill={color} fillRule=\"evenodd\" d=\"M12 26h18v-2H12v2zm0-8h18v-2H12v2z\" />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/HollowGrayNotGranted.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface HollowGrayNotGrantedProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const HollowGrayNotGranted: React.FunctionComponent<HollowGrayNotGrantedProps> = props => {\n  const color = props.color || colors.accent.CIVIL_GRAY_4;\n  const width = (props.width || 20).toString();\n  const height = (props.height || 20).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 1)\">\n        <path d=\"m0 0h18v18h-18z\" />\n        <path\n          d=\"m9 0c-4.968 0-9 4.032-9 9s4.032 9 9 9 9-4.032 9-9-4.032-9-9-9zm0 16.2c-3.978 0-7.2-3.222-7.2-7.2 0-1.665.567-3.195 1.521-4.41l10.089 10.089c-1.215.954-2.745 1.521-4.41 1.521zm5.679-2.79-10.089-10.089c1.215-.954 2.745-1.521 4.41-1.521 3.978 0 7.2 3.222 7.2 7.2 0 1.665-.567 3.195-1.521 4.41z\"\n          fill={color}\n          fillRule=\"nonzero\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/HollowGreenCheck.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\nexport interface HollowGreenCheckProps {\n  className?: string;\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const HollowGreenCheck = (props: HollowGreenCheckProps) => {\n  const color = props.color || colors.accent.CIVIL_GREEN_1;\n  const width = (props.width || 20).toString();\n  const height = (props.height || 20).toString();\n\n  return (\n    <svg\n      className={props.className}\n      width={width}\n      height={height}\n      viewBox=\"0 0 20 20\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 1)\">\n        <circle cx=\"9\" cy=\"9\" r=\"8.25\" stroke={color} strokeWidth=\"1.5\" className=\"svg-stroke\" />\n        <path\n          d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n          fill={color}\n          fillRule=\"nonzero\"\n          className=\"svg-fill\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/HollowRedNoGood.tsx",
    "content": "import * as React from \"react\";\n\nexport interface HollowRedNoGoodProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const HollowRedNoGood: React.FunctionComponent<HollowRedNoGoodProps> = props => {\n  const color = props.color || \"#f2524a\";\n  const width = (props.width || 20).toString();\n  const height = (props.height || 20).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(1 1)\">\n        <path d=\"m0 0h18v18h-18z\" />\n        <path\n          d=\"m9 0c-4.968 0-9 4.032-9 9s4.032 9 9 9 9-4.032 9-9-4.032-9-9-9zm0 16.2c-3.978 0-7.2-3.222-7.2-7.2 0-1.665.567-3.195 1.521-4.41l10.089 10.089c-1.215.954-2.745 1.521-4.41 1.521zm5.679-2.79-10.089-10.089c1.215-.954 2.745-1.521 4.41-1.521 3.978 0 7.2 3.222 7.2 7.2 0 1.665-.567 3.195-1.521 4.41z\"\n          fill={color}\n          fillRule=\"nonzero\"\n          className=\"svg-fill\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/Info.tsx",
    "content": "import * as React from \"react\";\n\nexport const InfoNotification: React.FunctionComponent = () => (\n  <svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-2, -2)\">\n      <polygon points=\"0 0 32 0 32 32 0 32\" />\n      <path\n        d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n        fill=\"#F2524A\"\n        fillRule=\"nonzero\"\n      />\n    </g>\n  </svg>\n);\n"
  },
  {
    "path": "packages/elements/src/icons/InstagramIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface InstagramIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nconst _InstagramIcon = (props: InstagramIconProps) => {\n  const height = props.height || 23;\n  const width = props.width || 23;\n  return (\n    <svg\n      height={height}\n      viewBox=\"0 0 23 23\"\n      width={width}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={props.className}\n    >\n      <path\n        d=\"M10 2c-2.173 0-2.445.01-3.298.048-.852.04-1.432.174-1.942.372a3.918 3.918 0 0 0-1.417.923c-.445.444-.72.89-.923 1.417-.198.51-.333 1.09-.372 1.942C2.008 7.555 2 7.827 2 10s.01 2.445.048 3.298c.04.851.174 1.432.372 1.942.204.525.478.973.923 1.417a3.9 3.9 0 0 0 1.417.923c.51.197 1.09.333 1.942.372.853.04 1.125.048 3.298.048s2.445-.01 3.298-.048c.851-.04 1.432-.175 1.942-.372a3.932 3.932 0 0 0 1.417-.923 3.9 3.9 0 0 0 .923-1.417c.197-.51.333-1.09.372-1.942.04-.853.048-1.125.048-3.298s-.01-2.445-.048-3.298c-.04-.851-.175-1.433-.372-1.942a3.926 3.926 0 0 0-.923-1.417 3.898 3.898 0 0 0-1.417-.923c-.51-.198-1.09-.333-1.942-.372C12.445 2.008 12.173 2 10 2zm0 1.44c2.135 0 2.39.01 3.233.047.78.037 1.204.166 1.485.277.375.145.64.318.921.597.28.28.453.546.598.921.109.281.24.705.275 1.485.038.844.047 1.097.047 3.233s-.01 2.39-.05 3.233c-.04.78-.17 1.204-.28 1.485-.15.375-.32.64-.6.921-.279.28-.549.453-.92.598-.28.109-.71.24-1.49.275-.849.038-1.099.047-3.239.047-2.14 0-2.39-.01-3.24-.05-.78-.04-1.21-.17-1.49-.28a2.49 2.49 0 0 1-.92-.6 2.43 2.43 0 0 1-.6-.92c-.11-.28-.239-.71-.28-1.49-.03-.84-.04-1.099-.04-3.229s.01-2.39.04-3.24c.041-.78.17-1.21.28-1.49.14-.38.32-.64.6-.92.28-.28.54-.46.92-.6.28-.11.7-.24 1.48-.28.85-.03 1.1-.04 3.24-.04l.03.02zm0 2.452a4.108 4.108 0 1 0 0 8.215 4.108 4.108 0 0 0 0-8.215zm0 6.775a2.666 2.666 0 1 1 0-5.334 2.666 2.666 0 1 1 0 5.334zm5.23-6.937a.96.96 0 1 1-1.92-.001.96.96 0 0 1 1.92.001z\"\n        fill=\"#8b8581\"\n        fillRule=\"evenodd\"\n        transform=\"translate(0 .457)\"\n      />\n    </svg>\n  );\n};\n\nexport const InstagramIcon = styled(_InstagramIcon)`\n  &:hover path {\n    fill: white;\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/LinkIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface LinkIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const LinkIcon: React.FunctionComponent<LinkIconProps> = props => {\n  const color = props.color || \"#191919\";\n  const width = (props.width || 32).toString();\n  const height = (props.height || 32).toString();\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"4 4 28 4 28 28 4 28\"></polygon>\n        <g transform=\"translate(7, 7)\" fill={color} fillRule=\"nonzero\">\n          <path d=\"M4.68779528,8.21176934 C5.00935039,8.53326117 5.03614665,9.03931313 4.76818406,9.39156498 L4.68779528,9.48356623 L2.59370079,11.5772486 C2.07992126,12.0873844 1.8,12.7675654 1.8,13.4902578 C1.8,14.2129502 2.08346457,14.8931313 2.59370079,15.4032671 C3.60561024,16.4149774 5.22605192,16.457132 6.28867239,15.5297309 L6.42401575,15.4032671 L8.51811024,13.3095847 C8.86889764,12.9588664 9.43937008,12.9588664 9.79370079,13.3166699 C10.1152559,13.6381618 10.1420522,14.1442137 9.87408957,14.4964656 L9.79370079,14.5884668 L7.6996063,16.6821492 C6.82086614,17.5607164 5.66574803,18 4.51062992,18 C3.35551181,18 2.2003937,17.5607164 1.32165354,16.6821492 C0.467716535,15.8283802 0,14.6982877 0,13.4938004 C0,12.3696123 0.410519685,11.3071443 1.15665722,10.4792128 L1.32165354,10.3054517 L3.41574803,8.21176934 C3.76653543,7.86105097 4.33700787,7.86105097 4.68779528,8.21176934 Z M12.3413386,5.66463295 C12.6628937,5.98612478 12.68969,6.49217674 12.4217274,6.84442859 L12.3413386,6.93642984 L6.94133858,12.3353671 C6.76417323,12.5089549 6.53385827,12.5975202 6.30354331,12.5975202 C6.07322835,12.5975202 5.84291339,12.5124975 5.66574803,12.3353671 C5.34419291,12.0138752 5.31739665,11.5078233 5.58535925,11.1555714 L5.66574803,11.0635702 L11.065748,5.66463295 C11.4165354,5.31037197 11.9870079,5.31037197 12.3413386,5.66463295 Z M13.4929134,0 C14.6976378,0 15.8314961,0.471167093 16.6818898,1.32139343 C18.4393701,3.07852785 18.4393701,5.93741389 16.6818898,7.69454832 L16.6818898,7.69454832 L14.5877953,9.78823066 C14.4106299,9.96181854 14.180315,10.0503838 13.95,10.0503838 C13.719685,10.0503838 13.4893701,9.96536115 13.3122047,9.78823066 C12.9614173,9.4375123 12.9614173,8.86715214 13.3122047,8.51643377 L13.3122047,8.51643377 L15.4062992,6.42275143 C16.4622047,5.36705373 16.4622047,3.64888801 15.4062992,2.59319032 C14.3822835,1.56937611 12.6,1.56937611 11.5759843,2.59319032 L11.5759843,2.59319032 L9.48188976,4.68687266 C9.13110236,5.03759103 8.56062992,5.03759103 8.20984252,4.68687266 C7.85905512,4.3361543 7.85905512,3.76579414 8.20984252,3.41507577 L8.20984252,3.41507577 L10.303937,1.32139343 C11.157874,0.467624483 12.288189,0 13.4929134,0 Z\"></path>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/LinkedInIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors\";\n\nexport interface LinkedInIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nconst _LinkedInIcon = (props: LinkedInIconProps) => {\n  const height = props.height || 23;\n  const width = props.width || 23;\n  return (\n    <svg\n      width={width}\n      height={height}\n      viewBox=\"0 0 50 50\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={props.className}\n    >\n      <g fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth=\"1\">\n        <g fill={colors.accent.CIVIL_GRAY_1}>\n          <path d=\"M25,50 C38.8071194,50 50,38.8071194 50,25 C50,11.1928806 38.8071194,0 25,0 C11.1928806,0 0,11.1928806 0,25 C0,38.8071194 11.1928806,50 25,50 Z M25,47 C37.1502651,47 47,37.1502651 47,25 C47,12.8497349 37.1502651,3 25,3 C12.8497349,3 3,12.8497349 3,25 C3,37.1502651 12.8497349,47 25,47 Z M14,20.1180479 L14,34.6581834 L18.7100851,34.6581834 L18.7100851,20.1180479 L14,20.1180479 Z M16.6646962,13 C15.0534058,13 14,14.0858611 14,15.5115122 C14,16.9076331 15.0222711,18.0247614 16.6035556,18.0247614 L16.6336556,18.0247614 C18.2759867,18.0247614 19.2988222,16.9076331 19.2988222,15.5115122 C19.2682519,14.0858611 18.2759867,13 16.6646962,13 Z M30.5769213,20.1180479 C28.076176,20.1180479 26.9565501,21.5293199 26.3314108,22.5193527 L26.3314108,20.4598644 L21.6207614,20.4598644 C21.6828427,21.8242356 21.6207614,35 21.6207614,35 L26.3314108,35 L26.3314108,26.8795887 C26.3314108,26.445032 26.3619812,26.0115368 26.4865199,25.7004084 C26.826932,24.83226 27.6020069,23.9334233 28.9032674,23.9334233 C30.6083381,23.9334233 31.2899149,25.2667202 31.2899149,27.2206333 L31.2899149,34.999614 L35.9998119,34.999614 L36,26.6627446 C36,22.1966439 33.6763743,20.1180479 30.5769213,20.1180479 Z M30.5769213,20.1180479\" />\n        </g>\n      </g>\n    </svg>\n  );\n};\n\nexport const LinkedInIcon = styled(_LinkedInIcon)`\n  &:hover g > g {\n    fill: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/LockOpenIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const LockOpenIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"14\" height=\"18\" viewBox=\"0 0 14 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={colors.accent.CIVIL_RED} fillRule=\"evenodd\">\n        <path d=\"M6.85714286,13.7142857 C7.8,13.7142857 8.57142857,12.9428571 8.57142857,12 C8.57142857,11.0571429 7.8,10.2857143 6.85714286,10.2857143 C5.91428571,10.2857143 5.14285714,11.0571429 5.14285714,12 C5.14285714,12.9428571 5.91428571,13.7142857 6.85714286,13.7142857 L6.85714286,13.7142857 Z M12,6 L11.1428571,6 L11.1428571,4.28571429 C11.1428571,1.88571429 9.25714286,0 6.85714286,0 C4.45714286,0 2.57142857,1.88571429 2.57142857,4.28571429 L4.2,4.28571429 C4.2,2.82857143 5.4,1.62857143 6.85714286,1.62857143 C8.31428571,1.62857143 9.51428571,2.82857143 9.51428571,4.28571429 L9.51428571,6 L1.71428571,6 C0.771428571,6 0,6.77142857 0,7.71428571 L0,16.2857143 C0,17.2285714 0.771428571,18 1.71428571,18 L12,18 C12.9428571,18 13.7142857,17.2285714 13.7142857,16.2857143 L13.7142857,7.71428571 C13.7142857,6.77142857 12.9428571,6 12,6 L12,6 Z M12,16.2857143 L1.71428571,16.2857143 L1.71428571,7.71428571 L12,7.71428571 L12,16.2857143 L12,16.2857143 Z\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/MediumIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface MediumIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nconst _MediumIcon = (props: MediumIconProps) => {\n  const height = props.height || 23;\n  const width = props.width || 23;\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={width}\n      height={height}\n      viewBox=\"0 0 23 23\"\n      className={props.className}\n    >\n      <path\n        fill=\"#8b8581\"\n        fillRule=\"evenodd\"\n        transform=\"translate(0 .457)\"\n        d=\"M3.135 5.27a.696.696 0 0 0-.228-.588l-1.68-2.025v-.302h5.218l4.034 8.846 3.546-8.846H19v.302l-1.438 1.378a.421.421 0 0 0-.16.403v10.125a.421.421 0 0 0 .16.403l1.403 1.378v.302h-7.058v-.302l1.453-1.412c.143-.142.143-.184.143-.403V6.345L9.46 16.612h-.545L4.209 6.345v6.88a.95.95 0 0 0 .26.79l1.89 2.295v.301H1v-.302l1.89-2.295a.916.916 0 0 0 .244-.789V5.27z\"\n      />\n    </svg>\n  );\n};\n\nexport const MediumIcon = styled(_MediumIcon)`\n  &:hover path {\n    fill: white;\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/MetaMaskIcons.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport metamaskSideLogoUrl from \"../images/img-metamask-small@2x.png\";\nimport metamaskFrontLogoUrl from \"../images/img-metamask-small-front@2x.png\";\n\nexport interface MetaMaskImgProps {\n  className?: string;\n  height?: string;\n  src?: string;\n  width?: string;\n}\n\nconst Img = styled.img<MetaMaskImgProps>`\n  height: ${props => props.width || \"16px\"};\n  width: ${props => props.height || \"16px\"};\n`;\n\nexport interface MetaMaskIconProps extends Partial<MetaMaskImgProps> {\n  className?: string;\n}\n\nexport const MetaMaskSideIcon = (props: MetaMaskIconProps) => {\n  return <Img src={metamaskSideLogoUrl} className={props.className} height={props.height} width={props.width} />;\n};\n\nexport const MetaMaskFrontIcon = (props: MetaMaskIconProps) => {\n  return <Img src={metamaskFrontLogoUrl} className={props.className} height={props.height} width={props.width} />;\n};\n"
  },
  {
    "path": "packages/elements/src/icons/NetworkIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const NetworkIcon: React.FunctionComponent = props => {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"44\" viewBox=\"0 0 48 44\">\n      <g fill={colors.accent.CIVIL_BLUE}>\n        <path d=\"M13.091 0C10.694 0 8.727 1.98 8.727 4.394 8.727 6.807 10.694 8.788 13.091 8.788 13.579 8.788 14.049 8.699 14.489 8.547L18.614 15.79C17.896 16.426 17.286 17.189 16.824 18.039L8.71 15.155C8.718 15.047 8.727 14.94 8.727 14.829 8.727 12.416 6.761 10.435 4.364 10.435 1.967 10.435 0 12.416 0 14.829 0 17.243 1.967 19.223 4.364 19.223 5.889 19.223 7.231 18.419 8.011 17.215L16.057 20.081C15.914 20.688 15.818 21.319 15.818 21.969 15.818 23.706 16.35 25.324 17.267 26.655L10.415 33.555C9.773 33.179 9.041 32.954 8.25 32.954 5.853 32.954 3.886 34.934 3.886 37.348 3.886 39.761 5.853 41.742 8.25 41.742 10.647 41.742 12.614 39.761 12.614 37.348 12.614 36.519 12.367 35.746 11.966 35.082L18.733 28.268C20.157 29.477 21.998 30.208 24 30.208 25.281 30.208 26.482 29.899 27.563 29.367L31.67 36.627C30.977 37.405 30.545 38.424 30.545 39.545 30.545 41.958 32.512 43.938 34.909 43.938 37.306 43.938 39.273 41.958 39.273 39.545 39.273 37.131 37.306 35.151 34.909 35.151 34.421 35.151 33.951 35.24 33.511 35.391L29.386 28.148C30.104 27.513 30.714 26.749 31.176 25.9L39.29 28.783C39.282 28.891 39.273 28.999 39.273 29.109 39.273 31.523 41.239 33.503 43.636 33.503 46.033 33.503 48 31.523 48 29.109 48 26.696 46.033 24.715 43.636 24.715 42.111 24.715 40.769 25.519 39.989 26.724L31.943 23.857C32.086 23.25 32.182 22.619 32.182 21.969 32.182 20.232 31.65 18.614 30.733 17.284L37.585 10.384C38.227 10.76 38.959 10.985 39.75 10.985 42.147 10.985 44.114 9.004 44.114 6.591 44.114 4.177 42.147 2.197 39.75 2.197 37.353 2.197 35.386 4.177 35.386 6.591 35.386 7.419 35.633 8.193 36.034 8.856L29.267 15.67C27.843 14.461 26.002 13.731 24 13.731 22.719 13.731 21.518 14.04 20.438 14.572L16.33 7.312C17.023 6.533 17.455 5.514 17.455 4.394 17.455 1.98 15.488 0 13.091 0ZM13.091 2.197C14.309 2.197 15.273 3.168 15.273 4.394 15.273 5.62 14.309 6.591 13.091 6.591 11.873 6.591 10.909 5.62 10.909 4.394 10.909 3.168 11.873 2.197 13.091 2.197ZM39.75 4.394C40.968 4.394 41.932 5.364 41.932 6.591 41.932 7.817 40.968 8.788 39.75 8.788 38.532 8.788 37.568 7.817 37.568 6.591 37.568 5.364 38.532 4.394 39.75 4.394ZM4.364 12.632C5.582 12.632 6.545 13.603 6.545 14.829 6.545 16.056 5.582 17.026 4.364 17.026 3.146 17.026 2.182 16.056 2.182 14.829 2.182 13.603 3.146 12.632 4.364 12.632ZM24 15.928C27.327 15.928 30 18.62 30 21.969 30 25.319 27.327 28.011 24 28.011 20.673 28.011 18 25.319 18 21.969 18 18.62 20.673 15.928 24 15.928ZM43.636 26.912C44.854 26.912 45.818 27.883 45.818 29.109 45.818 30.336 44.854 31.306 43.636 31.306 42.418 31.306 41.455 30.336 41.455 29.109 41.455 27.883 42.418 26.912 43.636 26.912ZM8.25 35.151C9.468 35.151 10.432 36.121 10.432 37.348 10.432 38.574 9.468 39.545 8.25 39.545 7.032 39.545 6.068 38.574 6.068 37.348 6.068 36.121 7.032 35.151 8.25 35.151ZM34.909 37.348C36.127 37.348 37.091 38.318 37.091 39.545 37.091 40.771 36.127 41.742 34.909 41.742 33.691 41.742 32.727 40.771 32.727 39.545 32.727 38.318 33.691 37.348 34.909 37.348Z\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/NorthEastArrow.tsx",
    "content": "import * as React from \"react\";\n\nexport interface NorthEastArrowProps {\n  color?: string;\n}\n\nexport const NorthEastArrow: React.FunctionComponent<NorthEastArrowProps> = props => {\n  const color = props.color || \"#23282d\";\n\n  return (\n    <svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n        fillRule=\"evenodd\"\n        fill={color}\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/OctopusErrorIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const OctopusErrorIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"74\" height=\"73\" viewBox=\"0 0 74 73\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M36.6071788,31.1685393 C28.5453734,31.1685393 26.4957867,37.147811 26.4135683,37.4026464 C26.2127625,37.9018048 26.3116918,38.469053 26.6702452,38.8744006 C27.0287986,39.2797481 27.5874732,39.4559263 28.1197545,39.3315036 C28.6520359,39.207081 29.0695902,38.802706 29.2031204,38.2823321 C29.2178022,38.2405795 30.6566238,34.0480345 36.6013061,34.0480345 C42.4652381,34.0480345 43.9422325,38.1196407 43.9994917,38.2823321 C44.1941275,38.8783044 44.759054,39.2827362 45.3972041,39.2829567 C45.5496697,39.2824376 45.7011641,39.2591341 45.8464688,39.2138488 C46.2174281,39.0972914 46.5259471,38.8409479 46.7041069,38.501251 C46.8822667,38.1615541 46.9154619,37.766352 46.7963847,37.4026464 C46.7185709,37.1420521 44.6704524,31.1685393 36.6071788,31.1685393 Z\" />\n      <path d=\"M31.2444444,25.4269663 C31.2444444,23.6149759 29.9560194,22.1460674 28.3666667,22.1460674 C26.7773139,22.1460674 25.4888889,23.6149759 25.4888889,25.4269663 C25.4888889,27.2389567 26.7773139,28.7078652 28.3666667,28.7078652 C29.9550629,28.705235 31.2421374,27.2378661 31.2444444,25.4269663 Z\" />\n      <ellipse cx=\"44.8111111\" cy=\"25.4269663\" rx=\"2.87777778\" ry=\"3.28089888\" />\n      <path\n        d=\"M73.1941581,46.7305242 C73.6415006,45.8824671 74.070023,44.5994339 73.6357098,43.2156849 C73.2013966,41.8319358 72.2256397,40.9561453 71.5162615,40.4715412 C71.4091309,39.7125227 71.1413044,38.6002687 70.4797007,37.6660921 C69.6110743,36.4429046 68.29221,35.8590443 67.6754852,35.6415563 C66.5173167,34.7584675 65.4300861,34.4665373 64.4774925,34.7993377 C61.9425512,35.6824265 62.1293059,38.5491809 62.2798678,40.85251 C62.4608316,43.6258468 62.4564885,45.359912 60.8640068,46.0021584 C60.232805,46.2561377 59.3902374,46.0357304 58.5476699,45.3964033 C57.1318089,44.3221002 56.7134205,42.2537749 57.576256,40.5795553 C59.9447106,36.0152269 62.8850108,30.3225884 62.8850108,24.8707923 C62.8850108,18.0950928 60.0836908,11.7704254 54.9978834,7.0630512 C44.8181279,-2.3543504 29.1846579,-2.3543504 19.0049023,7.0630512 C13.919095,11.7748043 11.1177749,18.0994717 11.1177749,24.8707923 C11.1177749,30.3255077 14.0580752,36.0152269 16.4207389,40.5853939 C17.2893653,42.2537749 16.8651861,44.3221002 15.4493251,45.4022419 C14.6082052,46.041569 13.7641899,46.2605166 13.1329881,46.007997 C12.0703685,45.5788597 11.4449575,45.0183537 11.7171271,40.8583486 C11.8618982,38.5550195 12.0544437,35.6882651 9.51950243,34.8051763 C8.56690885,34.4723759 7.47388734,34.7643061 6.3215097,35.6473949 C5.70478498,35.8648829 4.38447291,36.4487433 3.51729426,37.6719307 C2.85569051,38.6061073 2.58786405,39.715442 2.48073346,40.4773798 C1.77135526,40.9619839 0.792702893,41.8450727 0.361285132,43.2215235 C-0.0701326292,44.5979743 0.361285132,45.8883057 0.802836867,46.7363628 C0.281661048,47.5785814 -0.253991876,48.8878883 0.131099145,50.3562971 C0.479997401,51.694797 1.38481653,52.555991 2.1448646,53.0668688 C1.98345364,54.4846143 2.46541985,55.9000659 3.45649041,56.9188876 C4.275907,57.792625 5.4071807,58.3006693 6.59947014,58.33037 C6.95500819,59.4060167 7.79150739,60.2504964 8.85789869,60.6103447 C9.36136629,60.7935038 9.89199517,60.889252 10.427217,60.893517 C8.30197781,62.1429782 6.40113379,63.4026569 6.40113379,65.9935372 C6.40113379,67.7451183 7.30595291,69.2456395 8.94620903,70.2002512 C9.24910149,70.3751082 9.56406597,70.5277917 9.88866864,70.6571219 C10.7292229,72.1184613 12.2827475,73.012795 13.9581832,72.9998616 C15.2484557,73.007886 16.5037052,72.5769332 17.520999,71.7766741 C18.7492812,72.2909628 20.0962206,72.4467463 21.4081019,72.2262466 C22.868343,71.9912533 24.2075437,71.2672828 25.20979,70.1710581 C26.320184,70.5447288 28.0530936,70.7549185 30.0147415,69.6587207 C31.6738179,68.728923 32.4845358,67.5203321 32.8739699,66.6708153 C32.9116104,66.5890748 32.9449078,66.508794 32.9767574,66.4314325 C34.262376,66.4487806 35.520016,66.0525266 36.5670797,65.3002031 C36.7213993,65.1900695 36.8666427,65.0675469 37.0013929,64.9338307 C37.1361431,65.0675469 37.2813865,65.1900695 37.4357061,65.3002031 C38.4835133,66.0529155 39.7425098,66.4482543 41.0289238,66.4285132 C41.0607734,66.5058747 41.0940708,66.5861555 41.1317113,66.667896 C41.5211454,67.5174128 42.3318633,68.7260037 43.9909397,69.6558014 C45.9525876,70.7549185 47.6840495,70.5418095 48.7958912,70.1681388 C49.796857,71.2675949 51.136203,71.9947293 52.5975793,72.2320852 C53.9090626,72.4501841 55.2549384,72.2923844 56.4817868,71.7766741 C57.4998387,72.5748428 58.7550173,73.0037144 60.0446026,72.994023 C61.7175125,73.007409 63.2693395,72.1162016 64.1112217,70.6585815 C64.319692,70.5724621 64.5194761,70.4819638 64.7120216,70.3841672 C66.5752252,69.4353941 67.6074428,67.8735676 67.6074428,65.9891583 C67.6074428,63.3982779 65.7065988,62.1327606 63.5828073,60.889138 C64.1185132,60.8850098 64.6496406,60.78926 65.1535734,60.6059658 C66.2156735,60.2447007 67.0484195,59.402385 67.4033156,58.33037 C68.594934,58.2979858 69.7245601,57.787878 70.5419522,56.913049 C71.5330228,55.8942273 72.014989,54.4787757 71.853578,53.0610302 C72.6136261,52.5501524 73.5169975,51.6889584 73.8673435,50.3504585 C74.2553299,48.8820497 73.719677,47.5727428 73.1941581,46.7305242 Z M64.7018876,65.9979162 C64.7018876,66.5219309 64.5571166,67.2006685 63.3989481,67.7874482 C62.3377762,68.327519 60.7452946,68.6136106 58.7966761,68.6136106 C58.2697094,68.6136106 57.7268179,68.5917159 57.1723448,68.5508456 C57.0995822,68.5268568 57.0250269,68.5087965 56.9493973,68.4968386 C56.8150941,68.4756597 56.6783417,68.4756597 56.5440384,68.4968386 C54.2633408,68.2600266 52.0154729,67.7705217 49.8411383,67.0371876 C49.7448733,66.9924144 49.644506,66.9572161 49.5414622,66.9320928 L49.5211942,66.9320928 C47.1947233,66.1249058 44.9782783,65.0535221 43.1512675,63.7704889 C43.0953692,63.7121042 43.0348479,63.6584062 42.9703037,63.6099273 C42.8981177,63.557679 42.8210194,63.5127008 42.7401177,63.4756394 C40.1646406,61.5591178 38.4491035,59.2047009 38.4491035,56.5846275 C38.4491035,55.7784846 37.8009414,55.1249766 37.0013929,55.1249766 C36.2018444,55.1249766 35.5536823,55.7784846 35.5536823,56.5846275 C35.5536823,58.0559556 34.9413007,60.7533905 31.2206844,63.4960745 C31.1640625,63.524978 31.1094113,63.5576491 31.0570931,63.5938712 C30.9966583,63.6376326 30.9399963,63.6864611 30.887711,63.7398362 C30.4258913,64.0638788 29.922088,64.3893809 29.3661671,64.7119638 C27.8446115,65.5898568 26.2452127,66.3228523 24.5887221,66.9014401 C24.5474067,66.9056225 24.5063334,66.9119561 24.4656667,66.9204156 C24.3168539,66.9512512 24.1743705,67.0075299 24.044383,67.0868158 C21.9121016,67.7981015 19.7091286,68.2723825 17.4746722,68.5012175 C17.3308828,68.4771791 17.1841485,68.4771791 17.040359,68.5012175 C16.959958,68.5133863 16.8809252,68.5334297 16.8043822,68.5610632 C14.0537321,68.7566564 11.7200226,68.457428 10.3881288,67.6852726 C9.41671498,67.1189281 9.29076416,66.4912782 9.29076416,66.0066741 C9.29076416,65.024329 10.1130638,64.4536055 12.2889728,63.1880882 C15.159783,61.5182476 19.0932127,59.2309746 21.6324971,53.3544201 C21.9523165,52.615187 21.6172166,51.754517 20.8840307,51.4320598 C20.1508447,51.1096027 19.2972152,51.4474663 18.9773958,52.1866993 C17.9639984,54.5323583 16.6958039,56.2007393 15.3581193,57.4720953 C14.6911555,57.4347376 14.0275146,57.3513421 13.3718604,57.222495 C13.3106507,57.2054274 13.2482077,57.1932262 13.1851057,57.1860037 C12.3441091,57.0162291 11.5185046,56.7765134 10.7167591,56.4693151 C10.0949708,56.2257211 9.49284927,55.9338896 8.91580711,55.5964438 C8.87120152,55.5464946 8.82279753,55.5001316 8.77103605,55.457777 C8.64048192,55.3573653 8.4934886,55.2807923 8.33672287,55.2315311 C7.01215431,54.3714299 5.92496543,53.187401 5.17637061,51.7896743 C5.16623664,51.7604813 5.15610266,51.7298286 5.14307327,51.6991759 C5.10945196,51.6215766 5.0687405,51.5473007 5.02146558,51.477309 C4.33352148,50.0684834 3.99142674,48.513607 4.02399297,46.9436333 C4.02977763,46.8707672 4.02977763,46.7975517 4.02399297,46.7246856 C4.13112355,43.6827731 5.49197152,41.2130438 6.02617674,40.3562287 C7.17855438,38.5243668 8.2599942,37.766808 8.65956233,37.612085 C9.00556517,37.9536433 8.90133,39.5680172 8.82894447,40.6612958 C8.74063413,42.0158518 8.64074209,43.5528642 8.95344759,44.9482905 C9.3645974,46.7801524 10.4083967,48.0471294 12.0602345,48.7141898 C13.6527162,49.3549766 15.5217106,48.9973621 17.1909209,47.7303851 C19.7244145,45.8065652 20.497492,42.1559783 18.9889775,39.2381361 C16.7725326,34.9496818 14.0131962,29.6117384 14.0131962,24.8722519 C14.0131962,18.9241745 16.4815427,13.3614449 20.9622071,9.21019769 C30.0340585,0.81797143 43.9658318,0.81797143 53.0376833,9.21019769 C57.5255862,13.3614449 59.9866942,18.9241745 59.9866942,24.8722519 C59.9866942,29.6117384 57.2273578,34.9438432 55.0109128,39.2381361 C53.5023984,42.1574379 54.2754759,45.8065652 56.8089694,47.7303851 C58.4781797,48.9973621 60.3486219,49.3549766 61.9396558,48.7141898 C63.5900459,48.048589 64.635293,46.781612 65.0464428,44.9497501 C65.3591483,43.5543239 65.2592562,42.0173115 65.1709459,40.6627554 C65.0985604,39.5694769 64.9943252,37.955103 65.340328,37.6135447 C65.7398962,37.7595098 66.8271268,38.5258265 67.9708182,40.3576884 C68.5050234,41.2130438 69.8644237,43.6813135 69.973002,46.7203067 C69.9672,46.794634 69.9672,46.869306 69.973002,46.9436333 C70.0063391,48.5317657 69.6560595,50.1042428 68.952366,51.5254775 C68.9205164,51.5794845 68.8901144,51.6349513 68.8626079,51.6918777 L68.8336537,51.7663199 C68.0863624,53.1739497 66.9963482,54.3668816 65.6660629,55.2329908 C65.5091196,55.2811184 65.3620168,55.357254 65.2317497,55.457777 C65.1764872,55.499708 65.1246829,55.5460818 65.0768447,55.5964438 C64.4981881,55.9303683 63.8945948,56.2183052 63.2715496,56.4576379 C61.7833012,57.0255083 60.2185472,57.3635782 58.6301894,57.460418 C57.2939525,56.1890621 56.0243103,54.5206811 55.0109128,52.1750221 C54.6910934,51.4357891 53.8374639,51.0979255 53.104278,51.4203827 C52.3710921,51.7428399 52.0359923,52.6035098 52.3558116,53.3427428 C54.895096,59.2192974 58.8285257,61.5065704 61.6993358,63.176411 C63.8839312,64.4404687 64.7062308,65.0111922 64.7062308,65.9935372 L64.7018876,65.9979162 Z\"\n        fillRule=\"nonzero\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/OpenInNewIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface OpenInNewIconProps {\n  color?: string;\n  size?: number;\n}\n\nexport const OpenInNewIcon: React.FunctionComponent<OpenInNewIconProps> = props => {\n  const color = props.color || \"#3E3E3E\";\n  const size = (props.size || 16).toString();\n  return (\n    <svg width={size} height={size} viewBox=\"0 0 16 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"0 0 16 0 16 16 0 16\"></polygon>\n        <path\n          d=\"M12.0497875,12.6666667 L4,12.6666667 C3.63333333,12.6666667 3.33333333,12.3666667 3.33333333,12 L3.33333333,4 C3.33333333,3.63333333 3.63333333,3.33333333 4,3.33333333 L5.48832194,3.32678223 C5.85498861,3.32678223 6.15498861,3.02678223 6.15498861,2.66011556 C6.15498861,2.29344889 5.85498861,1.99344889 5.48832194,1.99344889 L3.93098958,2 C2.86201986,2 2,2.98439535 2,3.93764242 L2,12 C2,13.1201986 2.97224935,14 4,14 L12.1552124,14 C13.1190186,14 14,12.9681193 14,12.1022746 L14,10.4685669 C14,10.1019002 13.7,9.80190023 13.3333333,9.80190023 C12.9666667,9.80190023 12.6666667,10.1019002 12.6666667,10.4685669 L12.6666667,12 C12.6666667,12.3666667 12.4164541,12.6666667 12.0497875,12.6666667 Z M8.33974202,2.49269613 C8.33974202,2.85936279 8.63974202,3.10109456 9.00640869,3.10109456 L12,3.01989746 C8.30628147,6.7501964 6.37275553,8.70201253 6.1994222,8.87534587 C5.9394222,9.13534587 5.9394222,9.54190023 6.1994222,9.80190023 C6.4594222,10.0619002 6.86959798,10.0619002 7.12959798,9.80190023 L13.0018921,3.96740723 L12.8852743,6.94067383 C12.8852743,7.30734049 13.1592561,7.5880127 13.5259227,7.5880127 C13.8925894,7.5880127 14.0829773,7.30734049 14.0829773,6.94067383 L14.037557,2.64322917 C14.037557,2.25520833 13.7741699,1.9765625 13.3708903,1.9765625 L9.00640869,1.93373617 C8.63974202,1.93373617 8.33974202,2.12602946 8.33974202,2.49269613 Z\"\n          fill={color}\n          fillRule=\"nonzero\"\n          className=\"open-new-icon\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/PhotoDragIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const PhotoDragIcon = () => {\n  return (\n    <svg width=\"60\" height=\"44\" viewBox=\"0 0 60 44\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g fill=\"#2B56FF\" fillRule=\"nonzero\">\n          <path d=\"M49.5375494,9.4229249 L42.472332,9.4229249 L40.5454545,5.243083 C39.9130435,3.87944664 38.5395257,3 37.0375494,3 L22.3932806,3 C20.8913043,3 19.527668,3.87944664 18.8952569,5.243083 L16.958498,9.4229249 L9.89328063,9.4229249 C7.7687747,9.4229249 6,11.1521739 6,13.2766798 L6,38.0790514 C6,40.2035573 7.7687747,41.9328063 9.89328063,41.9328063 L49.5375494,41.9328063 C51.6620553,41.9328063 53.43083,40.2035573 53.43083,38.0790514 L53.43083,13.2766798 C53.43083,11.1521739 51.6620553,9.4229249 49.5375494,9.4229249 Z M51.6521739,38.0790514 C51.6521739,39.2252964 50.6837945,40.1541502 49.5375494,40.1541502 L9.89328063,40.1541502 C8.74703557,40.1541502 7.77865613,39.2252964 7.77865613,38.0790514 L7.77865613,13.2766798 C7.77865613,12.1304348 8.74703557,11.201581 9.89328063,11.201581 L17.5316206,11.201581 C17.8774704,11.201581 18.1936759,10.9940711 18.3418972,10.687747 L20.5158103,5.99407115 C20.8517787,5.26284585 21.5928854,4.78853755 22.4031621,4.78853755 L37.0573123,4.78853755 C37.8675889,4.78853755 38.5988142,5.26284585 38.944664,5.99407115 L41.1185771,10.687747 C41.2667984,11.0039526 41.583004,11.2114625 41.9288538,11.2114625 L49.5671937,11.2114625 C50.7134387,11.2114625 51.6818182,12.1403162 51.6818182,13.2865613 L51.6818182,38.0790514 L51.6521739,38.0790514 Z\"></path>\n          <path d=\"M29.715415,12.5355731 C22.9268775,12.5355731 17.4031621,18.0592885 17.4031621,24.8478261 C17.4031621,31.6363636 22.9268775,37.1600791 29.715415,37.1600791 C36.5039526,37.1600791 42.027668,31.6264822 42.027668,24.8379447 C42.027668,18.0494071 36.5039526,12.5355731 29.715415,12.5355731 Z M29.715415,35.3715415 C23.9051383,35.3715415 19.1818182,30.6482213 19.1818182,24.8379447 C19.1818182,19.027668 23.9051383,14.3043478 29.715415,14.3043478 C35.5256917,14.3043478 40.2490119,19.0375494 40.2490119,24.8379447 C40.2490119,30.6482213 35.5256917,35.3715415 29.715415,35.3715415 Z\"></path>\n          <path d=\"M15.2885375,15.2529644 L11.5335968,15.2529644 C11.0395257,15.2529644 10.6442688,15.6482213 10.6442688,16.1422925 C10.6442688,16.6363636 11.0395257,17.0316206 11.5335968,17.0316206 L15.2885375,17.0316206 C15.7826087,17.0316206 16.1778656,16.6363636 16.1778656,16.1422925 C16.1778656,15.6482213 15.7826087,15.2529644 15.2885375,15.2529644 Z\"></path>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/RegistryEmptyIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface RegistryEmptyProps {\n  height?: number;\n  width?: number;\n}\n\nexport const RegistryEmptyIcon: React.FunctionComponent<RegistryEmptyProps> = props => {\n  const width = (props.width || 350).toString();\n  const height = (props.height || 155).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 350 155\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <rect y=\"140\" width=\"350\" height=\"3\" fill={colors.accent.CIVIL_GRAY_4} />\n        <rect\n          strokeWidth=\"3\"\n          x=\"78.5\"\n          y=\"1.5\"\n          width=\"193\"\n          height=\"152\"\n          fill={colors.basic.WHITE}\n          stroke={colors.accent.CIVIL_GRAY_3}\n        />\n        <rect\n          strokeWidth=\"2\"\n          x=\"96\"\n          y=\"19\"\n          width=\"158\"\n          height=\"54\"\n          fill={colors.basic.WHITE}\n          stroke={colors.accent.CIVIL_GRAY_3}\n        />\n        <path\n          d=\"M178.889 38C181.644 38 183.778 40.133 183.778 42.889 183.778 46.178 180.667 48.933 176.133 53.111L174.889 54.267 173.644 53.111C169.022 49.022 166 46.267 166 42.889 166 40.133 168.133 38 170.889 38 172.4 38 173.911 38.711 174.889 39.867 175.867 38.711 177.378 38 178.889 38Z\"\n          fill={colors.accent.CIVIL_GRAY_3}\n        />\n        <polygon points=\"95 82 255 82 255 92 95 92\" fill={colors.accent.CIVIL_GRAY_3} />\n        <polygon points=\"95 100 255 100 255 110 95 110\" fill={colors.accent.CIVIL_GRAY_3} />\n        <polygon points=\"95 118 255 118 255 128 95 128\" fill={colors.accent.CIVIL_GRAY_3} />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/RejectedNewsroomsIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface RejectedNewsroomsProps {\n  height?: string;\n  width?: string;\n}\n\nexport const RejectedNewsroomsIcon: React.FunctionComponent<RejectedNewsroomsProps> = props => {\n  const width = props.width || \"18\";\n  const height = props.height || \"18\";\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M9 0C4.05 0 0 4.05 0 9s4.05 9 9 9 9-4.05 9-9-4.05-9-9-9zM1.8 9c0-3.96 3.24-7.2 7.2-7.2 1.62 0 3.15.54 4.41 1.53L3.33 13.41A7.093 7.093 0 0 1 1.8 9zM9 16.2c-1.62 0-3.15-.54-4.41-1.53L14.67 4.59A7.093 7.093 0 0 1 16.2 9c0 3.96-3.24 7.2-7.2 7.2z\"\n        fill={colors.primary.CIVIL_GRAY_2}\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/RequestAppealSuccessIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const RequestAppealSuccessIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <circle fill={colors.accent.CIVIL_TEAL} fillRule=\"nonzero\" cx=\"50\" cy=\"50\" r=\"50\" />\n        <g transform=\"translate(74 71)\">\n          <path\n            d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n            stroke={colors.basic.WHITE}\n            strokeWidth=\"3\"\n            fill={colors.basic.WHITE}\n          />\n          <path\n            d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n            fill={colors.accent.CIVIL_BLUE}\n          />\n        </g>\n        <g transform=\"translate(27 29)\" fill={colors.primary.BLACK} fillRule=\"nonzero\">\n          <path d=\"M1,0 L39,0 C39.5522847,-4.02567223e-15 40,0.44771525 40,1 L40,52 C40,52.5522847 39.5522847,53 39,53 L1,53 C0.44771525,53 6.76353751e-17,52.5522847 0,52 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 Z M1.73913043,1.63076923 L1.73913043,51.3692308 L38.2608696,51.3692308 L38.2608696,1.63076923 L1.73913043,1.63076923 Z\" />\n          <rect x=\"6\" y=\"13\" width=\"11\" height=\"2\" />\n          <rect x=\"6\" y=\"19\" width=\"14\" height=\"2\" />\n          <rect x=\"6\" y=\"25\" width=\"21\" height=\"2\" />\n          <polygon points=\"6 31 33 31 33 33 6 33\" />\n          <polygon points=\"6 37 33 37 33 39 6 39\" />\n          <polygon points=\"6 43 33 43 33 45 6 45\" />\n          <rect x=\"6\" y=\"7\" width=\"10\" height=\"2\" />\n        </g>\n        <g transform=\"translate(45 19)\" fillRule=\"nonzero\">\n          <ellipse fill={colors.accent.CIVIL_TEAL} cx=\"16.5\" cy=\"16.5\" rx=\"15.5\" ry=\"16.5\" />\n          <path\n            d=\"M33.0555556,16.0657183 C32.5338444,16.0657183 32.1111111,16.4882122 32.1111111,17.0096279 C32.1111111,25.3371756 25.3322667,32.1121809 17,32.1121809 C8.66773333,32.1121809 1.88888889,25.3371756 1.88888889,17.0096279 C1.88888889,8.68208015 8.66773333,1.90707488 17,1.90707488 C20.4664889,1.90707488 23.7531556,3.06883877 26.4206444,5.20320707 L23.5472667,5.97268215 C23.0433111,6.10747243 22.7444889,6.62549 22.8793556,7.12878258 C22.9923111,7.55052137 23.3742444,7.82878591 23.7913111,7.82878591 C23.8721556,7.82878591 23.9545111,7.81821412 24.0361111,7.79669299 L28.5974,6.57527401 C29.0008667,6.46729076 29.2974222,6.0806654 29.2974222,5.66345737 L29.2974222,0.943909562 C29.2974222,0.42249392 28.8746889,0 28.3529778,0 C27.8312667,0 27.4085333,0.42249392 27.4085333,0.943909562 L27.4085333,3.57968262 C24.4422222,1.27314522 20.8185778,0.0192557551 17,0.0192557551 C7.6262,0.0192557551 0,7.64113669 0,17.0096279 C0,26.3781191 7.6262,34 17,34 C26.3738,34 34,26.3781191 34,17.0096279 C34,16.4882122 33.5772667,16.0657183 33.0555556,16.0657183 Z\"\n            fill={colors.primary.BLACK}\n          />\n          <path\n            d=\"M16.5,10 C8.49669997,10 5.219556,16.8303439 5.0842382,17.1211935 C4.9719206,17.3621514 4.9719206,17.6378486 5.0842382,17.8788065 C5.21993933,18.1696561 8.49669997,25 16.5,25 C24.5033,25 27.780444,18.1696561 27.9157618,17.8788065 C28.0280794,17.6378486 28.0280794,17.3621514 27.9157618,17.1211935 C27.780444,16.8303439 24.5033,10 16.5,10 Z M16.5,23.1521632 C10.6736681,23.1521632 7.78484404,18.8330295 7.0319711,17.5003696 C7.78599405,16.1651227 10.6752015,11.8478368 16.5,11.8478368 C22.3244152,11.8478368 25.2136226,16.1647531 25.9680289,17.5 C25.2136226,18.8352469 22.3244152,23.1521632 16.5,23.1521632 Z\"\n            fill={colors.primary.BLACK}\n          />\n          <path\n            d=\"M17,13 C14.7944,13 13,14.7944 13,17 C13,19.2056 14.7944,21 17,21 C19.2056,21 21,19.2056 21,17 C21,14.7944 19.2056,13 17,13 Z\"\n            fill={colors.primary.BLACK}\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/RevealVoteSuccessIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const RevealVoteSuccessIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <circle fill={colors.accent.CIVIL_TEAL} fillRule=\"nonzero\" cx=\"50\" cy=\"50\" r=\"50\" />\n        <path\n          d=\"M36.1579784,25.0003289 C29.2622189,25.0003289 23.6579844,30.6044707 23.6579844,37.5002566 C23.6579844,43.2558457 27.5658711,48.0813036 32.8685065,49.527316 L32.8685065,57.8948774 L30.8537049,57.8948774 C30.4693893,57.8948774 30.2124158,58.0287589 29.9285409,58.2032983 C29.2893044,58.6018507 28.7716073,59.1042189 28.2632457,59.5807318 L28.2632457,58.5527718 C28.2632128,58.2082983 27.9498117,57.8949432 27.6053514,57.8948774 C26.2543777,57.8948774 24.8753324,57.8948774 23.5346294,57.8948774 C23.2330506,57.9527721 22.9946823,58.2457983 23.0000902,58.5527718 L23.0000902,74.3421056 C23.0001231,74.6865791 23.3135243,74.9999342 23.6579844,75 L27.6053514,75 C27.9498117,74.9999342 28.2632128,74.6865791 28.2632457,74.3421056 L28.2632457,73.7253296 C28.787502,74.1209215 29.3736794,74.4307898 29.9285409,74.7121712 C30.2529947,74.8626974 30.5105077,75 30.8948233,75 L40.6604432,75 C40.7305813,75 40.8002852,74.9835526 40.8660352,74.9592105 C42.6559421,74.4187503 43.1320405,72.2165146 42.1407055,70.5800681 C42.8738367,70.114542 43.4143167,69.4866476 43.4976127,68.7298717 C43.5758298,68.0190826 43.2879286,67.3311225 42.8808367,66.6944781 C43.823981,66.2577678 44.5357174,65.6386891 44.7106055,64.8441501 C44.8805857,64.0719136 44.5824477,63.3335588 44.1349479,62.6648749 C44.8515989,62.1901383 45.3684999,61.554415 45.3684999,60.7734285 C45.3684999,59.743758 44.7248226,58.7410612 43.6209679,57.9979695 C43.511389,57.9281669 43.3807773,57.8919169 43.2509023,57.8952064 L39.4474504,57.8952064 L39.4474504,49.527645 C44.7500858,48.0816326 48.6579719,43.2561746 48.6579719,37.5005855 C48.6579719,30.6047997 43.053738,25.0006579 36.1579784,25.0006579 L36.1579784,25.0003289 Z M63.7895428,25.0003289 C56.8937833,25.0003289 51.2895494,30.6044707 51.2895494,37.5002566 C51.2895494,43.2558457 55.1974355,48.0813036 60.5000709,49.527316 L60.5000709,57.8948774 C59.1976966,57.8948116 57.864342,57.8948774 56.5732637,57.8948774 C56.4851717,57.9119827 56.4006322,57.9468511 56.3265533,57.9976405 C55.2226987,58.7406665 54.5790214,59.7434291 54.5790214,60.7730996 C54.5790214,61.554086 55.0959224,62.1898094 55.8125733,62.664546 C55.3650736,63.3332298 55.0669356,64.0715847 55.2369158,64.8438211 C55.4118038,65.6383602 56.1235403,66.2574388 57.0666845,66.6941491 C56.6595926,67.3307935 56.3716915,68.0186879 56.4499085,68.7295428 C56.5332045,69.4863187 57.0736845,70.1142131 57.8068157,70.5797392 C56.8154807,72.2161199 57.2915791,74.4184214 59.0814861,74.9588816 C59.1472098,74.9832237 59.21694,74.9976974 59.2870781,74.9996711 L69.052698,74.9996711 C69.4370135,74.9996711 69.6945266,74.8623685 70.0189803,74.7118423 C70.6431248,74.4286845 71.163664,74.0846057 71.6842755,73.7250007 L71.6842755,74.3417767 C71.6843084,74.6862502 71.9977096,74.9996053 72.3421699,74.9996711 L76.2895363,74.9996711 C76.6339966,74.9996053 76.9473978,74.6862502 76.9474306,74.3417767 L76.9474306,58.5524429 C76.9473978,58.2079694 76.6339966,57.8946143 76.2895363,57.8945485 C74.9391159,57.8945485 73.5579653,57.8945485 72.2188147,57.8945485 C71.9172359,57.9524432 71.6788676,58.2454693 71.6842755,58.5524429 L71.6842755,59.5804029 C71.1677626,59.0492189 70.5887564,58.6046139 70.0189803,58.2029694 C69.7351055,58.0284958 69.4781319,57.8945485 69.0938164,57.8945485 L67.0790148,57.8945485 L67.0790148,49.5269871 C72.3816502,48.0809747 76.2895363,43.2555167 76.2895363,37.4999276 C76.2895363,30.6041418 70.6853024,25 63.7895428,25 L63.7895428,25.0003289 Z M36.1584342,27.2955914 C41.7903658,27.2955914 46.3430947,31.8669463 46.3430947,37.4988839 C46.3430947,43.1307615 41.7903658,47.6835084 36.1584342,47.6835084 C30.5265027,47.6835084 25.9737731,43.1307615 25.9737731,37.4988839 C25.9737731,31.8669463 30.5265027,27.2955914 36.1584342,27.2955914 Z M69.6840202,29.175057 L55.0826314,42.7910724 C54.1450237,41.2495946 53.6053382,39.4384284 53.6053382,37.4993408 C53.6053382,31.867151 58.158271,27.2955914 63.7904548,27.2955914 C65.9880761,27.2955914 68.0213834,27.991603 69.6840202,29.175057 Z M72.0100878,31.4712452 C73.2461614,33.1606005 73.9755714,35.2450107 73.9755714,37.4993408 C73.9755714,43.1314706 69.4226385,47.6844214 63.7904548,47.6844214 C61.2784716,47.6844214 58.9811738,46.7787456 57.2067449,45.2755857 L72.0100878,31.4712452 Z M34.1842953,49.8152106 C34.8307357,49.9183685 35.4828735,49.9796842 36.1579784,49.9796842 C36.8330833,49.9796842 37.4852212,49.9185 38.1316616,49.8152106 L38.1316616,57.8948774 L34.1842953,57.8948774 L34.1842953,49.8152106 Z M61.8158597,49.8152106 C62.4623001,49.9183685 63.1144379,49.9796842 63.7895428,49.9796842 C64.4646477,49.9796842 65.1167856,49.9185 65.763226,49.8152106 L65.763226,57.8948774 L61.8158597,57.8948774 L61.8158597,49.8152106 Z M24.3158787,59.2106662 L26.9474563,59.2106662 L26.9474563,73.6842112 L24.3158787,73.6842112 L24.3158787,59.2106662 Z M30.8537049,59.2106662 L43.0041919,59.2106662 C43.7298363,59.752837 44.0527111,60.3536261 44.0527111,60.7730996 C44.0527111,61.2140862 43.8154744,61.577836 43.0658695,61.842178 C42.0448766,61.8421122 40.9915154,61.842178 39.9819896,61.842178 C39.6375161,61.8744148 39.3534767,62.2173094 39.3857728,62.5617171 C39.4180754,62.9061906 39.7608713,63.1902694 40.1053448,63.1579668 L42.9425143,63.1579668 C43.342126,63.6473744 43.5043496,64.1723741 43.4153759,64.5765186 C43.3160602,65.0278342 42.9319749,65.4972418 41.8323175,65.7895443 C41.0034101,65.7894785 40.14145,65.7895443 39.3240952,65.7895443 C38.9796217,65.8217811 38.6955824,66.1646757 38.7278784,66.5090834 C38.760181,66.8535569 39.1029769,67.1376357 39.4474504,67.1053331 L41.6472848,67.1053331 C42.0538109,67.6012539 42.23012,68.1467799 42.1818239,68.5855955 C42.1282056,69.0728979 41.8634886,69.4711871 41.1127456,69.7369107 C40.3044105,69.7368449 39.4629833,69.7369107 38.6662008,69.7369107 C38.3217273,69.7691475 38.037688,70.1119763 38.069984,70.456384 C38.1022866,70.8008575 38.4450825,71.0849363 38.789556,71.0526337 L40.9893904,71.0526337 C41.7495018,72.0425673 41.3919494,73.3884219 40.4959696,73.6842112 L30.8948233,73.6842112 C29.9038896,73.2977641 29.0834887,72.7031591 28.2632457,72.0394752 L28.2632457,61.4515203 C29.1161203,60.6001392 29.8298239,59.8241527 30.8537049,59.2106662 Z M56.9433293,59.2106662 L69.0938164,59.2106662 C70.1051448,59.7821791 70.9706509,60.7325733 71.6842755,61.4515203 L71.6842755,72.0394752 C70.8497694,72.7608564 70.0753224,73.2284878 69.052698,73.6842112 L59.4515517,73.6842112 C58.5555719,73.3884219 58.1980195,72.0425673 58.9581309,71.0526337 L61.1579653,71.0526337 C61.5055375,71.0592126 61.8252281,70.7423707 61.8252281,70.3947393 C61.8252281,70.0471079 61.5055375,69.7319765 61.1579653,69.7369107 L58.8347757,69.7369107 C58.0840327,69.4711871 57.8193289,69.0728979 57.7656973,68.5855955 C57.7179342,68.1515168 57.8828025,67.5971092 58.2796773,67.1053331 L60.5000709,67.1053331 C60.8476431,67.111912 61.1673337,66.7950701 61.1673337,66.4474387 C61.1673337,66.0998073 60.8476431,65.7846101 60.5000709,65.7895443 L58.1152037,65.7895443 C57.0155464,65.4972418 56.6314611,65.0278342 56.5321453,64.5765186 C56.4431717,64.1723741 56.6053953,63.6473744 57.0050069,63.1579668 L59.8421765,63.1579668 C60.1897487,63.1645457 60.5094393,62.8477038 60.5094393,62.5000724 C60.5094393,62.152441 60.1897487,61.8372438 59.8421765,61.842178 L56.8816517,61.842178 C56.1320469,61.578165 55.8948101,61.2140862 55.8948101,60.7730996 C55.8948101,60.3536261 56.217685,59.752837 56.9433293,59.2106662 Z M73.0000643,59.2106662 L75.6316419,59.2106662 L75.6316419,73.6842112 L73.0000643,73.6842112 L73.0000643,59.2106662 Z\"\n          fill={colors.primary.BLACK}\n          fillRule=\"nonzero\"\n        />\n        <polygon\n          fill={colors.primary.BLACK}\n          fillRule=\"nonzero\"\n          points=\"41.9 33 34.205 40.10875 31.1 37.24875 29 39.1875 34.205 44 44 34.93875\"\n        />\n        <g transform=\"translate(70 79)\">\n          <path\n            d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z\"\n            stroke={colors.basic.WHITE}\n            strokeWidth=\"3\"\n            fill={colors.basic.WHITE}\n          />\n          <path\n            d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M7.2,13.5 L2.7,9 L3.96,7.74 L7.2,10.98 L14.04,4.14 L15.3,5.4 L7.2,13.5 L7.2,13.5 Z\"\n            fill={colors.accent.CIVIL_BLUE}\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ReviewIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ReviewIconProps {\n  className?: string;\n}\n\nexport const ReviewIcon = (props: ReviewIconProps) => {\n  return (\n    <svg className={props.className} height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <path d=\"m0 0h24v24h-24z\" />\n        <path\n          d=\"m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm1 15h-2v-2h2zm0-4h-2v-6h2z\"\n          fill=\"#4066ff\"\n          fillRule=\"nonzero\"\n        />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/SecureLockIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface SecureLockIconProps {\n  color?: string;\n}\n\nexport const SecureLockIcon = (props: SecureLockIconProps) => {\n  const color = props.color || \"#8B8581\";\n  return (\n    <svg width=\"20\" height=\"23\" viewBox=\"0 0 20 23\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <rect x=\"0\" y=\"1.2520731\" width=\"20\" height=\"20\"></rect>\n        <path\n          d=\"M16,8.5041462 L13.75,8.5041462 L13.75,7.1616462 C13.75,5.2041462 12.3175,3.4566462 10.3675,3.2691462 C8.1325,3.0591462 6.25,4.8141462 6.25,7.0041462 L6.25,8.5041462 L4,8.5041462 L4,19.0041462 L16,19.0041462 L16,8.5041462 Z M10,12.2541462 C10.825,12.2541462 11.5,12.9291462 11.5,13.7541462 C11.5,14.5791462 10.825,15.2541462 10,15.2541462 C9.175,15.2541462 8.5,14.5791462 8.5,13.7541462 C8.5,12.9291462 9.175,12.2541462 10,12.2541462 Z M10,4.7541462 C11.245,4.7541462 12.25,5.7591462 12.25,7.0041462 L12.25,8.5041462 L7.75,8.5041462 L7.75,7.0041462 C7.75,5.7591462 8.755,4.7541462 10,4.7541462 Z\"\n          fill={color}\n          fillRule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ShareEmailIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ShareEmailIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const ShareEmailIcon: React.FunctionComponent<ShareEmailIconProps> = props => {\n  const color = props.color || \"#191919\";\n  const width = (props.width || 32).toString();\n  const height = (props.height || 32).toString();\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-977.000000, -505.000000)\">\n          <g transform=\"translate(931.000000, 482.000000)\">\n            <g transform=\"translate(0.000000, 23.000000)\">\n              <g transform=\"translate(46.000000, 0.000000)\">\n                <polygon points=\"4 4 28 4 28 28 4 28\"></polygon>\n                <path\n                  d=\"M24,8 L8,8 C6.9,8 6.01,8.9 6.01,10 L6,22 C6,23.1 6.9,24 8,24 L24,24 C25.1,24 26,23.1 26,22 L26,10 C26,8.9 25.1,8 24,8 Z M23.6,12.25 L16.53,16.67 C16.21,16.87 15.79,16.87 15.47,16.67 L8.4,12.25 C8.15,12.09 8,11.82 8,11.53 C8,10.86 8.73,10.46 9.3,10.81 L16,15 L22.7,10.81 C23.27,10.46 24,10.86 24,11.53 C24,11.82 23.85,12.09 23.6,12.25 Z\"\n                  fill={color}\n                  fillRule=\"nonzero\"\n                ></path>\n              </g>\n            </g>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ShareIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface ShareIconProps {\n  height?: number;\n  width?: number;\n}\n\nexport const ShareIcon: React.FunctionComponent<ShareIconProps> = props => {\n  const width = (props.width || 32).toString();\n  const height = (props.height || 32).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <path\n          d=\"M16,19 C15.4748603,19 15.0167598,18.5657476 15.0167598,18.0424178 L15.0167598,9.83244963 L15.0167598,7.71686108 L13.9217877,8.93054083 L11.5642458,11.3913043 C11.3854749,11.5917285 11.1173184,11.6919406 10.8826816,11.6919406 C10.3687151,11.6919406 10,11.3244963 10,10.8234358 C10,10.5673383 10.1005587,10.3669141 10.2905028,10.1776246 L15.2960894,5.3340403 C15.5307263,5.08907741 15.7541899,5 16,5 C16.2458101,5 16.4692737,5.08907741 16.7150838,5.3340403 L21.7094972,10.1776246 C21.8882682,10.3669141 22,10.5673383 22,10.8234358 C22,11.3244963 21.6089385,11.6919406 21.0949721,11.6919406 C20.8603352,11.6919406 20.603352,11.5917285 20.424581,11.3913043 L18.0782123,8.93054083 L16.9832402,7.71686108 L16.9832402,9.83244963 L16.9832402,18.0424178 C16.9832402,18.5657476 16.5363128,19 16,19 Z\"\n          fill={colors.primary.BLACK}\n        ></path>\n        <path\n          d=\"M25,16 C25.5128358,16 25.9355072,16.3860402 25.9932723,16.8833789 L26,17 L26,22 C26,23.6568542 24.6568542,25 23,25 L9,25 C7.34314575,25 6,23.6568542 6,22 L6,17 L6.00672773,16.8833789 C6.06449284,16.3860402 6.48716416,16 7,16 C7.51283584,16 7.93550716,16.3860402 7.99327227,16.8833789 L8,17 L8,22 C8,22.5522847 8.44771525,23 9,23 L9,23 L23,23 C23.5522847,23 24,22.5522847 24,22 L24,22 L24,17 C24,16.4477153 24.4477153,16 25,16 Z\"\n          fill=\"#191919\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ShareTwitterIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport interface ShareTwitterIconProps {\n  color?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const ShareTwitterIcon: React.FunctionComponent<ShareTwitterIconProps> = props => {\n  const color = props.color || \"#191919\";\n  const width = (props.width || 32).toString();\n  const height = (props.height || 32).toString();\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"m28.954 8.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124-4.09-.193-7.715-2.157-10.141-5.126-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548z\"\n        fill={color}\n        fillRule=\"nonzero\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/SubmitChallengeSuccessIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const SubmitChallengeSuccessIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <circle fill={colors.accent.CIVIL_TEAL} fillRule=\"nonzero\" cx=\"50\" cy=\"50\" r=\"50\" />\n        <g transform=\"translate(9 18)\" fill={colors.primary.BLACK} fillRule=\"nonzero\">\n          <path d=\"M63.9166667,0 L20.5833333,0 C19.9850249,0 19.5,0.485024854 19.5,1.08333333 L19.5,19.5 L15.0583333,19.5 C12.0553912,19.4961409 9.20687238,20.8304533 7.28758333,23.14 C5.78142836,24.9516447 3.54762911,25.9996685 1.19166667,26 L0,26 L0,28.1666667 L1.19166667,28.1666667 C4.1946088,28.1705258 7.04312762,26.8362134 8.96241667,24.5266667 C10.4697831,22.7135642 12.7058924,21.6653879 15.06375,21.6666667 L19.3580833,21.6666667 L33.1391667,25.3424167 C33.8947918,25.545412 34.4699891,26.1592647 34.6234779,26.9264789 C34.7769667,27.693693 34.4822032,28.4815899 33.8628333,28.9596667 C33.3576061,29.3523327 32.6972125,29.4847324 32.0796667,29.3171667 L19.7795,26.0368333 C19.2824492,25.9038387 18.7604234,26.1388182 18.5304167,26.5990833 L17.6301667,28.3995833 C16.3813874,30.9195041 13.8081904,32.5098944 10.9958333,32.5 L8.66666667,32.5 L8.66666667,34.6666667 L10.9958333,34.6666667 C14.5796362,34.6769393 17.8658559,32.6746478 19.5,29.4850833 L19.5,49.8333333 L16.575,49.8333333 C14.0013255,49.8303564 11.5866343,48.5879276 10.088,46.4955833 C8.18378094,43.8344506 5.1139231,42.2539497 1.84166667,42.25 L0,42.25 L0,44.4166667 L1.84166667,44.4166667 C4.41534112,44.4196436 6.83003238,45.6620724 8.32866667,47.7544167 C10.2328857,50.4155494 13.3027436,51.9960503 16.575,52 L19.5,52 L19.5,63.9166667 C19.5,64.5149751 19.9850249,65 20.5833333,65 L63.9166667,65 C64.5149751,65 65,64.5149751 65,63.9166667 L65,1.08333333 C65,0.485024854 64.5149751,0 63.9166667,0 Z M62.8333333,62.8333333 L21.6666667,62.8333333 L21.6666667,28.782 L31.525,31.4101667 C32.792326,31.746362 34.143918,31.4751216 35.1834041,30.6759901 C36.2228902,29.8768586 36.8324541,28.6404105 36.8333333,27.32925 C36.8328336,25.4159862 35.5466831,23.7418572 33.6981667,23.2483333 L21.6666667,20.0416667 L21.6666667,2.16666667 L62.8333333,2.16666667 L62.8333333,62.8333333 Z\" />\n          <rect x=\"31\" y=\"5\" width=\"22\" height=\"2\" />\n          <rect x=\"31\" y=\"18\" width=\"7\" height=\"2\" />\n          <rect x=\"40\" y=\"18\" width=\"12\" height=\"2\" />\n          <rect x=\"38\" y=\"24\" width=\"11\" height=\"2\" />\n          <rect x=\"38\" y=\"29\" width=\"20\" height=\"2\" />\n          <rect x=\"27\" y=\"35\" width=\"30\" height=\"2\" />\n          <rect x=\"54\" y=\"18\" width=\"3\" height=\"2\" />\n          <rect x=\"51\" y=\"24\" width=\"7\" height=\"2\" />\n          <rect x=\"27\" y=\"40\" width=\"22\" height=\"2\" />\n          <rect x=\"27\" y=\"46\" width=\"30\" height=\"2\" />\n          <rect x=\"27\" y=\"51\" width=\"7\" height=\"2\" />\n          <rect x=\"36\" y=\"51\" width=\"22\" height=\"2\" />\n          <rect x=\"51\" y=\"40\" width=\"7\" height=\"2\" />\n          <rect x=\"27\" y=\"13\" width=\"30\" height=\"2\" />\n        </g>\n        <g transform=\"translate(74 71)\">\n          <path\n            d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n            stroke={colors.basic.WHITE}\n            strokeWidth=\"3\"\n            fill={colors.basic.WHITE}\n          />\n          <path\n            d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n            fill={colors.accent.CIVIL_BLUE}\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/TelegramIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface TelegramIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nconst _TelegramIcon = (props: TelegramIconProps) => {\n  const height = props.height || 23;\n  const width = props.width || 23;\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={width}\n      height={height}\n      viewBox=\"0 0 23 23\"\n      className={props.className}\n    >\n      <defs>\n        <path id=\"a\" d=\"M1 2h16.718v14.954H1z\" />\n      </defs>\n      <g fill=\"none\" fillRule=\"evenodd\">\n        <path\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(0 .457)\"\n          d=\"M3.483 8.775L6.26 9.837c.2.076.35.243.404.45l.352 1.334a.662.662 0 0 1 .2-.408l6.951-6.69L3.483 8.776zm3.652 3.3l.502 1.9 1.08-.778-1.414-.96a.661.661 0 0 1-.168-.162zm3.118.565l3.744 2.54 2.02-10.6-7.296 7.02 1.514 1.028a.363.363 0 0 1 .018.012zm4.206 4.314a.661.661 0 0 1-.372-.114l-4.204-2.851L7.63 15.61a.662.662 0 0 1-1.027-.368l-1.132-4.29-4.045-1.547a.662.662 0 0 1-.008-1.233l15.38-6.12a.662.662 0 0 1 .908.741L15.11 16.415a.662.662 0 0 1-.65.538z\"\n          mask=\"url(#b)\"\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport const TelegramIcon = styled(_TelegramIcon)`\n  &:hover path {\n    fill: white;\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/TipIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface TipIconProps {\n  height?: number;\n  width?: number;\n}\n\nexport const TipIcon: React.FunctionComponent<TipIconProps> = props => {\n  const width = (props.width || 32).toString();\n  const height = (props.height || 32).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"4 4 28 4 28 28 4 28\"></polygon>\n        <path\n          d=\"M17.41,22.09 L17.41,22.67 C17.41,23.4 16.81,24 16.08,24 L16.07,24 C15.34,24 14.74,23.4 14.74,22.67 L14.74,22.07 C13.41,21.79 12.23,21.06 11.73,19.83 C11.5,19.28 11.93,18.67 12.53,18.67 L12.77,18.67 C13.14,18.67 13.44,18.92 13.58,19.27 C13.87,20.02 14.63,20.54 16.09,20.54 C18.05,20.54 18.49,19.56 18.49,18.95 C18.49,18.12 18.05,17.34 15.82,16.81 C13.34,16.21 11.64,15.19 11.64,13.14 C11.64,11.42 13.03,10.3 14.75,9.93 L14.75,9.33 C14.75,8.6 15.35,8 16.08,8 L16.09,8 C16.82,8 17.42,8.6 17.42,9.33 L17.42,9.95 C18.8,10.29 19.67,11.15 20.05,12.21 C20.25,12.76 19.83,13.34 19.24,13.34 L18.98,13.34 C18.61,13.34 18.31,13.08 18.21,12.72 C17.98,11.96 17.35,11.47 16.09,11.47 C14.59,11.47 13.69,12.15 13.69,13.11 C13.69,13.95 14.34,14.5 16.36,15.02 C18.38,15.54 20.54,16.41 20.54,18.93 C20.52,20.76 19.15,21.76 17.41,22.09 L17.41,22.09 Z\"\n          stroke={colors.basic.WHITE}\n          strokeWidth=\"0.12\"\n          fill=\"#191919\"\n          fillRule=\"nonzero\"\n        ></path>\n        <path\n          d=\"M16,4 C22.627417,4 28,9.372583 28,16 C28,22.627417 22.627417,28 16,28 C9.372583,28 4,22.627417 4,16 C4,9.372583 9.372583,4 16,4 Z M16,6 C10.4771525,6 6,10.4771525 6,16 C6,21.5228475 10.4771525,26 16,26 C21.5228475,26 26,21.5228475 26,16 C26,10.4771525 21.5228475,6 16,6 Z\"\n          fill=\"#191919\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/TokenWalletIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface TokenWalletIconProps {\n  height?: number;\n  width?: number;\n}\n\nexport const TokenWalletIcon: React.FunctionComponent<TokenWalletIconProps> = props => {\n  const width = (props.width || 24).toString();\n  const height = (props.height || 21).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 24 21\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={colors.accent.CIVIL_BLUE} fillRule=\"evenodd\">\n        <path d=\"M22.179 13.216L22.179 5.049C22.179 4.253 21.531 3.608 20.732 3.608L17.357 3.608 17.357 1.301C17.355 0.901 17.169 0.523 16.853 0.277 16.536 0.03 16.123-0.058 15.732 0.038L1.35 3.608C0.589 3.658-0.002 4.289 0 5.049L0 18.501C0 19.297 0.648 19.942 1.446 19.942L15.429 19.942C17.348 21.377 20.034 21.187 21.731 19.496 23.427 17.805 23.618 15.129 22.179 13.216ZM15.964 0.965C16.068 0.936 16.179 0.96 16.263 1.028 16.347 1.093 16.395 1.195 16.393 1.301L16.393 3.608 5.361 3.608 15.964 0.965ZM1.446 18.981C1.18 18.981 0.964 18.766 0.964 18.501L0.964 5.049C0.964 4.783 1.18 4.568 1.446 4.568L20.732 4.568C20.998 4.568 21.214 4.783 21.214 5.049L21.214 12.255C19.295 10.821 16.609 11.011 14.912 12.702 13.216 14.392 13.025 17.069 14.464 18.981L1.446 18.981ZM18.321 19.942C16.191 19.942 14.464 18.222 14.464 16.099 14.464 13.976 16.191 12.255 18.321 12.255 20.452 12.255 22.179 13.976 22.179 16.099 22.179 18.222 20.452 19.942 18.321 19.942ZM20.732 16.099C20.732 16.364 20.516 16.579 20.25 16.579L18.804 16.579 18.804 18.021C18.804 18.286 18.588 18.501 18.321 18.501 18.055 18.501 17.839 18.286 17.839 18.021L17.839 16.579 16.393 16.579C16.127 16.579 15.911 16.364 15.911 16.099 15.911 15.833 16.127 15.618 16.393 15.618L17.839 15.618 17.839 14.177C17.839 13.912 18.055 13.697 18.321 13.697 18.588 13.697 18.804 13.912 18.804 14.177L18.804 15.618 20.25 15.618C20.516 15.618 20.732 15.833 20.732 16.099Z\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/TrendsIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const TrendsIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill={colors.accent.CIVIL_BLUE} fillRule=\"evenodd\">\n        <path\n          d=\"M24,48 C10.766,48 0,37.234 0,24 C0,10.766 10.766,0 24,0 C37.234,0 48,10.766 48,24 C48,37.234 37.234,48 24,48 Z M24,2 C11.87,2 2,11.87 2,24 C2,36.13 11.87,46 24,46 C36.13,46 46,36.13 46,24 C46,11.87 36.13,2 24,2 Z\"\n          fillRule=\"nonzero\"\n        />\n        <polygon points=\"36 24.9230769 34.0221193 24.9230769 34.0221193 17.6701884 26.7692308 17.6701884 26.7692308 15.6923077 35.0110596 15.6923077 36 16.681248\" />\n        <polygon points=\"14.3524956 31.3846154 12.9230769 29.9762196 19.7022011 23.2948061 20.7373671 23.0557573 26.2104029 24.8526073 34.5705813 16.6153846 36 18.0237804 27.1990673 26.6972671 26.1639013 26.938308 20.6908655 25.1394659\" />\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/TrustMarkIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface TrustMarkIconProps {\n  height?: number;\n  width?: number;\n}\n\nexport const TrustMarkIcon: React.FunctionComponent<TrustMarkIconProps> = props => {\n  const width = (props.width || 40).toString();\n  const height = (props.height || 40).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 40 40\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-282, -18)\" fill={colors.accent.CIVIL_TEAL_DARK}>\n          <path d=\"M308.909553,20 L312.325,27.674 L320,31.0904474 L316.923,38 L320,44.9095526 L312.325,48.326 L308.909553,56 L302,52.923 L295.090447,56 L291.673,48.325 L284,44.9095526 L287.076,38 L284,31.0904474 L291.674,27.674 L295.090447,20 L302,23.076 L308.909553,20 Z M309.187143,31 L299.428571,40.4692898 L294.812857,36.0028791 L293,37.7619962 L299.428571,44 L311,32.7715931 L309.187143,31 Z\"></path>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/TwitterIcon.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport interface TwitterIconProps {\n  className?: string;\n  height?: number;\n  width?: number;\n}\n\nconst _TwitterIcon = (props: TwitterIconProps) => {\n  const height = props.height || 23;\n  const width = props.width || 23;\n  return (\n    <svg\n      height={height}\n      viewBox=\"0 0 22 23\"\n      width={width}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={props.className}\n    >\n      <path\n        d=\"m19 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-2.1171875 7.7004415c-.1015625 4.7261258-3.046875 8.0138655-7.515625 8.2193493-1.828125.1027418-3.1484375-.5137094-4.3671875-1.2329024 1.3203125.2054837 3.046875-.3082256 3.9609375-1.1301605-1.3203125-.1027419-2.1328125-.821935-2.5390625-1.9520955.40625.1027419.8125 0 1.1171875 0-1.21875-.4109675-2.03125-1.1301605-2.1328125-2.77403038.3046875.20548378.7109375.30822558 1.1171875.30822558-.9140625-.51370931-1.5234375-2.46580476-.8125-3.69870716 1.3203125 1.43838613 2.9453125 2.67128852 5.5859375 2.87677225-.7109375-2.87677225 3.1484375-4.41790024 4.671875-2.46580478.7109375-.10274187 1.21875-.41096747 1.7265625-.6164512-.203125.71919306-.609375 1.13016053-1.1171875 1.54112799.5078125-.10274186 1.015625-.20548373 1.421875-.41096746-.1015625.51370933-.609375.92467679-1.1171875 1.33564426z\"\n        fill=\"#8b8581\"\n        fillRule=\"evenodd\"\n        transform=\"translate(0 .457)\"\n      />\n    </svg>\n  );\n};\n\nexport const TwitterIcon = styled(_TwitterIcon)`\n  &:hover path {\n    fill: white;\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/VerifyIdentityIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport const VerifyIdentityIcon: React.FunctionComponent = props => {\n  return (\n    <svg width=\"18\" height=\"22\" viewBox=\"0 0 18 22\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-2 -0.5)\">\n          <polygon points=\"0 0 22.9 0 22.9 22.9 0 22.9\" />\n          <path\n            d=\"M11.5 1L2.9 4.8 2.9 10.5C2.9 15.8 6.5 20.8 11.5 22 16.4 20.8 20 15.8 20 10.5L20 4.8 11.5 1ZM18.1 10.5C18.1 14.8 15.3 18.8 11.5 20 7.6 18.8 4.8 14.8 4.8 10.5L4.8 6 11.5 3 18.1 6 18.1 10.5ZM7.1 11.1L5.7 12.4 9.5 16.2 17.2 8.6 15.8 7.2 9.5 13.5 7.1 11.1Z\"\n            fill={colors.accent.CIVIL_BLUE}\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/WaitForApply.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface WaitForApplyProps {\n  height?: string;\n  width?: string;\n}\n\nexport const WaitForApply: React.FunctionComponent<WaitForApplyProps> = props => {\n  const width = props.width || \"54\";\n  const height = props.height || \"54\";\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 54 54\" xmlns=\"http://www.w3.org/2000/svg\">\n      <circle fill=\"#90e8d3\" cx=\"27\" cy=\"27\" r=\"27\" />\n      <path\n        d=\"m22.0188072 35.5783153h-2.7243229v-3.6842105c0-.4440359-.3660757-.8044128-.8171334-.8044128s-.8171334.3603769-.8171334.8044128v4.4886233c0 .4440359.3660757.8044128.8171334.8044128h3.5414563c.4510577 0 .8171335-.3603769.8171335-.8044128 0-.4440358-.3656672-.8044128-.8171335-.8044128zm18.7752752-18.3273385-6.2919275-6.9802919c-.1552554-.1721443-.3775157-.2706849-.6112159-.2706849h-17.2349785c-.4510577 0-.8171335.3603769-.8171335.8044128v17.4633992c-3.3960066 1.1853022-5.838827 4.3707768-5.838827 8.1153183 0 4.7512641 3.9263262 8.6168697 8.7531334 8.6168697 2.8566986 0 5.3902208-1.360262 6.9889424-3.4509308h14.4407908c.4510576 0 .8171334-.3603769.8171334-.8044128v-22.9599517c0-.1970812-.073542-.3869226-.2059176-.5337279zm-6.1007183-4.3442312 3.7122372 4.1181912h-3.7122372zm-15.9406392 30.4840266c-3.9251005 0-7.1188666-3.1436451-7.1188666-7.0080441s3.1933575-7.0080441 7.1188666-7.0080441c3.925509 0 7.1188665 3.1440473 7.1188665 7.0080441s-3.1933575 7.0080441-7.1188665 7.0080441zm20.6130082-3.4509308h-12.6496343c.5025371-1.0859572.7901681-2.2877499.7901681-3.5571133 0-.22604-.0171598-.4476557-.0343196-.6692714h7.6205865c.4510576 0 .8171334-.3603769.8171334-.8044128s-.3660758-.8044128-.8171334-.8044128h-7.9069918c-.336659-1.2062169-.9270379-2.3090669-1.7204745-3.2429901h9.6270577c.4510577 0 .8171334-.3603769.8171334-.8044128 0-.4440358-.3660757-.8044128-.8171334-.8044128h-11.4304712c-1.4009753-.937543-3.0903986-1.486957-4.9089291-1.486957-.4355321 0-.8608501.0418295-1.2800396.1029649v-16.2603999h15.5860033v6.2209262c0 .4440358.3660758.8044128.8171335.8044128h5.4895024v21.306079zm-18.4365733-14.7340266c0 .4440358.3660758.8044127.8171334.8044127h13.3462406c.4510576 0 .8171334-.3603769.8171334-.8044127 0-.4440359-.3660758-.8044128-.8171334-.8044128h-13.3462406c-.4514662 0-.8171334.3599747-.8171334.8044128zm0-5c0 .4440358.2194549.8044127.4898547.8044127h8.0007976c.2703998 0 .4898547-.3603769.4898547-.8044127 0-.4440359-.2194549-.8044128-.4898547-.8044128h-8.0007976c-.2706447 0-.4898547.3599747-.4898547.8044128z\"\n        fill={colors.primary.BLACK}\n        fillRule=\"nonzero\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/WarningIcon.tsx",
    "content": "import * as React from \"react\";\nimport { colors } from \"../colors\";\n\nexport interface WarningIconProps {\n  color?: string;\n  fill?: string;\n  height?: number;\n  width?: number;\n}\n\nexport const WarningIcon: React.FunctionComponent<WarningIconProps> = props => {\n  const color = props.color || colors.accent.CIVIL_RED;\n  const fill = props.fill || colors.accent.CIVIL_GRAY_6;\n  const width = (props.width || 28).toString();\n  const height = (props.height || 28).toString();\n\n  return (\n    <svg width={width} height={height} viewBox=\"0 0 28 28\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-40, -20)\">\n        <path\n          d=\"M4,0.5 C2.06700338,0.5 0.5,2.06700338 0.5,4 L0.5,64 C0.5,65.9329966 2.06700338,67.5 4,67.5 L726,67.5 C727.932997,67.5 729.5,65.9329966 729.5,64 L729.5,4 C729.5,2.06700338 727.932997,0.5 726,0.5 L4,0.5 Z\"\n          stroke={color}\n          fill={fill}\n        />\n        <g transform=\"translate(38, 18)\">\n          <polygon points=\"0 0 32 0 32 32 0 32\" />\n          <path\n            d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n            fill={color}\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ZoomInIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const ZoomInIcon = () => {\n  return (\n    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"0 0 24 0 24 24 0 24\"></polygon>\n        <path\n          d=\"M12,12 C13.65,12 15,10.65 15,9 C15,7.35 13.65,6 12,6 C10.35,6 9,7.35 9,9 C9,10.65 10.35,12 12,12 Z M12,8 C12.55,8 13,8.45 13,9 C13,9.55 12.55,10 12,10 C11.45,10 11,9.55 11,9 C11,8.45 11.45,8 12,8 Z M18,16.58 C18,14.08 14.03,13 12,13 C9.97,13 6,14.08 6,16.58 L6,18 L18,18 L18,16.58 Z M8.48,16 C9.22,15.49 10.71,15 12,15 C13.29,15 14.78,15.49 15.52,16 L8.48,16 Z M19,3 L5,3 C3.89,3 3,3.9 3,5 L3,19 C3,20.1 3.89,21 5,21 L19,21 C20.1,21 21,20.1 21,19 L21,5 C21,3.9 20.1,3 19,3 Z M19,19 L5,19 L5,5 L19,5 L19,19 Z\"\n          fill=\"#000000\"\n          fillRule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/ZoomOutIcon.tsx",
    "content": "import * as React from \"react\";\n\nexport const ZoomOutIcon = () => {\n  return (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <polygon points=\"0 0 16 0 16 16 0 16\"></polygon>\n        <path\n          d=\"M8,8 C9.1,8 10,7.1 10,6 C10,4.9 9.1,4 8,4 C6.9,4 6,4.9 6,6 C6,7.1 6.9,8 8,8 Z M8,5.33333333 C8.36666667,5.33333333 8.66666667,5.63333333 8.66666667,6 C8.66666667,6.36666667 8.36666667,6.66666667 8,6.66666667 C7.63333333,6.66666667 7.33333333,6.36666667 7.33333333,6 C7.33333333,5.63333333 7.63333333,5.33333333 8,5.33333333 Z M12,11.0533333 C12,9.38666667 9.35333333,8.66666667 8,8.66666667 C6.64666667,8.66666667 4,9.38666667 4,11.0533333 L4,12 L12,12 L12,11.0533333 Z M5.65333333,10.6666667 C6.14666667,10.3266667 7.14,10 8,10 C8.86,10 9.85333333,10.3266667 10.3466667,10.6666667 L5.65333333,10.6666667 Z M12.6666667,2 L3.33333333,2 C2.59333333,2 2,2.6 2,3.33333333 L2,12.6666667 C2,13.4 2.59333333,14 3.33333333,14 L12.6666667,14 C13.4,14 14,13.4 14,12.6666667 L14,3.33333333 C14,2.6 13.4,2 12.6666667,2 Z M12.6666667,12.6666667 L3.33333333,12.6666667 L3.33333333,3.33333333 L12.6666667,3.33333333 L12.6666667,12.6666667 Z\"\n          fill=\"#000000\"\n          fillRule=\"nonzero\"\n        ></path>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/__snapshots__/icon.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ApplicationInProgressIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 19 18\"\n        width=\"19\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M9 0c3.316 0 6.253 1.8 7.768 4.547l2.18-2.179v6.158h-6.159l2.653-2.652c-1.231-2.369-3.6-3.98-6.442-3.98-3.884 0-7.105 3.222-7.105 7.106S5.115 16.105 9 16.105c3.126 0 5.684-1.99 6.726-4.737h1.99C16.674 15.158 13.168 18 9 18c-5.021 0-9-4.074-9-9s4.074-9 9-9zM7.401 4.737v4.831l4.453 2.653.758-1.232-3.79-2.273v-3.98h-1.42z\"\n          fill=\"#7D7373\"\n          opacity=\".9\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ApplicationInProgressIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ApplicationInProgressIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ApplicationInProgressIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ApprovedNewsroomsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"9\"\n          cy=\"9\"\n          fill=\"none\"\n          r=\"8.25\"\n          stroke=\"#7D7373\"\n        />\n        <path\n          d=\"M12.6 5l-5.13 5.17L5.4 8.09 4 9.5 7.47 13 14 6.41z\"\n          fill=\"#7D7373\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ApprovedNewsroomsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ApprovedNewsroomsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ApprovedNewsroomsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleIndexIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height={24}\n        viewBox=\"0 0 24 24\"\n        width={24}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h24v24h-24z\"\n            opacity=\".3\"\n          />\n          <path\n            d=\"m10.0732422 0 5.9267578 6.11658537v10.88536583c0 1.0989268-.9 1.9980488-2 1.9980488h-12.01c-1.1 0-1.99-.899122-1.99-1.9980488l.08324219-15.00390242c0-1.09892683.89-1.99804878 1.99-1.99804878zm-8.0732422 17.0019512h12v-10.98926827h-5v-3.89512195h-7zm2.5-6.0126829 3.5-3.99609757 3.5 3.99609757h-2.23125v3.9780488h-2.5375v-3.9780488z\"\n            fill=\"#444\"\n            fillRule=\"nonzero\"\n            transform=\"translate(4 3)\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleIndexIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleIndexIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleIndexIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleIndexPanelIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h18v18h-18z\"\n            opacity=\".3\"\n          />\n          <g\n            fill=\"#000000\"\n            fillOpacity=\".5\"\n            fillRule=\"nonzero\"\n          >\n            <path\n              d=\"m12 9.07439826-1.5 1.43373974v-5.17480467h-3.75v-2.97061012h-5.25v11.35156249h3.52038574l1.49697153 1.5238095h-5.02485727c-.825 0-1.4925-.6857142-1.4925-1.5238095l.06243164-11.44270832c0-.83809524.6675-1.52380952 1.4925-1.52380952h6l4.44506836 4.66480654z\"\n              transform=\"translate(3 1)\"\n            />\n            <path\n              d=\"m15.52 11.5-3.591 3.877-1.449-1.559-.98 1.057 2.429 2.625 4.571-4.943z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleIndexPanelIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleIndexPanelIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleIndexPanelIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleSignIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"0 0 24 0 24 24 0 24\"\n          />\n          <g\n            fill=\"#444\"\n            fillRule=\"nonzero\"\n            transform=\"translate(3 4)\"\n          >\n            <path\n              d=\"M8 8C10.21 8 12 6.21 12 4 12 1.79 10.21 0 8 0 5.79 0 4 1.79 4 4 4 6.21 5.79 8 8 8ZM8 2C9.1 2 10 2.9 10 4 10 5.1 9.1 6 8 6 6.9 6 6 5.1 6 4 6 2.9 6.9 2 8 2Z\"\n            />\n            <path\n              d=\"M2 14C2.2 13.37 4.57 12.32 6.96 12.06L9 10.06C8.61 10.02 8.32 10 8 10 5.33 10 0 11.34 0 14L0 16 9 16 7 14 2 14Z\"\n            />\n            <polygon\n              points=\"17.6 8.5 12.47 13.67 10.4 11.59 9 13 12.47 16.5 19 9.91\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleSignIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleSignIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleSignIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleSignPanelIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          opacity=\".3\"\n        >\n          <path\n            d=\"m0 0h20v20h-20z\"\n          />\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(1.667 1.667)\"\n          >\n            <path\n              d=\"m8.33333333 0c-4.6 0-8.33333333 3.73333333-8.33333333 8.33333333 0 4.59999997 3.73333333 8.33333337 8.33333333 8.33333337 4.59999997 0 8.33333337-3.7333334 8.33333337-8.33333337 0-4.6-3.7333334-8.33333333-8.33333337-8.33333333zm-4.10833333 13.5666667c.35833333-.75 2.54166667-1.4833334 4.10833333-1.4833334 1.56666667 0 3.75833337.7333334 4.10833337 1.4833334-1.1333334.9-2.55833337 1.4333333-4.10833337 1.4333333s-2.975-.5333333-4.10833333-1.4333333zm9.4083333-1.2083334c-1.1916666-1.45-4.0833333-1.9416666-5.29999997-1.9416666-1.21666666 0-4.10833333.4916666-5.3 1.9416666-.85-1.1166666-1.36666666-2.5083333-1.36666666-4.02499997 0-3.675 2.99166666-6.66666666 6.66666666-6.66666666 3.67499997 0 6.66666667 2.99166666 6.66666667 6.66666666 0 1.51666667-.5166667 2.90833337-1.3666667 4.02499997z\"\n            />\n            <path\n              d=\"m8.33333333 3.33333333c-1.61666666 0-2.91666666 1.3-2.91666666 2.91666667s1.3 2.91666667 2.91666666 2.91666667c1.61666667 0 2.91666667-1.3 2.91666667-2.91666667s-1.3-2.91666667-2.91666667-2.91666667zm0 4.16666667c-.69166666 0-1.25-.55833333-1.25-1.25s.55833334-1.25 1.25-1.25c.69166667 0 1.25.55833333 1.25 1.25s-.55833333 1.25-1.25 1.25z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleSignPanelIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleSignPanelIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleSignPanelIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BellIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 21 24\"\n        width=\"21\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M10.065 24C11.342 24 12.387 22.955 12.387 21.677L7.742 21.677C7.742 22.955 8.787 24 10.065 24L10.065 24ZM17.761 16.577L17.761 10.065C17.761 6.394 15.274 3.434 11.841 2.605L11.841 1.776C11.841 0.829 11.012 0 10.065 0 9.117 0 8.288 0.829 8.288 1.776L8.288 2.605C4.855 3.434 2.368 6.394 2.368 10.065L2.368 16.577 0 18.945 0 20.129 20.129 20.129 20.129 18.945 17.761 16.577 17.761 16.577Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BellIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BellIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BellIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BookreaderIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"70\"\n        viewBox=\"0 0 70 70\"\n        width=\"70\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M35 29.67C40.992 29.67 45.867 24.795 45.867 18.803 45.867 12.812 40.992 7.936 35 7.936 29.008 7.936 24.133 12.811 24.133 18.803 24.133 24.795 29.008 29.67 35 29.67ZM35 9.157C40.319 9.157 44.646 13.484 44.646 18.803 44.646 24.122 40.319 28.449 35 28.449 29.681 28.449 25.354 24.122 25.354 18.803 25.354 13.484 29.681 9.157 35 9.157Z\"\n          />\n          <path\n            d=\"M8.088 43.479C8.088 45.694 8.408 51.05 11.371 52.947 12.002 53.351 12.703 53.57 13.471 53.606L13.471 55.818 34.39 61.911 34.39 62.267 35 62.089 35.61 62.267 35.61 61.911 56.53 55.818 56.53 53.607C57.297 53.571 57.999 53.351 58.63 52.948 61.593 51.05 61.913 45.694 61.913 43.48 61.913 39.771 58.642 38.08 56.531 37.594L56.531 25.879 35 32.986 13.47 25.88 13.47 37.594C11.359 38.079 8.088 39.77 8.088 43.479ZM56.502 39.242L56.529 38.865C57.876 39.251 60.69 40.423 60.69 43.479 60.69 45.05 60.494 50.302 57.971 51.919 56.92 52.591 55.53 52.537 53.838 51.759 52.035 50.929 51.041 50.008 50.885 49.024 50.643 47.501 52.376 45.898 53.522 44.837L55.301 43.164 53.332 43.486C52.672 43.595 51.168 43.649 50.73 43.126 50.568 42.932 50.565 42.607 50.722 42.159 51.076 41.155 51.85 41.083 53.188 41.041 54.431 41.003 55.976 40.954 56.502 39.242ZM35.61 34.07L55.309 27.569 55.309 38.964C55.048 39.689 54.464 39.78 53.151 39.821 51.914 39.859 50.218 39.912 49.571 41.754 49.184 42.855 49.48 43.535 49.796 43.911 50.275 44.482 51.086 44.695 51.833 44.758 50.643 45.94 49.405 47.483 49.68 49.216 49.908 50.648 51.101 51.843 53.329 52.869 54.024 53.189 54.685 53.406 55.309 53.519L55.309 54.903 35.61 60.64 35.61 34.07ZM14.691 27.569L34.39 34.07 34.39 60.64 14.691 54.902 14.691 53.518C15.316 53.404 15.977 53.188 16.671 52.868 18.899 51.842 20.092 50.647 20.32 49.215 20.595 47.482 19.358 45.939 18.167 44.758 18.914 44.695 19.725 44.481 20.204 43.91 20.52 43.534 20.815 42.855 20.429 41.753 19.782 39.911 18.086 39.858 16.849 39.82 15.536 39.78 14.951 39.688 14.691 38.963L14.691 27.569ZM13.47 38.86L13.47 39.062 13.497 39.242C14.024 40.955 15.569 41.004 16.811 41.042 18.15 41.083 18.924 41.156 19.277 42.16 19.434 42.608 19.432 42.933 19.27 43.127 18.832 43.65 17.327 43.596 16.667 43.487L14.698 43.165 16.477 44.838C17.623 45.899 19.356 47.502 19.114 49.024 18.958 50.009 17.964 50.93 16.161 51.76 14.468 52.539 13.078 52.592 12.029 51.92 9.505 50.303 9.309 45.051 9.309 43.48 9.309 40.388 12.12 39.236 13.47 38.86Z\"\n          />\n          <path\n            d=\"M18.874 66.134C17.868 66.134 17.049 66.953 17.049 67.959 17.049 68.965 17.868 69.783 18.874 69.783 19.88 69.783 20.699 68.965 20.699 67.959 20.699 66.953 19.881 66.134 18.874 66.134ZM18.874 69.377C18.093 69.377 17.456 68.74 17.456 67.959 17.456 67.177 18.093 66.541 18.874 66.541 19.655 66.541 20.292 67.177 20.292 67.959 20.292 68.74 19.656 69.377 18.874 69.377Z\"\n          />\n          <path\n            d=\"M1.213 23.533L2.826 22.685 4.439 23.533 4.132 21.737 5.437 20.464 3.633 20.202 2.826 18.568 2.019 20.202 0.216 20.464 1.521 21.737 1.213 23.533ZM1.09 20.748L2.29 20.574 2.826 19.488 3.362 20.574 4.562 20.748 3.695 21.595 3.899 22.79 2.826 22.227 1.753 22.79 1.958 21.595 1.09 20.748Z\"\n          />\n          <path\n            d=\"M17.812 4.908L18.925 4.323 20.039 4.908 19.826 3.668 20.727 2.79 19.482 2.609 18.925 1.481 18.368 2.609 17.123 2.79 18.024 3.668 17.812 4.908ZM17.998 3.073L18.64 2.981 18.926 2.4 19.213 2.981 19.854 3.073 19.39 3.526 19.499 4.164 18.926 3.863 18.353 4.164 18.462 3.526 17.998 3.073Z\"\n          />\n          <path\n            d=\"M64.98 51.334L65.881 52.212 65.669 53.452 66.782 52.866 67.896 53.452 67.683 52.212 68.585 51.334 67.339 51.152 66.782 50.024 66.226 51.152 64.98 51.334ZM66.782 50.944L67.069 51.524 67.71 51.617 67.246 52.069 67.355 52.708 66.782 52.406 66.209 52.708 66.318 52.069 65.855 51.617 66.496 51.524 66.782 50.944Z\"\n          />\n          <path\n            d=\"M66.782 7.435L66.048 9.696 63.672 9.696 65.594 11.093 64.86 13.353 66.782 11.956 68.705 13.353 67.971 11.093 69.893 9.696 67.517 9.696 66.782 7.435ZM67.492 10.938L67.931 12.287 66.782 11.453 65.634 12.287 66.073 10.938 64.924 10.103 66.345 10.103 66.783 8.752 67.222 10.103 68.642 10.103 67.492 10.938Z\"\n          />\n          <path\n            d=\"M60.307 3.867C61.313 3.867 62.132 3.048 62.132 2.042 62.132 1.036 61.313 0.217 60.307 0.217 59.301 0.217 58.482 1.036 58.482 2.042 58.482 3.048 59.3 3.867 60.307 3.867ZM60.307 0.624C61.088 0.624 61.725 1.261 61.725 2.042 61.725 2.824 61.088 3.46 60.307 3.46 59.525 3.46 58.889 2.824 58.889 2.042 58.889 1.261 59.524 0.624 60.307 0.624Z\"\n          />\n          <path\n            d=\"M66.579 35.803C66.579 36.604 67.231 37.256 68.033 37.256 68.834 37.256 69.486 36.604 69.486 35.803 69.486 35.001 68.834 34.349 68.033 34.349 67.231 34.349 66.579 35.001 66.579 35.803ZM68.033 34.756C68.61 34.756 69.079 35.225 69.079 35.803 69.079 36.38 68.61 36.849 68.033 36.849 67.456 36.849 66.986 36.38 66.986 35.803 66.986 35.225 67.456 34.756 68.033 34.756Z\"\n          />\n          <path\n            d=\"M8.073 11.815C9.133 11.815 9.995 10.953 9.995 9.894 9.995 8.834 9.133 7.972 8.073 7.972 7.013 7.972 6.151 8.834 6.151 9.894 6.151 10.953 7.013 11.815 8.073 11.815ZM8.073 8.379C8.908 8.379 9.588 9.058 9.588 9.894 9.588 10.729 8.908 11.408 8.073 11.408 7.238 11.408 6.558 10.729 6.558 9.894 6.558 9.058 7.238 8.379 8.073 8.379Z\"\n          />\n          <path\n            d=\"M13.89 67.582L13.791 67.976C14.056 68.043 14.324 68.103 14.595 68.157L14.676 67.758C14.411 67.706 14.149 67.647 13.89 67.582Z\"\n          />\n          <path\n            d=\"M6.995 63.886C6.606 63.532 6.231 63.155 5.88 62.766L5.578 63.039C5.937 63.438 6.322 63.824 6.721 64.187L6.995 63.886Z\"\n          />\n          <path\n            d=\"M9.526 65.77C9.077 65.5 8.636 65.204 8.214 64.89L7.97 65.216C8.403 65.539 8.856 65.842 9.316 66.118L9.526 65.77Z\"\n          />\n          <path\n            d=\"M10.918 66.516L10.744 66.884C11.23 67.115 11.734 67.324 12.24 67.505L12.378 67.122C11.884 66.945 11.393 66.742 10.918 66.516Z\"\n          />\n          <path\n            d=\"M3.655 60.438C3.931 60.9 4.233 61.353 4.553 61.786L4.88 61.544C4.569 61.121 4.273 60.679 4.004 60.229L3.655 60.438Z\"\n          />\n          <path\n            d=\"M2.196 55.868C2.068 55.359 1.964 54.838 1.888 54.321L1.485 54.38C1.564 54.912 1.67 55.446 1.8 55.967L2.196 55.868Z\"\n          />\n          <path\n            d=\"M2.272 57.516C2.452 58.02 2.661 58.523 2.891 59.012L3.259 58.837C3.034 58.361 2.83 57.87 2.654 57.379L2.272 57.516Z\"\n          />\n          <path\n            d=\"M1.307 51.973C1.307 52.24 1.314 52.506 1.327 52.77L1.733 52.751C1.721 52.493 1.714 52.233 1.714 51.973 1.714 51.706 1.721 51.439 1.734 51.171L1.328 51.151C1.314 51.426 1.307 51.7 1.307 51.973Z\"\n          />\n          <path\n            d=\"M2.03 48.796L1.631 48.716C1.577 48.987 1.529 49.257 1.49 49.528L1.892 49.588C1.931 49.324 1.977 49.059 2.03 48.796Z\"\n          />\n          <path\n            d=\"M68.939 57.8L68.532 57.792C68.527 58.06 68.512 58.326 68.488 58.59L68.893 58.627C68.918 58.354 68.934 58.079 68.939 57.8Z\"\n          />\n          <path\n            d=\"M66.054 65.168C66.455 64.716 66.822 64.23 67.146 63.724L66.804 63.505C66.491 63.992 66.137 64.461 65.75 64.897L66.054 65.168Z\"\n          />\n          <path\n            d=\"M61.485 67.862C60.942 68.072 60.38 68.239 59.813 68.361L59.897 68.759C60.486 68.633 61.068 68.459 61.632 68.241L61.485 67.862Z\"\n          />\n          <path\n            d=\"M67.624 61.965L67.998 62.127C68.238 61.574 68.436 60.998 68.585 60.414L68.191 60.313C68.047 60.876 67.856 61.432 67.624 61.965Z\"\n          />\n          <path\n            d=\"M64.49 66.107C64.04 66.476 63.558 66.811 63.057 67.104L63.262 67.456C63.782 67.152 64.282 66.804 64.748 66.422L64.49 66.107Z\"\n          />\n          <path\n            d=\"M58.076 68.588C57.812 68.601 57.547 68.607 57.276 68.6L57.268 69.007C57.346 69.009 57.424 69.009 57.503 69.009 57.702 69.009 57.9 69.005 58.097 68.994L58.076 68.588Z\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"19.028\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"28.795\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"22.284\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"25.539\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BookreaderIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BookreaderIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BookreaderIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BrainIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"74\"\n        viewBox=\"0 0 74 74\"\n        width=\"74\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M15.655 32.216C14.873 34.266 15.594 36.476 15.871 37.188 14.916 40.662 17.583 42.734 19.452 43.493 19.57 44.285 19.944 44.946 20.569 45.46 22.338 46.914 25.706 46.726 27.107 46.573 27.918 50.057 30.993 50.102 33.271 50.135 34.108 50.148 34.898 50.158 35.482 50.318 37.083 50.755 40.307 56.437 41.961 59.916L42.188 60.39 47.399 59.122 47.369 58.586C47.361 58.443 47.19 55.685 45.725 53.361 46.699 53.487 47.865 53.472 48.793 52.961 49.456 52.596 49.918 52.037 50.171 51.297 51.265 51.131 54.034 50.525 55.289 48.576 55.946 47.557 56.09 46.351 55.723 44.983 56.199 44.681 56.56 44.306 56.802 43.86 57.319 42.906 57.134 41.905 56.959 41.354 57.584 40.581 57.877 39.694 57.834 38.713 57.726 36.304 55.557 34.056 54.835 33.371 54.833 28.189 49.386 26.433 48.05 26.081 46.661 23.753 44.955 22.368 42.978 21.963 40.789 21.513 38.903 22.409 38.079 22.9 36.451 21.568 34.715 20.962 32.929 21.106 30.21 21.321 28.172 23.195 27.43 23.978 25.518 23.399 23.78 23.513 22.26 24.317 19.714 25.662 18.592 28.522 18.284 29.456 16.998 30.087 16.115 31.014 15.655 32.216ZM54.206 47.875C53.002 49.75 49.64 50.067 49.607 50.07L49.13 50.113 49.032 50.58C48.906 51.171 48.625 51.58 48.172 51.83 47.003 52.473 44.933 51.948 44.236 51.691L41.122 50.542 43.578 52.774C45.328 54.364 45.868 57.008 46.023 58.13L42.899 58.89C42.086 57.223 40.013 53.167 38.007 50.806 41.392 50.783 43.768 48.553 44.686 47.526 45.934 48.373 47.249 48.716 48.598 48.547 50.984 48.249 52.73 46.425 53.277 45.784 53.733 45.721 54.149 45.631 54.525 45.516 54.736 46.439 54.63 47.215 54.206 47.875ZM19.076 30.511L19.359 30.386 19.44 30.087C19.448 30.054 20.353 26.783 22.863 25.458 24.163 24.772 25.696 24.729 27.417 25.332L27.846 25.482 28.131 25.13C28.152 25.105 30.201 22.617 33.03 22.394 34.598 22.262 36.132 22.874 37.595 24.186L37.99 24.541 38.415 24.221C38.434 24.206 40.396 22.753 42.718 23.227 44.385 23.569 45.848 24.826 47.07 26.964L47.216 27.219 47.503 27.277C47.758 27.328 53.74 28.599 53.539 33.624L53.526 33.934 53.76 34.137C53.786 34.16 56.444 36.497 56.544 38.774 56.576 39.532 56.317 40.186 55.752 40.772L55.441 41.1 55.639 41.506C55.644 41.516 56.095 42.467 55.663 43.252 55.293 43.925 54.326 44.368 52.868 44.533L52.593 44.564 52.426 44.785C52.41 44.807 50.748 46.976 48.439 47.265 47.261 47.413 46.099 47.033 44.982 46.139L44.456 45.718 44.058 46.263C44.027 46.304 40.969 50.393 36.403 49.331 36.204 49.212 36.01 49.124 35.822 49.072 35.08 48.87 34.21 48.857 33.291 48.843 30.512 48.803 28.66 48.567 28.27 45.763L28.179 45.106 27.525 45.215C26.317 45.418 22.861 45.674 21.391 44.463 20.945 44.096 20.722 43.62 20.705 43.01L20.692 42.555 20.259 42.415C20.085 42.358 16.02 40.989 17.17 37.346L17.244 37.11 17.142 36.885C17.132 36.862 16.125 34.593 16.864 32.668 17.227 31.722 17.972 30.996 19.076 30.511Z\"\n          />\n          <path\n            d=\"M29.103 36.516L29.169 36.132C29.326 35.223 30.033 32.72 31.407 32.063 31.984 31.786 32.643 31.863 33.418 32.293 34.401 32.839 35.259 33.31 36.047 33.713 36.049 33.714 36.05 33.716 36.053 33.717L36.053 33.716C37.17 34.287 38.142 34.717 39.096 35.005 38.329 35.417 37.347 35.889 36.374 36.198 36.114 36.282 35.42 36.502 35.283 37.117 35.145 37.734 35.634 38.186 36.152 38.664 36.746 39.216 37.422 39.839 37.381 40.654 37.366 40.964 37.266 41.08 37.192 41.14 36.726 41.518 35.367 41.301 34.275 41.126 33.587 41.016 32.938 40.912 32.375 40.911L32.373 42.202C32.834 42.202 33.434 42.298 34.071 42.399 34.808 42.518 35.559 42.638 36.239 42.638 36.929 42.638 37.546 42.514 38.006 42.141 38.417 41.807 38.64 41.329 38.67 40.717 38.74 39.3 37.71 38.347 37.028 37.717 36.936 37.631 36.827 37.53 36.733 37.438 36.744 37.435 36.754 37.431 36.765 37.428 38.612 36.841 40.432 35.754 41.018 35.387 41.65 35.45 42.312 35.461 43.039 35.412 45.929 35.232 46.626 36.628 47.245 38.486 47.817 40.203 48.936 41.642 50.027 42.067 50.276 42.165 50.502 42.202 50.702 42.202 51.015 42.202 51.266 42.11 51.445 42.01L50.818 40.882C50.791 40.897 50.705 40.944 50.494 40.863 49.883 40.626 48.966 39.568 48.468 38.076 47.916 36.422 47.119 34.686 44.825 34.222 45.601 32.809 47.098 32.908 47.118 32.914L47.494 31.68C47.109 31.548 46.152 31.587 45.236 32.074 44.65 32.384 43.901 32.986 43.459 34.107 43.294 34.109 43.13 34.111 42.954 34.123 40.617 34.271 39.029 33.785 36.621 32.555 36.333 32.097 37.26 29.716 38.577 27.541L37.473 26.872C37.114 27.466 35.591 30.068 35.34 31.876 34.933 31.655 34.506 31.419 34.045 31.163 32.891 30.522 31.817 30.433 30.849 30.896 29.551 31.518 28.787 33.031 28.358 34.236 27.23 32.707 25.459 32.08 24.678 31.81 24.559 31.768 24.467 31.738 24.414 31.714L23.839 32.87C23.917 32.909 24.061 32.962 24.255 33.03 25.082 33.316 26.897 33.959 27.681 35.617L21.328 37.668 21.725 38.896 29.103 36.516Z\"\n          />\n          <polygon\n            points=\"56.163 20.173 57.454 20.173 57.454 26.615 56.163 26.615\"\n            transform=\"translate(56.81 23.39)rotate(29.4)translate(-56.81 -23.39)\"\n          />\n          <rect\n            height=\"5.027\"\n            width=\"1.291\"\n            x=\"43.272\"\n            y=\"13.95\"\n          />\n          <polygon\n            points=\"23.129 16.328 28.376 16.328 28.376 17.618 23.129 17.618\"\n            transform=\"translate(25.75 16.97)rotate(51.75)translate(-25.75 -16.97)\"\n          />\n          <polygon\n            points=\"11.465 24.798 16.075 24.798 16.075 26.089 11.465 26.089\"\n            transform=\"translate(13.77 25.44)rotate(-160.74)translate(-13.77 -25.44)\"\n          />\n          <polygon\n            points=\"9.55 46.375 15.545 46.375 15.545 47.666 9.55 47.666\"\n            transform=\"translate(12.55 47.02)rotate(-44.14)translate(-12.55 -47.02)\"\n          />\n          <polygon\n            points=\"18.316 53.554 24.093 53.554 24.093 54.845 18.316 54.845\"\n            transform=\"translate(21.2 54.2)rotate(-68.13)translate(-21.2 -54.2)\"\n          />\n          <polygon\n            points=\"32.029 54.895 33.32 54.895 33.32 60.068 32.029 60.068\"\n            transform=\"translate(32.67 57.48)rotate(-173.42)translate(-32.67 -57.48)\"\n          />\n          <polygon\n            points=\"54.441 54.818 60.545 54.818 60.545 56.109 54.441 56.109\"\n            transform=\"translate(57.493145 55.46)rotate(-137.92)translate(-57.49 -55.46)\"\n          />\n          <rect\n            height=\"1.291\"\n            width=\"5.208\"\n            x=\"59.758\"\n            y=\"42.34\"\n          />\n          <rect\n            height=\"1.291\"\n            width=\"3.511\"\n            x=\"9.035\"\n            y=\"35.377\"\n          />\n          <polygon\n            points=\"61.145 30.206 62.437 30.206 62.437 35.209 61.145 35.209\"\n            transform=\"translate(61.79 32.71)rotate(-125.47)translate(-61.79 -32.71)\"\n          />\n          <path\n            d=\"M21.745 71.842C21.745 70.778 20.879 69.913 19.816 69.913 18.752 69.913 17.886 70.778 17.886 71.842 17.886 72.905 18.752 73.771 19.816 73.771 20.879 73.771 21.745 72.906 21.745 71.842ZM18.316 71.842C18.316 71.015 18.988 70.343 19.815 70.343 20.642 70.343 21.314 71.015 21.314 71.842 21.314 72.669 20.642 73.341 19.815 73.341 18.988 73.341 18.316 72.669 18.316 71.842Z\"\n          />\n          <path\n            d=\"M2.85 19.63L1.998 21.358 0.089 21.634 1.471 22.979 1.144 24.878 2.849 23.981 4.554 24.878 4.229 22.978 5.609 21.633 3.703 21.357 2.85 19.63ZM3.768 22.828L3.984 24.091 2.85 23.496 1.717 24.091 1.933 22.828 1.015 21.934 2.284 21.75 2.85 20.6 3.418 21.75 4.685 21.934 3.768 22.828Z\"\n          />\n          <path\n            d=\"M20.458 2.758L19.868 1.565 19.28 2.758 17.964 2.949 18.916 3.877 18.691 5.188 19.867 4.569 21.045 5.187 20.82 3.877 21.772 2.949 20.458 2.758ZM20.476 4.402L19.869 4.084 19.264 4.401 19.379 3.728 18.89 3.249 19.567 3.151 19.87 2.537 20.174 3.151 20.852 3.249 20.361 3.728 20.476 4.402Z\"\n          />\n          <path\n            d=\"M68.556 54.266L69.508 55.195 69.283 56.506 70.46 55.886 71.637 56.506 71.413 55.195 72.364 54.266 71.049 54.074 70.459 52.882 69.87 54.074 68.556 54.266ZM70.461 53.855L70.765 54.468 71.442 54.567 70.952 55.046 71.068 55.72 70.462 55.402 69.856 55.72 69.971 55.046 69.482 54.567 70.159 54.468 70.461 53.855Z\"\n          />\n          <path\n            d=\"M70.461 7.86L69.685 10.25 67.173 10.25 69.204 11.727 68.428 14.115 70.461 12.639 72.492 14.115 71.717 11.727 73.748 10.25 71.236 10.25 70.461 7.86ZM71.211 11.563L71.674 12.99 70.461 12.108 69.247 12.99 69.71 11.563 68.496 10.681 69.997 10.681 70.461 9.254 70.924 10.681 72.425 10.681 71.211 11.563Z\"\n          />\n          <path\n            d=\"M63.615 0.23C62.552 0.23 61.686 1.095 61.686 2.159 61.686 3.222 62.552 4.088 63.615 4.088 64.679 4.088 65.544 3.222 65.544 2.159 65.544 1.095 64.679 0.23 63.615 0.23ZM63.615 3.658C62.788 3.658 62.116 2.986 62.116 2.159 62.116 1.332 62.788 0.66 63.615 0.66 64.442 0.66 65.114 1.332 65.114 2.159 65.114 2.986 64.442 3.658 63.615 3.658Z\"\n          />\n          <path\n            d=\"M70.246 37.848C70.246 38.696 70.935 39.385 71.783 39.385 72.63 39.385 73.319 38.696 73.319 37.848 73.319 37.001 72.63 36.312 71.783 36.312 70.935 36.312 70.246 37.001 70.246 37.848ZM71.783 36.742C72.393 36.742 72.889 37.238 72.889 37.848 72.889 38.458 72.393 38.955 71.783 38.955 71.173 38.955 70.676 38.458 70.676 37.848 70.676 37.238 71.173 36.742 71.783 36.742Z\"\n          />\n          <path\n            d=\"M8.396 8.427C7.276 8.427 6.366 9.339 6.366 10.458 6.366 11.578 7.277 12.49 8.396 12.49 9.516 12.49 10.427 11.578 10.427 10.458 10.427 9.339 9.517 8.427 8.396 8.427ZM8.396 12.06C7.514 12.06 6.796 11.342 6.796 10.459 6.796 9.577 7.514 8.858 8.396 8.858 9.278 8.858 9.997 9.577 9.997 10.459 9.997 11.342 9.278 12.06 8.396 12.06Z\"\n          />\n          <path\n            d=\"M15.377 71.631C15.097 71.575 14.821 71.512 14.547 71.444L14.441 71.86C14.721 71.931 15.004 71.994 15.29 72.053L15.377 71.631Z\"\n          />\n          <path\n            d=\"M8.288 68.943C8.741 69.282 9.22 69.603 9.71 69.896L9.932 69.528C9.454 69.241 8.987 68.928 8.545 68.598L8.288 68.943Z\"\n          />\n          <path\n            d=\"M6.968 67.853L7.257 67.535C6.846 67.16 6.45 66.763 6.079 66.351L5.76 66.64C6.14 67.062 6.546 67.469 6.968 67.853Z\"\n          />\n          <path\n            d=\"M1.243 54.943C1.243 55.225 1.25 55.505 1.263 55.786L1.693 55.766C1.68 55.493 1.674 55.219 1.674 54.944 1.674 54.662 1.68 54.379 1.694 54.097L1.264 54.075C1.25 54.364 1.243 54.654 1.243 54.943Z\"\n          />\n          <path\n            d=\"M12.803 71.363L12.947 70.957C12.427 70.771 11.907 70.555 11.405 70.317L11.22 70.705C11.736 70.95 12.268 71.171 12.803 71.363Z\"\n          />\n          <path\n            d=\"M1.431 57.488C1.515 58.052 1.628 58.617 1.766 59.165L2.182 59.061C2.048 58.526 1.939 57.976 1.856 57.424L1.431 57.488Z\"\n          />\n          <path\n            d=\"M3.308 62.199C3.072 61.698 2.857 61.179 2.669 60.657L2.264 60.801C2.457 61.337 2.676 61.869 2.92 62.382L3.308 62.199Z\"\n          />\n          <path\n            d=\"M4.095 63.671L3.725 63.891C4.016 64.377 4.335 64.857 4.675 65.315L5.021 65.06C4.69 64.612 4.378 64.145 4.095 63.671Z\"\n          />\n          <path\n            d=\"M1.437 52.358L1.862 52.421C1.904 52.142 1.952 51.864 2.008 51.585L1.587 51.499C1.528 51.786 1.479 52.072 1.437 52.358Z\"\n          />\n          <path\n            d=\"M72.74 61.102L72.31 61.095C72.305 61.378 72.289 61.66 72.264 61.939L72.692 61.978C72.719 61.688 72.735 61.397 72.74 61.102Z\"\n          />\n          <path\n            d=\"M69.689 68.891C70.113 68.415 70.502 67.902 70.845 67.367L70.482 67.134C70.152 67.651 69.778 68.146 69.368 68.606L69.689 68.891Z\"\n          />\n          <path\n            d=\"M63.092 72.267L63.181 72.687C63.804 72.555 64.421 72.37 65.016 72.14L64.859 71.738C64.287 71.962 63.692 72.139 63.092 72.267Z\"\n          />\n          <path\n            d=\"M68.31 70.217L68.038 69.884C67.564 70.272 67.053 70.627 66.523 70.938L66.739 71.31C67.29 70.987 67.818 70.619 68.31 70.217Z\"\n          />\n          <path\n            d=\"M71.35 65.505L71.745 65.677C71.999 65.091 72.208 64.482 72.366 63.866L71.95 63.759C71.796 64.353 71.595 64.941 71.35 65.505Z\"\n          />\n          <path\n            d=\"M60.412 72.52L60.403 72.95C60.484 72.952 60.565 72.953 60.645 72.953 60.857 72.953 61.068 72.947 61.279 72.936L61.257 72.506C60.978 72.52 60.698 72.528 60.412 72.52Z\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"23.557\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"30.441\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"20.115\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"28.056\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BrainIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BrainIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BrainIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CVLToken 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"33\"\n        viewBox=\"0 0 32 33\"\n        width=\"32\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <ellipse\n            cx=\"17\"\n            cy=\"15.5\"\n            rx=\"13\"\n            ry=\"15.5\"\n            stroke=\"#FFFFFF\"\n          />\n          <path\n            d=\"M15 .172A11.117 11.117 0 0 0 13.051 0C5.864 0 0 6.921 0 15.5S5.864 31 13.051 31c.658 0 1.309-.058 1.949-.172C8.558 29.71 3.642 23.26 3.642 15.5 3.642 7.74 8.558 1.29 15 .172z\"\n            stroke=\"#FFFFFF\"\n          />\n          <text\n            fill=\"#FFFFFF\"\n            fontFamily=\"LibreFranklin-Bold, Libre Franklin\"\n            fontSize=\"9\"\n          >\n            <tspan\n              x=\"8\"\n              y=\"18\"\n            >\n              CVL\n            </tspan>\n          </text>\n          <path\n            d=\"M8 1h3v1.227H8zM3.813 3.864H8V5.09H3.812zM2.125 6.727H5.5v1.227H2.125zM0 12.455h3.813v1.227H0zM0 15.318h3.813v1.227H0zM0 18.182h3.813v1.227H0zM1 21.046h3.938v1.227H1zM2.969 23.909h3.094v1.227H2.969zM5.063 26.773h3.812V28H5.062zM1 9.59h3.375v1.228H1z\"\n            fill=\"#FFFFFF\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CVLToken\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CvlToken\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CvlToken\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons Chevron 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height={14}\n        version=\"1.1\"\n        viewBox=\"0 0 14 14\"\n        width={14}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"0 0 18 0 18 18 0 18\"\n          />\n          <polygon\n            className=\"chevron-icon\"\n            fill=\"#2B56FF\"\n            fillRule=\"nonzero\"\n            points=\"7.5 4.5 6.4425 5.5575 9.8775 9 6.4425 12.4425 7.5 13.5 12 9\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Chevron\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Chevron\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Chevron\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CircleLockIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"24px\"\n        version=\"1.1\"\n        viewBox=\"0 0 24 24\"\n        width=\"24px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <circle\n            cx=\"12\"\n            cy=\"12\"\n            id=\"Oval-2\"\n            r=\"9\"\n            stroke=\"#8B8581\"\n            strokeWidth=\"2\"\n          />\n          <path\n            d=\"M9.49609375,16.6660156 L14.5742188,16.6660156 C15.2480469,16.6660156 15.5703125,16.3339844 15.5703125,15.6015625 L15.5703125,11.6953125 C15.5703125,11.0507812 15.3261719,10.71875 14.8085938,10.640625 L14.8085938,9.47851562 C14.8085938,7.57421875 13.65625,6.34375 12.0351562,6.34375 C10.4140625,6.34375 9.26171875,7.57421875 9.26171875,9.47851562 L9.26171875,10.6503906 C8.74414062,10.7285156 8.5,11.0605469 8.5,11.6953125 L8.5,15.6015625 C8.5,16.3339844 8.82226562,16.6660156 9.49609375,16.6660156 Z M10.2773438,9.37109375 C10.2773438,8.140625 10.9804688,7.33007812 12.0351562,7.33007812 C13.0898438,7.33007812 13.7929688,8.140625 13.7929688,9.37109375 L13.7929688,10.6308594 L10.2773438,10.6308594 L10.2773438,9.37109375 Z\"\n            fill=\"#8B8581\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CircleLockIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CircleLockIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CircleLockIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CivilTutorialIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-1.5 -1.5)\"\n          >\n            <polygon\n              points=\"0 0 22.909 0 22.909 22.909 0 22.909\"\n            />\n            <path\n              d=\"M14.318 3.818L14.318 10.5 4.935 10.5 4.372 11.063 3.818 11.617 3.818 3.818 14.318 3.818ZM15.273 1.909L2.864 1.909C2.339 1.909 1.909 2.339 1.909 2.864L1.909 16.227 5.727 12.409 15.273 12.409C15.798 12.409 16.227 11.98 16.227 11.455L16.227 2.864C16.227 2.339 15.798 1.909 15.273 1.909ZM20.045 5.727L18.136 5.727 18.136 14.318 5.727 14.318 5.727 16.227C5.727 16.752 6.157 17.182 6.682 17.182L17.182 17.182 21 21 21 6.682C21 6.157 20.57 5.727 20.045 5.727Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CivilTutorialIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CivilTutorialIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CivilTutorialIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ClockIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#8B8581\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M9 0C4.05 0 0 4.05 0 9 0 13.95 4.05 18 9 18 13.95 18 18 13.95 18 9 18 4.05 13.95 0 9 0L9 0ZM9 16.2C5.04 16.2 1.8 12.96 1.8 9 1.8 5.04 5.04 1.8 9 1.8 12.96 1.8 16.2 5.04 16.2 9 16.2 12.96 12.96 16.2 9 16.2L9 16.2Z\"\n          />\n          <polygon\n            points=\"9.45 4.5 8.1 4.5 8.1 9.9 12.78 12.78 13.5 11.61 9.45 9.18\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ClockIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ClockIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ClockIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CloseXIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"42\"\n        viewBox=\"0 0 42 42\"\n        width=\"42\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M20.571 18.657l6.01-6.01 1.415 1.414-6.01 6.01 6.01 6.01-1.415 1.415-6.01-6.01-6.01 6.01-1.415-1.415 6.01-6.01-6.01-6.01 1.415-1.415 6.01 6.01z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CloseXIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CloseXIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CloseXIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CommitVoteSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <path\n            d=\"M76.965 58.739C76.832 58.365 76.478 58.115 76.081 58.116L68.863 58.116 68.863 47.561C68.86 45.671 67.328 44.14 65.438 44.136L64.193 44.136 64.193 40.736C64.191 39.426 63.698 38.163 62.81 37.199L44.826 18.611C43.049 16.776 40.214 16.472 38.088 17.889L29.489 23.624C28.003 24.605 27.209 26.349 27.446 28.114L29.121 40.923C29.148 42.637 29.774 44.287 30.89 45.587L33.941 49.137 33.941 58.098 27.919 58.098C27.522 58.096 27.168 58.346 27.035 58.72L22.053 73.709C21.952 73.996 21.997 74.314 22.172 74.561 22.348 74.809 22.634 74.956 22.938 74.955L81.062 74.955C81.366 74.956 81.652 74.809 81.828 74.561 82.003 74.314 82.048 73.996 81.947 73.709L76.965 58.739ZM30.989 40.855C30.992 40.817 30.992 40.78 30.989 40.742L29.308 27.877C29.169 26.813 29.654 25.764 30.554 25.181L39.122 19.445C40.498 18.529 42.331 18.725 43.481 19.912L61.459 38.476C62.024 39.093 62.337 39.9 62.337 40.736L62.337 44.111 45.057 44.111 43.811 41.695C43.579 41.234 43.017 41.049 42.556 41.281 42.096 41.513 41.91 42.075 42.142 42.536L49.167 56.441C49.792 57.684 49.587 59.184 48.651 60.214 47.715 61.244 46.242 61.591 44.945 61.087L44.739 61.006C44.031 60.73 43.436 60.223 43.052 59.567L38.412 51.584C38.253 51.311 38.07 51.052 37.864 50.812L32.31 44.373C31.468 43.393 31 42.146 30.989 40.855ZM36.438 52.063C36.572 52.218 36.69 52.385 36.793 52.562L41.414 60.508C42.01 61.529 42.934 62.319 44.035 62.749L44.241 62.83C44.85 63.068 45.499 63.191 46.153 63.191 47.966 63.184 49.647 62.239 50.596 60.693 51.545 59.147 51.626 57.221 50.811 55.601L45.997 45.98 65.438 45.98C66.298 45.98 66.995 46.677 66.995 47.536L66.995 67.196 35.809 67.196 35.809 51.31 36.438 52.063ZM24.233 73.093L28.592 59.972 33.941 59.972 33.941 67.196 31.207 67.196C30.692 67.196 30.273 67.614 30.273 68.13 30.273 68.646 30.692 69.064 31.207 69.064L71.46 69.064C71.976 69.064 72.394 68.646 72.394 68.13 72.394 67.614 71.976 67.196 71.46 67.196L68.863 67.196 68.863 59.966 75.402 59.966 79.761 73.086 24.233 73.093Z\"\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n          />\n          <path\n            d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71Z\"\n            fill=\"#FFFFFF\"\n            stroke=\"#FFFFFF\"\n            strokeWidth=\"3\"\n          />\n          <path\n            d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71ZM83.6 89L77.6 83 79.28 81.32 83.6 85.64 92.72 76.52 94.4 78.2 83.6 89 83.6 89Z\"\n            fill=\"#2B56FF\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CommitVoteSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CommitVoteSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CommitVoteSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DashboardNewsroomApplicationIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"34\"\n        version=\"1.1\"\n        viewBox=\"0 0 34 34\"\n        width=\"34\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <defs>\n          <rect\n            height=\"875\"\n            width=\"760\"\n            x=\"518\"\n            y=\"148\"\n          />\n          <filter\n            filterUnits=\"objectBoundingBox\"\n            height=\"101.4%\"\n            width=\"101.6%\"\n            x=\"-0.8%\"\n            y=\"-0.7%\"\n          >\n            <feOffset\n              dx=\"0\"\n              dy=\"0\"\n              in=\"SourceAlpha\"\n              result=\"shadowOffsetOuter1\"\n            />\n            <feGaussianBlur\n              in=\"shadowOffsetOuter1\"\n              result=\"shadowBlurOuter1\"\n              stdDeviation=\"2\"\n            />\n            <feComposite\n              in=\"shadowBlurOuter1\"\n              in2=\"SourceAlpha\"\n              operator=\"out\"\n              result=\"shadowBlurOuter1\"\n            />\n            <feColorMatrix\n              in=\"shadowBlurOuter1\"\n              type=\"matrix\"\n              values=\"0 0 0 0 0.768627451   0 0 0 0 0.760784314   0 0 0 0 0.752941176  0 0 0 1 0\"\n            />\n          </filter>\n        </defs>\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-887.000000, -288.000000)\"\n          >\n            <rect\n              fill=\"#FFFFFF\"\n              height=\"1352\"\n              width=\"1440\"\n              x=\"0\"\n              y=\"0\"\n            />\n            <polygon\n              fill=\"#2B56FF\"\n              fillOpacity=\"0.06\"\n              points=\"0 67 1440 67 1440 664 0 664\"\n            />\n            <g>\n              <use\n                fill=\"black\"\n                fillOpacity=\"1\"\n                filter=\"url(#filter-2)\"\n              />\n              <rect\n                fillRule=\"evenodd\"\n                height=\"874\"\n                stroke=\"#E9E9EA\"\n                width=\"759\"\n                x=\"518.5\"\n                y=\"148.5\"\n              />\n            </g>\n            <g\n              transform=\"translate(662.000000, 281.000000)\"\n            >\n              <g\n                transform=\"translate(225.000000, 7.000000)\"\n              >\n                <path\n                  d=\"M0,0 L26,0 L26,27 L0,27 L0,0 Z M3,3 L3,24 L23,24 L23,3 L3,3 Z\"\n                  fill=\"#2B56FF\"\n                />\n                <path\n                  d=\"M6,6 L20,6 L20,13 L6,13 L6,6 Z M8,8 L8,11 L18,11 L18,8 L8,8 Z\"\n                  fill=\"#2B56FF\"\n                />\n                <polygon\n                  fill=\"#2B56FF\"\n                  points=\"6 14.95 20 14.95 20 16.95 6 16.95\"\n                />\n                <polygon\n                  fill=\"#2B56FF\"\n                  points=\"6 18.85 20 18.85 20 20.85 6 20.85\"\n                />\n                <g\n                  transform=\"translate(16.000000, 15.950000)\"\n                >\n                  <circle\n                    cx=\"9.2607145\"\n                    cy=\"9.2607145\"\n                    fill=\"#2B56FF\"\n                    fillRule=\"nonzero\"\n                    r=\"8.2607145\"\n                  />\n                  <path\n                    d=\"M9.9,4.5 L8.1,4.5 L8.1,8.1 L4.5,8.1 L4.5,9.9 L8.1,9.9 L8.1,13.5 L9.9,13.5 L9.9,9.9 L13.5,9.9 L13.5,8.1 L9.9,8.1 L9.9,4.5 L9.9,4.5 Z M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M9,16.2 C5.04,16.2 1.8,12.96 1.8,9 C1.8,5.04 5.04,1.8 9,1.8 C12.96,1.8 16.2,5.04 16.2,9 C16.2,12.96 12.96,16.2 9,16.2 L9,16.2 Z\"\n                    fill=\"#FFFFFF\"\n                  />\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DashboardNewsroomApplicationIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DashboardNewsroomApplicationIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DashboardNewsroomApplicationIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DisclosureArrowIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"12\"\n        viewBox=\"0 0 8 12\"\n        width=\"8\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-693, -56)\"\n          >\n            <polygon\n              points=\"694.4 56 693 57.4 697.6 62 693 66.6 694.4 68 700.4 62\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DisclosureArrowIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DisclosureArrowIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DisclosureArrowIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DropdownArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"5\"\n        viewBox=\"0 0 10 5\"\n        width=\"10\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <polygon\n          fill=\"#3F3C39\"\n          points=\"0,0 10,0 5,5\"\n          stroke=\"none\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DropdownArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DropdownArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DropdownArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons EmbedIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"32px\"\n        version=\"1.1\"\n        viewBox=\"0 0 32 32\"\n        width=\"32px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"4 4 28 4 28 28 4 28\"\n          />\n          <path\n            d=\"M9.42130253,10.2684345 C10.3266052,9.36313187 11.7034439,10.7399706 10.7981413,11.6452732 L6.35806996,16.0849552 L10.7981413,20.5250265 C11.7034439,21.4303291 10.3266052,22.8071678 9.42130253,21.9018652 L4.29281186,16.7733745 C3.91277945,16.3933421 3.91277945,15.7765682 4.29281186,15.3965358 L9.42130253,10.2684345 Z M17.0772424,7.74721537 C17.4074345,6.51211003 19.2857914,7.01401759 18.9555993,8.2495123 L14.6222174,24.4234737 C14.2920253,25.658579 12.4136684,25.1566715 12.7438605,23.9211768 L17.0772424,7.74721537 Z M20.9017079,11.6452732 C19.9964053,10.7399706 21.373244,9.36313187 22.2785466,10.2684345 L27.4070373,15.3965358 C27.7870697,15.7765682 27.7870697,16.3933421 27.4070373,16.7733745 L22.2785466,21.9018652 C21.373244,22.8071678 19.9964053,21.4303291 20.9017079,20.5250265 L25.3417792,16.0849552 L20.9017079,11.6452732 Z\"\n            fill=\"#191919\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            EmbedIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    EmbedIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              EmbedIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ErrorIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h28v28h-28z\"\n          />\n          <path\n            d=\"m12.8333333 17.5h2.3333334v2.3333333h-2.3333334zm0-9.33333333h2.3333334v7.00000003h-2.3333334zm1.155-5.83333334c-6.43999997 0-11.65499997 5.22666667-11.65499997 11.66666667s5.215 11.6666667 11.65499997 11.6666667c6.4516667 0 11.6783334-5.2266667 11.6783334-11.6666667s-5.2266667-11.66666667-11.6783334-11.66666667zm.0116667 20.99999997c-5.15666667 0-9.33333333-4.1766666-9.33333333-9.3333333 0-5.15666667 4.17666666-9.33333333 9.33333333-9.33333333 5.1566667 0 9.3333333 4.17666666 9.3333333 9.33333333 0 5.1566667-4.1766666 9.3333333-9.3333333 9.3333333z\"\n            fill=\"#f2524a\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ErrorIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ErrorIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ErrorIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExamIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"70\"\n        viewBox=\"0 0 70 70\"\n        width=\"70\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M13.683 62.064L56.317 62.064 56.317 20.618 49.735 12.209 46.574 8.17 46.39 7.936 13.683 7.936 13.683 62.064ZM46.704 10.317L48.929 13.161 54.453 20.219 46.704 20.219 46.704 10.317ZM14.903 9.157L45.483 9.157 45.483 21.44 55.097 21.44 55.097 60.843 14.903 60.843 14.903 9.157Z\"\n          />\n          <path\n            d=\"M47.632 31.191L43.315 27.832 27.587 48.063 27.517 48.153 25.328 55.424 26.593 54.663 31.156 53.733 32.58 55.747 34.976 53.067 36.437 54.891 43.809 50.257 43.16 49.223 36.708 53.277 35.027 51.178 32.692 53.789 31.693 52.379 29.723 52.779 31.837 51.507 47.632 31.191ZM27.408 52.747L28.396 49.466 30.346 50.98 27.408 52.747ZM28.925 48.33L43.529 29.546 45.919 31.406 31.316 50.188 28.925 48.33Z\"\n          />\n          <rect\n            height=\"1.221\"\n            width=\"12.216\"\n            x=\"32.635\"\n            y=\"22.613\"\n          />\n          <rect\n            height=\"1.221\"\n            width=\"3.936\"\n            x=\"32.635\"\n            y=\"33.31\"\n          />\n          <path\n            d=\"M27.145 26.747C29.087 26.747 30.668 25.167 30.668 23.224 30.668 21.281 29.087 19.701 27.145 19.701 25.202 19.701 23.622 21.281 23.622 23.224 23.622 25.167 25.202 26.747 27.145 26.747ZM27.145 20.922C28.414 20.922 29.447 21.955 29.447 23.224 29.447 24.493 28.414 25.526 27.145 25.526 25.875 25.526 24.843 24.493 24.843 23.224 24.843 21.955 25.876 20.922 27.145 20.922Z\"\n          />\n          <path\n            d=\"M30.668 33.921C30.668 31.978 29.087 30.398 27.145 30.398 25.202 30.398 23.622 31.978 23.622 33.921 23.622 35.864 25.202 37.443 27.145 37.443 29.087 37.443 30.668 35.864 30.668 33.921ZM24.843 33.921C24.843 32.651 25.876 31.619 27.145 31.619 28.413 31.619 29.447 32.652 29.447 33.921 29.447 35.19 28.414 36.223 27.145 36.223 25.875 36.223 24.843 35.19 24.843 33.921Z\"\n          />\n          <path\n            d=\"M20.635 67.959C20.635 66.953 19.816 66.134 18.81 66.134 17.804 66.134 16.985 66.953 16.985 67.959 16.985 68.965 17.804 69.783 18.81 69.783 19.816 69.783 20.635 68.965 20.635 67.959ZM17.391 67.959C17.391 67.176 18.027 66.541 18.809 66.541 19.59 66.541 20.227 67.176 20.227 67.959 20.227 68.741 19.59 69.377 18.809 69.377 18.027 69.377 17.391 68.741 17.391 67.959Z\"\n          />\n          <path\n            d=\"M2.761 18.569L1.954 20.202 0.151 20.464 1.456 21.736 1.148 23.533 2.761 22.685 4.374 23.533 4.067 21.736 5.372 20.464 3.568 20.202 2.761 18.569ZM3.629 21.594L3.833 22.789 2.76 22.226 1.687 22.789 1.892 21.594 1.026 20.748 2.225 20.574 2.761 19.487 3.297 20.574 4.496 20.748 3.629 21.594Z\"\n          />\n          <path\n            d=\"M19.417 2.609L18.86 1.481 18.303 2.609 17.058 2.789 17.959 3.668 17.747 4.907 18.86 4.322 19.974 4.907 19.761 3.668 20.662 2.789 19.417 2.609ZM19.433 4.163L18.86 3.863 18.287 4.163 18.396 3.526 17.932 3.073 18.574 2.981 18.86 2.4 19.147 2.981 19.788 3.073 19.324 3.526 19.433 4.163Z\"\n          />\n          <path\n            d=\"M64.915 51.333L65.816 52.211 65.604 53.452 66.717 52.865 67.831 53.452 67.618 52.211 68.519 51.333 67.274 51.151 66.717 50.024 66.161 51.151 64.915 51.333ZM66.717 50.944L67.004 51.524 67.645 51.618 67.181 52.07 67.29 52.708 66.717 52.407 66.144 52.708 66.253 52.07 65.789 51.618 66.431 51.524 66.717 50.944Z\"\n          />\n          <path\n            d=\"M66.717 7.435L65.983 9.696 63.607 9.696 65.529 11.093 64.795 13.352 66.717 11.955 68.64 13.352 67.906 11.093 69.827 9.696 67.452 9.696 66.717 7.435ZM67.427 10.938L67.866 12.287 66.717 11.454 65.569 12.287 66.008 10.938 64.859 10.104 66.279 10.104 66.718 8.754 67.157 10.104 68.577 10.104 67.427 10.938Z\"\n          />\n          <path\n            d=\"M60.242 0.217C59.235 0.217 58.417 1.036 58.417 2.042 58.417 3.048 59.235 3.867 60.242 3.867 61.248 3.867 62.066 3.048 62.066 2.042 62.066 1.036 61.248 0.217 60.242 0.217ZM60.242 3.46C59.46 3.46 58.824 2.824 58.824 2.042 58.824 1.26 59.46 0.624 60.242 0.624 61.023 0.624 61.659 1.26 61.659 2.042 61.659 2.824 61.023 3.46 60.242 3.46Z\"\n          />\n          <path\n            d=\"M66.514 35.803C66.514 36.604 67.166 37.256 67.968 37.256 68.769 37.256 69.421 36.604 69.421 35.803 69.421 35.001 68.769 34.349 67.968 34.349 67.166 34.349 66.514 35.001 66.514 35.803ZM67.968 34.756C68.545 34.756 69.014 35.225 69.014 35.803 69.014 36.38 68.545 36.849 67.968 36.849 67.39 36.849 66.921 36.38 66.921 35.803 66.921 35.225 67.39 34.756 67.968 34.756Z\"\n          />\n          <path\n            d=\"M6.086 9.893C6.086 10.953 6.948 11.815 8.008 11.815 9.067 11.815 9.929 10.952 9.929 9.893 9.929 8.834 9.067 7.972 8.008 7.972 6.948 7.972 6.086 8.834 6.086 9.893ZM8.008 8.379C8.843 8.379 9.522 9.058 9.522 9.893 9.522 10.728 8.843 11.408 8.008 11.408 7.173 11.408 6.493 10.728 6.493 9.893 6.493 9.058 7.173 8.379 8.008 8.379Z\"\n          />\n          <path\n            d=\"M14.53 68.158L14.61 67.759C14.346 67.706 14.085 67.647 13.826 67.582L13.727 67.976C13.991 68.043 14.26 68.103 14.53 68.158Z\"\n          />\n          <path\n            d=\"M12.175 67.505L12.313 67.122C11.819 66.945 11.329 66.742 10.853 66.517L10.679 66.884C11.167 67.115 11.67 67.324 12.175 67.505Z\"\n          />\n          <path\n            d=\"M6.93 63.885C6.541 63.53 6.166 63.154 5.815 62.765L5.513 63.038C5.872 63.436 6.257 63.822 6.656 64.185L6.93 63.885Z\"\n          />\n          <path\n            d=\"M9.461 65.771C9.01 65.5 8.568 65.204 8.148 64.891L7.905 65.216C8.335 65.538 8.787 65.842 9.251 66.118L9.461 65.771Z\"\n          />\n          <path\n            d=\"M3.938 60.228L3.59 60.438C3.867 60.902 4.169 61.355 4.488 61.785L4.815 61.543C4.504 61.124 4.209 60.682 3.938 60.228Z\"\n          />\n          <path\n            d=\"M1.42 54.379C1.498 54.909 1.605 55.444 1.736 55.967L2.131 55.868C2.002 55.357 1.899 54.836 1.822 54.32L1.42 54.379Z\"\n          />\n          <path\n            d=\"M1.242 51.973C1.242 52.239 1.249 52.504 1.262 52.769L1.668 52.751C1.656 52.493 1.649 52.233 1.649 51.973 1.649 51.707 1.656 51.439 1.669 51.172L1.262 51.151C1.249 51.426 1.242 51.7 1.242 51.973Z\"\n          />\n          <path\n            d=\"M3.194 58.836C2.968 58.36 2.765 57.87 2.589 57.378L2.206 57.515C2.387 58.019 2.595 58.522 2.826 59.011L3.194 58.836Z\"\n          />\n          <path\n            d=\"M1.424 49.527L1.827 49.588C1.866 49.324 1.912 49.06 1.965 48.796L1.566 48.716C1.512 48.987 1.464 49.257 1.424 49.527Z\"\n          />\n          <path\n            d=\"M68.874 57.8L68.467 57.792C68.462 58.06 68.447 58.327 68.423 58.591L68.828 58.627C68.853 58.354 68.869 58.078 68.874 57.8Z\"\n          />\n          <path\n            d=\"M61.419 67.861C60.877 68.072 60.315 68.239 59.747 68.361L59.831 68.758C60.421 68.633 61.003 68.458 61.566 68.24L61.419 67.861Z\"\n          />\n          <path\n            d=\"M65.989 65.168C66.389 64.717 66.757 64.232 67.081 63.725L66.738 63.505C66.426 63.995 66.072 64.463 65.684 64.897L65.989 65.168Z\"\n          />\n          <path\n            d=\"M67.559 61.965L67.933 62.127C68.173 61.574 68.37 60.998 68.519 60.414L68.125 60.312C67.981 60.876 67.791 61.432 67.559 61.965Z\"\n          />\n          <path\n            d=\"M64.683 66.422L64.425 66.107C63.978 66.474 63.495 66.809 62.992 67.104L63.198 67.456C63.719 67.15 64.218 66.802 64.683 66.422Z\"\n          />\n          <path\n            d=\"M58.011 68.588C57.747 68.602 57.481 68.607 57.211 68.601L57.203 69.008C57.28 69.009 57.356 69.01 57.433 69.01 57.634 69.01 57.833 69.005 58.032 68.995L58.011 68.588Z\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"25.539\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"19.028\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"28.795\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"22.284\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExamIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExamIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExamIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExchangeArrowsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"14\"\n        viewBox=\"0 0 18 14\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#8B8581\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-336 -216)\"\n          >\n            <path\n              d=\"M349,228 L349,221 L347,221 L347,228 L344,228 L348,232 L352,228 L349,228 L349,228 Z M342,214 L338,218 L341,218 L341,225 L343,225 L343,218 L346,218 L342,214 L342,214 Z\"\n              transform=\"translate(345 223) rotate(90) translate(-345 -223)\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExchangeArrowsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExchangeArrowsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExchangeArrowsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExpandDownArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"12\"\n        viewBox=\"0 0 12 8\"\n        width=\"8\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n          opacity=\"0.86\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExpandDownArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExpandDownArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExpandDownArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons FacebookIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        className=\"sc-AykKE gwBKuR\"\n        height={23}\n        viewBox=\"0 0 22 23\"\n        width={23}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m63 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-1 1.99137931v2.98706897h-2c-.6 0-1 .39827586-1 .99568965v1.99137931h3v2.98706896h-3v6.9698276h-3v-6.9698276h-2v-2.98706896h2v-2.48922414c0-1.89181034 1.6-3.48491379 3.5-3.48491379z\"\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(-44 .457)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            FacebookIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(_FacebookIcon)\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(_FacebookIcon)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons GrantSubmitIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"82\"\n        viewBox=\"0 0 82 82\"\n        width=\"82\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <circle\n            cx=\"41\"\n            cy=\"41\"\n            fill=\"#90E8D3\"\n            r=\"41\"\n          />\n          <g\n            fill=\"#000\"\n            transform=\"translate(11 10)\"\n          >\n            <path\n              d=\"M2.86742813,19.5094459 L57.2076375,19.5094459 C57.6222497,19.5093254 57.9875374,19.238741 58.1058429,18.8441062 C58.2241484,18.4494714 58.0673687,18.0245305 57.7203375,17.7992193 L30.5502281,0.151842414 C30.238919,-0.050912319 29.8361467,-0.050912319 29.5248375,0.151842414 L2.3547375,17.7992193 C2.00770626,18.0245305 1.85092658,18.4494714 1.9692321,18.8441062 C2.08753763,19.238741 2.45282526,19.5093254 2.8674375,19.5094459 L2.86742813,19.5094459 Z M30.0375,2.0434531 L54.0609375,17.6473769 L6.0140625,17.6473769 L30.0375,2.0434531 Z\"\n              fillRule=\"nonzero\"\n            />\n            <path\n              d=\"M30.0375,8.31748034 C28.0624928,8.31785569 26.4616926,9.90808967 26.4619032,11.8694761 C26.4621137,13.8308626 28.0632553,15.4207576 30.0382625,15.4207148 C32.0132697,15.4206719 33.6143413,13.8307075 33.6144656,11.869321 C33.6124137,9.90836017 32.0120789,8.31926622 30.0375,8.31748034 L30.0375,8.31748034 Z M30.0375,13.5586366 C29.097967,13.5582612 28.3366081,12.8016113 28.3369032,11.8685578 C28.3371983,10.9355043 29.0990356,10.1793294 30.0385687,10.1795402 C30.9781017,10.1797509 31.739595,10.9362675 31.7394656,11.869321 C31.7385708,12.8022952 30.9769535,13.55826 30.0375,13.5586552 L30.0375,13.5586366 Z\"\n              fillRule=\"nonzero\"\n            />\n            <path\n              d=\"M7.99712813 22.8371679L7.99712813 48.8102369C7.99712813 49.324433 8.41686117 49.7412714 8.93462813 49.7412714 9.45239508 49.7412714 9.87212813 49.324433 9.87212813 48.8102369L9.87212813 22.8371679C9.87212813 22.3229718 9.45239508 21.9061334 8.93462813 21.9061334 8.41686117 21.9061334 7.99712813 22.3229718 7.99712813 22.8371679zM22.4322469 22.8371679L22.4322469 48.8102369C22.4322469 49.324433 22.8519799 49.7412714 23.3697469 49.7412714 23.8875138 49.7412714 24.3072469 49.324433 24.3072469 48.8102369L24.3072469 22.8371679C24.3072469 22.3229718 23.8875138 21.9061334 23.3697469 21.9061334 22.8519799 21.9061334 22.4322469 22.3229718 22.4322469 22.8371679zM36.8664563 22.8371679L36.8664563 48.8102369C36.8664563 49.324433 37.2861893 49.7412714 37.8039563 49.7412714 38.3217232 49.7412714 38.7414563 49.324433 38.7414563 48.8102369L38.7414563 22.8371679C38.7414563 22.3229718 38.3217232 21.9061334 37.8039563 21.9061334 37.2861893 21.9061334 36.8664563 22.3229718 36.8664563 22.8371679zM51.301575 22.8371679L51.301575 48.8102369C51.301575 49.324433 51.721308 49.7412714 52.239075 49.7412714 52.756842 49.7412714 53.176575 49.324433 53.176575 48.8102369L53.176575 22.8371679C53.176575 22.3229718 52.756842 21.9061334 52.239075 21.9061334 51.721308 21.9061334 51.301575 22.3229718 51.301575 22.8371679zM1.50695625 54L58.4930437 54C59.0108107 54 59.4305437 53.5831617 59.4305437 53.0689655 59.4305437 52.5547694 59.0108107 52.137931 58.4930437 52.137931L1.50695625 52.137931C.989189297 52.137931.56945625 52.5547694.56945625 53.0689655.56945625 53.5831617.989189297 54 1.50695625 54z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            GrantSubmitIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    GrantSubmitIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              GrantSubmitIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons GreenCheckMark 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"26\"\n        viewBox=\"0 0 26 26\"\n        width=\"26\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"12\"\n          cy=\"12\"\n          fill=\"#30E8BD\"\n          r=\"12\"\n        />\n        <path\n          d=\"m9.464 17.092-3.466-3.415-1.156 1.138 4.622 4.553 9.904-9.756-1.155-1.138z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 -1)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            GreenCheckMark\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    GreenCheckMark\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              GreenCheckMark\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HamburgerIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"42\"\n        viewBox=\"0 0 42 42\"\n        width=\"42\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M12 26h18v-2H12v2zm0-8h18v-2H12v2z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HamburgerIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HamburgerIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HamburgerIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HollowGreenCheck 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <circle\n            className=\"svg-stroke\"\n            cx=\"9\"\n            cy=\"9\"\n            r=\"8.25\"\n            stroke=\"#29cb42\"\n            strokeWidth=\"1.5\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n            fill=\"#29cb42\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HollowGreenCheck\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HollowGreenCheck\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HollowGreenCheck\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HollowRedNoGood 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <path\n            d=\"m0 0h18v18h-18z\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m9 0c-4.968 0-9 4.032-9 9s4.032 9 9 9 9-4.032 9-9-4.032-9-9-9zm0 16.2c-3.978 0-7.2-3.222-7.2-7.2 0-1.665.567-3.195 1.521-4.41l10.089 10.089c-1.215.954-2.745 1.521-4.41 1.521zm5.679-2.79-10.089-10.089c1.215-.954 2.745-1.521 4.41-1.521 3.978 0 7.2 3.222 7.2 7.2 0 1.665-.567 3.195-1.521 4.41z\"\n            fill=\"#f2524a\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HollowRedNoGood\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HollowRedNoGood\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HollowRedNoGood\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons InfoNotification 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n          transform=\"translate(-2, -2)\"\n        >\n          <polygon\n            points=\"0 0 32 0 32 32 0 32\"\n          />\n          <path\n            d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n            fill=\"#F2524A\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            InfoNotification\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    InfoNotification\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              InfoNotification\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons Loading / Clip Loader / Default Size (32px x 32px) 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <div\n        className=\"sc-AykKD ixDkUL\"\n        size={35}\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Loading / Clip Loader / Default Size (32px x 32px)\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    size\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      35\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          clipLoaderColor\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '#7D7373'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons Loading / Clip Loader / Prop-defined size (100px x 100px) 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <div\n        className=\"sc-AykKD gmWxNt\"\n        size={100}\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            Loading / Clip Loader / Prop-defined size (100px x 100px)\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    styled.div\n                  </span>\n                  <span>\n                    <span>\n                       \n                      <span\n                        style={Object {}}\n                      >\n                        size\n                      </span>\n                      <span>\n                        =\n                        <span\n                          style={Object {}}\n                        >\n                          {\n                          <span\n                            style={\n                              Object {\n                                \"color\": \"#a11\",\n                              }\n                            }\n                          >\n                            100\n                          </span>\n                          }\n                        </span>\n                      </span>\n                       \n                    </span>\n                  </span>\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              styled.div\n              \" Component\n            </h3>\n            <table\n              className=\"info-table\"\n            >\n              <thead>\n                <tr>\n                  <th>\n                    property\n                  </th>\n                  <th>\n                    propType\n                  </th>\n                  <th>\n                    required\n                  </th>\n                  <th>\n                    default\n                  </th>\n                  <th>\n                    description\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    size\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      35\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n                <tr>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    theme\n                  </td>\n                  <td\n                    className=\"info-table-monospace\"\n                  >\n                    <span>\n                      unknown\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    -\n                  </td>\n                  <td\n                    className={null}\n                  >\n                    <span>\n                      {\n                      <span>\n                        <span>\n                          clipLoaderColor\n                        </span>\n                      </span>\n                      : \n                      <span>\n                        '#7D7373'\n                      </span>\n                      }\n                    </span>\n                  </td>\n                  <td\n                    className={null}\n                  />\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons LockOpenIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 14 18\"\n        width=\"14\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#FF0C1A\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M6.85714286,13.7142857 C7.8,13.7142857 8.57142857,12.9428571 8.57142857,12 C8.57142857,11.0571429 7.8,10.2857143 6.85714286,10.2857143 C5.91428571,10.2857143 5.14285714,11.0571429 5.14285714,12 C5.14285714,12.9428571 5.91428571,13.7142857 6.85714286,13.7142857 L6.85714286,13.7142857 Z M12,6 L11.1428571,6 L11.1428571,4.28571429 C11.1428571,1.88571429 9.25714286,0 6.85714286,0 C4.45714286,0 2.57142857,1.88571429 2.57142857,4.28571429 L4.2,4.28571429 C4.2,2.82857143 5.4,1.62857143 6.85714286,1.62857143 C8.31428571,1.62857143 9.51428571,2.82857143 9.51428571,4.28571429 L9.51428571,6 L1.71428571,6 C0.771428571,6 0,6.77142857 0,7.71428571 L0,16.2857143 C0,17.2285714 0.771428571,18 1.71428571,18 L12,18 C12.9428571,18 13.7142857,17.2285714 13.7142857,16.2857143 L13.7142857,7.71428571 C13.7142857,6.77142857 12.9428571,6 12,6 L12,6 Z M12,16.2857143 L1.71428571,16.2857143 L1.71428571,7.71428571 L12,7.71428571 L12,16.2857143 L12,16.2857143 Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            LockOpenIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LockOpenIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LockOpenIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons MetaMaskFrontIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <img\n        className=\"sc-AykKI fNEFak\"\n        src=\"test-file-stub\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskFrontIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    MetaMaskFrontIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              MetaMaskFrontIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons MetaMaskSideIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <img\n        className=\"sc-AykKI fNEFak\"\n        src=\"test-file-stub\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskSideIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    MetaMaskSideIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              MetaMaskSideIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons NetworkIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"44\"\n        viewBox=\"0 0 48 44\"\n        width=\"48\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n        >\n          <path\n            d=\"M13.091 0C10.694 0 8.727 1.98 8.727 4.394 8.727 6.807 10.694 8.788 13.091 8.788 13.579 8.788 14.049 8.699 14.489 8.547L18.614 15.79C17.896 16.426 17.286 17.189 16.824 18.039L8.71 15.155C8.718 15.047 8.727 14.94 8.727 14.829 8.727 12.416 6.761 10.435 4.364 10.435 1.967 10.435 0 12.416 0 14.829 0 17.243 1.967 19.223 4.364 19.223 5.889 19.223 7.231 18.419 8.011 17.215L16.057 20.081C15.914 20.688 15.818 21.319 15.818 21.969 15.818 23.706 16.35 25.324 17.267 26.655L10.415 33.555C9.773 33.179 9.041 32.954 8.25 32.954 5.853 32.954 3.886 34.934 3.886 37.348 3.886 39.761 5.853 41.742 8.25 41.742 10.647 41.742 12.614 39.761 12.614 37.348 12.614 36.519 12.367 35.746 11.966 35.082L18.733 28.268C20.157 29.477 21.998 30.208 24 30.208 25.281 30.208 26.482 29.899 27.563 29.367L31.67 36.627C30.977 37.405 30.545 38.424 30.545 39.545 30.545 41.958 32.512 43.938 34.909 43.938 37.306 43.938 39.273 41.958 39.273 39.545 39.273 37.131 37.306 35.151 34.909 35.151 34.421 35.151 33.951 35.24 33.511 35.391L29.386 28.148C30.104 27.513 30.714 26.749 31.176 25.9L39.29 28.783C39.282 28.891 39.273 28.999 39.273 29.109 39.273 31.523 41.239 33.503 43.636 33.503 46.033 33.503 48 31.523 48 29.109 48 26.696 46.033 24.715 43.636 24.715 42.111 24.715 40.769 25.519 39.989 26.724L31.943 23.857C32.086 23.25 32.182 22.619 32.182 21.969 32.182 20.232 31.65 18.614 30.733 17.284L37.585 10.384C38.227 10.76 38.959 10.985 39.75 10.985 42.147 10.985 44.114 9.004 44.114 6.591 44.114 4.177 42.147 2.197 39.75 2.197 37.353 2.197 35.386 4.177 35.386 6.591 35.386 7.419 35.633 8.193 36.034 8.856L29.267 15.67C27.843 14.461 26.002 13.731 24 13.731 22.719 13.731 21.518 14.04 20.438 14.572L16.33 7.312C17.023 6.533 17.455 5.514 17.455 4.394 17.455 1.98 15.488 0 13.091 0ZM13.091 2.197C14.309 2.197 15.273 3.168 15.273 4.394 15.273 5.62 14.309 6.591 13.091 6.591 11.873 6.591 10.909 5.62 10.909 4.394 10.909 3.168 11.873 2.197 13.091 2.197ZM39.75 4.394C40.968 4.394 41.932 5.364 41.932 6.591 41.932 7.817 40.968 8.788 39.75 8.788 38.532 8.788 37.568 7.817 37.568 6.591 37.568 5.364 38.532 4.394 39.75 4.394ZM4.364 12.632C5.582 12.632 6.545 13.603 6.545 14.829 6.545 16.056 5.582 17.026 4.364 17.026 3.146 17.026 2.182 16.056 2.182 14.829 2.182 13.603 3.146 12.632 4.364 12.632ZM24 15.928C27.327 15.928 30 18.62 30 21.969 30 25.319 27.327 28.011 24 28.011 20.673 28.011 18 25.319 18 21.969 18 18.62 20.673 15.928 24 15.928ZM43.636 26.912C44.854 26.912 45.818 27.883 45.818 29.109 45.818 30.336 44.854 31.306 43.636 31.306 42.418 31.306 41.455 30.336 41.455 29.109 41.455 27.883 42.418 26.912 43.636 26.912ZM8.25 35.151C9.468 35.151 10.432 36.121 10.432 37.348 10.432 38.574 9.468 39.545 8.25 39.545 7.032 39.545 6.068 38.574 6.068 37.348 6.068 36.121 7.032 35.151 8.25 35.151ZM34.909 37.348C36.127 37.348 37.091 38.318 37.091 39.545 37.091 40.771 36.127 41.742 34.909 41.742 33.691 41.742 32.727 40.771 32.727 39.545 32.727 38.318 33.691 37.348 34.909 37.348Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            NetworkIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    NetworkIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              NetworkIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons NorthEastArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"11\"\n        viewBox=\"0 0 11 11\"\n        width=\"11\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n          fill=\"#23282d\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            NorthEastArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    NorthEastArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              NorthEastArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons OctopusErrorIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"73\"\n        viewBox=\"0 0 74 73\"\n        width=\"74\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M36.6071788,31.1685393 C28.5453734,31.1685393 26.4957867,37.147811 26.4135683,37.4026464 C26.2127625,37.9018048 26.3116918,38.469053 26.6702452,38.8744006 C27.0287986,39.2797481 27.5874732,39.4559263 28.1197545,39.3315036 C28.6520359,39.207081 29.0695902,38.802706 29.2031204,38.2823321 C29.2178022,38.2405795 30.6566238,34.0480345 36.6013061,34.0480345 C42.4652381,34.0480345 43.9422325,38.1196407 43.9994917,38.2823321 C44.1941275,38.8783044 44.759054,39.2827362 45.3972041,39.2829567 C45.5496697,39.2824376 45.7011641,39.2591341 45.8464688,39.2138488 C46.2174281,39.0972914 46.5259471,38.8409479 46.7041069,38.501251 C46.8822667,38.1615541 46.9154619,37.766352 46.7963847,37.4026464 C46.7185709,37.1420521 44.6704524,31.1685393 36.6071788,31.1685393 Z\"\n        />\n        <path\n          d=\"M31.2444444,25.4269663 C31.2444444,23.6149759 29.9560194,22.1460674 28.3666667,22.1460674 C26.7773139,22.1460674 25.4888889,23.6149759 25.4888889,25.4269663 C25.4888889,27.2389567 26.7773139,28.7078652 28.3666667,28.7078652 C29.9550629,28.705235 31.2421374,27.2378661 31.2444444,25.4269663 Z\"\n        />\n        <ellipse\n          cx=\"44.8111111\"\n          cy=\"25.4269663\"\n          rx=\"2.87777778\"\n          ry=\"3.28089888\"\n        />\n        <path\n          d=\"M73.1941581,46.7305242 C73.6415006,45.8824671 74.070023,44.5994339 73.6357098,43.2156849 C73.2013966,41.8319358 72.2256397,40.9561453 71.5162615,40.4715412 C71.4091309,39.7125227 71.1413044,38.6002687 70.4797007,37.6660921 C69.6110743,36.4429046 68.29221,35.8590443 67.6754852,35.6415563 C66.5173167,34.7584675 65.4300861,34.4665373 64.4774925,34.7993377 C61.9425512,35.6824265 62.1293059,38.5491809 62.2798678,40.85251 C62.4608316,43.6258468 62.4564885,45.359912 60.8640068,46.0021584 C60.232805,46.2561377 59.3902374,46.0357304 58.5476699,45.3964033 C57.1318089,44.3221002 56.7134205,42.2537749 57.576256,40.5795553 C59.9447106,36.0152269 62.8850108,30.3225884 62.8850108,24.8707923 C62.8850108,18.0950928 60.0836908,11.7704254 54.9978834,7.0630512 C44.8181279,-2.3543504 29.1846579,-2.3543504 19.0049023,7.0630512 C13.919095,11.7748043 11.1177749,18.0994717 11.1177749,24.8707923 C11.1177749,30.3255077 14.0580752,36.0152269 16.4207389,40.5853939 C17.2893653,42.2537749 16.8651861,44.3221002 15.4493251,45.4022419 C14.6082052,46.041569 13.7641899,46.2605166 13.1329881,46.007997 C12.0703685,45.5788597 11.4449575,45.0183537 11.7171271,40.8583486 C11.8618982,38.5550195 12.0544437,35.6882651 9.51950243,34.8051763 C8.56690885,34.4723759 7.47388734,34.7643061 6.3215097,35.6473949 C5.70478498,35.8648829 4.38447291,36.4487433 3.51729426,37.6719307 C2.85569051,38.6061073 2.58786405,39.715442 2.48073346,40.4773798 C1.77135526,40.9619839 0.792702893,41.8450727 0.361285132,43.2215235 C-0.0701326292,44.5979743 0.361285132,45.8883057 0.802836867,46.7363628 C0.281661048,47.5785814 -0.253991876,48.8878883 0.131099145,50.3562971 C0.479997401,51.694797 1.38481653,52.555991 2.1448646,53.0668688 C1.98345364,54.4846143 2.46541985,55.9000659 3.45649041,56.9188876 C4.275907,57.792625 5.4071807,58.3006693 6.59947014,58.33037 C6.95500819,59.4060167 7.79150739,60.2504964 8.85789869,60.6103447 C9.36136629,60.7935038 9.89199517,60.889252 10.427217,60.893517 C8.30197781,62.1429782 6.40113379,63.4026569 6.40113379,65.9935372 C6.40113379,67.7451183 7.30595291,69.2456395 8.94620903,70.2002512 C9.24910149,70.3751082 9.56406597,70.5277917 9.88866864,70.6571219 C10.7292229,72.1184613 12.2827475,73.012795 13.9581832,72.9998616 C15.2484557,73.007886 16.5037052,72.5769332 17.520999,71.7766741 C18.7492812,72.2909628 20.0962206,72.4467463 21.4081019,72.2262466 C22.868343,71.9912533 24.2075437,71.2672828 25.20979,70.1710581 C26.320184,70.5447288 28.0530936,70.7549185 30.0147415,69.6587207 C31.6738179,68.728923 32.4845358,67.5203321 32.8739699,66.6708153 C32.9116104,66.5890748 32.9449078,66.508794 32.9767574,66.4314325 C34.262376,66.4487806 35.520016,66.0525266 36.5670797,65.3002031 C36.7213993,65.1900695 36.8666427,65.0675469 37.0013929,64.9338307 C37.1361431,65.0675469 37.2813865,65.1900695 37.4357061,65.3002031 C38.4835133,66.0529155 39.7425098,66.4482543 41.0289238,66.4285132 C41.0607734,66.5058747 41.0940708,66.5861555 41.1317113,66.667896 C41.5211454,67.5174128 42.3318633,68.7260037 43.9909397,69.6558014 C45.9525876,70.7549185 47.6840495,70.5418095 48.7958912,70.1681388 C49.796857,71.2675949 51.136203,71.9947293 52.5975793,72.2320852 C53.9090626,72.4501841 55.2549384,72.2923844 56.4817868,71.7766741 C57.4998387,72.5748428 58.7550173,73.0037144 60.0446026,72.994023 C61.7175125,73.007409 63.2693395,72.1162016 64.1112217,70.6585815 C64.319692,70.5724621 64.5194761,70.4819638 64.7120216,70.3841672 C66.5752252,69.4353941 67.6074428,67.8735676 67.6074428,65.9891583 C67.6074428,63.3982779 65.7065988,62.1327606 63.5828073,60.889138 C64.1185132,60.8850098 64.6496406,60.78926 65.1535734,60.6059658 C66.2156735,60.2447007 67.0484195,59.402385 67.4033156,58.33037 C68.594934,58.2979858 69.7245601,57.787878 70.5419522,56.913049 C71.5330228,55.8942273 72.014989,54.4787757 71.853578,53.0610302 C72.6136261,52.5501524 73.5169975,51.6889584 73.8673435,50.3504585 C74.2553299,48.8820497 73.719677,47.5727428 73.1941581,46.7305242 Z M64.7018876,65.9979162 C64.7018876,66.5219309 64.5571166,67.2006685 63.3989481,67.7874482 C62.3377762,68.327519 60.7452946,68.6136106 58.7966761,68.6136106 C58.2697094,68.6136106 57.7268179,68.5917159 57.1723448,68.5508456 C57.0995822,68.5268568 57.0250269,68.5087965 56.9493973,68.4968386 C56.8150941,68.4756597 56.6783417,68.4756597 56.5440384,68.4968386 C54.2633408,68.2600266 52.0154729,67.7705217 49.8411383,67.0371876 C49.7448733,66.9924144 49.644506,66.9572161 49.5414622,66.9320928 L49.5211942,66.9320928 C47.1947233,66.1249058 44.9782783,65.0535221 43.1512675,63.7704889 C43.0953692,63.7121042 43.0348479,63.6584062 42.9703037,63.6099273 C42.8981177,63.557679 42.8210194,63.5127008 42.7401177,63.4756394 C40.1646406,61.5591178 38.4491035,59.2047009 38.4491035,56.5846275 C38.4491035,55.7784846 37.8009414,55.1249766 37.0013929,55.1249766 C36.2018444,55.1249766 35.5536823,55.7784846 35.5536823,56.5846275 C35.5536823,58.0559556 34.9413007,60.7533905 31.2206844,63.4960745 C31.1640625,63.524978 31.1094113,63.5576491 31.0570931,63.5938712 C30.9966583,63.6376326 30.9399963,63.6864611 30.887711,63.7398362 C30.4258913,64.0638788 29.922088,64.3893809 29.3661671,64.7119638 C27.8446115,65.5898568 26.2452127,66.3228523 24.5887221,66.9014401 C24.5474067,66.9056225 24.5063334,66.9119561 24.4656667,66.9204156 C24.3168539,66.9512512 24.1743705,67.0075299 24.044383,67.0868158 C21.9121016,67.7981015 19.7091286,68.2723825 17.4746722,68.5012175 C17.3308828,68.4771791 17.1841485,68.4771791 17.040359,68.5012175 C16.959958,68.5133863 16.8809252,68.5334297 16.8043822,68.5610632 C14.0537321,68.7566564 11.7200226,68.457428 10.3881288,67.6852726 C9.41671498,67.1189281 9.29076416,66.4912782 9.29076416,66.0066741 C9.29076416,65.024329 10.1130638,64.4536055 12.2889728,63.1880882 C15.159783,61.5182476 19.0932127,59.2309746 21.6324971,53.3544201 C21.9523165,52.615187 21.6172166,51.754517 20.8840307,51.4320598 C20.1508447,51.1096027 19.2972152,51.4474663 18.9773958,52.1866993 C17.9639984,54.5323583 16.6958039,56.2007393 15.3581193,57.4720953 C14.6911555,57.4347376 14.0275146,57.3513421 13.3718604,57.222495 C13.3106507,57.2054274 13.2482077,57.1932262 13.1851057,57.1860037 C12.3441091,57.0162291 11.5185046,56.7765134 10.7167591,56.4693151 C10.0949708,56.2257211 9.49284927,55.9338896 8.91580711,55.5964438 C8.87120152,55.5464946 8.82279753,55.5001316 8.77103605,55.457777 C8.64048192,55.3573653 8.4934886,55.2807923 8.33672287,55.2315311 C7.01215431,54.3714299 5.92496543,53.187401 5.17637061,51.7896743 C5.16623664,51.7604813 5.15610266,51.7298286 5.14307327,51.6991759 C5.10945196,51.6215766 5.0687405,51.5473007 5.02146558,51.477309 C4.33352148,50.0684834 3.99142674,48.513607 4.02399297,46.9436333 C4.02977763,46.8707672 4.02977763,46.7975517 4.02399297,46.7246856 C4.13112355,43.6827731 5.49197152,41.2130438 6.02617674,40.3562287 C7.17855438,38.5243668 8.2599942,37.766808 8.65956233,37.612085 C9.00556517,37.9536433 8.90133,39.5680172 8.82894447,40.6612958 C8.74063413,42.0158518 8.64074209,43.5528642 8.95344759,44.9482905 C9.3645974,46.7801524 10.4083967,48.0471294 12.0602345,48.7141898 C13.6527162,49.3549766 15.5217106,48.9973621 17.1909209,47.7303851 C19.7244145,45.8065652 20.497492,42.1559783 18.9889775,39.2381361 C16.7725326,34.9496818 14.0131962,29.6117384 14.0131962,24.8722519 C14.0131962,18.9241745 16.4815427,13.3614449 20.9622071,9.21019769 C30.0340585,0.81797143 43.9658318,0.81797143 53.0376833,9.21019769 C57.5255862,13.3614449 59.9866942,18.9241745 59.9866942,24.8722519 C59.9866942,29.6117384 57.2273578,34.9438432 55.0109128,39.2381361 C53.5023984,42.1574379 54.2754759,45.8065652 56.8089694,47.7303851 C58.4781797,48.9973621 60.3486219,49.3549766 61.9396558,48.7141898 C63.5900459,48.048589 64.635293,46.781612 65.0464428,44.9497501 C65.3591483,43.5543239 65.2592562,42.0173115 65.1709459,40.6627554 C65.0985604,39.5694769 64.9943252,37.955103 65.340328,37.6135447 C65.7398962,37.7595098 66.8271268,38.5258265 67.9708182,40.3576884 C68.5050234,41.2130438 69.8644237,43.6813135 69.973002,46.7203067 C69.9672,46.794634 69.9672,46.869306 69.973002,46.9436333 C70.0063391,48.5317657 69.6560595,50.1042428 68.952366,51.5254775 C68.9205164,51.5794845 68.8901144,51.6349513 68.8626079,51.6918777 L68.8336537,51.7663199 C68.0863624,53.1739497 66.9963482,54.3668816 65.6660629,55.2329908 C65.5091196,55.2811184 65.3620168,55.357254 65.2317497,55.457777 C65.1764872,55.499708 65.1246829,55.5460818 65.0768447,55.5964438 C64.4981881,55.9303683 63.8945948,56.2183052 63.2715496,56.4576379 C61.7833012,57.0255083 60.2185472,57.3635782 58.6301894,57.460418 C57.2939525,56.1890621 56.0243103,54.5206811 55.0109128,52.1750221 C54.6910934,51.4357891 53.8374639,51.0979255 53.104278,51.4203827 C52.3710921,51.7428399 52.0359923,52.6035098 52.3558116,53.3427428 C54.895096,59.2192974 58.8285257,61.5065704 61.6993358,63.176411 C63.8839312,64.4404687 64.7062308,65.0111922 64.7062308,65.9935372 L64.7018876,65.9979162 Z\"\n          fillRule=\"nonzero\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            OctopusErrorIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    OctopusErrorIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              OctopusErrorIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RegistryEmptyIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"155\"\n        viewBox=\"0 0 350 155\"\n        width=\"350\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <rect\n            fill=\"#E9E9EA\"\n            height=\"3\"\n            width=\"350\"\n            y=\"140\"\n          />\n          <rect\n            fill=\"#FFFFFF\"\n            height=\"152\"\n            stroke=\"#C4C2C0\"\n            strokeWidth=\"3\"\n            width=\"193\"\n            x=\"78.5\"\n            y=\"1.5\"\n          />\n          <rect\n            fill=\"#FFFFFF\"\n            height=\"54\"\n            stroke=\"#C4C2C0\"\n            strokeWidth=\"2\"\n            width=\"158\"\n            x=\"96\"\n            y=\"19\"\n          />\n          <path\n            d=\"M178.889 38C181.644 38 183.778 40.133 183.778 42.889 183.778 46.178 180.667 48.933 176.133 53.111L174.889 54.267 173.644 53.111C169.022 49.022 166 46.267 166 42.889 166 40.133 168.133 38 170.889 38 172.4 38 173.911 38.711 174.889 39.867 175.867 38.711 177.378 38 178.889 38Z\"\n            fill=\"#C4C2C0\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 82 255 82 255 92 95 92\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 100 255 100 255 110 95 110\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 118 255 118 255 128 95 128\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RegistryEmptyIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RegistryEmptyIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RegistryEmptyIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RejectedNewsroomsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M9 0C4.05 0 0 4.05 0 9s4.05 9 9 9 9-4.05 9-9-4.05-9-9-9zM1.8 9c0-3.96 3.24-7.2 7.2-7.2 1.62 0 3.15.54 4.41 1.53L3.33 13.41A7.093 7.093 0 0 1 1.8 9zM9 16.2c-1.62 0-3.15-.54-4.41-1.53L14.67 4.59A7.093 7.093 0 0 1 16.2 9c0 3.96-3.24 7.2-7.2 7.2z\"\n          fill=\"#7D7373\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RejectedNewsroomsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RejectedNewsroomsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RejectedNewsroomsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RequestAppealSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <g\n            transform=\"translate(74 71)\"\n          >\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(27 29)\"\n          >\n            <path\n              d=\"M1,0 L39,0 C39.5522847,-4.02567223e-15 40,0.44771525 40,1 L40,52 C40,52.5522847 39.5522847,53 39,53 L1,53 C0.44771525,53 6.76353751e-17,52.5522847 0,52 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 Z M1.73913043,1.63076923 L1.73913043,51.3692308 L38.2608696,51.3692308 L38.2608696,1.63076923 L1.73913043,1.63076923 Z\"\n            />\n            <rect\n              height=\"2\"\n              width=\"11\"\n              x=\"6\"\n              y=\"13\"\n            />\n            <rect\n              height=\"2\"\n              width=\"14\"\n              x=\"6\"\n              y=\"19\"\n            />\n            <rect\n              height=\"2\"\n              width=\"21\"\n              x=\"6\"\n              y=\"25\"\n            />\n            <polygon\n              points=\"6 31 33 31 33 33 6 33\"\n            />\n            <polygon\n              points=\"6 37 33 37 33 39 6 39\"\n            />\n            <polygon\n              points=\"6 43 33 43 33 45 6 45\"\n            />\n            <rect\n              height=\"2\"\n              width=\"10\"\n              x=\"6\"\n              y=\"7\"\n            />\n          </g>\n          <g\n            fillRule=\"nonzero\"\n            transform=\"translate(45 19)\"\n          >\n            <ellipse\n              cx=\"16.5\"\n              cy=\"16.5\"\n              fill=\"#30E8BD\"\n              rx=\"15.5\"\n              ry=\"16.5\"\n            />\n            <path\n              d=\"M33.0555556,16.0657183 C32.5338444,16.0657183 32.1111111,16.4882122 32.1111111,17.0096279 C32.1111111,25.3371756 25.3322667,32.1121809 17,32.1121809 C8.66773333,32.1121809 1.88888889,25.3371756 1.88888889,17.0096279 C1.88888889,8.68208015 8.66773333,1.90707488 17,1.90707488 C20.4664889,1.90707488 23.7531556,3.06883877 26.4206444,5.20320707 L23.5472667,5.97268215 C23.0433111,6.10747243 22.7444889,6.62549 22.8793556,7.12878258 C22.9923111,7.55052137 23.3742444,7.82878591 23.7913111,7.82878591 C23.8721556,7.82878591 23.9545111,7.81821412 24.0361111,7.79669299 L28.5974,6.57527401 C29.0008667,6.46729076 29.2974222,6.0806654 29.2974222,5.66345737 L29.2974222,0.943909562 C29.2974222,0.42249392 28.8746889,0 28.3529778,0 C27.8312667,0 27.4085333,0.42249392 27.4085333,0.943909562 L27.4085333,3.57968262 C24.4422222,1.27314522 20.8185778,0.0192557551 17,0.0192557551 C7.6262,0.0192557551 0,7.64113669 0,17.0096279 C0,26.3781191 7.6262,34 17,34 C26.3738,34 34,26.3781191 34,17.0096279 C34,16.4882122 33.5772667,16.0657183 33.0555556,16.0657183 Z\"\n              fill=\"#000000\"\n            />\n            <path\n              d=\"M16.5,10 C8.49669997,10 5.219556,16.8303439 5.0842382,17.1211935 C4.9719206,17.3621514 4.9719206,17.6378486 5.0842382,17.8788065 C5.21993933,18.1696561 8.49669997,25 16.5,25 C24.5033,25 27.780444,18.1696561 27.9157618,17.8788065 C28.0280794,17.6378486 28.0280794,17.3621514 27.9157618,17.1211935 C27.780444,16.8303439 24.5033,10 16.5,10 Z M16.5,23.1521632 C10.6736681,23.1521632 7.78484404,18.8330295 7.0319711,17.5003696 C7.78599405,16.1651227 10.6752015,11.8478368 16.5,11.8478368 C22.3244152,11.8478368 25.2136226,16.1647531 25.9680289,17.5 C25.2136226,18.8352469 22.3244152,23.1521632 16.5,23.1521632 Z\"\n              fill=\"#000000\"\n            />\n            <path\n              d=\"M17,13 C14.7944,13 13,14.7944 13,17 C13,19.2056 14.7944,21 17,21 C19.2056,21 21,19.2056 21,17 C21,14.7944 19.2056,13 17,13 Z\"\n              fill=\"#000000\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RequestAppealSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RequestAppealSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RequestAppealSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RevealVoteSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <path\n            d=\"M36.1579784,25.0003289 C29.2622189,25.0003289 23.6579844,30.6044707 23.6579844,37.5002566 C23.6579844,43.2558457 27.5658711,48.0813036 32.8685065,49.527316 L32.8685065,57.8948774 L30.8537049,57.8948774 C30.4693893,57.8948774 30.2124158,58.0287589 29.9285409,58.2032983 C29.2893044,58.6018507 28.7716073,59.1042189 28.2632457,59.5807318 L28.2632457,58.5527718 C28.2632128,58.2082983 27.9498117,57.8949432 27.6053514,57.8948774 C26.2543777,57.8948774 24.8753324,57.8948774 23.5346294,57.8948774 C23.2330506,57.9527721 22.9946823,58.2457983 23.0000902,58.5527718 L23.0000902,74.3421056 C23.0001231,74.6865791 23.3135243,74.9999342 23.6579844,75 L27.6053514,75 C27.9498117,74.9999342 28.2632128,74.6865791 28.2632457,74.3421056 L28.2632457,73.7253296 C28.787502,74.1209215 29.3736794,74.4307898 29.9285409,74.7121712 C30.2529947,74.8626974 30.5105077,75 30.8948233,75 L40.6604432,75 C40.7305813,75 40.8002852,74.9835526 40.8660352,74.9592105 C42.6559421,74.4187503 43.1320405,72.2165146 42.1407055,70.5800681 C42.8738367,70.114542 43.4143167,69.4866476 43.4976127,68.7298717 C43.5758298,68.0190826 43.2879286,67.3311225 42.8808367,66.6944781 C43.823981,66.2577678 44.5357174,65.6386891 44.7106055,64.8441501 C44.8805857,64.0719136 44.5824477,63.3335588 44.1349479,62.6648749 C44.8515989,62.1901383 45.3684999,61.554415 45.3684999,60.7734285 C45.3684999,59.743758 44.7248226,58.7410612 43.6209679,57.9979695 C43.511389,57.9281669 43.3807773,57.8919169 43.2509023,57.8952064 L39.4474504,57.8952064 L39.4474504,49.527645 C44.7500858,48.0816326 48.6579719,43.2561746 48.6579719,37.5005855 C48.6579719,30.6047997 43.053738,25.0006579 36.1579784,25.0006579 L36.1579784,25.0003289 Z M63.7895428,25.0003289 C56.8937833,25.0003289 51.2895494,30.6044707 51.2895494,37.5002566 C51.2895494,43.2558457 55.1974355,48.0813036 60.5000709,49.527316 L60.5000709,57.8948774 C59.1976966,57.8948116 57.864342,57.8948774 56.5732637,57.8948774 C56.4851717,57.9119827 56.4006322,57.9468511 56.3265533,57.9976405 C55.2226987,58.7406665 54.5790214,59.7434291 54.5790214,60.7730996 C54.5790214,61.554086 55.0959224,62.1898094 55.8125733,62.664546 C55.3650736,63.3332298 55.0669356,64.0715847 55.2369158,64.8438211 C55.4118038,65.6383602 56.1235403,66.2574388 57.0666845,66.6941491 C56.6595926,67.3307935 56.3716915,68.0186879 56.4499085,68.7295428 C56.5332045,69.4863187 57.0736845,70.1142131 57.8068157,70.5797392 C56.8154807,72.2161199 57.2915791,74.4184214 59.0814861,74.9588816 C59.1472098,74.9832237 59.21694,74.9976974 59.2870781,74.9996711 L69.052698,74.9996711 C69.4370135,74.9996711 69.6945266,74.8623685 70.0189803,74.7118423 C70.6431248,74.4286845 71.163664,74.0846057 71.6842755,73.7250007 L71.6842755,74.3417767 C71.6843084,74.6862502 71.9977096,74.9996053 72.3421699,74.9996711 L76.2895363,74.9996711 C76.6339966,74.9996053 76.9473978,74.6862502 76.9474306,74.3417767 L76.9474306,58.5524429 C76.9473978,58.2079694 76.6339966,57.8946143 76.2895363,57.8945485 C74.9391159,57.8945485 73.5579653,57.8945485 72.2188147,57.8945485 C71.9172359,57.9524432 71.6788676,58.2454693 71.6842755,58.5524429 L71.6842755,59.5804029 C71.1677626,59.0492189 70.5887564,58.6046139 70.0189803,58.2029694 C69.7351055,58.0284958 69.4781319,57.8945485 69.0938164,57.8945485 L67.0790148,57.8945485 L67.0790148,49.5269871 C72.3816502,48.0809747 76.2895363,43.2555167 76.2895363,37.4999276 C76.2895363,30.6041418 70.6853024,25 63.7895428,25 L63.7895428,25.0003289 Z M36.1584342,27.2955914 C41.7903658,27.2955914 46.3430947,31.8669463 46.3430947,37.4988839 C46.3430947,43.1307615 41.7903658,47.6835084 36.1584342,47.6835084 C30.5265027,47.6835084 25.9737731,43.1307615 25.9737731,37.4988839 C25.9737731,31.8669463 30.5265027,27.2955914 36.1584342,27.2955914 Z M69.6840202,29.175057 L55.0826314,42.7910724 C54.1450237,41.2495946 53.6053382,39.4384284 53.6053382,37.4993408 C53.6053382,31.867151 58.158271,27.2955914 63.7904548,27.2955914 C65.9880761,27.2955914 68.0213834,27.991603 69.6840202,29.175057 Z M72.0100878,31.4712452 C73.2461614,33.1606005 73.9755714,35.2450107 73.9755714,37.4993408 C73.9755714,43.1314706 69.4226385,47.6844214 63.7904548,47.6844214 C61.2784716,47.6844214 58.9811738,46.7787456 57.2067449,45.2755857 L72.0100878,31.4712452 Z M34.1842953,49.8152106 C34.8307357,49.9183685 35.4828735,49.9796842 36.1579784,49.9796842 C36.8330833,49.9796842 37.4852212,49.9185 38.1316616,49.8152106 L38.1316616,57.8948774 L34.1842953,57.8948774 L34.1842953,49.8152106 Z M61.8158597,49.8152106 C62.4623001,49.9183685 63.1144379,49.9796842 63.7895428,49.9796842 C64.4646477,49.9796842 65.1167856,49.9185 65.763226,49.8152106 L65.763226,57.8948774 L61.8158597,57.8948774 L61.8158597,49.8152106 Z M24.3158787,59.2106662 L26.9474563,59.2106662 L26.9474563,73.6842112 L24.3158787,73.6842112 L24.3158787,59.2106662 Z M30.8537049,59.2106662 L43.0041919,59.2106662 C43.7298363,59.752837 44.0527111,60.3536261 44.0527111,60.7730996 C44.0527111,61.2140862 43.8154744,61.577836 43.0658695,61.842178 C42.0448766,61.8421122 40.9915154,61.842178 39.9819896,61.842178 C39.6375161,61.8744148 39.3534767,62.2173094 39.3857728,62.5617171 C39.4180754,62.9061906 39.7608713,63.1902694 40.1053448,63.1579668 L42.9425143,63.1579668 C43.342126,63.6473744 43.5043496,64.1723741 43.4153759,64.5765186 C43.3160602,65.0278342 42.9319749,65.4972418 41.8323175,65.7895443 C41.0034101,65.7894785 40.14145,65.7895443 39.3240952,65.7895443 C38.9796217,65.8217811 38.6955824,66.1646757 38.7278784,66.5090834 C38.760181,66.8535569 39.1029769,67.1376357 39.4474504,67.1053331 L41.6472848,67.1053331 C42.0538109,67.6012539 42.23012,68.1467799 42.1818239,68.5855955 C42.1282056,69.0728979 41.8634886,69.4711871 41.1127456,69.7369107 C40.3044105,69.7368449 39.4629833,69.7369107 38.6662008,69.7369107 C38.3217273,69.7691475 38.037688,70.1119763 38.069984,70.456384 C38.1022866,70.8008575 38.4450825,71.0849363 38.789556,71.0526337 L40.9893904,71.0526337 C41.7495018,72.0425673 41.3919494,73.3884219 40.4959696,73.6842112 L30.8948233,73.6842112 C29.9038896,73.2977641 29.0834887,72.7031591 28.2632457,72.0394752 L28.2632457,61.4515203 C29.1161203,60.6001392 29.8298239,59.8241527 30.8537049,59.2106662 Z M56.9433293,59.2106662 L69.0938164,59.2106662 C70.1051448,59.7821791 70.9706509,60.7325733 71.6842755,61.4515203 L71.6842755,72.0394752 C70.8497694,72.7608564 70.0753224,73.2284878 69.052698,73.6842112 L59.4515517,73.6842112 C58.5555719,73.3884219 58.1980195,72.0425673 58.9581309,71.0526337 L61.1579653,71.0526337 C61.5055375,71.0592126 61.8252281,70.7423707 61.8252281,70.3947393 C61.8252281,70.0471079 61.5055375,69.7319765 61.1579653,69.7369107 L58.8347757,69.7369107 C58.0840327,69.4711871 57.8193289,69.0728979 57.7656973,68.5855955 C57.7179342,68.1515168 57.8828025,67.5971092 58.2796773,67.1053331 L60.5000709,67.1053331 C60.8476431,67.111912 61.1673337,66.7950701 61.1673337,66.4474387 C61.1673337,66.0998073 60.8476431,65.7846101 60.5000709,65.7895443 L58.1152037,65.7895443 C57.0155464,65.4972418 56.6314611,65.0278342 56.5321453,64.5765186 C56.4431717,64.1723741 56.6053953,63.6473744 57.0050069,63.1579668 L59.8421765,63.1579668 C60.1897487,63.1645457 60.5094393,62.8477038 60.5094393,62.5000724 C60.5094393,62.152441 60.1897487,61.8372438 59.8421765,61.842178 L56.8816517,61.842178 C56.1320469,61.578165 55.8948101,61.2140862 55.8948101,60.7730996 C55.8948101,60.3536261 56.217685,59.752837 56.9433293,59.2106662 Z M73.0000643,59.2106662 L75.6316419,59.2106662 L75.6316419,73.6842112 L73.0000643,73.6842112 L73.0000643,59.2106662 Z\"\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n          />\n          <polygon\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            points=\"41.9 33 34.205 40.10875 31.1 37.24875 29 39.1875 34.205 44 44 34.93875\"\n          />\n          <g\n            transform=\"translate(70 79)\"\n          >\n            <path\n              d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M7.2,13.5 L2.7,9 L3.96,7.74 L7.2,10.98 L14.04,4.14 L15.3,5.4 L7.2,13.5 L7.2,13.5 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RevealVoteSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RevealVoteSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RevealVoteSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ReviewIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h24v24h-24z\"\n          />\n          <path\n            d=\"m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm1 15h-2v-2h2zm0-4h-2v-6h2z\"\n            fill=\"#4066ff\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ReviewIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ReviewIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ReviewIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons SecureLockIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"23\"\n        version=\"1.1\"\n        viewBox=\"0 0 20 23\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <rect\n            height=\"20\"\n            width=\"20\"\n            x=\"0\"\n            y=\"1.2520731\"\n          />\n          <path\n            d=\"M16,8.5041462 L13.75,8.5041462 L13.75,7.1616462 C13.75,5.2041462 12.3175,3.4566462 10.3675,3.2691462 C8.1325,3.0591462 6.25,4.8141462 6.25,7.0041462 L6.25,8.5041462 L4,8.5041462 L4,19.0041462 L16,19.0041462 L16,8.5041462 Z M10,12.2541462 C10.825,12.2541462 11.5,12.9291462 11.5,13.7541462 C11.5,14.5791462 10.825,15.2541462 10,15.2541462 C9.175,15.2541462 8.5,14.5791462 8.5,13.7541462 C8.5,12.9291462 9.175,12.2541462 10,12.2541462 Z M10,4.7541462 C11.245,4.7541462 12.25,5.7591462 12.25,7.0041462 L12.25,8.5041462 L7.75,8.5041462 L7.75,7.0041462 C7.75,5.7591462 8.755,4.7541462 10,4.7541462 Z\"\n            fill=\"#8B8581\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SecureLockIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    SecureLockIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              SecureLockIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons SubmitChallengeSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(9 18)\"\n          >\n            <path\n              d=\"M63.9166667,0 L20.5833333,0 C19.9850249,0 19.5,0.485024854 19.5,1.08333333 L19.5,19.5 L15.0583333,19.5 C12.0553912,19.4961409 9.20687238,20.8304533 7.28758333,23.14 C5.78142836,24.9516447 3.54762911,25.9996685 1.19166667,26 L0,26 L0,28.1666667 L1.19166667,28.1666667 C4.1946088,28.1705258 7.04312762,26.8362134 8.96241667,24.5266667 C10.4697831,22.7135642 12.7058924,21.6653879 15.06375,21.6666667 L19.3580833,21.6666667 L33.1391667,25.3424167 C33.8947918,25.545412 34.4699891,26.1592647 34.6234779,26.9264789 C34.7769667,27.693693 34.4822032,28.4815899 33.8628333,28.9596667 C33.3576061,29.3523327 32.6972125,29.4847324 32.0796667,29.3171667 L19.7795,26.0368333 C19.2824492,25.9038387 18.7604234,26.1388182 18.5304167,26.5990833 L17.6301667,28.3995833 C16.3813874,30.9195041 13.8081904,32.5098944 10.9958333,32.5 L8.66666667,32.5 L8.66666667,34.6666667 L10.9958333,34.6666667 C14.5796362,34.6769393 17.8658559,32.6746478 19.5,29.4850833 L19.5,49.8333333 L16.575,49.8333333 C14.0013255,49.8303564 11.5866343,48.5879276 10.088,46.4955833 C8.18378094,43.8344506 5.1139231,42.2539497 1.84166667,42.25 L0,42.25 L0,44.4166667 L1.84166667,44.4166667 C4.41534112,44.4196436 6.83003238,45.6620724 8.32866667,47.7544167 C10.2328857,50.4155494 13.3027436,51.9960503 16.575,52 L19.5,52 L19.5,63.9166667 C19.5,64.5149751 19.9850249,65 20.5833333,65 L63.9166667,65 C64.5149751,65 65,64.5149751 65,63.9166667 L65,1.08333333 C65,0.485024854 64.5149751,0 63.9166667,0 Z M62.8333333,62.8333333 L21.6666667,62.8333333 L21.6666667,28.782 L31.525,31.4101667 C32.792326,31.746362 34.143918,31.4751216 35.1834041,30.6759901 C36.2228902,29.8768586 36.8324541,28.6404105 36.8333333,27.32925 C36.8328336,25.4159862 35.5466831,23.7418572 33.6981667,23.2483333 L21.6666667,20.0416667 L21.6666667,2.16666667 L62.8333333,2.16666667 L62.8333333,62.8333333 Z\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"31\"\n              y=\"5\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"31\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"12\"\n              x=\"40\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"11\"\n              x=\"38\"\n              y=\"24\"\n            />\n            <rect\n              height=\"2\"\n              width=\"20\"\n              x=\"38\"\n              y=\"29\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"35\"\n            />\n            <rect\n              height=\"2\"\n              width=\"3\"\n              x=\"54\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"51\"\n              y=\"24\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"27\"\n              y=\"40\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"46\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"27\"\n              y=\"51\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"36\"\n              y=\"51\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"51\"\n              y=\"40\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"13\"\n            />\n          </g>\n          <g\n            transform=\"translate(74 71)\"\n          >\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SubmitChallengeSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    SubmitChallengeSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              SubmitChallengeSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TokenWalletIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"21\"\n        viewBox=\"0 0 24 21\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M22.179 13.216L22.179 5.049C22.179 4.253 21.531 3.608 20.732 3.608L17.357 3.608 17.357 1.301C17.355 0.901 17.169 0.523 16.853 0.277 16.536 0.03 16.123-0.058 15.732 0.038L1.35 3.608C0.589 3.658-0.002 4.289 0 5.049L0 18.501C0 19.297 0.648 19.942 1.446 19.942L15.429 19.942C17.348 21.377 20.034 21.187 21.731 19.496 23.427 17.805 23.618 15.129 22.179 13.216ZM15.964 0.965C16.068 0.936 16.179 0.96 16.263 1.028 16.347 1.093 16.395 1.195 16.393 1.301L16.393 3.608 5.361 3.608 15.964 0.965ZM1.446 18.981C1.18 18.981 0.964 18.766 0.964 18.501L0.964 5.049C0.964 4.783 1.18 4.568 1.446 4.568L20.732 4.568C20.998 4.568 21.214 4.783 21.214 5.049L21.214 12.255C19.295 10.821 16.609 11.011 14.912 12.702 13.216 14.392 13.025 17.069 14.464 18.981L1.446 18.981ZM18.321 19.942C16.191 19.942 14.464 18.222 14.464 16.099 14.464 13.976 16.191 12.255 18.321 12.255 20.452 12.255 22.179 13.976 22.179 16.099 22.179 18.222 20.452 19.942 18.321 19.942ZM20.732 16.099C20.732 16.364 20.516 16.579 20.25 16.579L18.804 16.579 18.804 18.021C18.804 18.286 18.588 18.501 18.321 18.501 18.055 18.501 17.839 18.286 17.839 18.021L17.839 16.579 16.393 16.579C16.127 16.579 15.911 16.364 15.911 16.099 15.911 15.833 16.127 15.618 16.393 15.618L17.839 15.618 17.839 14.177C17.839 13.912 18.055 13.697 18.321 13.697 18.588 13.697 18.804 13.912 18.804 14.177L18.804 15.618 20.25 15.618C20.516 15.618 20.732 15.833 20.732 16.099Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TokenWalletIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    TokenWalletIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TokenWalletIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TrendsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"48\"\n        viewBox=\"0 0 48 48\"\n        width=\"48\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M24,48 C10.766,48 0,37.234 0,24 C0,10.766 10.766,0 24,0 C37.234,0 48,10.766 48,24 C48,37.234 37.234,48 24,48 Z M24,2 C11.87,2 2,11.87 2,24 C2,36.13 11.87,46 24,46 C36.13,46 46,36.13 46,24 C46,11.87 36.13,2 24,2 Z\"\n            fillRule=\"nonzero\"\n          />\n          <polygon\n            points=\"36 24.9230769 34.0221193 24.9230769 34.0221193 17.6701884 26.7692308 17.6701884 26.7692308 15.6923077 35.0110596 15.6923077 36 16.681248\"\n          />\n          <polygon\n            points=\"14.3524956 31.3846154 12.9230769 29.9762196 19.7022011 23.2948061 20.7373671 23.0557573 26.2104029 24.8526073 34.5705813 16.6153846 36 18.0237804 27.1990673 26.6972671 26.1639013 26.938308 20.6908655 25.1394659\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TrendsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    TrendsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TrendsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TwitterIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        className=\"sc-AykKK lLEaH\"\n        height={23}\n        viewBox=\"0 0 22 23\"\n        width={23}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m19 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-2.1171875 7.7004415c-.1015625 4.7261258-3.046875 8.0138655-7.515625 8.2193493-1.828125.1027418-3.1484375-.5137094-4.3671875-1.2329024 1.3203125.2054837 3.046875-.3082256 3.9609375-1.1301605-1.3203125-.1027419-2.1328125-.821935-2.5390625-1.9520955.40625.1027419.8125 0 1.1171875 0-1.21875-.4109675-2.03125-1.1301605-2.1328125-2.77403038.3046875.20548378.7109375.30822558 1.1171875.30822558-.9140625-.51370931-1.5234375-2.46580476-.8125-3.69870716 1.3203125 1.43838613 2.9453125 2.67128852 5.5859375 2.87677225-.7109375-2.87677225 3.1484375-4.41790024 4.671875-2.46580478.7109375-.10274187 1.21875-.41096747 1.7265625-.6164512-.203125.71919306-.609375 1.13016053-1.1171875 1.54112799.5078125-.10274186 1.015625-.20548373 1.421875-.41096746-.1015625.51370933-.609375.92467679-1.1171875 1.33564426z\"\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(0 .457)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TwitterIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(_TwitterIcon)\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(_TwitterIcon)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons VerifyIdentityIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"22\"\n        viewBox=\"0 0 18 22\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-2 -0.5)\"\n          >\n            <polygon\n              points=\"0 0 22.9 0 22.9 22.9 0 22.9\"\n            />\n            <path\n              d=\"M11.5 1L2.9 4.8 2.9 10.5C2.9 15.8 6.5 20.8 11.5 22 16.4 20.8 20 15.8 20 10.5L20 4.8 11.5 1ZM18.1 10.5C18.1 14.8 15.3 18.8 11.5 20 7.6 18.8 4.8 14.8 4.8 10.5L4.8 6 11.5 3 18.1 6 18.1 10.5ZM7.1 11.1L5.7 12.4 9.5 16.2 17.2 8.6 15.8 7.2 9.5 13.5 7.1 11.1Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            VerifyIdentityIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    VerifyIdentityIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              VerifyIdentityIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons WaitForApply 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"54\"\n        viewBox=\"0 0 54 54\"\n        width=\"54\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"27\"\n          cy=\"27\"\n          fill=\"#90e8d3\"\n          r=\"27\"\n        />\n        <path\n          d=\"m22.0188072 35.5783153h-2.7243229v-3.6842105c0-.4440359-.3660757-.8044128-.8171334-.8044128s-.8171334.3603769-.8171334.8044128v4.4886233c0 .4440359.3660757.8044128.8171334.8044128h3.5414563c.4510577 0 .8171335-.3603769.8171335-.8044128 0-.4440358-.3656672-.8044128-.8171335-.8044128zm18.7752752-18.3273385-6.2919275-6.9802919c-.1552554-.1721443-.3775157-.2706849-.6112159-.2706849h-17.2349785c-.4510577 0-.8171335.3603769-.8171335.8044128v17.4633992c-3.3960066 1.1853022-5.838827 4.3707768-5.838827 8.1153183 0 4.7512641 3.9263262 8.6168697 8.7531334 8.6168697 2.8566986 0 5.3902208-1.360262 6.9889424-3.4509308h14.4407908c.4510576 0 .8171334-.3603769.8171334-.8044128v-22.9599517c0-.1970812-.073542-.3869226-.2059176-.5337279zm-6.1007183-4.3442312 3.7122372 4.1181912h-3.7122372zm-15.9406392 30.4840266c-3.9251005 0-7.1188666-3.1436451-7.1188666-7.0080441s3.1933575-7.0080441 7.1188666-7.0080441c3.925509 0 7.1188665 3.1440473 7.1188665 7.0080441s-3.1933575 7.0080441-7.1188665 7.0080441zm20.6130082-3.4509308h-12.6496343c.5025371-1.0859572.7901681-2.2877499.7901681-3.5571133 0-.22604-.0171598-.4476557-.0343196-.6692714h7.6205865c.4510576 0 .8171334-.3603769.8171334-.8044128s-.3660758-.8044128-.8171334-.8044128h-7.9069918c-.336659-1.2062169-.9270379-2.3090669-1.7204745-3.2429901h9.6270577c.4510577 0 .8171334-.3603769.8171334-.8044128 0-.4440358-.3660757-.8044128-.8171334-.8044128h-11.4304712c-1.4009753-.937543-3.0903986-1.486957-4.9089291-1.486957-.4355321 0-.8608501.0418295-1.2800396.1029649v-16.2603999h15.5860033v6.2209262c0 .4440358.3660758.8044128.8171335.8044128h5.4895024v21.306079zm-18.4365733-14.7340266c0 .4440358.3660758.8044127.8171334.8044127h13.3462406c.4510576 0 .8171334-.3603769.8171334-.8044127 0-.4440359-.3660758-.8044128-.8171334-.8044128h-13.3462406c-.4514662 0-.8171334.3599747-.8171334.8044128zm0-5c0 .4440358.2194549.8044127.4898547.8044127h8.0007976c.2703998 0 .4898547-.3603769.4898547-.8044127 0-.4440359-.2194549-.8044128-.4898547-.8044128h-8.0007976c-.2706447 0-.4898547.3599747-.4898547.8044128z\"\n          fill=\"#000000\"\n          fillRule=\"nonzero\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            WaitForApply\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WaitForApply\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WaitForApply\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons WarningIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-fzXfLP fytBip\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n          transform=\"translate(-40, -20)\"\n        >\n          <path\n            d=\"M4,0.5 C2.06700338,0.5 0.5,2.06700338 0.5,4 L0.5,64 C0.5,65.9329966 2.06700338,67.5 4,67.5 L726,67.5 C727.932997,67.5 729.5,65.9329966 729.5,64 L729.5,4 C729.5,2.06700338 727.932997,0.5 726,0.5 L4,0.5 Z\"\n            fill=\"#FCFCFC\"\n            stroke=\"#FF0C1A\"\n          />\n          <g\n            transform=\"translate(38, 18)\"\n          >\n            <polygon\n              points=\"0 0 32 0 32 32 0 32\"\n            />\n            <path\n              d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n              fill=\"#FF0C1A\"\n              fillRule=\"nonzero\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            WarningIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WarningIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WarningIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/icon.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  ApplicationInProgressIcon,\n  ApprovedNewsroomsIcon,\n  ArticleIndexIcon,\n  ArticleIndexPanelIcon,\n  ArticleSignIcon,\n  ArticleSignPanelIcon,\n  BellIcon,\n  BookreaderIcon,\n  BrainIcon,\n  Chevron,\n  CivilTutorialIcon,\n  ClipLoader,\n  ClockIcon,\n  CloseXIcon,\n  CommitVoteSuccessIcon,\n  CvlToken,\n  DashboardNewsroomApplicationIcon,\n  DisclosureArrowIcon,\n  DropdownArrow,\n  EmbedIcon,\n  ErrorIcon,\n  ExamIcon,\n  ExchangeArrowsIcon,\n  ExpandDownArrow,\n  FacebookIcon,\n  GreenCheckMark,\n  GrantSubmitIcon,\n  HamburgerIcon,\n  HollowGreenCheck,\n  HollowRedNoGood,\n  InfoNotification,\n  LockOpenIcon,\n  SecureLockIcon,\n  CircleLockIcon,\n  MetaMaskSideIcon,\n  MetaMaskFrontIcon,\n  NetworkIcon,\n  NorthEastArrow,\n  OctopusErrorIcon,\n  RegistryEmptyIcon,\n  RejectedNewsroomsIcon,\n  RequestAppealSuccessIcon,\n  RevealVoteSuccessIcon,\n  ReviewIcon,\n  SubmitChallengeSuccessIcon,\n  TokenWalletIcon,\n  TrendsIcon,\n  TwitterIcon,\n  VerifyIdentityIcon,\n  WaitForApply,\n  WarningIcon,\n} from \"./index\";\n\nconst StyledDiv = styled.div`\n  align-items: center;\n  display: flex;\n  flex-direction: column;\n  width: 400px;\n`;\n\nconst Container: React.FunctionComponent = ({ children }) => <StyledDiv>{children}</StyledDiv>;\n\nstoriesOf(\"Pattern Library / icons / SVG Icons\", module)\n  .add(\"ApplicationInProgressIcon\", () => {\n    return (\n      <Container>\n        <ApplicationInProgressIcon />\n      </Container>\n    );\n  })\n  .add(\"ApprovedNewsroomsIcon\", () => {\n    return (\n      <Container>\n        <ApprovedNewsroomsIcon />\n      </Container>\n    );\n  })\n  .add(\"ArticleIndexIcon\", () => {\n    return (\n      <Container>\n        <ArticleIndexIcon />\n      </Container>\n    );\n  })\n  .add(\"ArticleIndexPanelIcon\", () => {\n    return (\n      <Container>\n        <ArticleIndexPanelIcon />\n      </Container>\n    );\n  })\n  .add(\"ArticleSignIcon\", () => {\n    return (\n      <Container>\n        <ArticleSignIcon />\n      </Container>\n    );\n  })\n  .add(\"ArticleSignPanelIcon\", () => {\n    return (\n      <Container>\n        <ArticleSignPanelIcon />\n      </Container>\n    );\n  })\n  .add(\"BellIcon\", () => {\n    return (\n      <Container>\n        <BellIcon />\n      </Container>\n    );\n  })\n  .add(\"BookreaderIcon\", () => {\n    return (\n      <Container>\n        <BookreaderIcon />\n      </Container>\n    );\n  })\n  .add(\"BrainIcon\", () => {\n    return (\n      <Container>\n        <BrainIcon />\n      </Container>\n    );\n  })\n  .add(\"Chevron\", () => {\n    return (\n      <Container>\n        <Chevron />\n      </Container>\n    );\n  })\n  .add(\"CivilTutorialIcon\", () => {\n    return (\n      <Container>\n        <CivilTutorialIcon />\n      </Container>\n    );\n  })\n  .add(\"Loading / Clip Loader / Default Size (32px x 32px)\", () => {\n    return (\n      <Container>\n        <ClipLoader />\n      </Container>\n    );\n  })\n  .add(\"Loading / Clip Loader / Prop-defined size (100px x 100px)\", () => {\n    return (\n      <Container>\n        <ClipLoader size={100} />\n      </Container>\n    );\n  })\n  .add(\"ClockIcon\", () => {\n    return (\n      <Container>\n        <ClockIcon />\n      </Container>\n    );\n  })\n  .add(\"CloseXIcon\", () => {\n    return (\n      <Container>\n        <CloseXIcon />\n      </Container>\n    );\n  })\n  .add(\"CommitVoteSuccessIcon\", () => {\n    return (\n      <Container>\n        <CommitVoteSuccessIcon />\n      </Container>\n    );\n  })\n  .add(\"CVLToken\", () => {\n    return (\n      <Container>\n        <CvlToken />\n      </Container>\n    );\n  })\n  .add(\"DashboardNewsroomApplicationIcon\", () => {\n    return (\n      <Container>\n        <DashboardNewsroomApplicationIcon />\n      </Container>\n    );\n  })\n  .add(\"DisclosureArrowIcon\", () => {\n    return (\n      <Container>\n        <DisclosureArrowIcon />\n      </Container>\n    );\n  })\n  .add(\"DropdownArrow\", () => {\n    return (\n      <Container>\n        <DropdownArrow />\n      </Container>\n    );\n  })\n  .add(\"EmbedIcon\", () => {\n    return (\n      <Container>\n        <EmbedIcon />\n      </Container>\n    );\n  })\n  .add(\"ErrorIcon\", () => {\n    return (\n      <Container>\n        <ErrorIcon />\n      </Container>\n    );\n  })\n  .add(\"ExamIcon\", () => {\n    return (\n      <Container>\n        <ExamIcon />\n      </Container>\n    );\n  })\n  .add(\"ExchangeArrowsIcon\", () => {\n    return (\n      <Container>\n        <ExchangeArrowsIcon />\n      </Container>\n    );\n  })\n  .add(\"ExpandDownArrow\", () => {\n    return (\n      <Container>\n        <ExpandDownArrow />\n      </Container>\n    );\n  })\n  .add(\"FacebookIcon\", () => {\n    return (\n      <Container>\n        <FacebookIcon />\n      </Container>\n    );\n  })\n  .add(\"GreenCheckMark\", () => {\n    return (\n      <Container>\n        <GreenCheckMark />\n      </Container>\n    );\n  })\n  .add(\"GrantSubmitIcon\", () => {\n    return (\n      <Container>\n        <GrantSubmitIcon />\n      </Container>\n    );\n  })\n  .add(\"HamburgerIcon\", () => {\n    return (\n      <Container>\n        <HamburgerIcon />\n      </Container>\n    );\n  })\n  .add(\"HollowGreenCheck\", () => {\n    return (\n      <Container>\n        <HollowGreenCheck />\n      </Container>\n    );\n  })\n  .add(\"HollowRedNoGood\", () => {\n    return (\n      <Container>\n        <HollowRedNoGood />\n      </Container>\n    );\n  })\n  .add(\"InfoNotification\", () => {\n    return (\n      <Container>\n        <InfoNotification />\n      </Container>\n    );\n  })\n  .add(\"LockOpenIcon\", () => {\n    return (\n      <Container>\n        <LockOpenIcon />\n      </Container>\n    );\n  })\n  .add(\"SecureLockIcon\", () => {\n    return (\n      <Container>\n        <SecureLockIcon />\n      </Container>\n    );\n  })\n  .add(\"CircleLockIcon\", () => {\n    return (\n      <Container>\n        <CircleLockIcon />\n      </Container>\n    );\n  })\n  .add(\"MetaMaskSideIcon\", () => {\n    return (\n      <Container>\n        <MetaMaskSideIcon />\n      </Container>\n    );\n  })\n  .add(\"MetaMaskFrontIcon\", () => {\n    return (\n      <Container>\n        <MetaMaskFrontIcon />\n      </Container>\n    );\n  })\n  .add(\"NetworkIcon\", () => {\n    return (\n      <Container>\n        <NetworkIcon />\n      </Container>\n    );\n  })\n  .add(\"NorthEastArrow\", () => {\n    return (\n      <Container>\n        <NorthEastArrow />\n      </Container>\n    );\n  })\n  .add(\"OctopusErrorIcon\", () => {\n    return (\n      <Container>\n        <OctopusErrorIcon />\n      </Container>\n    );\n  })\n  .add(\"RegistryEmptyIcon\", () => {\n    return (\n      <Container>\n        <RegistryEmptyIcon />\n      </Container>\n    );\n  })\n  .add(\"RejectedNewsroomsIcon\", () => {\n    return (\n      <Container>\n        <RejectedNewsroomsIcon />\n      </Container>\n    );\n  })\n  .add(\"RequestAppealSuccessIcon\", () => {\n    return (\n      <Container>\n        <RequestAppealSuccessIcon />\n      </Container>\n    );\n  })\n  .add(\"RevealVoteSuccessIcon\", () => {\n    return (\n      <Container>\n        <RevealVoteSuccessIcon />\n      </Container>\n    );\n  })\n  .add(\"ReviewIcon\", () => {\n    return (\n      <Container>\n        <ReviewIcon />\n      </Container>\n    );\n  })\n  .add(\"SubmitChallengeSuccessIcon\", () => {\n    return (\n      <Container>\n        <SubmitChallengeSuccessIcon />\n      </Container>\n    );\n  })\n  .add(\"TokenWalletIcon\", () => {\n    return (\n      <Container>\n        <TokenWalletIcon />\n      </Container>\n    );\n  })\n  .add(\"TrendsIcon\", () => {\n    return (\n      <Container>\n        <TrendsIcon />\n      </Container>\n    );\n  })\n  .add(\"TwitterIcon\", () => {\n    return (\n      <Container>\n        <TwitterIcon />\n      </Container>\n    );\n  })\n  .add(\"VerifyIdentityIcon\", () => {\n    return (\n      <Container>\n        <VerifyIdentityIcon />\n      </Container>\n    );\n  })\n  .add(\"WaitForApply\", () => {\n    return (\n      <Container>\n        <WaitForApply />\n      </Container>\n    );\n  })\n  .add(\"WarningIcon\", () => {\n    return (\n      <Container>\n        <WarningIcon />\n      </Container>\n    );\n  });\n"
  },
  {
    "path": "packages/elements/src/icons/index.ts",
    "content": "export * from \"./ApplicationInProgressIcon\";\nexport * from \"./ApprovedNewsroomsIcon\";\nexport * from \"./ArticleIndexIcon\";\nexport * from \"./ArticleIndexPanelIcon\";\nexport * from \"./ArticleSignIcon\";\nexport * from \"./ArticleSignPanelIcon\";\nexport * from \"./AvatarGenericIcon\";\nexport * from \"./BellIcon\";\nexport * from \"./BookreaderIcon\";\nexport * from \"./BrainIcon\";\nexport * from \"./Chevron\";\nexport * from \"./CivilIcon\";\nexport * from \"./CivilTutorialIcon\";\nexport * from \"./CvlToken\";\nexport * from \"./ClipLoader\";\nexport * from \"./ClockIcon\";\nexport * from \"./CloseXIcon\";\nexport * from \"./CCAmexIcon\";\nexport * from \"./CCDiscoverIcon\";\nexport * from \"./CCMastercardIcon\";\nexport * from \"./CCSecurityCodeIcon\";\nexport * from \"./CCVisaIcon\";\nexport * from \"./ChallengeMarkIcon\";\nexport * from \"./CommitVoteSuccessIcon\";\nexport * from \"./DisclosureArrowIcon\";\nexport * from \"./DropdownArrow\";\nexport * from \"./ErrorIcon\";\nexport * from \"./ExamIcon\";\nexport * from \"./EmbedIcon\";\nexport * from \"./ExchangeArrowsIcon\";\nexport * from \"./ExpandDownArrow\";\nexport * from \"./FacebookIcon\";\nexport * from \"./DashboardNewsroomApplicationIcon\";\nexport * from \"./GrantSubmitIcon\";\nexport * from \"./GreenCheckMark\";\nexport * from \"./HamburgerIcon\";\nexport * from \"./HollowGrayNotGranted\";\nexport * from \"./HollowGreenCheck\";\nexport * from \"./HollowRedNoGood\";\nexport * from \"./InstagramIcon\";\nexport * from \"./LinkedInIcon\";\nexport * from \"./LinkIcon\";\nexport * from \"./LockOpenIcon\";\nexport * from \"./MediumIcon\";\nexport * from \"./MetaMaskIcons\";\nexport * from \"./NetworkIcon\";\nexport * from \"./NorthEastArrow\";\nexport * from \"./OctopusErrorIcon\";\nexport * from \"./OpenInNewIcon\";\nexport * from \"./RegistryEmptyIcon\";\nexport * from \"./RejectedNewsroomsIcon\";\nexport * from \"./RevealVoteSuccessIcon\";\nexport * from \"./ReviewIcon\";\nexport * from \"./RequestAppealSuccessIcon\";\nexport * from \"./CircleLockIcon\";\nexport * from \"./SecureLockIcon\";\nexport * from \"./ShareEmailIcon\";\nexport * from \"./ShareTwitterIcon\";\nexport * from \"./ShareIcon\";\nexport * from \"./SubmitChallengeSuccessIcon\";\nexport * from \"./TelegramIcon\";\nexport * from \"./TipIcon\";\nexport * from \"./TokenWalletIcon\";\nexport * from \"./TrendsIcon\";\nexport * from \"./TrustMarkIcon\";\nexport * from \"./TwitterIcon\";\nexport * from \"./VerifyIdentityIcon\";\nexport * from \"./WarningIcon\";\nexport * from \"./WaitForApply\";\nexport * from \"./Info\";\nexport * from \"./logos\";\nexport * from \"./ZoomOutIcon\";\nexport * from \"./ZoomInIcon\";\nexport * from \"./PhotoDragIcon\";\n"
  },
  {
    "path": "packages/elements/src/icons/logos/Burner.tsx",
    "content": "import * as React from \"react\";\n\nexport const Burner: React.FC = props => (\n  <svg viewBox=\"0 0 47.5 47.5\" width=\"1em\" height=\"1em\" {...props}>\n    <defs>\n      <clipPath id=\"burner_svg__a\">\n        <path d=\"M0 38h38V0H0v38z\" />\n      </clipPath>\n      <clipPath id=\"burner_svg__b\">\n        <path d=\"M18.583 27.833c-2.957-.231-5.666 2.542-4.666 7.042-3.239-2.386-3.332-6.403-2.333-9 1.041-2.708-.042-4.958-2.584-5.208-2.839-.28-4.416 3.042-2.962 8.333A16.936 16.936 0 012 18C2 8.611 9.611 1 19 1s17 7.611 17 17c0 2.063-.367 4.039-1.04 5.868-.46-5.388-3.333-8.157-6.335-6.868-2.812 1.208-.917 5.917-.777 8.164.236 3.809-.012 8.169-6.931 11.794 2.875-5.499.333-8.917-2.334-9.125\" />\n      </clipPath>\n    </defs>\n    <g clipPath=\"url(#burner_svg__a)\" transform=\"matrix(1.25 0 0 -1.25 0 47.5)\">\n      <path\n        d=\"M36 18c0 2.063-.367 4.039-1.04 5.868-.46-5.389-3.333-8.157-6.335-6.868-2.813 1.208-.917 5.917-.777 8.164.236 3.809-.012 8.169-6.931 11.794 2.875-5.5.333-8.916-2.334-9.125-2.958-.23-5.666 2.542-4.666 7.042-3.238-2.386-3.333-6.402-2.334-9 1.042-2.708-.041-4.958-2.583-5.208-2.839-.28-4.417 3.041-2.962 8.333A16.936 16.936 0 012 18C2 8.611 9.611 1 19 1s17 7.611 17 17\"\n        fill=\"#f4900c\"\n      />\n    </g>\n    <g clipPath=\"url(#burner_svg__b)\" transform=\"matrix(1.25 0 0 -1.25 0 47.5)\">\n      <path\n        d=\"M31 7c0 2.187-.584 4.236-1.605 6.001.147-3.084-2.562-4.293-4.02-3.709-2.105.843-1.541 2.291-2.083 5.291-.542 3-2.625 5.084-5.709 6 2.25-6.333-1.247-8.667-3.08-9.084-1.872-.426-3.753.001-3.968 4.007A11.967 11.967 0 017 7C7 .373 12.373-5 19-5S31 .373 31 7\"\n        fill=\"#ffcc4d\"\n      />\n    </g>\n  </svg>\n);\n"
  },
  {
    "path": "packages/elements/src/icons/logos/CivilLogo.tsx",
    "content": "import * as React from \"react\";\n\n// Deprecated, but leaving this here because one might conceivably search for \"CivilLogo\" and forget about \"CivilIcon\".\nexport { CivilIcon as CivilLogo } from \"../CivilIcon\";\n"
  },
  {
    "path": "packages/elements/src/icons/logos/Incognito.tsx",
    "content": "import * as React from \"react\";\n\nexport const Incognito: React.FunctionComponent = () => (\n  <svg version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 24 24\">\n    <path d=\"M11.5 10.9c-4 0-7.9.9-11.5 2.8h22.9c-3.6-1.9-7.4-2.8-11.4-2.8z\" fill=\"#4A4A4A\" />\n    <path\n      d=\"M16.7 14.8c-1.7 0-3.1 1.1-3.6 2.6-1-.3-1.9-.3-2.8-.1-.6-1.4-1.9-2.4-3.6-2.4-2.1 0-3.8 1.7-3.8 3.8 0 2.1 1.7 3.8 3.8 3.8s3.8-1.7 3.8-3.8v-.4c.8-.2 1.6-.1 2.4.2v.3c0 2.1 1.7 3.8 3.8 3.8 2.1 0 3.8-1.7 3.8-3.8 0-2.2-1.7-4-3.8-4zm-7.2 3.9c0 1.6-1.3 2.8-2.8 2.8-1.6 0-2.8-1.3-2.8-2.8s1.3-2.8 2.8-2.8c1.2 0 2.2.7 2.6 1.7.1.3.2.6.2 1.1 0-.1 0-.1 0 0zm7.2 2.8c-1.6 0-2.8-1.3-2.8-2.8s1.3-2.8 2.8-2.8 2.8 1.3 2.8 2.8-1.3 2.8-2.8 2.8z\"\n      fill=\"#4A4A4A\"\n    />\n    <path fill=\"#4A4A4A\" d=\"M16.7 2L9.9 3.1 6.6 2 4.4 8.7h14.5z\" />\n  </svg>\n);\n"
  },
  {
    "path": "packages/elements/src/icons/logos/Metamask.tsx",
    "content": "import * as React from \"react\";\n\nexport const MetaMask: React.FunctionComponent = (props: any) => (\n  <svg\n    id=\"metamask_svg__Layer_1\"\n    x={0}\n    y={0}\n    viewBox=\"0 0 318.6 318.6\"\n    xmlSpace=\"preserve\"\n    width=\"1em\"\n    height=\"1em\"\n    {...props}\n  >\n    <style>\n      {\n        \".metamask_svg__st1,.metamask_svg__st2,.metamask_svg__st3,.metamask_svg__st4,.metamask_svg__st5,.metamask_svg__st6,.metamask_svg__st9{fill:#e4761b;stroke:#e4761b;stroke-linecap:round;stroke-linejoin:round}.metamask_svg__st2,.metamask_svg__st3,.metamask_svg__st4,.metamask_svg__st5,.metamask_svg__st6,.metamask_svg__st9{fill:#d7c1b3;stroke:#d7c1b3}.metamask_svg__st3,.metamask_svg__st4,.metamask_svg__st5,.metamask_svg__st6,.metamask_svg__st9{fill:#233447;stroke:#233447}.metamask_svg__st4,.metamask_svg__st5,.metamask_svg__st6,.metamask_svg__st9{fill:#cd6116;stroke:#cd6116}.metamask_svg__st5,.metamask_svg__st6,.metamask_svg__st9{fill:#e4751f;stroke:#e4751f}.metamask_svg__st6,.metamask_svg__st9{fill:#f6851b;stroke:#f6851b}.metamask_svg__st9{fill:#763d16;stroke:#763d16}\"\n      }\n    </style>\n    <path\n      fill=\"#e2761b\"\n      stroke=\"#e2761b\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      d=\"M274.1 35.5l-99.5 73.9L193 65.8z\"\n    />\n    <path\n      className=\"metamask_svg__st1\"\n      d=\"M44.4 35.5l98.7 74.6-17.5-44.3zM238.3 206.8l-26.5 40.6 56.7 15.6 16.3-55.3zM33.9 207.7L50.1 263l56.7-15.6-26.5-40.6z\"\n    />\n    <path\n      className=\"metamask_svg__st1\"\n      d=\"M103.6 138.2l-15.8 23.9 56.3 2.5-2-60.5zM214.9 138.2l-39-34.8-1.3 61.2 56.2-2.5zM106.8 247.4l33.8-16.5-29.2-22.8zM177.9 230.9l33.9 16.5-4.7-39.3z\"\n    />\n    <path\n      className=\"metamask_svg__st2\"\n      d=\"M211.8 247.4l-33.9-16.5 2.7 22.1-.3 9.3zM106.8 247.4l31.5 14.9-.2-9.3 2.5-22.1z\"\n    />\n    <path className=\"metamask_svg__st3\" d=\"M138.8 193.5l-28.2-8.3 19.9-9.1zM179.7 193.5l8.3-17.4 20 9.1z\" />\n    <path\n      className=\"metamask_svg__st4\"\n      d=\"M106.8 247.4l4.8-40.6-31.3.9zM207 206.8l4.8 40.6 26.5-39.7zM230.8 162.1l-56.2 2.5 5.2 28.9 8.3-17.4 20 9.1zM110.6 185.2l20-9.1 8.2 17.4 5.3-28.9-56.3-2.5z\"\n    />\n    <g>\n      <path\n        className=\"metamask_svg__st5\"\n        d=\"M87.8 162.1l23.6 46-.8-22.9zM208.1 185.2l-1 22.9 23.7-46zM144.1 164.6l-5.3 28.9 6.6 34.1 1.5-44.9zM174.6 164.6l-2.7 18 1.2 45 6.7-34.1z\"\n      />\n    </g>\n    <path\n      className=\"metamask_svg__st6\"\n      d=\"M179.8 193.5l-6.7 34.1 4.8 3.3 29.2-22.8 1-22.9zM110.6 185.2l.8 22.9 29.2 22.8 4.8-3.3-6.6-34.1z\"\n    />\n    <path\n      fill=\"#c0ad9e\"\n      stroke=\"#c0ad9e\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      d=\"M180.3 262.3l.3-9.3-2.5-2.2h-37.7l-2.3 2.2.2 9.3-31.5-14.9 11 9 22.3 15.5h38.3l22.4-15.5 11-9z\"\n    />\n    <path\n      fill=\"#161616\"\n      stroke=\"#161616\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      d=\"M177.9 230.9l-4.8-3.3h-27.7l-4.8 3.3-2.5 22.1 2.3-2.2h37.7l2.5 2.2z\"\n    />\n    <g>\n      <path\n        className=\"metamask_svg__st9\"\n        d=\"M278.3 114.2l8.5-40.8-12.7-37.9-96.2 71.4 37 31.3 52.3 15.3 11.6-13.5-5-3.6 8-7.3-6.2-4.8 8-6.1zM31.8 73.4l8.5 40.8-5.4 4 8 6.1-6.1 4.8 8 7.3-5 3.6 11.5 13.5 52.3-15.3 37-31.3-96.2-71.4z\"\n      />\n    </g>\n    <path\n      className=\"metamask_svg__st6\"\n      d=\"M267.2 153.5l-52.3-15.3 15.9 23.9-23.7 46 31.2-.4h46.5zM103.6 138.2l-52.3 15.3-17.4 54.2h46.4l31.1.4-23.6-46zM174.6 164.6l3.3-57.7 15.2-41.1h-67.5l15 41.1 3.5 57.7 1.2 18.2.1 44.8h27.7l.2-44.8z\"\n    />\n  </svg>\n);\n"
  },
  {
    "path": "packages/elements/src/icons/logos/OvalImage.ts",
    "content": "import styled from \"styled-components\";\n\nexport interface OvalImageProps {\n  height?: number;\n  width?: number;\n}\nexport const OvalImage = styled.div`\n  background-color: #f1f1f1;\n  border-radius: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: ${(props: OvalImageProps) => (props.width ? props.width + \"px\" : \"60px\")};\n  height: ${(props: OvalImageProps) => (props.height ? props.height + \"px\" : \"60px\")};\n  > svg {\n    width: ${(props: OvalImageProps) => (props.width ? Math.round(props.width * 0.75).toString() + \"px\" : \"40px\")};\n    height: ${(props: OvalImageProps) => (props.height ? Math.round(props.height * 0.75).toString() + \"px\" : \"40px\")};\n  }\n`;\n"
  },
  {
    "path": "packages/elements/src/icons/logos/Paypal.tsx",
    "content": "import * as React from \"react\";\n\nexport const PaypalLogoIcon = (): JSX.Element => {\n  return (\n    <svg\n      width=\"64px\"\n      height=\"16px\"\n      viewBox=\"0 0 64 16\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n    >\n      <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n        <g transform=\"translate(-43.000000, -132.000000)\">\n          <g>\n            <rect stroke=\"#E9E9EA\" fill=\"#FFFFFF\" fillRule=\"nonzero\" x=\"0.5\" y=\"0.5\" width=\"349\" height=\"198\" />\n            <g transform=\"translate(28.000000, 112.000000)\">\n              <rect strokeOpacity=\"0.5\" stroke=\"#4066FF\" fill=\"#FFFFFF\" x=\"0.5\" y=\"0.5\" width=\"92\" height=\"54\" rx=\"2\" />\n              <g transform=\"translate(15.000000, 20.000000)\" fillRule=\"nonzero\">\n                <path\n                  d=\"M23.8508387,3.48335484 L20.3210323,3.48335484 C20.0796078,3.48320256 19.8739984,3.65881354 19.8363871,3.89729032 L18.4087742,12.9486452 C18.3954918,13.0336465 18.4200827,13.1202025 18.4760721,13.1855235 C18.5320615,13.2508444 18.6138383,13.288384 18.699871,13.2882581 L20.3850323,13.2882581 C20.6266239,13.2883705 20.8322943,13.1124883 20.8696774,12.8738065 L21.2547097,10.4325161 C21.2920625,10.1940274 21.4974426,10.0182063 21.7388387,10.0180645 L22.8562581,10.0180645 C25.1814194,10.0180645 26.5233548,8.89290323 26.8738065,6.66322581 C27.0317419,5.68774194 26.8805161,4.92129032 26.4237419,4.38451613 C25.9220645,3.79509677 25.0322581,3.48335484 23.8508387,3.48335484 L23.8508387,3.48335484 Z M24.2580645,6.78916129 C24.0650323,8.05574194 23.0972903,8.05574194 22.1615484,8.05574194 L21.6289032,8.05574194 L22.0025806,5.69032258 C22.0251809,5.54735479 22.1484182,5.44206677 22.2931613,5.44206452 L22.5372903,5.44206452 C23.1747097,5.44206452 23.776,5.44206452 24.0867097,5.80541935 C24.272,6.02219355 24.3287742,6.34425806 24.2580645,6.78916129 L24.2580645,6.78916129 Z M34.4020645,6.7483871 L32.7117419,6.7483871 C32.5669989,6.74838935 32.4437615,6.85367737 32.4211613,6.99664516 L32.3463226,7.46941935 L32.228129,7.29806452 C31.8621935,6.76696774 31.0461935,6.58941935 30.2317419,6.58941935 C28.363871,6.58941935 26.7685161,8.00412903 26.4578065,9.98864516 C26.2962581,10.9785806 26.5259355,11.9251613 27.0874839,12.5852903 C27.6025806,13.1922581 28.3396129,13.4451613 29.2165161,13.4451613 C30.7215484,13.4451613 31.556129,12.4774194 31.556129,12.4774194 L31.4807742,12.9470968 C31.4671851,13.0320807 31.4914907,13.1187535 31.5472872,13.1842797 C31.6030838,13.2498058 31.6847753,13.2876136 31.7708387,13.2877419 L33.2934194,13.2877419 C33.535011,13.2878544 33.7406814,13.1119722 33.7780645,12.8732903 L34.6916129,7.088 C34.7052211,7.00320242 34.6809613,6.91670242 34.6252416,6.85134853 C34.5695219,6.78599464 34.4879471,6.74836054 34.4020645,6.7483871 L34.4020645,6.7483871 Z M32.0459355,10.0381935 C31.8828387,11.003871 31.1163871,11.652129 30.1388387,11.652129 C29.648,11.652129 29.2557419,11.4947097 29.003871,11.1963871 C28.7540645,10.900129 28.6590968,10.4784516 28.7385806,10.0087742 C28.8908387,9.05135484 29.6701935,8.38193548 30.6327742,8.38193548 C31.1127742,8.38193548 31.5029677,8.54141935 31.76,8.84232258 C32.0175484,9.14632258 32.1197419,9.57058065 32.0459355,10.0381935 L32.0459355,10.0381935 Z M43.4043871,6.7483871 L41.7058065,6.7483871 C41.5431734,6.74864454 41.3911579,6.82919152 41.2996129,6.9636129 L38.9569032,10.4144516 L37.963871,7.09832258 C37.901283,6.89065341 37.7100569,6.74849189 37.4931613,6.7483871 L35.824,6.7483871 C35.7289352,6.7481343 35.6396073,6.79383384 35.5841872,6.87107367 C35.5287671,6.9483135 35.5140862,7.04757271 35.5447742,7.13754839 L37.4157419,12.628129 L35.6567742,15.1112258 C35.5930466,15.200977 35.5847535,15.3187957 35.6352801,15.4165892 C35.6858067,15.5143826 35.7866993,15.5757887 35.8967742,15.5757419 L37.5932903,15.5757419 C37.7540744,15.5759634 37.9047284,15.4972607 37.9963871,15.3651613 L43.6459355,7.21032258 C43.7083474,7.12039791 43.7156733,7.00325781 43.6649515,6.90625782 C43.6142297,6.80925782 43.513848,6.74843857 43.4043871,6.7483871 L43.4043871,6.7483871 Z\"\n                  id=\"Shape\"\n                  fill=\"#253B80\"\n                />\n                <path\n                  d=\"M49.028129,3.48335484 L45.4978065,3.48335484 C45.2565775,3.48345661 45.0512583,3.65900666 45.0136774,3.89729032 L43.5860645,12.9486452 C43.5726265,13.0335001 43.5970191,13.1199842 43.6528156,13.1853118 C43.7086121,13.2506394 43.7902166,13.2882586 43.876129,13.2882581 L45.6877419,13.2882581 C45.8565852,13.2880105 46.0001711,13.1649994 46.0263226,12.9981935 L46.4314839,10.4325161 C46.4688367,10.1940274 46.6742168,10.0182063 46.9156129,10.0180645 L48.0325161,10.0180645 C50.3581935,10.0180645 51.6996129,8.89290323 52.0505806,6.66322581 C52.2090323,5.68774194 52.0567742,4.92129032 51.6,4.38451613 C51.0988387,3.79509677 50.2095484,3.48335484 49.028129,3.48335484 L49.028129,3.48335484 Z M49.4353548,6.78916129 C49.2428387,8.05574194 48.2750968,8.05574194 47.3388387,8.05574194 L46.8067097,8.05574194 L47.1809032,5.69032258 C47.203068,5.54732171 47.3262594,5.44188558 47.4709677,5.44206452 L47.7150968,5.44206452 C48.352,5.44206452 48.9538065,5.44206452 49.2645161,5.80541935 C49.4498065,6.02219355 49.5060645,6.34425806 49.4353548,6.78916129 L49.4353548,6.78916129 Z M59.5788387,6.7483871 L57.8895484,6.7483871 C57.7447593,6.74798882 57.6214444,6.8535306 57.5994839,6.99664516 L57.5246452,7.46941935 L57.4059355,7.29806452 C57.04,6.76696774 56.2245161,6.58941935 55.4100645,6.58941935 C53.5421935,6.58941935 51.9473548,8.00412903 51.6366452,9.98864516 C51.4756129,10.9785806 51.7042581,11.9251613 52.2658065,12.5852903 C52.7819355,13.1922581 53.5179355,13.4451613 54.3948387,13.4451613 C55.899871,13.4451613 56.7344516,12.4774194 56.7344516,12.4774194 L56.6590968,12.9470968 C56.6454791,13.0322588 56.6699161,13.1191071 56.7259447,13.1846725 C56.7819732,13.2502379 56.8639498,13.287916 56.9501935,13.2877419 L58.4722581,13.2877419 C58.7136542,13.2876002 58.9190343,13.1117791 58.9563871,12.8732903 L59.8704516,7.088 C59.8835646,7.00294166 59.8588415,6.91640123 59.8027752,6.85110624 C59.7467088,6.78581126 59.6649018,6.74828659 59.5788387,6.7483871 L59.5788387,6.7483871 Z M57.2227097,10.0381935 C57.0606452,11.003871 56.2931613,11.652129 55.3156129,11.652129 C54.8258065,11.652129 54.4325161,11.4947097 54.1806452,11.1963871 C53.9308387,10.900129 53.8369032,10.4784516 53.9153548,10.0087742 C54.0686452,9.05135484 54.8469677,8.38193548 55.8095484,8.38193548 C56.2895484,8.38193548 56.6797419,8.54141935 56.9367742,8.84232258 C57.1953548,9.14632258 57.2975484,9.57058065 57.2227097,10.0381935 L57.2227097,10.0381935 Z M61.5716129,3.7316129 L60.1228387,12.9486452 C60.1094007,13.0335001 60.1337933,13.1199842 60.1895898,13.1853118 C60.2453863,13.2506394 60.3269908,13.2882586 60.4129032,13.2882581 L61.8694194,13.2882581 C62.1114839,13.2882581 62.3169032,13.1127742 62.3540645,12.8738065 L63.7827097,3.82296774 C63.7961313,3.7380641 63.7717488,3.65153729 63.7159718,3.58613324 C63.6601947,3.52072919 63.578603,3.48299083 63.4926452,3.48283871 L61.8616774,3.48283871 C61.7170431,3.48335085 61.5941558,3.58874522 61.5716129,3.7316129 L61.5716129,3.7316129 Z\"\n                  id=\"Shape\"\n                  fill=\"#179BD7\"\n                />\n                <path\n                  d=\"M3.75019355,15.0472258 L4.02012903,13.3326452 L3.41883871,13.3187097 L0.547612903,13.3187097 L2.54296774,0.66683871 C2.55524562,0.586939826 2.62419665,0.528089902 2.70503226,0.528516129 L7.54632258,0.528516129 C9.15354839,0.528516129 10.2627097,0.862967742 10.8418065,1.52309677 C11.1132903,1.83277419 11.2861935,2.1563871 11.3698065,2.51251613 C11.4575484,2.88619355 11.4590968,3.33264516 11.3734194,3.87716129 L11.3672258,3.91690323 L11.3672258,4.26580645 L11.6387097,4.4196129 C11.8459649,4.52461422 12.0322584,4.66665203 12.1883871,4.83870968 C12.4206452,5.10348387 12.5708387,5.44 12.6343226,5.83896774 C12.699871,6.24929032 12.6781935,6.73754839 12.5708387,7.29032258 C12.4469677,7.92619355 12.2467097,8.48 11.9762581,8.93316129 C11.737635,9.33912072 11.4167969,9.69072418 11.0343226,9.96541935 C10.6750968,10.2203871 10.2482581,10.4139355 9.76567742,10.5378065 C9.29806452,10.6596129 8.76490323,10.7210323 8.18012903,10.7210323 L7.80335484,10.7210323 C7.53393548,10.7210323 7.27225806,10.8180645 7.06683871,10.992 C6.8617106,11.1677914 6.7256333,11.4106821 6.68283871,11.6774194 L6.65445161,11.8317419 L6.17754839,14.8536774 L6.15587097,14.9646452 C6.15019355,14.9997419 6.1403871,15.0172903 6.12593548,15.0291613 C6.11193597,15.0406102 6.0944703,15.0469779 6.0763871,15.0472258 L3.75019355,15.0472258 Z\"\n                  id=\"Path\"\n                  fill=\"#253B80\"\n                />\n                <path\n                  d=\"M11.8957419,3.95716129 C11.8812903,4.04954839 11.8647742,4.144 11.8461935,4.24103226 C11.2077419,7.51896774 9.02348387,8.65135484 6.23380645,8.65135484 L4.81341935,8.65135484 C4.47225806,8.65135484 4.18477419,8.89909677 4.1316129,9.2356129 L3.4043871,13.8477419 L3.19845161,15.1550968 C3.18184956,15.2600448 3.21201609,15.3670013 3.28100921,15.4478076 C3.35000232,15.5286139 3.45090825,15.5751725 3.55716129,15.5752258 L6.0763871,15.5752258 C6.37470968,15.5752258 6.62812903,15.3584516 6.67509677,15.0642581 L6.69987097,14.9362581 L7.17419355,11.9261935 L7.20464516,11.7610323 C7.25109677,11.4658065 7.50503226,11.2490323 7.80335484,11.2490323 L8.18012903,11.2490323 C10.6209032,11.2490323 12.5316129,10.2580645 13.0900645,7.39045161 C13.3233548,6.19251613 13.2025806,5.19225806 12.5852903,4.48877419 C12.3896414,4.27115513 12.1559755,4.09100848 11.8957419,3.95716129 L11.8957419,3.95716129 Z\"\n                  id=\"Path\"\n                  fill=\"#179BD7\"\n                />\n                <path\n                  d=\"M11.227871,3.69083871 C11.0240136,3.63186642 10.8166324,3.58583917 10.6069677,3.55303226 C10.1926813,3.48936354 9.77397926,3.45881521 9.35483871,3.46167742 L5.56025806,3.46167742 C5.26187242,3.46144702 5.00789159,3.67883183 4.96206452,3.97367742 L4.15483871,9.08645161 L4.1316129,9.2356129 C4.1835753,8.89930045 4.47311636,8.65118502 4.81341935,8.65135484 L6.23380645,8.65135484 C9.02348387,8.65135484 11.2077419,7.51845161 11.8461935,4.24103226 C11.8652903,4.144 11.8812903,4.04954839 11.8957419,3.95716129 C11.7272698,3.86881475 11.5516871,3.79474888 11.3708387,3.73574194 C11.3234261,3.72001024 11.2757641,3.70504057 11.227871,3.69083871 L11.227871,3.69083871 Z\"\n                  id=\"Path\"\n                  fill=\"#222D65\"\n                />\n                <path\n                  d=\"M4.96206452,3.97367742 C5.00750887,3.67869599 5.26179806,3.46126667 5.56025806,3.46219355 L9.35483871,3.46219355 C9.8043871,3.46219355 10.224,3.4916129 10.6069677,3.55354839 C10.86612,3.59427729 11.1216936,3.65519387 11.3713548,3.73574194 C11.5597419,3.79819355 11.7347097,3.872 11.8962581,3.95716129 C12.0861935,2.74580645 11.8947097,1.92103226 11.2397419,1.17419355 C10.5176774,0.352 9.21445161,0 7.54683871,0 L2.70554839,0 C2.36490323,0 2.07432258,0.247741935 2.02167742,0.584774194 L0.00516129032,13.3667097 C-0.0138469339,13.4868063 0.0206397385,13.6092075 0.0995495612,13.7017157 C0.178459384,13.7942238 0.293892403,13.8475775 0.415483871,13.8477419 L3.4043871,13.8477419 L4.15483871,9.08645161 L4.96206452,3.97367742 Z\"\n                  id=\"Path\"\n                  fill=\"#253B80\"\n                />\n              </g>\n            </g>\n          </g>\n        </g>\n      </g>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/icons/logos/Portis.tsx",
    "content": "import * as React from \"react\";\n\nexport const Portis: React.FunctionComponent = props => (\n  <svg viewBox=\"0 0 301.38 455.87\" width=\"1em\" height=\"1em\" {...props}>\n    <defs>\n      <style>\n        {\".portis_svg__cls-5{fill:#4b6b9a}.portis_svg__cls-8{fill:#6db2d8}.portis_svg__cls-9{fill:#335f8a}\"}\n      </style>\n    </defs>\n    <g id=\"portis_svg__Layer_2\" data-name=\"Layer 2\">\n      <g id=\"portis_svg__Layer_1-2\" data-name=\"Layer 1\">\n        <path\n          fill=\"#133444\"\n          d=\"M4.45 262.11l10.93-4.75 135.31-58.82 146.24 63.57-54.95 113.43-134.33 19-101-109-2.2-23.43z\"\n        />\n        <path\n          d=\"M266.51 192.16a150.43 150.43 0 00-95.82-53q-1.2-.17-2.4-.3a152.36 152.36 0 00-35.2 0q-1.2.14-2.4.3a150.43 150.43 0 00-95.82 53l-6.08 10.08L18.66 219l-7.41 12.31c-.14.33-.28.67-.41 1l-.09.23 16.35 9.67 103.6 61.28 20 11.83V168.85l-20 9.08V156l20-9.09 20 9.09 101.9 46.28z\"\n          fill=\"#c42370\"\n        />\n        <path\n          d=\"M301.38 298.56c0 48.78-23.18 94.42-59.12 123.84a149.45 149.45 0 01-47.64 26.37 139.51 139.51 0 01-43.93 7.1C67.47 455.87 0 381.78 0 298.56a150.49 150.49 0 014.45-36.45l146.24 86.51 146.24-86.51a150.49 150.49 0 014.45 36.45z\"\n          fill=\"#1c4d6b\"\n        />\n        <path d=\"M133.09 138.89l17.6 7.99-20 9.09V137.8l2.4 1.09zM130.69 177.93l20-9.08v146.53l-20-11.83V177.93z\" />\n        <path fill=\"#1d4259\" d=\"M150.69 168.85v146.53l140.13-82.89-140.13-63.64z\" />\n        <path className=\"portis_svg__cls-5\" d=\"M150.69 0v168.85l140.13 63.64L150.69 0z\" />\n        <path\n          d=\"M150.69 168.85v146.53l-20-11.83-119.95-71-.18-.11.27-.12c.13-.33.27-.67.41-1l17.53-29.09L130.69 156v22z\"\n          fill=\"#343535\"\n        />\n        <path fill=\"#3e5578\" d=\"M150.69 168.85v146.53l-20-11.83L10.74 232.6l-.18-.11.27-.12 119.86-54.44 20-9.08z\" />\n        <path className=\"portis_svg__cls-8\" d=\"M150.69 0v168.85L10.56 232.49 150.69 0z\" />\n        <path\n          className=\"portis_svg__cls-9\"\n          d=\"M94 443.85c2.09.92 4.21 1.79 6.34 2.61q-3.26-1.23-6.34-2.61zM100.29 446.46c2.14.82 4.29 1.59 6.47 2.31q-3.27-1.07-6.47-2.31zM112.33 450.49c1.66.47 3.33.92 5 1.33q-2.51-.62-5-1.33z\"\n        />\n        <path\n          className=\"portis_svg__cls-8\"\n          d=\"M4.45 262.11l146.24 86.51A167.48 167.48 0 01140.22 387c-11.7 28.28-35.34 58.19-81.08 35.44C23.18 393 0 347.34 0 298.56a150.49 150.49 0 014.45-36.45z\"\n        />\n        <path\n          d=\"M242.24 422.41l-.36.29c-.76.62-1.52 1.23-2.29 1.83l-.2.16q-1.25 1-2.52 1.92c-.91.68-1.83 1.36-2.76 2s-1.86 1.31-2.8 1.95-1.66 1.12-2.49 1.66l-.46.3c-.88.57-1.76 1.13-2.64 1.67a2.63 2.63 0 01-.33.2c-.91.57-1.82 1.12-2.74 1.65s-2 1.15-3 1.7-2 1.08-3 1.6l-.11.06c-1 .52-2 1-3 1.52s-2 1-3.08 1.49-2.08 1-3.12 1.42c-2.09.92-4.21 1.79-6.34 2.61s-4.29 1.59-6.47 2.31c-.87.29-1.74.57-2.62.84s-2 .6-2.95.88c-1.66.47-3.33.92-5 1.33-.63.16-1.27.31-1.91.45l-1.07.25c-.89.2-1.78.39-2.68.57s-1.64.33-2.47.48-1.51.28-2.27.4-1.68.27-2.52.39c-.41.07-.82.13-1.24.18l-1.89.25-1.05.13c-.69.09-1.39.16-2.09.23-.86.09-1.71.17-2.57.24-.67.05-1.34.11-2 .15s-1.16.08-1.75.1h-.08c-.68 0-1.36.08-2 .1-.94 0-1.89.07-2.84.09s-1.9 0-2.86 0h-2.86c-.95 0-1.9 0-2.84-.09-.69 0-1.37-.06-2.05-.1h-.08c-.59 0-1.17-.06-1.75-.1s-1.34-.1-2-.15c-.86-.07-1.71-.15-2.57-.24-.7-.07-1.4-.14-2.09-.23l-1-.13c-.63-.07-1.26-.16-1.89-.25-.42 0-.83-.11-1.24-.18q-1.27-.18-2.52-.39c-.76-.12-1.52-.26-2.27-.4s-1.65-.31-2.47-.48-1.79-.37-2.68-.57l-1.07-.25c-.64-.14-1.28-.29-1.91-.45-1.68-.41-3.35-.86-5-1.33l-3-.88a146.194 146.194 0 01-9.09-3.15c-2.14-.82-4.29-1.67-6.29-2.59-1-.46-2.08-.94-3.12-1.42s-2.06-1-3.08-1.49-2-1-3-1.52l-.11-.06c-1-.52-2-1.06-3-1.6s-2-1.12-3-1.7S76.9 435 76 434.41l-.33-.2c-.88-.54-1.76-1.1-2.64-1.67l-.46-.3a155.645 155.645 0 01-5.29-3.61c-.92-.66-1.85-1.34-2.76-2s-1.69-1.27-2.52-1.92l-.2-.16c-.77-.6-1.53-1.21-2.29-1.83l-.36-.29c45.74 22.75 69.38-7.16 81.08-35.44a167.48 167.48 0 0010.47-38.35A167.47 167.47 0 00161.16 387c11.7 28.25 35.34 58.16 81.08 35.41z\"\n          fill=\"#529bba\"\n        />\n        <path\n          className=\"portis_svg__cls-9\"\n          d=\"M184 451.82c1.68-.41 3.35-.86 5-1.33q-2.44.72-5 1.33zM194.62 448.77c2.18-.72 4.33-1.49 6.47-2.31q-3.19 1.24-6.47 2.31zM201.09 446.46c2.13-.82 4.25-1.69 6.34-2.61q-3.13 1.38-6.34 2.61z\"\n        />\n        <path\n          className=\"portis_svg__cls-5\"\n          d=\"M301.38 298.56c0 48.78-23.19 94.43-59.14 123.85-45.74 22.75-69.38-7.16-81.08-35.44a167.47 167.47 0 01-10.47-38.35l146.24-86.51a150.49 150.49 0 014.45 36.45z\"\n        />\n      </g>\n    </g>\n  </svg>\n);\n"
  },
  {
    "path": "packages/elements/src/icons/logos/index.ts",
    "content": "export * from \"./Burner\";\nexport * from \"./CivilLogo\";\nexport * from \"./Incognito\";\nexport * from \"./Metamask\";\nexport * from \"./OvalImage\";\nexport * from \"./Paypal\";\nexport * from \"./Portis\";\n"
  },
  {
    "path": "packages/elements/src/images/__snapshots__/icon.stories.storyshot",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ApplicationInProgressIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 19 18\"\n        width=\"19\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M9 0c3.316 0 6.253 1.8 7.768 4.547l2.18-2.179v6.158h-6.159l2.653-2.652c-1.231-2.369-3.6-3.98-6.442-3.98-3.884 0-7.105 3.222-7.105 7.106S5.115 16.105 9 16.105c3.126 0 5.684-1.99 6.726-4.737h1.99C16.674 15.158 13.168 18 9 18c-5.021 0-9-4.074-9-9s4.074-9 9-9zM7.401 4.737v4.831l4.453 2.653.758-1.232-3.79-2.273v-3.98h-1.42z\"\n          fill=\"#7D7373\"\n          opacity=\".9\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ApplicationInProgressIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ApplicationInProgressIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ApplicationInProgressIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ApprovedNewsroomsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"9\"\n          cy=\"9\"\n          fill=\"none\"\n          r=\"8.25\"\n          stroke=\"#7D7373\"\n        />\n        <path\n          d=\"M12.6 5l-5.13 5.17L5.4 8.09 4 9.5 7.47 13 14 6.41z\"\n          fill=\"#7D7373\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ApprovedNewsroomsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ApprovedNewsroomsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ApprovedNewsroomsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleIndexIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height={24}\n        viewBox=\"0 0 24 24\"\n        width={24}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h24v24h-24z\"\n            opacity=\".3\"\n          />\n          <path\n            d=\"m10.0732422 0 5.9267578 6.11658537v10.88536583c0 1.0989268-.9 1.9980488-2 1.9980488h-12.01c-1.1 0-1.99-.899122-1.99-1.9980488l.08324219-15.00390242c0-1.09892683.89-1.99804878 1.99-1.99804878zm-8.0732422 17.0019512h12v-10.98926827h-5v-3.89512195h-7zm2.5-6.0126829 3.5-3.99609757 3.5 3.99609757h-2.23125v3.9780488h-2.5375v-3.9780488z\"\n            fill=\"#444\"\n            fillRule=\"nonzero\"\n            transform=\"translate(4 3)\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleIndexIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleIndexIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleIndexIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleIndexPanelIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h18v18h-18z\"\n            opacity=\".3\"\n          />\n          <g\n            fill=\"#000000\"\n            fillOpacity=\".5\"\n            fillRule=\"nonzero\"\n          >\n            <path\n              d=\"m12 9.07439826-1.5 1.43373974v-5.17480467h-3.75v-2.97061012h-5.25v11.35156249h3.52038574l1.49697153 1.5238095h-5.02485727c-.825 0-1.4925-.6857142-1.4925-1.5238095l.06243164-11.44270832c0-.83809524.6675-1.52380952 1.4925-1.52380952h6l4.44506836 4.66480654z\"\n              transform=\"translate(3 1)\"\n            />\n            <path\n              d=\"m15.52 11.5-3.591 3.877-1.449-1.559-.98 1.057 2.429 2.625 4.571-4.943z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleIndexPanelIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleIndexPanelIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleIndexPanelIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleSignIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"0 0 24 0 24 24 0 24\"\n          />\n          <g\n            fill=\"#444\"\n            fillRule=\"nonzero\"\n            transform=\"translate(3 4)\"\n          >\n            <path\n              d=\"M8 8C10.21 8 12 6.21 12 4 12 1.79 10.21 0 8 0 5.79 0 4 1.79 4 4 4 6.21 5.79 8 8 8ZM8 2C9.1 2 10 2.9 10 4 10 5.1 9.1 6 8 6 6.9 6 6 5.1 6 4 6 2.9 6.9 2 8 2Z\"\n            />\n            <path\n              d=\"M2 14C2.2 13.37 4.57 12.32 6.96 12.06L9 10.06C8.61 10.02 8.32 10 8 10 5.33 10 0 11.34 0 14L0 16 9 16 7 14 2 14Z\"\n            />\n            <polygon\n              points=\"17.6 8.5 12.47 13.67 10.4 11.59 9 13 12.47 16.5 19 9.91\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleSignIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleSignIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleSignIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ArticleSignPanelIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          opacity=\".3\"\n        >\n          <path\n            d=\"m0 0h20v20h-20z\"\n          />\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(1.667 1.667)\"\n          >\n            <path\n              d=\"m8.33333333 0c-4.6 0-8.33333333 3.73333333-8.33333333 8.33333333 0 4.59999997 3.73333333 8.33333337 8.33333333 8.33333337 4.59999997 0 8.33333337-3.7333334 8.33333337-8.33333337 0-4.6-3.7333334-8.33333333-8.33333337-8.33333333zm-4.10833333 13.5666667c.35833333-.75 2.54166667-1.4833334 4.10833333-1.4833334 1.56666667 0 3.75833337.7333334 4.10833337 1.4833334-1.1333334.9-2.55833337 1.4333333-4.10833337 1.4333333s-2.975-.5333333-4.10833333-1.4333333zm9.4083333-1.2083334c-1.1916666-1.45-4.0833333-1.9416666-5.29999997-1.9416666-1.21666666 0-4.10833333.4916666-5.3 1.9416666-.85-1.1166666-1.36666666-2.5083333-1.36666666-4.02499997 0-3.675 2.99166666-6.66666666 6.66666666-6.66666666 3.67499997 0 6.66666667 2.99166666 6.66666667 6.66666666 0 1.51666667-.5166667 2.90833337-1.3666667 4.02499997z\"\n            />\n            <path\n              d=\"m8.33333333 3.33333333c-1.61666666 0-2.91666666 1.3-2.91666666 2.91666667s1.3 2.91666667 2.91666666 2.91666667c1.61666667 0 2.91666667-1.3 2.91666667-2.91666667s-1.3-2.91666667-2.91666667-2.91666667zm0 4.16666667c-.69166666 0-1.25-.55833333-1.25-1.25s.55833334-1.25 1.25-1.25c.69166667 0 1.25.55833333 1.25 1.25s-.55833333 1.25-1.25 1.25z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ArticleSignPanelIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ArticleSignPanelIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ArticleSignPanelIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BellIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 21 24\"\n        width=\"21\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M10.065 24C11.342 24 12.387 22.955 12.387 21.677L7.742 21.677C7.742 22.955 8.787 24 10.065 24L10.065 24ZM17.761 16.577L17.761 10.065C17.761 6.394 15.274 3.434 11.841 2.605L11.841 1.776C11.841 0.829 11.012 0 10.065 0 9.117 0 8.288 0.829 8.288 1.776L8.288 2.605C4.855 3.434 2.368 6.394 2.368 10.065L2.368 16.577 0 18.945 0 20.129 20.129 20.129 20.129 18.945 17.761 16.577 17.761 16.577Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BellIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BellIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BellIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BookreaderIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"70\"\n        viewBox=\"0 0 70 70\"\n        width=\"70\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M35 29.67C40.992 29.67 45.867 24.795 45.867 18.803 45.867 12.812 40.992 7.936 35 7.936 29.008 7.936 24.133 12.811 24.133 18.803 24.133 24.795 29.008 29.67 35 29.67ZM35 9.157C40.319 9.157 44.646 13.484 44.646 18.803 44.646 24.122 40.319 28.449 35 28.449 29.681 28.449 25.354 24.122 25.354 18.803 25.354 13.484 29.681 9.157 35 9.157Z\"\n          />\n          <path\n            d=\"M8.088 43.479C8.088 45.694 8.408 51.05 11.371 52.947 12.002 53.351 12.703 53.57 13.471 53.606L13.471 55.818 34.39 61.911 34.39 62.267 35 62.089 35.61 62.267 35.61 61.911 56.53 55.818 56.53 53.607C57.297 53.571 57.999 53.351 58.63 52.948 61.593 51.05 61.913 45.694 61.913 43.48 61.913 39.771 58.642 38.08 56.531 37.594L56.531 25.879 35 32.986 13.47 25.88 13.47 37.594C11.359 38.079 8.088 39.77 8.088 43.479ZM56.502 39.242L56.529 38.865C57.876 39.251 60.69 40.423 60.69 43.479 60.69 45.05 60.494 50.302 57.971 51.919 56.92 52.591 55.53 52.537 53.838 51.759 52.035 50.929 51.041 50.008 50.885 49.024 50.643 47.501 52.376 45.898 53.522 44.837L55.301 43.164 53.332 43.486C52.672 43.595 51.168 43.649 50.73 43.126 50.568 42.932 50.565 42.607 50.722 42.159 51.076 41.155 51.85 41.083 53.188 41.041 54.431 41.003 55.976 40.954 56.502 39.242ZM35.61 34.07L55.309 27.569 55.309 38.964C55.048 39.689 54.464 39.78 53.151 39.821 51.914 39.859 50.218 39.912 49.571 41.754 49.184 42.855 49.48 43.535 49.796 43.911 50.275 44.482 51.086 44.695 51.833 44.758 50.643 45.94 49.405 47.483 49.68 49.216 49.908 50.648 51.101 51.843 53.329 52.869 54.024 53.189 54.685 53.406 55.309 53.519L55.309 54.903 35.61 60.64 35.61 34.07ZM14.691 27.569L34.39 34.07 34.39 60.64 14.691 54.902 14.691 53.518C15.316 53.404 15.977 53.188 16.671 52.868 18.899 51.842 20.092 50.647 20.32 49.215 20.595 47.482 19.358 45.939 18.167 44.758 18.914 44.695 19.725 44.481 20.204 43.91 20.52 43.534 20.815 42.855 20.429 41.753 19.782 39.911 18.086 39.858 16.849 39.82 15.536 39.78 14.951 39.688 14.691 38.963L14.691 27.569ZM13.47 38.86L13.47 39.062 13.497 39.242C14.024 40.955 15.569 41.004 16.811 41.042 18.15 41.083 18.924 41.156 19.277 42.16 19.434 42.608 19.432 42.933 19.27 43.127 18.832 43.65 17.327 43.596 16.667 43.487L14.698 43.165 16.477 44.838C17.623 45.899 19.356 47.502 19.114 49.024 18.958 50.009 17.964 50.93 16.161 51.76 14.468 52.539 13.078 52.592 12.029 51.92 9.505 50.303 9.309 45.051 9.309 43.48 9.309 40.388 12.12 39.236 13.47 38.86Z\"\n          />\n          <path\n            d=\"M18.874 66.134C17.868 66.134 17.049 66.953 17.049 67.959 17.049 68.965 17.868 69.783 18.874 69.783 19.88 69.783 20.699 68.965 20.699 67.959 20.699 66.953 19.881 66.134 18.874 66.134ZM18.874 69.377C18.093 69.377 17.456 68.74 17.456 67.959 17.456 67.177 18.093 66.541 18.874 66.541 19.655 66.541 20.292 67.177 20.292 67.959 20.292 68.74 19.656 69.377 18.874 69.377Z\"\n          />\n          <path\n            d=\"M1.213 23.533L2.826 22.685 4.439 23.533 4.132 21.737 5.437 20.464 3.633 20.202 2.826 18.568 2.019 20.202 0.216 20.464 1.521 21.737 1.213 23.533ZM1.09 20.748L2.29 20.574 2.826 19.488 3.362 20.574 4.562 20.748 3.695 21.595 3.899 22.79 2.826 22.227 1.753 22.79 1.958 21.595 1.09 20.748Z\"\n          />\n          <path\n            d=\"M17.812 4.908L18.925 4.323 20.039 4.908 19.826 3.668 20.727 2.79 19.482 2.609 18.925 1.481 18.368 2.609 17.123 2.79 18.024 3.668 17.812 4.908ZM17.998 3.073L18.64 2.981 18.926 2.4 19.213 2.981 19.854 3.073 19.39 3.526 19.499 4.164 18.926 3.863 18.353 4.164 18.462 3.526 17.998 3.073Z\"\n          />\n          <path\n            d=\"M64.98 51.334L65.881 52.212 65.669 53.452 66.782 52.866 67.896 53.452 67.683 52.212 68.585 51.334 67.339 51.152 66.782 50.024 66.226 51.152 64.98 51.334ZM66.782 50.944L67.069 51.524 67.71 51.617 67.246 52.069 67.355 52.708 66.782 52.406 66.209 52.708 66.318 52.069 65.855 51.617 66.496 51.524 66.782 50.944Z\"\n          />\n          <path\n            d=\"M66.782 7.435L66.048 9.696 63.672 9.696 65.594 11.093 64.86 13.353 66.782 11.956 68.705 13.353 67.971 11.093 69.893 9.696 67.517 9.696 66.782 7.435ZM67.492 10.938L67.931 12.287 66.782 11.453 65.634 12.287 66.073 10.938 64.924 10.103 66.345 10.103 66.783 8.752 67.222 10.103 68.642 10.103 67.492 10.938Z\"\n          />\n          <path\n            d=\"M60.307 3.867C61.313 3.867 62.132 3.048 62.132 2.042 62.132 1.036 61.313 0.217 60.307 0.217 59.301 0.217 58.482 1.036 58.482 2.042 58.482 3.048 59.3 3.867 60.307 3.867ZM60.307 0.624C61.088 0.624 61.725 1.261 61.725 2.042 61.725 2.824 61.088 3.46 60.307 3.46 59.525 3.46 58.889 2.824 58.889 2.042 58.889 1.261 59.524 0.624 60.307 0.624Z\"\n          />\n          <path\n            d=\"M66.579 35.803C66.579 36.604 67.231 37.256 68.033 37.256 68.834 37.256 69.486 36.604 69.486 35.803 69.486 35.001 68.834 34.349 68.033 34.349 67.231 34.349 66.579 35.001 66.579 35.803ZM68.033 34.756C68.61 34.756 69.079 35.225 69.079 35.803 69.079 36.38 68.61 36.849 68.033 36.849 67.456 36.849 66.986 36.38 66.986 35.803 66.986 35.225 67.456 34.756 68.033 34.756Z\"\n          />\n          <path\n            d=\"M8.073 11.815C9.133 11.815 9.995 10.953 9.995 9.894 9.995 8.834 9.133 7.972 8.073 7.972 7.013 7.972 6.151 8.834 6.151 9.894 6.151 10.953 7.013 11.815 8.073 11.815ZM8.073 8.379C8.908 8.379 9.588 9.058 9.588 9.894 9.588 10.729 8.908 11.408 8.073 11.408 7.238 11.408 6.558 10.729 6.558 9.894 6.558 9.058 7.238 8.379 8.073 8.379Z\"\n          />\n          <path\n            d=\"M13.89 67.582L13.791 67.976C14.056 68.043 14.324 68.103 14.595 68.157L14.676 67.758C14.411 67.706 14.149 67.647 13.89 67.582Z\"\n          />\n          <path\n            d=\"M6.995 63.886C6.606 63.532 6.231 63.155 5.88 62.766L5.578 63.039C5.937 63.438 6.322 63.824 6.721 64.187L6.995 63.886Z\"\n          />\n          <path\n            d=\"M9.526 65.77C9.077 65.5 8.636 65.204 8.214 64.89L7.97 65.216C8.403 65.539 8.856 65.842 9.316 66.118L9.526 65.77Z\"\n          />\n          <path\n            d=\"M10.918 66.516L10.744 66.884C11.23 67.115 11.734 67.324 12.24 67.505L12.378 67.122C11.884 66.945 11.393 66.742 10.918 66.516Z\"\n          />\n          <path\n            d=\"M3.655 60.438C3.931 60.9 4.233 61.353 4.553 61.786L4.88 61.544C4.569 61.121 4.273 60.679 4.004 60.229L3.655 60.438Z\"\n          />\n          <path\n            d=\"M2.196 55.868C2.068 55.359 1.964 54.838 1.888 54.321L1.485 54.38C1.564 54.912 1.67 55.446 1.8 55.967L2.196 55.868Z\"\n          />\n          <path\n            d=\"M2.272 57.516C2.452 58.02 2.661 58.523 2.891 59.012L3.259 58.837C3.034 58.361 2.83 57.87 2.654 57.379L2.272 57.516Z\"\n          />\n          <path\n            d=\"M1.307 51.973C1.307 52.24 1.314 52.506 1.327 52.77L1.733 52.751C1.721 52.493 1.714 52.233 1.714 51.973 1.714 51.706 1.721 51.439 1.734 51.171L1.328 51.151C1.314 51.426 1.307 51.7 1.307 51.973Z\"\n          />\n          <path\n            d=\"M2.03 48.796L1.631 48.716C1.577 48.987 1.529 49.257 1.49 49.528L1.892 49.588C1.931 49.324 1.977 49.059 2.03 48.796Z\"\n          />\n          <path\n            d=\"M68.939 57.8L68.532 57.792C68.527 58.06 68.512 58.326 68.488 58.59L68.893 58.627C68.918 58.354 68.934 58.079 68.939 57.8Z\"\n          />\n          <path\n            d=\"M66.054 65.168C66.455 64.716 66.822 64.23 67.146 63.724L66.804 63.505C66.491 63.992 66.137 64.461 65.75 64.897L66.054 65.168Z\"\n          />\n          <path\n            d=\"M61.485 67.862C60.942 68.072 60.38 68.239 59.813 68.361L59.897 68.759C60.486 68.633 61.068 68.459 61.632 68.241L61.485 67.862Z\"\n          />\n          <path\n            d=\"M67.624 61.965L67.998 62.127C68.238 61.574 68.436 60.998 68.585 60.414L68.191 60.313C68.047 60.876 67.856 61.432 67.624 61.965Z\"\n          />\n          <path\n            d=\"M64.49 66.107C64.04 66.476 63.558 66.811 63.057 67.104L63.262 67.456C63.782 67.152 64.282 66.804 64.748 66.422L64.49 66.107Z\"\n          />\n          <path\n            d=\"M58.076 68.588C57.812 68.601 57.547 68.607 57.276 68.6L57.268 69.007C57.346 69.009 57.424 69.009 57.503 69.009 57.702 69.009 57.9 69.005 58.097 68.994L58.076 68.588Z\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"19.028\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"28.795\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"22.284\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.829\"\n            y=\"25.539\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BookreaderIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BookreaderIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BookreaderIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons BrainIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"74\"\n        viewBox=\"0 0 74 74\"\n        width=\"74\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M15.655 32.216C14.873 34.266 15.594 36.476 15.871 37.188 14.916 40.662 17.583 42.734 19.452 43.493 19.57 44.285 19.944 44.946 20.569 45.46 22.338 46.914 25.706 46.726 27.107 46.573 27.918 50.057 30.993 50.102 33.271 50.135 34.108 50.148 34.898 50.158 35.482 50.318 37.083 50.755 40.307 56.437 41.961 59.916L42.188 60.39 47.399 59.122 47.369 58.586C47.361 58.443 47.19 55.685 45.725 53.361 46.699 53.487 47.865 53.472 48.793 52.961 49.456 52.596 49.918 52.037 50.171 51.297 51.265 51.131 54.034 50.525 55.289 48.576 55.946 47.557 56.09 46.351 55.723 44.983 56.199 44.681 56.56 44.306 56.802 43.86 57.319 42.906 57.134 41.905 56.959 41.354 57.584 40.581 57.877 39.694 57.834 38.713 57.726 36.304 55.557 34.056 54.835 33.371 54.833 28.189 49.386 26.433 48.05 26.081 46.661 23.753 44.955 22.368 42.978 21.963 40.789 21.513 38.903 22.409 38.079 22.9 36.451 21.568 34.715 20.962 32.929 21.106 30.21 21.321 28.172 23.195 27.43 23.978 25.518 23.399 23.78 23.513 22.26 24.317 19.714 25.662 18.592 28.522 18.284 29.456 16.998 30.087 16.115 31.014 15.655 32.216ZM54.206 47.875C53.002 49.75 49.64 50.067 49.607 50.07L49.13 50.113 49.032 50.58C48.906 51.171 48.625 51.58 48.172 51.83 47.003 52.473 44.933 51.948 44.236 51.691L41.122 50.542 43.578 52.774C45.328 54.364 45.868 57.008 46.023 58.13L42.899 58.89C42.086 57.223 40.013 53.167 38.007 50.806 41.392 50.783 43.768 48.553 44.686 47.526 45.934 48.373 47.249 48.716 48.598 48.547 50.984 48.249 52.73 46.425 53.277 45.784 53.733 45.721 54.149 45.631 54.525 45.516 54.736 46.439 54.63 47.215 54.206 47.875ZM19.076 30.511L19.359 30.386 19.44 30.087C19.448 30.054 20.353 26.783 22.863 25.458 24.163 24.772 25.696 24.729 27.417 25.332L27.846 25.482 28.131 25.13C28.152 25.105 30.201 22.617 33.03 22.394 34.598 22.262 36.132 22.874 37.595 24.186L37.99 24.541 38.415 24.221C38.434 24.206 40.396 22.753 42.718 23.227 44.385 23.569 45.848 24.826 47.07 26.964L47.216 27.219 47.503 27.277C47.758 27.328 53.74 28.599 53.539 33.624L53.526 33.934 53.76 34.137C53.786 34.16 56.444 36.497 56.544 38.774 56.576 39.532 56.317 40.186 55.752 40.772L55.441 41.1 55.639 41.506C55.644 41.516 56.095 42.467 55.663 43.252 55.293 43.925 54.326 44.368 52.868 44.533L52.593 44.564 52.426 44.785C52.41 44.807 50.748 46.976 48.439 47.265 47.261 47.413 46.099 47.033 44.982 46.139L44.456 45.718 44.058 46.263C44.027 46.304 40.969 50.393 36.403 49.331 36.204 49.212 36.01 49.124 35.822 49.072 35.08 48.87 34.21 48.857 33.291 48.843 30.512 48.803 28.66 48.567 28.27 45.763L28.179 45.106 27.525 45.215C26.317 45.418 22.861 45.674 21.391 44.463 20.945 44.096 20.722 43.62 20.705 43.01L20.692 42.555 20.259 42.415C20.085 42.358 16.02 40.989 17.17 37.346L17.244 37.11 17.142 36.885C17.132 36.862 16.125 34.593 16.864 32.668 17.227 31.722 17.972 30.996 19.076 30.511Z\"\n          />\n          <path\n            d=\"M29.103 36.516L29.169 36.132C29.326 35.223 30.033 32.72 31.407 32.063 31.984 31.786 32.643 31.863 33.418 32.293 34.401 32.839 35.259 33.31 36.047 33.713 36.049 33.714 36.05 33.716 36.053 33.717L36.053 33.716C37.17 34.287 38.142 34.717 39.096 35.005 38.329 35.417 37.347 35.889 36.374 36.198 36.114 36.282 35.42 36.502 35.283 37.117 35.145 37.734 35.634 38.186 36.152 38.664 36.746 39.216 37.422 39.839 37.381 40.654 37.366 40.964 37.266 41.08 37.192 41.14 36.726 41.518 35.367 41.301 34.275 41.126 33.587 41.016 32.938 40.912 32.375 40.911L32.373 42.202C32.834 42.202 33.434 42.298 34.071 42.399 34.808 42.518 35.559 42.638 36.239 42.638 36.929 42.638 37.546 42.514 38.006 42.141 38.417 41.807 38.64 41.329 38.67 40.717 38.74 39.3 37.71 38.347 37.028 37.717 36.936 37.631 36.827 37.53 36.733 37.438 36.744 37.435 36.754 37.431 36.765 37.428 38.612 36.841 40.432 35.754 41.018 35.387 41.65 35.45 42.312 35.461 43.039 35.412 45.929 35.232 46.626 36.628 47.245 38.486 47.817 40.203 48.936 41.642 50.027 42.067 50.276 42.165 50.502 42.202 50.702 42.202 51.015 42.202 51.266 42.11 51.445 42.01L50.818 40.882C50.791 40.897 50.705 40.944 50.494 40.863 49.883 40.626 48.966 39.568 48.468 38.076 47.916 36.422 47.119 34.686 44.825 34.222 45.601 32.809 47.098 32.908 47.118 32.914L47.494 31.68C47.109 31.548 46.152 31.587 45.236 32.074 44.65 32.384 43.901 32.986 43.459 34.107 43.294 34.109 43.13 34.111 42.954 34.123 40.617 34.271 39.029 33.785 36.621 32.555 36.333 32.097 37.26 29.716 38.577 27.541L37.473 26.872C37.114 27.466 35.591 30.068 35.34 31.876 34.933 31.655 34.506 31.419 34.045 31.163 32.891 30.522 31.817 30.433 30.849 30.896 29.551 31.518 28.787 33.031 28.358 34.236 27.23 32.707 25.459 32.08 24.678 31.81 24.559 31.768 24.467 31.738 24.414 31.714L23.839 32.87C23.917 32.909 24.061 32.962 24.255 33.03 25.082 33.316 26.897 33.959 27.681 35.617L21.328 37.668 21.725 38.896 29.103 36.516Z\"\n          />\n          <polygon\n            points=\"56.163 20.173 57.454 20.173 57.454 26.615 56.163 26.615\"\n            transform=\"translate(56.81 23.39)rotate(29.4)translate(-56.81 -23.39)\"\n          />\n          <rect\n            height=\"5.027\"\n            width=\"1.291\"\n            x=\"43.272\"\n            y=\"13.95\"\n          />\n          <polygon\n            points=\"23.129 16.328 28.376 16.328 28.376 17.618 23.129 17.618\"\n            transform=\"translate(25.75 16.97)rotate(51.75)translate(-25.75 -16.97)\"\n          />\n          <polygon\n            points=\"11.465 24.798 16.075 24.798 16.075 26.089 11.465 26.089\"\n            transform=\"translate(13.77 25.44)rotate(-160.74)translate(-13.77 -25.44)\"\n          />\n          <polygon\n            points=\"9.55 46.375 15.545 46.375 15.545 47.666 9.55 47.666\"\n            transform=\"translate(12.55 47.02)rotate(-44.14)translate(-12.55 -47.02)\"\n          />\n          <polygon\n            points=\"18.316 53.554 24.093 53.554 24.093 54.845 18.316 54.845\"\n            transform=\"translate(21.2 54.2)rotate(-68.13)translate(-21.2 -54.2)\"\n          />\n          <polygon\n            points=\"32.029 54.895 33.32 54.895 33.32 60.068 32.029 60.068\"\n            transform=\"translate(32.67 57.48)rotate(-173.42)translate(-32.67 -57.48)\"\n          />\n          <polygon\n            points=\"54.441 54.818 60.545 54.818 60.545 56.109 54.441 56.109\"\n            transform=\"translate(57.493145 55.46)rotate(-137.92)translate(-57.49 -55.46)\"\n          />\n          <rect\n            height=\"1.291\"\n            width=\"5.208\"\n            x=\"59.758\"\n            y=\"42.34\"\n          />\n          <rect\n            height=\"1.291\"\n            width=\"3.511\"\n            x=\"9.035\"\n            y=\"35.377\"\n          />\n          <polygon\n            points=\"61.145 30.206 62.437 30.206 62.437 35.209 61.145 35.209\"\n            transform=\"translate(61.79 32.71)rotate(-125.47)translate(-61.79 -32.71)\"\n          />\n          <path\n            d=\"M21.745 71.842C21.745 70.778 20.879 69.913 19.816 69.913 18.752 69.913 17.886 70.778 17.886 71.842 17.886 72.905 18.752 73.771 19.816 73.771 20.879 73.771 21.745 72.906 21.745 71.842ZM18.316 71.842C18.316 71.015 18.988 70.343 19.815 70.343 20.642 70.343 21.314 71.015 21.314 71.842 21.314 72.669 20.642 73.341 19.815 73.341 18.988 73.341 18.316 72.669 18.316 71.842Z\"\n          />\n          <path\n            d=\"M2.85 19.63L1.998 21.358 0.089 21.634 1.471 22.979 1.144 24.878 2.849 23.981 4.554 24.878 4.229 22.978 5.609 21.633 3.703 21.357 2.85 19.63ZM3.768 22.828L3.984 24.091 2.85 23.496 1.717 24.091 1.933 22.828 1.015 21.934 2.284 21.75 2.85 20.6 3.418 21.75 4.685 21.934 3.768 22.828Z\"\n          />\n          <path\n            d=\"M20.458 2.758L19.868 1.565 19.28 2.758 17.964 2.949 18.916 3.877 18.691 5.188 19.867 4.569 21.045 5.187 20.82 3.877 21.772 2.949 20.458 2.758ZM20.476 4.402L19.869 4.084 19.264 4.401 19.379 3.728 18.89 3.249 19.567 3.151 19.87 2.537 20.174 3.151 20.852 3.249 20.361 3.728 20.476 4.402Z\"\n          />\n          <path\n            d=\"M68.556 54.266L69.508 55.195 69.283 56.506 70.46 55.886 71.637 56.506 71.413 55.195 72.364 54.266 71.049 54.074 70.459 52.882 69.87 54.074 68.556 54.266ZM70.461 53.855L70.765 54.468 71.442 54.567 70.952 55.046 71.068 55.72 70.462 55.402 69.856 55.72 69.971 55.046 69.482 54.567 70.159 54.468 70.461 53.855Z\"\n          />\n          <path\n            d=\"M70.461 7.86L69.685 10.25 67.173 10.25 69.204 11.727 68.428 14.115 70.461 12.639 72.492 14.115 71.717 11.727 73.748 10.25 71.236 10.25 70.461 7.86ZM71.211 11.563L71.674 12.99 70.461 12.108 69.247 12.99 69.71 11.563 68.496 10.681 69.997 10.681 70.461 9.254 70.924 10.681 72.425 10.681 71.211 11.563Z\"\n          />\n          <path\n            d=\"M63.615 0.23C62.552 0.23 61.686 1.095 61.686 2.159 61.686 3.222 62.552 4.088 63.615 4.088 64.679 4.088 65.544 3.222 65.544 2.159 65.544 1.095 64.679 0.23 63.615 0.23ZM63.615 3.658C62.788 3.658 62.116 2.986 62.116 2.159 62.116 1.332 62.788 0.66 63.615 0.66 64.442 0.66 65.114 1.332 65.114 2.159 65.114 2.986 64.442 3.658 63.615 3.658Z\"\n          />\n          <path\n            d=\"M70.246 37.848C70.246 38.696 70.935 39.385 71.783 39.385 72.63 39.385 73.319 38.696 73.319 37.848 73.319 37.001 72.63 36.312 71.783 36.312 70.935 36.312 70.246 37.001 70.246 37.848ZM71.783 36.742C72.393 36.742 72.889 37.238 72.889 37.848 72.889 38.458 72.393 38.955 71.783 38.955 71.173 38.955 70.676 38.458 70.676 37.848 70.676 37.238 71.173 36.742 71.783 36.742Z\"\n          />\n          <path\n            d=\"M8.396 8.427C7.276 8.427 6.366 9.339 6.366 10.458 6.366 11.578 7.277 12.49 8.396 12.49 9.516 12.49 10.427 11.578 10.427 10.458 10.427 9.339 9.517 8.427 8.396 8.427ZM8.396 12.06C7.514 12.06 6.796 11.342 6.796 10.459 6.796 9.577 7.514 8.858 8.396 8.858 9.278 8.858 9.997 9.577 9.997 10.459 9.997 11.342 9.278 12.06 8.396 12.06Z\"\n          />\n          <path\n            d=\"M15.377 71.631C15.097 71.575 14.821 71.512 14.547 71.444L14.441 71.86C14.721 71.931 15.004 71.994 15.29 72.053L15.377 71.631Z\"\n          />\n          <path\n            d=\"M8.288 68.943C8.741 69.282 9.22 69.603 9.71 69.896L9.932 69.528C9.454 69.241 8.987 68.928 8.545 68.598L8.288 68.943Z\"\n          />\n          <path\n            d=\"M6.968 67.853L7.257 67.535C6.846 67.16 6.45 66.763 6.079 66.351L5.76 66.64C6.14 67.062 6.546 67.469 6.968 67.853Z\"\n          />\n          <path\n            d=\"M1.243 54.943C1.243 55.225 1.25 55.505 1.263 55.786L1.693 55.766C1.68 55.493 1.674 55.219 1.674 54.944 1.674 54.662 1.68 54.379 1.694 54.097L1.264 54.075C1.25 54.364 1.243 54.654 1.243 54.943Z\"\n          />\n          <path\n            d=\"M12.803 71.363L12.947 70.957C12.427 70.771 11.907 70.555 11.405 70.317L11.22 70.705C11.736 70.95 12.268 71.171 12.803 71.363Z\"\n          />\n          <path\n            d=\"M1.431 57.488C1.515 58.052 1.628 58.617 1.766 59.165L2.182 59.061C2.048 58.526 1.939 57.976 1.856 57.424L1.431 57.488Z\"\n          />\n          <path\n            d=\"M3.308 62.199C3.072 61.698 2.857 61.179 2.669 60.657L2.264 60.801C2.457 61.337 2.676 61.869 2.92 62.382L3.308 62.199Z\"\n          />\n          <path\n            d=\"M4.095 63.671L3.725 63.891C4.016 64.377 4.335 64.857 4.675 65.315L5.021 65.06C4.69 64.612 4.378 64.145 4.095 63.671Z\"\n          />\n          <path\n            d=\"M1.437 52.358L1.862 52.421C1.904 52.142 1.952 51.864 2.008 51.585L1.587 51.499C1.528 51.786 1.479 52.072 1.437 52.358Z\"\n          />\n          <path\n            d=\"M72.74 61.102L72.31 61.095C72.305 61.378 72.289 61.66 72.264 61.939L72.692 61.978C72.719 61.688 72.735 61.397 72.74 61.102Z\"\n          />\n          <path\n            d=\"M69.689 68.891C70.113 68.415 70.502 67.902 70.845 67.367L70.482 67.134C70.152 67.651 69.778 68.146 69.368 68.606L69.689 68.891Z\"\n          />\n          <path\n            d=\"M63.092 72.267L63.181 72.687C63.804 72.555 64.421 72.37 65.016 72.14L64.859 71.738C64.287 71.962 63.692 72.139 63.092 72.267Z\"\n          />\n          <path\n            d=\"M68.31 70.217L68.038 69.884C67.564 70.272 67.053 70.627 66.523 70.938L66.739 71.31C67.29 70.987 67.818 70.619 68.31 70.217Z\"\n          />\n          <path\n            d=\"M71.35 65.505L71.745 65.677C71.999 65.091 72.208 64.482 72.366 63.866L71.95 63.759C71.796 64.353 71.595 64.941 71.35 65.505Z\"\n          />\n          <path\n            d=\"M60.412 72.52L60.403 72.95C60.484 72.952 60.565 72.953 60.645 72.953 60.857 72.953 61.068 72.947 61.279 72.936L61.257 72.506C60.978 72.52 60.698 72.528 60.412 72.52Z\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"23.557\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"30.441\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"20.115\"\n          />\n          <rect\n            height=\"1.721\"\n            width=\"1\"\n            x=\"71.567\"\n            y=\"28.056\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            BrainIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    BrainIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              BrainIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CVLToken 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"33\"\n        viewBox=\"0 0 32 33\"\n        width=\"32\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <ellipse\n            cx=\"17\"\n            cy=\"15.5\"\n            rx=\"13\"\n            ry=\"15.5\"\n            stroke=\"#FFFFFF\"\n          />\n          <path\n            d=\"M15 .172A11.117 11.117 0 0 0 13.051 0C5.864 0 0 6.921 0 15.5S5.864 31 13.051 31c.658 0 1.309-.058 1.949-.172C8.558 29.71 3.642 23.26 3.642 15.5 3.642 7.74 8.558 1.29 15 .172z\"\n            stroke=\"#FFFFFF\"\n          />\n          <text\n            fill=\"#FFFFFF\"\n            fontFamily=\"LibreFranklin-Bold, Libre Franklin\"\n            fontSize=\"9\"\n          >\n            <tspan\n              x=\"8\"\n              y=\"18\"\n            >\n              CVL\n            </tspan>\n          </text>\n          <path\n            d=\"M8 1h3v1.227H8zM3.813 3.864H8V5.09H3.812zM2.125 6.727H5.5v1.227H2.125zM0 12.455h3.813v1.227H0zM0 15.318h3.813v1.227H0zM0 18.182h3.813v1.227H0zM1 21.046h3.938v1.227H1zM2.969 23.909h3.094v1.227H2.969zM5.063 26.773h3.812V28H5.062zM1 9.59h3.375v1.228H1z\"\n            fill=\"#FFFFFF\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CVLToken\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CvlToken\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CvlToken\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CivilTutorialIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-1.5 -1.5)\"\n          >\n            <polygon\n              points=\"0 0 22.909 0 22.909 22.909 0 22.909\"\n            />\n            <path\n              d=\"M14.318 3.818L14.318 10.5 4.935 10.5 4.372 11.063 3.818 11.617 3.818 3.818 14.318 3.818ZM15.273 1.909L2.864 1.909C2.339 1.909 1.909 2.339 1.909 2.864L1.909 16.227 5.727 12.409 15.273 12.409C15.798 12.409 16.227 11.98 16.227 11.455L16.227 2.864C16.227 2.339 15.798 1.909 15.273 1.909ZM20.045 5.727L18.136 5.727 18.136 14.318 5.727 14.318 5.727 16.227C5.727 16.752 6.157 17.182 6.682 17.182L17.182 17.182 21 21 21 6.682C21 6.157 20.57 5.727 20.045 5.727Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CivilTutorialIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CivilTutorialIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CivilTutorialIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ClockIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#8B8581\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M9 0C4.05 0 0 4.05 0 9 0 13.95 4.05 18 9 18 13.95 18 18 13.95 18 9 18 4.05 13.95 0 9 0L9 0ZM9 16.2C5.04 16.2 1.8 12.96 1.8 9 1.8 5.04 5.04 1.8 9 1.8 12.96 1.8 16.2 5.04 16.2 9 16.2 12.96 12.96 16.2 9 16.2L9 16.2Z\"\n          />\n          <polygon\n            points=\"9.45 4.5 8.1 4.5 8.1 9.9 12.78 12.78 13.5 11.61 9.45 9.18\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ClockIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ClockIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ClockIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CloseXIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"42\"\n        viewBox=\"0 0 42 42\"\n        width=\"42\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M20.571 18.657l6.01-6.01 1.415 1.414-6.01 6.01 6.01 6.01-1.415 1.415-6.01-6.01-6.01 6.01-1.415-1.415 6.01-6.01-6.01-6.01 1.415-1.415 6.01 6.01z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CloseXIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CloseXIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CloseXIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons CommitVoteSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <path\n            d=\"M76.965 58.739C76.832 58.365 76.478 58.115 76.081 58.116L68.863 58.116 68.863 47.561C68.86 45.671 67.328 44.14 65.438 44.136L64.193 44.136 64.193 40.736C64.191 39.426 63.698 38.163 62.81 37.199L44.826 18.611C43.049 16.776 40.214 16.472 38.088 17.889L29.489 23.624C28.003 24.605 27.209 26.349 27.446 28.114L29.121 40.923C29.148 42.637 29.774 44.287 30.89 45.587L33.941 49.137 33.941 58.098 27.919 58.098C27.522 58.096 27.168 58.346 27.035 58.72L22.053 73.709C21.952 73.996 21.997 74.314 22.172 74.561 22.348 74.809 22.634 74.956 22.938 74.955L81.062 74.955C81.366 74.956 81.652 74.809 81.828 74.561 82.003 74.314 82.048 73.996 81.947 73.709L76.965 58.739ZM30.989 40.855C30.992 40.817 30.992 40.78 30.989 40.742L29.308 27.877C29.169 26.813 29.654 25.764 30.554 25.181L39.122 19.445C40.498 18.529 42.331 18.725 43.481 19.912L61.459 38.476C62.024 39.093 62.337 39.9 62.337 40.736L62.337 44.111 45.057 44.111 43.811 41.695C43.579 41.234 43.017 41.049 42.556 41.281 42.096 41.513 41.91 42.075 42.142 42.536L49.167 56.441C49.792 57.684 49.587 59.184 48.651 60.214 47.715 61.244 46.242 61.591 44.945 61.087L44.739 61.006C44.031 60.73 43.436 60.223 43.052 59.567L38.412 51.584C38.253 51.311 38.07 51.052 37.864 50.812L32.31 44.373C31.468 43.393 31 42.146 30.989 40.855ZM36.438 52.063C36.572 52.218 36.69 52.385 36.793 52.562L41.414 60.508C42.01 61.529 42.934 62.319 44.035 62.749L44.241 62.83C44.85 63.068 45.499 63.191 46.153 63.191 47.966 63.184 49.647 62.239 50.596 60.693 51.545 59.147 51.626 57.221 50.811 55.601L45.997 45.98 65.438 45.98C66.298 45.98 66.995 46.677 66.995 47.536L66.995 67.196 35.809 67.196 35.809 51.31 36.438 52.063ZM24.233 73.093L28.592 59.972 33.941 59.972 33.941 67.196 31.207 67.196C30.692 67.196 30.273 67.614 30.273 68.13 30.273 68.646 30.692 69.064 31.207 69.064L71.46 69.064C71.976 69.064 72.394 68.646 72.394 68.13 72.394 67.614 71.976 67.196 71.46 67.196L68.863 67.196 68.863 59.966 75.402 59.966 79.761 73.086 24.233 73.093Z\"\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n          />\n          <path\n            d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71Z\"\n            fill=\"#FFFFFF\"\n            stroke=\"#FFFFFF\"\n            strokeWidth=\"3\"\n          />\n          <path\n            d=\"M86 71C79.4 71 74 76.4 74 83 74 89.6 79.4 95 86 95 92.6 95 98 89.6 98 83 98 76.4 92.6 71 86 71L86 71ZM83.6 89L77.6 83 79.28 81.32 83.6 85.64 92.72 76.52 94.4 78.2 83.6 89 83.6 89Z\"\n            fill=\"#2B56FF\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            CommitVoteSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    CommitVoteSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              CommitVoteSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DashboardNewsroomApplicationIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"34\"\n        version=\"1.1\"\n        viewBox=\"0 0 34 34\"\n        width=\"34\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <defs>\n          <rect\n            height=\"875\"\n            width=\"760\"\n            x=\"518\"\n            y=\"148\"\n          />\n          <filter\n            filterUnits=\"objectBoundingBox\"\n            height=\"101.4%\"\n            width=\"101.6%\"\n            x=\"-0.8%\"\n            y=\"-0.7%\"\n          >\n            <feOffset\n              dx=\"0\"\n              dy=\"0\"\n              in=\"SourceAlpha\"\n              result=\"shadowOffsetOuter1\"\n            />\n            <feGaussianBlur\n              in=\"shadowOffsetOuter1\"\n              result=\"shadowBlurOuter1\"\n              stdDeviation=\"2\"\n            />\n            <feComposite\n              in=\"shadowBlurOuter1\"\n              in2=\"SourceAlpha\"\n              operator=\"out\"\n              result=\"shadowBlurOuter1\"\n            />\n            <feColorMatrix\n              in=\"shadowBlurOuter1\"\n              type=\"matrix\"\n              values=\"0 0 0 0 0.768627451   0 0 0 0 0.760784314   0 0 0 0 0.752941176  0 0 0 1 0\"\n            />\n          </filter>\n        </defs>\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-887.000000, -288.000000)\"\n          >\n            <rect\n              fill=\"#FFFFFF\"\n              height=\"1352\"\n              width=\"1440\"\n              x=\"0\"\n              y=\"0\"\n            />\n            <polygon\n              fill=\"#2B56FF\"\n              fillOpacity=\"0.06\"\n              points=\"0 67 1440 67 1440 664 0 664\"\n            />\n            <g>\n              <use\n                fill=\"black\"\n                fillOpacity=\"1\"\n                filter=\"url(#filter-2)\"\n              />\n              <rect\n                fillRule=\"evenodd\"\n                height=\"874\"\n                stroke=\"#E9E9EA\"\n                width=\"759\"\n                x=\"518.5\"\n                y=\"148.5\"\n              />\n            </g>\n            <g\n              transform=\"translate(662.000000, 281.000000)\"\n            >\n              <g\n                transform=\"translate(225.000000, 7.000000)\"\n              >\n                <path\n                  d=\"M0,0 L26,0 L26,27 L0,27 L0,0 Z M3,3 L3,24 L23,24 L23,3 L3,3 Z\"\n                  fill=\"#2B56FF\"\n                />\n                <path\n                  d=\"M6,6 L20,6 L20,13 L6,13 L6,6 Z M8,8 L8,11 L18,11 L18,8 L8,8 Z\"\n                  fill=\"#2B56FF\"\n                />\n                <polygon\n                  fill=\"#2B56FF\"\n                  points=\"6 14.95 20 14.95 20 16.95 6 16.95\"\n                />\n                <polygon\n                  fill=\"#2B56FF\"\n                  points=\"6 18.85 20 18.85 20 20.85 6 20.85\"\n                />\n                <g\n                  transform=\"translate(16.000000, 15.950000)\"\n                >\n                  <circle\n                    cx=\"9.2607145\"\n                    cy=\"9.2607145\"\n                    fill=\"#2B56FF\"\n                    fillRule=\"nonzero\"\n                    r=\"8.2607145\"\n                  />\n                  <path\n                    d=\"M9.9,4.5 L8.1,4.5 L8.1,8.1 L4.5,8.1 L4.5,9.9 L8.1,9.9 L8.1,13.5 L9.9,13.5 L9.9,9.9 L13.5,9.9 L13.5,8.1 L9.9,8.1 L9.9,4.5 L9.9,4.5 Z M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M9,16.2 C5.04,16.2 1.8,12.96 1.8,9 C1.8,5.04 5.04,1.8 9,1.8 C12.96,1.8 16.2,5.04 16.2,9 C16.2,12.96 12.96,16.2 9,16.2 L9,16.2 Z\"\n                    fill=\"#FFFFFF\"\n                  />\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DashboardNewsroomApplicationIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DashboardNewsroomApplicationIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DashboardNewsroomApplicationIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DisclosureArrowIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"12\"\n        viewBox=\"0 0 8 12\"\n        width=\"8\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-693, -56)\"\n          >\n            <polygon\n              points=\"694.4 56 693 57.4 697.6 62 693 66.6 694.4 68 700.4 62\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DisclosureArrowIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DisclosureArrowIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DisclosureArrowIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons DropdownArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"5\"\n        viewBox=\"0 0 10 5\"\n        width=\"10\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <polygon\n          fill=\"#3F3C39\"\n          points=\"0,0 10,0 5,5\"\n          stroke=\"none\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            DropdownArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    DropdownArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              DropdownArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons EmbedIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"32px\"\n        version=\"1.1\"\n        viewBox=\"0 0 32 32\"\n        width=\"32px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <polygon\n            points=\"4 4 28 4 28 28 4 28\"\n          />\n          <path\n            d=\"M9.42130253,10.2684345 C10.3266052,9.36313187 11.7034439,10.7399706 10.7981413,11.6452732 L6.35806996,16.0849552 L10.7981413,20.5250265 C11.7034439,21.4303291 10.3266052,22.8071678 9.42130253,21.9018652 L4.29281186,16.7733745 C3.91277945,16.3933421 3.91277945,15.7765682 4.29281186,15.3965358 L9.42130253,10.2684345 Z M17.0772424,7.74721537 C17.4074345,6.51211003 19.2857914,7.01401759 18.9555993,8.2495123 L14.6222174,24.4234737 C14.2920253,25.658579 12.4136684,25.1566715 12.7438605,23.9211768 L17.0772424,7.74721537 Z M20.9017079,11.6452732 C19.9964053,10.7399706 21.373244,9.36313187 22.2785466,10.2684345 L27.4070373,15.3965358 C27.7870697,15.7765682 27.7870697,16.3933421 27.4070373,16.7733745 L22.2785466,21.9018652 C21.373244,22.8071678 19.9964053,21.4303291 20.9017079,20.5250265 L25.3417792,16.0849552 L20.9017079,11.6452732 Z\"\n            fill=\"#191919\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            EmbedIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    EmbedIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              EmbedIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ErrorIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h28v28h-28z\"\n          />\n          <path\n            d=\"m12.8333333 17.5h2.3333334v2.3333333h-2.3333334zm0-9.33333333h2.3333334v7.00000003h-2.3333334zm1.155-5.83333334c-6.43999997 0-11.65499997 5.22666667-11.65499997 11.66666667s5.215 11.6666667 11.65499997 11.6666667c6.4516667 0 11.6783334-5.2266667 11.6783334-11.6666667s-5.2266667-11.66666667-11.6783334-11.66666667zm.0116667 20.99999997c-5.15666667 0-9.33333333-4.1766666-9.33333333-9.3333333 0-5.15666667 4.17666666-9.33333333 9.33333333-9.33333333 5.1566667 0 9.3333333 4.17666666 9.3333333 9.33333333 0 5.1566667-4.1766666 9.3333333-9.3333333 9.3333333z\"\n            fill=\"#f2524a\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ErrorIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ErrorIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ErrorIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExamIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"70\"\n        viewBox=\"0 0 70 70\"\n        width=\"70\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#000000\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M13.683 62.064L56.317 62.064 56.317 20.618 49.735 12.209 46.574 8.17 46.39 7.936 13.683 7.936 13.683 62.064ZM46.704 10.317L48.929 13.161 54.453 20.219 46.704 20.219 46.704 10.317ZM14.903 9.157L45.483 9.157 45.483 21.44 55.097 21.44 55.097 60.843 14.903 60.843 14.903 9.157Z\"\n          />\n          <path\n            d=\"M47.632 31.191L43.315 27.832 27.587 48.063 27.517 48.153 25.328 55.424 26.593 54.663 31.156 53.733 32.58 55.747 34.976 53.067 36.437 54.891 43.809 50.257 43.16 49.223 36.708 53.277 35.027 51.178 32.692 53.789 31.693 52.379 29.723 52.779 31.837 51.507 47.632 31.191ZM27.408 52.747L28.396 49.466 30.346 50.98 27.408 52.747ZM28.925 48.33L43.529 29.546 45.919 31.406 31.316 50.188 28.925 48.33Z\"\n          />\n          <rect\n            height=\"1.221\"\n            width=\"12.216\"\n            x=\"32.635\"\n            y=\"22.613\"\n          />\n          <rect\n            height=\"1.221\"\n            width=\"3.936\"\n            x=\"32.635\"\n            y=\"33.31\"\n          />\n          <path\n            d=\"M27.145 26.747C29.087 26.747 30.668 25.167 30.668 23.224 30.668 21.281 29.087 19.701 27.145 19.701 25.202 19.701 23.622 21.281 23.622 23.224 23.622 25.167 25.202 26.747 27.145 26.747ZM27.145 20.922C28.414 20.922 29.447 21.955 29.447 23.224 29.447 24.493 28.414 25.526 27.145 25.526 25.875 25.526 24.843 24.493 24.843 23.224 24.843 21.955 25.876 20.922 27.145 20.922Z\"\n          />\n          <path\n            d=\"M30.668 33.921C30.668 31.978 29.087 30.398 27.145 30.398 25.202 30.398 23.622 31.978 23.622 33.921 23.622 35.864 25.202 37.443 27.145 37.443 29.087 37.443 30.668 35.864 30.668 33.921ZM24.843 33.921C24.843 32.651 25.876 31.619 27.145 31.619 28.413 31.619 29.447 32.652 29.447 33.921 29.447 35.19 28.414 36.223 27.145 36.223 25.875 36.223 24.843 35.19 24.843 33.921Z\"\n          />\n          <path\n            d=\"M20.635 67.959C20.635 66.953 19.816 66.134 18.81 66.134 17.804 66.134 16.985 66.953 16.985 67.959 16.985 68.965 17.804 69.783 18.81 69.783 19.816 69.783 20.635 68.965 20.635 67.959ZM17.391 67.959C17.391 67.176 18.027 66.541 18.809 66.541 19.59 66.541 20.227 67.176 20.227 67.959 20.227 68.741 19.59 69.377 18.809 69.377 18.027 69.377 17.391 68.741 17.391 67.959Z\"\n          />\n          <path\n            d=\"M2.761 18.569L1.954 20.202 0.151 20.464 1.456 21.736 1.148 23.533 2.761 22.685 4.374 23.533 4.067 21.736 5.372 20.464 3.568 20.202 2.761 18.569ZM3.629 21.594L3.833 22.789 2.76 22.226 1.687 22.789 1.892 21.594 1.026 20.748 2.225 20.574 2.761 19.487 3.297 20.574 4.496 20.748 3.629 21.594Z\"\n          />\n          <path\n            d=\"M19.417 2.609L18.86 1.481 18.303 2.609 17.058 2.789 17.959 3.668 17.747 4.907 18.86 4.322 19.974 4.907 19.761 3.668 20.662 2.789 19.417 2.609ZM19.433 4.163L18.86 3.863 18.287 4.163 18.396 3.526 17.932 3.073 18.574 2.981 18.86 2.4 19.147 2.981 19.788 3.073 19.324 3.526 19.433 4.163Z\"\n          />\n          <path\n            d=\"M64.915 51.333L65.816 52.211 65.604 53.452 66.717 52.865 67.831 53.452 67.618 52.211 68.519 51.333 67.274 51.151 66.717 50.024 66.161 51.151 64.915 51.333ZM66.717 50.944L67.004 51.524 67.645 51.618 67.181 52.07 67.29 52.708 66.717 52.407 66.144 52.708 66.253 52.07 65.789 51.618 66.431 51.524 66.717 50.944Z\"\n          />\n          <path\n            d=\"M66.717 7.435L65.983 9.696 63.607 9.696 65.529 11.093 64.795 13.352 66.717 11.955 68.64 13.352 67.906 11.093 69.827 9.696 67.452 9.696 66.717 7.435ZM67.427 10.938L67.866 12.287 66.717 11.454 65.569 12.287 66.008 10.938 64.859 10.104 66.279 10.104 66.718 8.754 67.157 10.104 68.577 10.104 67.427 10.938Z\"\n          />\n          <path\n            d=\"M60.242 0.217C59.235 0.217 58.417 1.036 58.417 2.042 58.417 3.048 59.235 3.867 60.242 3.867 61.248 3.867 62.066 3.048 62.066 2.042 62.066 1.036 61.248 0.217 60.242 0.217ZM60.242 3.46C59.46 3.46 58.824 2.824 58.824 2.042 58.824 1.26 59.46 0.624 60.242 0.624 61.023 0.624 61.659 1.26 61.659 2.042 61.659 2.824 61.023 3.46 60.242 3.46Z\"\n          />\n          <path\n            d=\"M66.514 35.803C66.514 36.604 67.166 37.256 67.968 37.256 68.769 37.256 69.421 36.604 69.421 35.803 69.421 35.001 68.769 34.349 67.968 34.349 67.166 34.349 66.514 35.001 66.514 35.803ZM67.968 34.756C68.545 34.756 69.014 35.225 69.014 35.803 69.014 36.38 68.545 36.849 67.968 36.849 67.39 36.849 66.921 36.38 66.921 35.803 66.921 35.225 67.39 34.756 67.968 34.756Z\"\n          />\n          <path\n            d=\"M6.086 9.893C6.086 10.953 6.948 11.815 8.008 11.815 9.067 11.815 9.929 10.952 9.929 9.893 9.929 8.834 9.067 7.972 8.008 7.972 6.948 7.972 6.086 8.834 6.086 9.893ZM8.008 8.379C8.843 8.379 9.522 9.058 9.522 9.893 9.522 10.728 8.843 11.408 8.008 11.408 7.173 11.408 6.493 10.728 6.493 9.893 6.493 9.058 7.173 8.379 8.008 8.379Z\"\n          />\n          <path\n            d=\"M14.53 68.158L14.61 67.759C14.346 67.706 14.085 67.647 13.826 67.582L13.727 67.976C13.991 68.043 14.26 68.103 14.53 68.158Z\"\n          />\n          <path\n            d=\"M12.175 67.505L12.313 67.122C11.819 66.945 11.329 66.742 10.853 66.517L10.679 66.884C11.167 67.115 11.67 67.324 12.175 67.505Z\"\n          />\n          <path\n            d=\"M6.93 63.885C6.541 63.53 6.166 63.154 5.815 62.765L5.513 63.038C5.872 63.436 6.257 63.822 6.656 64.185L6.93 63.885Z\"\n          />\n          <path\n            d=\"M9.461 65.771C9.01 65.5 8.568 65.204 8.148 64.891L7.905 65.216C8.335 65.538 8.787 65.842 9.251 66.118L9.461 65.771Z\"\n          />\n          <path\n            d=\"M3.938 60.228L3.59 60.438C3.867 60.902 4.169 61.355 4.488 61.785L4.815 61.543C4.504 61.124 4.209 60.682 3.938 60.228Z\"\n          />\n          <path\n            d=\"M1.42 54.379C1.498 54.909 1.605 55.444 1.736 55.967L2.131 55.868C2.002 55.357 1.899 54.836 1.822 54.32L1.42 54.379Z\"\n          />\n          <path\n            d=\"M1.242 51.973C1.242 52.239 1.249 52.504 1.262 52.769L1.668 52.751C1.656 52.493 1.649 52.233 1.649 51.973 1.649 51.707 1.656 51.439 1.669 51.172L1.262 51.151C1.249 51.426 1.242 51.7 1.242 51.973Z\"\n          />\n          <path\n            d=\"M3.194 58.836C2.968 58.36 2.765 57.87 2.589 57.378L2.206 57.515C2.387 58.019 2.595 58.522 2.826 59.011L3.194 58.836Z\"\n          />\n          <path\n            d=\"M1.424 49.527L1.827 49.588C1.866 49.324 1.912 49.06 1.965 48.796L1.566 48.716C1.512 48.987 1.464 49.257 1.424 49.527Z\"\n          />\n          <path\n            d=\"M68.874 57.8L68.467 57.792C68.462 58.06 68.447 58.327 68.423 58.591L68.828 58.627C68.853 58.354 68.869 58.078 68.874 57.8Z\"\n          />\n          <path\n            d=\"M61.419 67.861C60.877 68.072 60.315 68.239 59.747 68.361L59.831 68.758C60.421 68.633 61.003 68.458 61.566 68.24L61.419 67.861Z\"\n          />\n          <path\n            d=\"M65.989 65.168C66.389 64.717 66.757 64.232 67.081 63.725L66.738 63.505C66.426 63.995 66.072 64.463 65.684 64.897L65.989 65.168Z\"\n          />\n          <path\n            d=\"M67.559 61.965L67.933 62.127C68.173 61.574 68.37 60.998 68.519 60.414L68.125 60.312C67.981 60.876 67.791 61.432 67.559 61.965Z\"\n          />\n          <path\n            d=\"M64.683 66.422L64.425 66.107C63.978 66.474 63.495 66.809 62.992 67.104L63.198 67.456C63.719 67.15 64.218 66.802 64.683 66.422Z\"\n          />\n          <path\n            d=\"M58.011 68.588C57.747 68.602 57.481 68.607 57.211 68.601L57.203 69.008C57.28 69.009 57.356 69.01 57.433 69.01 57.634 69.01 57.833 69.005 58.032 68.995L58.011 68.588Z\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"25.539\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"19.028\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"28.795\"\n          />\n          <rect\n            height=\"1.628\"\n            width=\"1\"\n            x=\"67.764\"\n            y=\"22.284\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExamIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExamIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExamIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExchangeArrowsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"14\"\n        viewBox=\"0 0 18 14\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#8B8581\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-336 -216)\"\n          >\n            <path\n              d=\"M349,228 L349,221 L347,221 L347,228 L344,228 L348,232 L352,228 L349,228 L349,228 Z M342,214 L338,218 L341,218 L341,225 L343,225 L343,218 L346,218 L342,214 L342,214 Z\"\n              transform=\"translate(345 223) rotate(90) translate(-345 -223)\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExchangeArrowsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExchangeArrowsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExchangeArrowsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ExpandDownArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"12\"\n        viewBox=\"0 0 12 8\"\n        width=\"8\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M10.824.412L6 5.457 1.068.412 0 1.4l6 6 6-6z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n          opacity=\"0.86\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ExpandDownArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ExpandDownArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ExpandDownArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons FacebookIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        className=\"sc-LzLqG jTuVCq\"\n        height={23}\n        viewBox=\"0 0 22 23\"\n        width={23}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m63 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-1 1.99137931v2.98706897h-2c-.6 0-1 .39827586-1 .99568965v1.99137931h3v2.98706896h-3v6.9698276h-3v-6.9698276h-2v-2.98706896h2v-2.48922414c0-1.89181034 1.6-3.48491379 3.5-3.48491379z\"\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(-44 .457)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            FacebookIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(_FacebookIcon)\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(_FacebookIcon)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons GrantSubmitIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"82\"\n        viewBox=\"0 0 82 82\"\n        width=\"82\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fill-rule=\"evenodd\"\n        >\n          <circle\n            cx=\"41\"\n            cy=\"41\"\n            fill=\"#90E8D3\"\n            r=\"41\"\n          />\n          <g\n            fill=\"#000\"\n            transform=\"translate(11 10)\"\n          >\n            <path\n              d=\"M2.86742813,19.5094459 L57.2076375,19.5094459 C57.6222497,19.5093254 57.9875374,19.238741 58.1058429,18.8441062 C58.2241484,18.4494714 58.0673687,18.0245305 57.7203375,17.7992193 L30.5502281,0.151842414 C30.238919,-0.050912319 29.8361467,-0.050912319 29.5248375,0.151842414 L2.3547375,17.7992193 C2.00770626,18.0245305 1.85092658,18.4494714 1.9692321,18.8441062 C2.08753763,19.238741 2.45282526,19.5093254 2.8674375,19.5094459 L2.86742813,19.5094459 Z M30.0375,2.0434531 L54.0609375,17.6473769 L6.0140625,17.6473769 L30.0375,2.0434531 Z\"\n              fill-rule=\"nonzero\"\n            />\n            <path\n              d=\"M30.0375,8.31748034 C28.0624928,8.31785569 26.4616926,9.90808967 26.4619032,11.8694761 C26.4621137,13.8308626 28.0632553,15.4207576 30.0382625,15.4207148 C32.0132697,15.4206719 33.6143413,13.8307075 33.6144656,11.869321 C33.6124137,9.90836017 32.0120789,8.31926622 30.0375,8.31748034 L30.0375,8.31748034 Z M30.0375,13.5586366 C29.097967,13.5582612 28.3366081,12.8016113 28.3369032,11.8685578 C28.3371983,10.9355043 29.0990356,10.1793294 30.0385687,10.1795402 C30.9781017,10.1797509 31.739595,10.9362675 31.7394656,11.869321 C31.7385708,12.8022952 30.9769535,13.55826 30.0375,13.5586552 L30.0375,13.5586366 Z\"\n              fill-rule=\"nonzero\"\n            />\n            <path\n              d=\"M7.99712813 22.8371679L7.99712813 48.8102369C7.99712813 49.324433 8.41686117 49.7412714 8.93462813 49.7412714 9.45239508 49.7412714 9.87212813 49.324433 9.87212813 48.8102369L9.87212813 22.8371679C9.87212813 22.3229718 9.45239508 21.9061334 8.93462813 21.9061334 8.41686117 21.9061334 7.99712813 22.3229718 7.99712813 22.8371679zM22.4322469 22.8371679L22.4322469 48.8102369C22.4322469 49.324433 22.8519799 49.7412714 23.3697469 49.7412714 23.8875138 49.7412714 24.3072469 49.324433 24.3072469 48.8102369L24.3072469 22.8371679C24.3072469 22.3229718 23.8875138 21.9061334 23.3697469 21.9061334 22.8519799 21.9061334 22.4322469 22.3229718 22.4322469 22.8371679zM36.8664563 22.8371679L36.8664563 48.8102369C36.8664563 49.324433 37.2861893 49.7412714 37.8039563 49.7412714 38.3217232 49.7412714 38.7414563 49.324433 38.7414563 48.8102369L38.7414563 22.8371679C38.7414563 22.3229718 38.3217232 21.9061334 37.8039563 21.9061334 37.2861893 21.9061334 36.8664563 22.3229718 36.8664563 22.8371679zM51.301575 22.8371679L51.301575 48.8102369C51.301575 49.324433 51.721308 49.7412714 52.239075 49.7412714 52.756842 49.7412714 53.176575 49.324433 53.176575 48.8102369L53.176575 22.8371679C53.176575 22.3229718 52.756842 21.9061334 52.239075 21.9061334 51.721308 21.9061334 51.301575 22.3229718 51.301575 22.8371679zM1.50695625 54L58.4930437 54C59.0108107 54 59.4305437 53.5831617 59.4305437 53.0689655 59.4305437 52.5547694 59.0108107 52.137931 58.4930437 52.137931L1.50695625 52.137931C.989189297 52.137931.56945625 52.5547694.56945625 53.0689655.56945625 53.5831617.989189297 54 1.50695625 54z\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            GrantSubmitIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    GrantSubmitIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              GrantSubmitIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons GreenCheckMark 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"26\"\n        viewBox=\"0 0 26 26\"\n        width=\"26\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"12\"\n          cy=\"12\"\n          fill=\"#30E8BD\"\n          r=\"12\"\n        />\n        <path\n          d=\"m9.464 17.092-3.466-3.415-1.156 1.138 4.622 4.553 9.904-9.756-1.155-1.138z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 -1)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            GreenCheckMark\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    GreenCheckMark\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              GreenCheckMark\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HamburgerIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"42\"\n        viewBox=\"0 0 42 42\"\n        width=\"42\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M12 26h18v-2H12v2zm0-8h18v-2H12v2z\"\n          fill=\"#FFFFFF\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HamburgerIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HamburgerIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HamburgerIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HollowGreenCheck 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <circle\n            className=\"svg-stroke\"\n            cx=\"9\"\n            cy=\"9\"\n            r=\"8.25\"\n            stroke=\"#29cb42\"\n            strokeWidth=\"1.5\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m12.6 5-5.13 5.17-2.07-2.08-1.4 1.41 3.47 3.5 6.53-6.59z\"\n            fill=\"#29cb42\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HollowGreenCheck\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HollowGreenCheck\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HollowGreenCheck\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons HollowRedNoGood 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"20\"\n        viewBox=\"0 0 20 20\"\n        width=\"20\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          transform=\"translate(1 1)\"\n        >\n          <path\n            d=\"m0 0h18v18h-18z\"\n          />\n          <path\n            className=\"svg-fill\"\n            d=\"m9 0c-4.968 0-9 4.032-9 9s4.032 9 9 9 9-4.032 9-9-4.032-9-9-9zm0 16.2c-3.978 0-7.2-3.222-7.2-7.2 0-1.665.567-3.195 1.521-4.41l10.089 10.089c-1.215.954-2.745 1.521-4.41 1.521zm5.679-2.79-10.089-10.089c1.215-.954 2.745-1.521 4.41-1.521 3.978 0 7.2 3.222 7.2 7.2 0 1.665-.567 3.195-1.521 4.41z\"\n            fill=\"#f2524a\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            HollowRedNoGood\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    HollowRedNoGood\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              HollowRedNoGood\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons InfoNotification 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n          transform=\"translate(-2, -2)\"\n        >\n          <polygon\n            points=\"0 0 32 0 32 32 0 32\"\n          />\n          <path\n            d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n            fill=\"#F2524A\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            InfoNotification\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    InfoNotification\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              InfoNotification\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons LockOpenIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 14 18\"\n        width=\"14\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#FF0C1A\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M6.85714286,13.7142857 C7.8,13.7142857 8.57142857,12.9428571 8.57142857,12 C8.57142857,11.0571429 7.8,10.2857143 6.85714286,10.2857143 C5.91428571,10.2857143 5.14285714,11.0571429 5.14285714,12 C5.14285714,12.9428571 5.91428571,13.7142857 6.85714286,13.7142857 L6.85714286,13.7142857 Z M12,6 L11.1428571,6 L11.1428571,4.28571429 C11.1428571,1.88571429 9.25714286,0 6.85714286,0 C4.45714286,0 2.57142857,1.88571429 2.57142857,4.28571429 L4.2,4.28571429 C4.2,2.82857143 5.4,1.62857143 6.85714286,1.62857143 C8.31428571,1.62857143 9.51428571,2.82857143 9.51428571,4.28571429 L9.51428571,6 L1.71428571,6 C0.771428571,6 0,6.77142857 0,7.71428571 L0,16.2857143 C0,17.2285714 0.771428571,18 1.71428571,18 L12,18 C12.9428571,18 13.7142857,17.2285714 13.7142857,16.2857143 L13.7142857,7.71428571 C13.7142857,6.77142857 12.9428571,6 12,6 L12,6 Z M12,16.2857143 L1.71428571,16.2857143 L1.71428571,7.71428571 L12,7.71428571 L12,16.2857143 L12,16.2857143 Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            LockOpenIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    LockOpenIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              LockOpenIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons MetaMaskFrontIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <img\n        className=\"sc-LzLqJ cfMpcw\"\n        src=\"test-file-stub\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskFrontIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    MetaMaskFrontIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              MetaMaskFrontIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons MetaMaskSideIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <img\n        className=\"sc-LzLqJ cfMpcw\"\n        src=\"test-file-stub\"\n      />\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            MetaMaskSideIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    MetaMaskSideIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              MetaMaskSideIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons NetworkIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"44\"\n        viewBox=\"0 0 48 44\"\n        width=\"48\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n        >\n          <path\n            d=\"M13.091 0C10.694 0 8.727 1.98 8.727 4.394 8.727 6.807 10.694 8.788 13.091 8.788 13.579 8.788 14.049 8.699 14.489 8.547L18.614 15.79C17.896 16.426 17.286 17.189 16.824 18.039L8.71 15.155C8.718 15.047 8.727 14.94 8.727 14.829 8.727 12.416 6.761 10.435 4.364 10.435 1.967 10.435 0 12.416 0 14.829 0 17.243 1.967 19.223 4.364 19.223 5.889 19.223 7.231 18.419 8.011 17.215L16.057 20.081C15.914 20.688 15.818 21.319 15.818 21.969 15.818 23.706 16.35 25.324 17.267 26.655L10.415 33.555C9.773 33.179 9.041 32.954 8.25 32.954 5.853 32.954 3.886 34.934 3.886 37.348 3.886 39.761 5.853 41.742 8.25 41.742 10.647 41.742 12.614 39.761 12.614 37.348 12.614 36.519 12.367 35.746 11.966 35.082L18.733 28.268C20.157 29.477 21.998 30.208 24 30.208 25.281 30.208 26.482 29.899 27.563 29.367L31.67 36.627C30.977 37.405 30.545 38.424 30.545 39.545 30.545 41.958 32.512 43.938 34.909 43.938 37.306 43.938 39.273 41.958 39.273 39.545 39.273 37.131 37.306 35.151 34.909 35.151 34.421 35.151 33.951 35.24 33.511 35.391L29.386 28.148C30.104 27.513 30.714 26.749 31.176 25.9L39.29 28.783C39.282 28.891 39.273 28.999 39.273 29.109 39.273 31.523 41.239 33.503 43.636 33.503 46.033 33.503 48 31.523 48 29.109 48 26.696 46.033 24.715 43.636 24.715 42.111 24.715 40.769 25.519 39.989 26.724L31.943 23.857C32.086 23.25 32.182 22.619 32.182 21.969 32.182 20.232 31.65 18.614 30.733 17.284L37.585 10.384C38.227 10.76 38.959 10.985 39.75 10.985 42.147 10.985 44.114 9.004 44.114 6.591 44.114 4.177 42.147 2.197 39.75 2.197 37.353 2.197 35.386 4.177 35.386 6.591 35.386 7.419 35.633 8.193 36.034 8.856L29.267 15.67C27.843 14.461 26.002 13.731 24 13.731 22.719 13.731 21.518 14.04 20.438 14.572L16.33 7.312C17.023 6.533 17.455 5.514 17.455 4.394 17.455 1.98 15.488 0 13.091 0ZM13.091 2.197C14.309 2.197 15.273 3.168 15.273 4.394 15.273 5.62 14.309 6.591 13.091 6.591 11.873 6.591 10.909 5.62 10.909 4.394 10.909 3.168 11.873 2.197 13.091 2.197ZM39.75 4.394C40.968 4.394 41.932 5.364 41.932 6.591 41.932 7.817 40.968 8.788 39.75 8.788 38.532 8.788 37.568 7.817 37.568 6.591 37.568 5.364 38.532 4.394 39.75 4.394ZM4.364 12.632C5.582 12.632 6.545 13.603 6.545 14.829 6.545 16.056 5.582 17.026 4.364 17.026 3.146 17.026 2.182 16.056 2.182 14.829 2.182 13.603 3.146 12.632 4.364 12.632ZM24 15.928C27.327 15.928 30 18.62 30 21.969 30 25.319 27.327 28.011 24 28.011 20.673 28.011 18 25.319 18 21.969 18 18.62 20.673 15.928 24 15.928ZM43.636 26.912C44.854 26.912 45.818 27.883 45.818 29.109 45.818 30.336 44.854 31.306 43.636 31.306 42.418 31.306 41.455 30.336 41.455 29.109 41.455 27.883 42.418 26.912 43.636 26.912ZM8.25 35.151C9.468 35.151 10.432 36.121 10.432 37.348 10.432 38.574 9.468 39.545 8.25 39.545 7.032 39.545 6.068 38.574 6.068 37.348 6.068 36.121 7.032 35.151 8.25 35.151ZM34.909 37.348C36.127 37.348 37.091 38.318 37.091 39.545 37.091 40.771 36.127 41.742 34.909 41.742 33.691 41.742 32.727 40.771 32.727 39.545 32.727 38.318 33.691 37.348 34.909 37.348Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            NetworkIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    NetworkIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              NetworkIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons NorthEastArrow 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"11\"\n        viewBox=\"0 0 11 11\"\n        width=\"11\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m10.098 7.998h-1.279v-4.823l-6.914 6.923-.905-.905 6.923-6.915h-4.823v-1.278h6.998z\"\n          fill=\"#23282d\"\n          fillRule=\"evenodd\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            NorthEastArrow\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    NorthEastArrow\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              NorthEastArrow\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons OctopusErrorIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"73\"\n        viewBox=\"0 0 74 73\"\n        width=\"74\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M36.6071788,31.1685393 C28.5453734,31.1685393 26.4957867,37.147811 26.4135683,37.4026464 C26.2127625,37.9018048 26.3116918,38.469053 26.6702452,38.8744006 C27.0287986,39.2797481 27.5874732,39.4559263 28.1197545,39.3315036 C28.6520359,39.207081 29.0695902,38.802706 29.2031204,38.2823321 C29.2178022,38.2405795 30.6566238,34.0480345 36.6013061,34.0480345 C42.4652381,34.0480345 43.9422325,38.1196407 43.9994917,38.2823321 C44.1941275,38.8783044 44.759054,39.2827362 45.3972041,39.2829567 C45.5496697,39.2824376 45.7011641,39.2591341 45.8464688,39.2138488 C46.2174281,39.0972914 46.5259471,38.8409479 46.7041069,38.501251 C46.8822667,38.1615541 46.9154619,37.766352 46.7963847,37.4026464 C46.7185709,37.1420521 44.6704524,31.1685393 36.6071788,31.1685393 Z\"\n        />\n        <path\n          d=\"M31.2444444,25.4269663 C31.2444444,23.6149759 29.9560194,22.1460674 28.3666667,22.1460674 C26.7773139,22.1460674 25.4888889,23.6149759 25.4888889,25.4269663 C25.4888889,27.2389567 26.7773139,28.7078652 28.3666667,28.7078652 C29.9550629,28.705235 31.2421374,27.2378661 31.2444444,25.4269663 Z\"\n        />\n        <ellipse\n          cx=\"44.8111111\"\n          cy=\"25.4269663\"\n          rx=\"2.87777778\"\n          ry=\"3.28089888\"\n        />\n        <path\n          d=\"M73.1941581,46.7305242 C73.6415006,45.8824671 74.070023,44.5994339 73.6357098,43.2156849 C73.2013966,41.8319358 72.2256397,40.9561453 71.5162615,40.4715412 C71.4091309,39.7125227 71.1413044,38.6002687 70.4797007,37.6660921 C69.6110743,36.4429046 68.29221,35.8590443 67.6754852,35.6415563 C66.5173167,34.7584675 65.4300861,34.4665373 64.4774925,34.7993377 C61.9425512,35.6824265 62.1293059,38.5491809 62.2798678,40.85251 C62.4608316,43.6258468 62.4564885,45.359912 60.8640068,46.0021584 C60.232805,46.2561377 59.3902374,46.0357304 58.5476699,45.3964033 C57.1318089,44.3221002 56.7134205,42.2537749 57.576256,40.5795553 C59.9447106,36.0152269 62.8850108,30.3225884 62.8850108,24.8707923 C62.8850108,18.0950928 60.0836908,11.7704254 54.9978834,7.0630512 C44.8181279,-2.3543504 29.1846579,-2.3543504 19.0049023,7.0630512 C13.919095,11.7748043 11.1177749,18.0994717 11.1177749,24.8707923 C11.1177749,30.3255077 14.0580752,36.0152269 16.4207389,40.5853939 C17.2893653,42.2537749 16.8651861,44.3221002 15.4493251,45.4022419 C14.6082052,46.041569 13.7641899,46.2605166 13.1329881,46.007997 C12.0703685,45.5788597 11.4449575,45.0183537 11.7171271,40.8583486 C11.8618982,38.5550195 12.0544437,35.6882651 9.51950243,34.8051763 C8.56690885,34.4723759 7.47388734,34.7643061 6.3215097,35.6473949 C5.70478498,35.8648829 4.38447291,36.4487433 3.51729426,37.6719307 C2.85569051,38.6061073 2.58786405,39.715442 2.48073346,40.4773798 C1.77135526,40.9619839 0.792702893,41.8450727 0.361285132,43.2215235 C-0.0701326292,44.5979743 0.361285132,45.8883057 0.802836867,46.7363628 C0.281661048,47.5785814 -0.253991876,48.8878883 0.131099145,50.3562971 C0.479997401,51.694797 1.38481653,52.555991 2.1448646,53.0668688 C1.98345364,54.4846143 2.46541985,55.9000659 3.45649041,56.9188876 C4.275907,57.792625 5.4071807,58.3006693 6.59947014,58.33037 C6.95500819,59.4060167 7.79150739,60.2504964 8.85789869,60.6103447 C9.36136629,60.7935038 9.89199517,60.889252 10.427217,60.893517 C8.30197781,62.1429782 6.40113379,63.4026569 6.40113379,65.9935372 C6.40113379,67.7451183 7.30595291,69.2456395 8.94620903,70.2002512 C9.24910149,70.3751082 9.56406597,70.5277917 9.88866864,70.6571219 C10.7292229,72.1184613 12.2827475,73.012795 13.9581832,72.9998616 C15.2484557,73.007886 16.5037052,72.5769332 17.520999,71.7766741 C18.7492812,72.2909628 20.0962206,72.4467463 21.4081019,72.2262466 C22.868343,71.9912533 24.2075437,71.2672828 25.20979,70.1710581 C26.320184,70.5447288 28.0530936,70.7549185 30.0147415,69.6587207 C31.6738179,68.728923 32.4845358,67.5203321 32.8739699,66.6708153 C32.9116104,66.5890748 32.9449078,66.508794 32.9767574,66.4314325 C34.262376,66.4487806 35.520016,66.0525266 36.5670797,65.3002031 C36.7213993,65.1900695 36.8666427,65.0675469 37.0013929,64.9338307 C37.1361431,65.0675469 37.2813865,65.1900695 37.4357061,65.3002031 C38.4835133,66.0529155 39.7425098,66.4482543 41.0289238,66.4285132 C41.0607734,66.5058747 41.0940708,66.5861555 41.1317113,66.667896 C41.5211454,67.5174128 42.3318633,68.7260037 43.9909397,69.6558014 C45.9525876,70.7549185 47.6840495,70.5418095 48.7958912,70.1681388 C49.796857,71.2675949 51.136203,71.9947293 52.5975793,72.2320852 C53.9090626,72.4501841 55.2549384,72.2923844 56.4817868,71.7766741 C57.4998387,72.5748428 58.7550173,73.0037144 60.0446026,72.994023 C61.7175125,73.007409 63.2693395,72.1162016 64.1112217,70.6585815 C64.319692,70.5724621 64.5194761,70.4819638 64.7120216,70.3841672 C66.5752252,69.4353941 67.6074428,67.8735676 67.6074428,65.9891583 C67.6074428,63.3982779 65.7065988,62.1327606 63.5828073,60.889138 C64.1185132,60.8850098 64.6496406,60.78926 65.1535734,60.6059658 C66.2156735,60.2447007 67.0484195,59.402385 67.4033156,58.33037 C68.594934,58.2979858 69.7245601,57.787878 70.5419522,56.913049 C71.5330228,55.8942273 72.014989,54.4787757 71.853578,53.0610302 C72.6136261,52.5501524 73.5169975,51.6889584 73.8673435,50.3504585 C74.2553299,48.8820497 73.719677,47.5727428 73.1941581,46.7305242 Z M64.7018876,65.9979162 C64.7018876,66.5219309 64.5571166,67.2006685 63.3989481,67.7874482 C62.3377762,68.327519 60.7452946,68.6136106 58.7966761,68.6136106 C58.2697094,68.6136106 57.7268179,68.5917159 57.1723448,68.5508456 C57.0995822,68.5268568 57.0250269,68.5087965 56.9493973,68.4968386 C56.8150941,68.4756597 56.6783417,68.4756597 56.5440384,68.4968386 C54.2633408,68.2600266 52.0154729,67.7705217 49.8411383,67.0371876 C49.7448733,66.9924144 49.644506,66.9572161 49.5414622,66.9320928 L49.5211942,66.9320928 C47.1947233,66.1249058 44.9782783,65.0535221 43.1512675,63.7704889 C43.0953692,63.7121042 43.0348479,63.6584062 42.9703037,63.6099273 C42.8981177,63.557679 42.8210194,63.5127008 42.7401177,63.4756394 C40.1646406,61.5591178 38.4491035,59.2047009 38.4491035,56.5846275 C38.4491035,55.7784846 37.8009414,55.1249766 37.0013929,55.1249766 C36.2018444,55.1249766 35.5536823,55.7784846 35.5536823,56.5846275 C35.5536823,58.0559556 34.9413007,60.7533905 31.2206844,63.4960745 C31.1640625,63.524978 31.1094113,63.5576491 31.0570931,63.5938712 C30.9966583,63.6376326 30.9399963,63.6864611 30.887711,63.7398362 C30.4258913,64.0638788 29.922088,64.3893809 29.3661671,64.7119638 C27.8446115,65.5898568 26.2452127,66.3228523 24.5887221,66.9014401 C24.5474067,66.9056225 24.5063334,66.9119561 24.4656667,66.9204156 C24.3168539,66.9512512 24.1743705,67.0075299 24.044383,67.0868158 C21.9121016,67.7981015 19.7091286,68.2723825 17.4746722,68.5012175 C17.3308828,68.4771791 17.1841485,68.4771791 17.040359,68.5012175 C16.959958,68.5133863 16.8809252,68.5334297 16.8043822,68.5610632 C14.0537321,68.7566564 11.7200226,68.457428 10.3881288,67.6852726 C9.41671498,67.1189281 9.29076416,66.4912782 9.29076416,66.0066741 C9.29076416,65.024329 10.1130638,64.4536055 12.2889728,63.1880882 C15.159783,61.5182476 19.0932127,59.2309746 21.6324971,53.3544201 C21.9523165,52.615187 21.6172166,51.754517 20.8840307,51.4320598 C20.1508447,51.1096027 19.2972152,51.4474663 18.9773958,52.1866993 C17.9639984,54.5323583 16.6958039,56.2007393 15.3581193,57.4720953 C14.6911555,57.4347376 14.0275146,57.3513421 13.3718604,57.222495 C13.3106507,57.2054274 13.2482077,57.1932262 13.1851057,57.1860037 C12.3441091,57.0162291 11.5185046,56.7765134 10.7167591,56.4693151 C10.0949708,56.2257211 9.49284927,55.9338896 8.91580711,55.5964438 C8.87120152,55.5464946 8.82279753,55.5001316 8.77103605,55.457777 C8.64048192,55.3573653 8.4934886,55.2807923 8.33672287,55.2315311 C7.01215431,54.3714299 5.92496543,53.187401 5.17637061,51.7896743 C5.16623664,51.7604813 5.15610266,51.7298286 5.14307327,51.6991759 C5.10945196,51.6215766 5.0687405,51.5473007 5.02146558,51.477309 C4.33352148,50.0684834 3.99142674,48.513607 4.02399297,46.9436333 C4.02977763,46.8707672 4.02977763,46.7975517 4.02399297,46.7246856 C4.13112355,43.6827731 5.49197152,41.2130438 6.02617674,40.3562287 C7.17855438,38.5243668 8.2599942,37.766808 8.65956233,37.612085 C9.00556517,37.9536433 8.90133,39.5680172 8.82894447,40.6612958 C8.74063413,42.0158518 8.64074209,43.5528642 8.95344759,44.9482905 C9.3645974,46.7801524 10.4083967,48.0471294 12.0602345,48.7141898 C13.6527162,49.3549766 15.5217106,48.9973621 17.1909209,47.7303851 C19.7244145,45.8065652 20.497492,42.1559783 18.9889775,39.2381361 C16.7725326,34.9496818 14.0131962,29.6117384 14.0131962,24.8722519 C14.0131962,18.9241745 16.4815427,13.3614449 20.9622071,9.21019769 C30.0340585,0.81797143 43.9658318,0.81797143 53.0376833,9.21019769 C57.5255862,13.3614449 59.9866942,18.9241745 59.9866942,24.8722519 C59.9866942,29.6117384 57.2273578,34.9438432 55.0109128,39.2381361 C53.5023984,42.1574379 54.2754759,45.8065652 56.8089694,47.7303851 C58.4781797,48.9973621 60.3486219,49.3549766 61.9396558,48.7141898 C63.5900459,48.048589 64.635293,46.781612 65.0464428,44.9497501 C65.3591483,43.5543239 65.2592562,42.0173115 65.1709459,40.6627554 C65.0985604,39.5694769 64.9943252,37.955103 65.340328,37.6135447 C65.7398962,37.7595098 66.8271268,38.5258265 67.9708182,40.3576884 C68.5050234,41.2130438 69.8644237,43.6813135 69.973002,46.7203067 C69.9672,46.794634 69.9672,46.869306 69.973002,46.9436333 C70.0063391,48.5317657 69.6560595,50.1042428 68.952366,51.5254775 C68.9205164,51.5794845 68.8901144,51.6349513 68.8626079,51.6918777 L68.8336537,51.7663199 C68.0863624,53.1739497 66.9963482,54.3668816 65.6660629,55.2329908 C65.5091196,55.2811184 65.3620168,55.357254 65.2317497,55.457777 C65.1764872,55.499708 65.1246829,55.5460818 65.0768447,55.5964438 C64.4981881,55.9303683 63.8945948,56.2183052 63.2715496,56.4576379 C61.7833012,57.0255083 60.2185472,57.3635782 58.6301894,57.460418 C57.2939525,56.1890621 56.0243103,54.5206811 55.0109128,52.1750221 C54.6910934,51.4357891 53.8374639,51.0979255 53.104278,51.4203827 C52.3710921,51.7428399 52.0359923,52.6035098 52.3558116,53.3427428 C54.895096,59.2192974 58.8285257,61.5065704 61.6993358,63.176411 C63.8839312,64.4404687 64.7062308,65.0111922 64.7062308,65.9935372 L64.7018876,65.9979162 Z\"\n          fillRule=\"nonzero\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            OctopusErrorIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    OctopusErrorIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              OctopusErrorIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RegistryEmptyIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"155\"\n        viewBox=\"0 0 350 155\"\n        width=\"350\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <rect\n            fill=\"#E9E9EA\"\n            height=\"3\"\n            width=\"350\"\n            y=\"140\"\n          />\n          <rect\n            fill=\"#FFFFFF\"\n            height=\"152\"\n            stroke=\"#C4C2C0\"\n            strokeWidth=\"3\"\n            width=\"193\"\n            x=\"78.5\"\n            y=\"1.5\"\n          />\n          <rect\n            fill=\"#FFFFFF\"\n            height=\"54\"\n            stroke=\"#C4C2C0\"\n            strokeWidth=\"2\"\n            width=\"158\"\n            x=\"96\"\n            y=\"19\"\n          />\n          <path\n            d=\"M178.889 38C181.644 38 183.778 40.133 183.778 42.889 183.778 46.178 180.667 48.933 176.133 53.111L174.889 54.267 173.644 53.111C169.022 49.022 166 46.267 166 42.889 166 40.133 168.133 38 170.889 38 172.4 38 173.911 38.711 174.889 39.867 175.867 38.711 177.378 38 178.889 38Z\"\n            fill=\"#C4C2C0\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 82 255 82 255 92 95 92\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 100 255 100 255 110 95 110\"\n          />\n          <polygon\n            fill=\"#C4C2C0\"\n            points=\"95 118 255 118 255 128 95 128\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RegistryEmptyIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RegistryEmptyIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RegistryEmptyIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RejectedNewsroomsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"18\"\n        viewBox=\"0 0 18 18\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M9 0C4.05 0 0 4.05 0 9s4.05 9 9 9 9-4.05 9-9-4.05-9-9-9zM1.8 9c0-3.96 3.24-7.2 7.2-7.2 1.62 0 3.15.54 4.41 1.53L3.33 13.41A7.093 7.093 0 0 1 1.8 9zM9 16.2c-1.62 0-3.15-.54-4.41-1.53L14.67 4.59A7.093 7.093 0 0 1 16.2 9c0 3.96-3.24 7.2-7.2 7.2z\"\n          fill=\"#7D7373\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RejectedNewsroomsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RejectedNewsroomsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RejectedNewsroomsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RequestAppealSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <g\n            transform=\"translate(74 71)\"\n          >\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(27 29)\"\n          >\n            <path\n              d=\"M1,0 L39,0 C39.5522847,-4.02567223e-15 40,0.44771525 40,1 L40,52 C40,52.5522847 39.5522847,53 39,53 L1,53 C0.44771525,53 6.76353751e-17,52.5522847 0,52 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 Z M1.73913043,1.63076923 L1.73913043,51.3692308 L38.2608696,51.3692308 L38.2608696,1.63076923 L1.73913043,1.63076923 Z\"\n            />\n            <rect\n              height=\"2\"\n              width=\"11\"\n              x=\"6\"\n              y=\"13\"\n            />\n            <rect\n              height=\"2\"\n              width=\"14\"\n              x=\"6\"\n              y=\"19\"\n            />\n            <rect\n              height=\"2\"\n              width=\"21\"\n              x=\"6\"\n              y=\"25\"\n            />\n            <polygon\n              points=\"6 31 33 31 33 33 6 33\"\n            />\n            <polygon\n              points=\"6 37 33 37 33 39 6 39\"\n            />\n            <polygon\n              points=\"6 43 33 43 33 45 6 45\"\n            />\n            <rect\n              height=\"2\"\n              width=\"10\"\n              x=\"6\"\n              y=\"7\"\n            />\n          </g>\n          <g\n            fillRule=\"nonzero\"\n            transform=\"translate(45 19)\"\n          >\n            <ellipse\n              cx=\"16.5\"\n              cy=\"16.5\"\n              fill=\"#30E8BD\"\n              rx=\"15.5\"\n              ry=\"16.5\"\n            />\n            <path\n              d=\"M33.0555556,16.0657183 C32.5338444,16.0657183 32.1111111,16.4882122 32.1111111,17.0096279 C32.1111111,25.3371756 25.3322667,32.1121809 17,32.1121809 C8.66773333,32.1121809 1.88888889,25.3371756 1.88888889,17.0096279 C1.88888889,8.68208015 8.66773333,1.90707488 17,1.90707488 C20.4664889,1.90707488 23.7531556,3.06883877 26.4206444,5.20320707 L23.5472667,5.97268215 C23.0433111,6.10747243 22.7444889,6.62549 22.8793556,7.12878258 C22.9923111,7.55052137 23.3742444,7.82878591 23.7913111,7.82878591 C23.8721556,7.82878591 23.9545111,7.81821412 24.0361111,7.79669299 L28.5974,6.57527401 C29.0008667,6.46729076 29.2974222,6.0806654 29.2974222,5.66345737 L29.2974222,0.943909562 C29.2974222,0.42249392 28.8746889,0 28.3529778,0 C27.8312667,0 27.4085333,0.42249392 27.4085333,0.943909562 L27.4085333,3.57968262 C24.4422222,1.27314522 20.8185778,0.0192557551 17,0.0192557551 C7.6262,0.0192557551 0,7.64113669 0,17.0096279 C0,26.3781191 7.6262,34 17,34 C26.3738,34 34,26.3781191 34,17.0096279 C34,16.4882122 33.5772667,16.0657183 33.0555556,16.0657183 Z\"\n              fill=\"#000000\"\n            />\n            <path\n              d=\"M16.5,10 C8.49669997,10 5.219556,16.8303439 5.0842382,17.1211935 C4.9719206,17.3621514 4.9719206,17.6378486 5.0842382,17.8788065 C5.21993933,18.1696561 8.49669997,25 16.5,25 C24.5033,25 27.780444,18.1696561 27.9157618,17.8788065 C28.0280794,17.6378486 28.0280794,17.3621514 27.9157618,17.1211935 C27.780444,16.8303439 24.5033,10 16.5,10 Z M16.5,23.1521632 C10.6736681,23.1521632 7.78484404,18.8330295 7.0319711,17.5003696 C7.78599405,16.1651227 10.6752015,11.8478368 16.5,11.8478368 C22.3244152,11.8478368 25.2136226,16.1647531 25.9680289,17.5 C25.2136226,18.8352469 22.3244152,23.1521632 16.5,23.1521632 Z\"\n              fill=\"#000000\"\n            />\n            <path\n              d=\"M17,13 C14.7944,13 13,14.7944 13,17 C13,19.2056 14.7944,21 17,21 C19.2056,21 21,19.2056 21,17 C21,14.7944 19.2056,13 17,13 Z\"\n              fill=\"#000000\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RequestAppealSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RequestAppealSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RequestAppealSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons RevealVoteSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <path\n            d=\"M36.1579784,25.0003289 C29.2622189,25.0003289 23.6579844,30.6044707 23.6579844,37.5002566 C23.6579844,43.2558457 27.5658711,48.0813036 32.8685065,49.527316 L32.8685065,57.8948774 L30.8537049,57.8948774 C30.4693893,57.8948774 30.2124158,58.0287589 29.9285409,58.2032983 C29.2893044,58.6018507 28.7716073,59.1042189 28.2632457,59.5807318 L28.2632457,58.5527718 C28.2632128,58.2082983 27.9498117,57.8949432 27.6053514,57.8948774 C26.2543777,57.8948774 24.8753324,57.8948774 23.5346294,57.8948774 C23.2330506,57.9527721 22.9946823,58.2457983 23.0000902,58.5527718 L23.0000902,74.3421056 C23.0001231,74.6865791 23.3135243,74.9999342 23.6579844,75 L27.6053514,75 C27.9498117,74.9999342 28.2632128,74.6865791 28.2632457,74.3421056 L28.2632457,73.7253296 C28.787502,74.1209215 29.3736794,74.4307898 29.9285409,74.7121712 C30.2529947,74.8626974 30.5105077,75 30.8948233,75 L40.6604432,75 C40.7305813,75 40.8002852,74.9835526 40.8660352,74.9592105 C42.6559421,74.4187503 43.1320405,72.2165146 42.1407055,70.5800681 C42.8738367,70.114542 43.4143167,69.4866476 43.4976127,68.7298717 C43.5758298,68.0190826 43.2879286,67.3311225 42.8808367,66.6944781 C43.823981,66.2577678 44.5357174,65.6386891 44.7106055,64.8441501 C44.8805857,64.0719136 44.5824477,63.3335588 44.1349479,62.6648749 C44.8515989,62.1901383 45.3684999,61.554415 45.3684999,60.7734285 C45.3684999,59.743758 44.7248226,58.7410612 43.6209679,57.9979695 C43.511389,57.9281669 43.3807773,57.8919169 43.2509023,57.8952064 L39.4474504,57.8952064 L39.4474504,49.527645 C44.7500858,48.0816326 48.6579719,43.2561746 48.6579719,37.5005855 C48.6579719,30.6047997 43.053738,25.0006579 36.1579784,25.0006579 L36.1579784,25.0003289 Z M63.7895428,25.0003289 C56.8937833,25.0003289 51.2895494,30.6044707 51.2895494,37.5002566 C51.2895494,43.2558457 55.1974355,48.0813036 60.5000709,49.527316 L60.5000709,57.8948774 C59.1976966,57.8948116 57.864342,57.8948774 56.5732637,57.8948774 C56.4851717,57.9119827 56.4006322,57.9468511 56.3265533,57.9976405 C55.2226987,58.7406665 54.5790214,59.7434291 54.5790214,60.7730996 C54.5790214,61.554086 55.0959224,62.1898094 55.8125733,62.664546 C55.3650736,63.3332298 55.0669356,64.0715847 55.2369158,64.8438211 C55.4118038,65.6383602 56.1235403,66.2574388 57.0666845,66.6941491 C56.6595926,67.3307935 56.3716915,68.0186879 56.4499085,68.7295428 C56.5332045,69.4863187 57.0736845,70.1142131 57.8068157,70.5797392 C56.8154807,72.2161199 57.2915791,74.4184214 59.0814861,74.9588816 C59.1472098,74.9832237 59.21694,74.9976974 59.2870781,74.9996711 L69.052698,74.9996711 C69.4370135,74.9996711 69.6945266,74.8623685 70.0189803,74.7118423 C70.6431248,74.4286845 71.163664,74.0846057 71.6842755,73.7250007 L71.6842755,74.3417767 C71.6843084,74.6862502 71.9977096,74.9996053 72.3421699,74.9996711 L76.2895363,74.9996711 C76.6339966,74.9996053 76.9473978,74.6862502 76.9474306,74.3417767 L76.9474306,58.5524429 C76.9473978,58.2079694 76.6339966,57.8946143 76.2895363,57.8945485 C74.9391159,57.8945485 73.5579653,57.8945485 72.2188147,57.8945485 C71.9172359,57.9524432 71.6788676,58.2454693 71.6842755,58.5524429 L71.6842755,59.5804029 C71.1677626,59.0492189 70.5887564,58.6046139 70.0189803,58.2029694 C69.7351055,58.0284958 69.4781319,57.8945485 69.0938164,57.8945485 L67.0790148,57.8945485 L67.0790148,49.5269871 C72.3816502,48.0809747 76.2895363,43.2555167 76.2895363,37.4999276 C76.2895363,30.6041418 70.6853024,25 63.7895428,25 L63.7895428,25.0003289 Z M36.1584342,27.2955914 C41.7903658,27.2955914 46.3430947,31.8669463 46.3430947,37.4988839 C46.3430947,43.1307615 41.7903658,47.6835084 36.1584342,47.6835084 C30.5265027,47.6835084 25.9737731,43.1307615 25.9737731,37.4988839 C25.9737731,31.8669463 30.5265027,27.2955914 36.1584342,27.2955914 Z M69.6840202,29.175057 L55.0826314,42.7910724 C54.1450237,41.2495946 53.6053382,39.4384284 53.6053382,37.4993408 C53.6053382,31.867151 58.158271,27.2955914 63.7904548,27.2955914 C65.9880761,27.2955914 68.0213834,27.991603 69.6840202,29.175057 Z M72.0100878,31.4712452 C73.2461614,33.1606005 73.9755714,35.2450107 73.9755714,37.4993408 C73.9755714,43.1314706 69.4226385,47.6844214 63.7904548,47.6844214 C61.2784716,47.6844214 58.9811738,46.7787456 57.2067449,45.2755857 L72.0100878,31.4712452 Z M34.1842953,49.8152106 C34.8307357,49.9183685 35.4828735,49.9796842 36.1579784,49.9796842 C36.8330833,49.9796842 37.4852212,49.9185 38.1316616,49.8152106 L38.1316616,57.8948774 L34.1842953,57.8948774 L34.1842953,49.8152106 Z M61.8158597,49.8152106 C62.4623001,49.9183685 63.1144379,49.9796842 63.7895428,49.9796842 C64.4646477,49.9796842 65.1167856,49.9185 65.763226,49.8152106 L65.763226,57.8948774 L61.8158597,57.8948774 L61.8158597,49.8152106 Z M24.3158787,59.2106662 L26.9474563,59.2106662 L26.9474563,73.6842112 L24.3158787,73.6842112 L24.3158787,59.2106662 Z M30.8537049,59.2106662 L43.0041919,59.2106662 C43.7298363,59.752837 44.0527111,60.3536261 44.0527111,60.7730996 C44.0527111,61.2140862 43.8154744,61.577836 43.0658695,61.842178 C42.0448766,61.8421122 40.9915154,61.842178 39.9819896,61.842178 C39.6375161,61.8744148 39.3534767,62.2173094 39.3857728,62.5617171 C39.4180754,62.9061906 39.7608713,63.1902694 40.1053448,63.1579668 L42.9425143,63.1579668 C43.342126,63.6473744 43.5043496,64.1723741 43.4153759,64.5765186 C43.3160602,65.0278342 42.9319749,65.4972418 41.8323175,65.7895443 C41.0034101,65.7894785 40.14145,65.7895443 39.3240952,65.7895443 C38.9796217,65.8217811 38.6955824,66.1646757 38.7278784,66.5090834 C38.760181,66.8535569 39.1029769,67.1376357 39.4474504,67.1053331 L41.6472848,67.1053331 C42.0538109,67.6012539 42.23012,68.1467799 42.1818239,68.5855955 C42.1282056,69.0728979 41.8634886,69.4711871 41.1127456,69.7369107 C40.3044105,69.7368449 39.4629833,69.7369107 38.6662008,69.7369107 C38.3217273,69.7691475 38.037688,70.1119763 38.069984,70.456384 C38.1022866,70.8008575 38.4450825,71.0849363 38.789556,71.0526337 L40.9893904,71.0526337 C41.7495018,72.0425673 41.3919494,73.3884219 40.4959696,73.6842112 L30.8948233,73.6842112 C29.9038896,73.2977641 29.0834887,72.7031591 28.2632457,72.0394752 L28.2632457,61.4515203 C29.1161203,60.6001392 29.8298239,59.8241527 30.8537049,59.2106662 Z M56.9433293,59.2106662 L69.0938164,59.2106662 C70.1051448,59.7821791 70.9706509,60.7325733 71.6842755,61.4515203 L71.6842755,72.0394752 C70.8497694,72.7608564 70.0753224,73.2284878 69.052698,73.6842112 L59.4515517,73.6842112 C58.5555719,73.3884219 58.1980195,72.0425673 58.9581309,71.0526337 L61.1579653,71.0526337 C61.5055375,71.0592126 61.8252281,70.7423707 61.8252281,70.3947393 C61.8252281,70.0471079 61.5055375,69.7319765 61.1579653,69.7369107 L58.8347757,69.7369107 C58.0840327,69.4711871 57.8193289,69.0728979 57.7656973,68.5855955 C57.7179342,68.1515168 57.8828025,67.5971092 58.2796773,67.1053331 L60.5000709,67.1053331 C60.8476431,67.111912 61.1673337,66.7950701 61.1673337,66.4474387 C61.1673337,66.0998073 60.8476431,65.7846101 60.5000709,65.7895443 L58.1152037,65.7895443 C57.0155464,65.4972418 56.6314611,65.0278342 56.5321453,64.5765186 C56.4431717,64.1723741 56.6053953,63.6473744 57.0050069,63.1579668 L59.8421765,63.1579668 C60.1897487,63.1645457 60.5094393,62.8477038 60.5094393,62.5000724 C60.5094393,62.152441 60.1897487,61.8372438 59.8421765,61.842178 L56.8816517,61.842178 C56.1320469,61.578165 55.8948101,61.2140862 55.8948101,60.7730996 C55.8948101,60.3536261 56.217685,59.752837 56.9433293,59.2106662 Z M73.0000643,59.2106662 L75.6316419,59.2106662 L75.6316419,73.6842112 L73.0000643,73.6842112 L73.0000643,59.2106662 Z\"\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n          />\n          <polygon\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            points=\"41.9 33 34.205 40.10875 31.1 37.24875 29 39.1875 34.205 44 44 34.93875\"\n          />\n          <g\n            transform=\"translate(70 79)\"\n          >\n            <path\n              d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M9,0 C4.05,0 0,4.05 0,9 C0,13.95 4.05,18 9,18 C13.95,18 18,13.95 18,9 C18,4.05 13.95,0 9,0 L9,0 Z M7.2,13.5 L2.7,9 L3.96,7.74 L7.2,10.98 L14.04,4.14 L15.3,5.4 L7.2,13.5 L7.2,13.5 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            RevealVoteSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    RevealVoteSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              RevealVoteSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons ReviewIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n        >\n          <path\n            d=\"m0 0h24v24h-24z\"\n          />\n          <path\n            d=\"m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm1 15h-2v-2h2zm0-4h-2v-6h2z\"\n            fill=\"#4066ff\"\n            fillRule=\"nonzero\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            ReviewIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    ReviewIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              ReviewIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons SubmitChallengeSuccessIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"100\"\n        viewBox=\"0 0 100 100\"\n        width=\"100\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <circle\n            cx=\"50\"\n            cy=\"50\"\n            fill=\"#30E8BD\"\n            fillRule=\"nonzero\"\n            r=\"50\"\n          />\n          <g\n            fill=\"#000000\"\n            fillRule=\"nonzero\"\n            transform=\"translate(9 18)\"\n          >\n            <path\n              d=\"M63.9166667,0 L20.5833333,0 C19.9850249,0 19.5,0.485024854 19.5,1.08333333 L19.5,19.5 L15.0583333,19.5 C12.0553912,19.4961409 9.20687238,20.8304533 7.28758333,23.14 C5.78142836,24.9516447 3.54762911,25.9996685 1.19166667,26 L0,26 L0,28.1666667 L1.19166667,28.1666667 C4.1946088,28.1705258 7.04312762,26.8362134 8.96241667,24.5266667 C10.4697831,22.7135642 12.7058924,21.6653879 15.06375,21.6666667 L19.3580833,21.6666667 L33.1391667,25.3424167 C33.8947918,25.545412 34.4699891,26.1592647 34.6234779,26.9264789 C34.7769667,27.693693 34.4822032,28.4815899 33.8628333,28.9596667 C33.3576061,29.3523327 32.6972125,29.4847324 32.0796667,29.3171667 L19.7795,26.0368333 C19.2824492,25.9038387 18.7604234,26.1388182 18.5304167,26.5990833 L17.6301667,28.3995833 C16.3813874,30.9195041 13.8081904,32.5098944 10.9958333,32.5 L8.66666667,32.5 L8.66666667,34.6666667 L10.9958333,34.6666667 C14.5796362,34.6769393 17.8658559,32.6746478 19.5,29.4850833 L19.5,49.8333333 L16.575,49.8333333 C14.0013255,49.8303564 11.5866343,48.5879276 10.088,46.4955833 C8.18378094,43.8344506 5.1139231,42.2539497 1.84166667,42.25 L0,42.25 L0,44.4166667 L1.84166667,44.4166667 C4.41534112,44.4196436 6.83003238,45.6620724 8.32866667,47.7544167 C10.2328857,50.4155494 13.3027436,51.9960503 16.575,52 L19.5,52 L19.5,63.9166667 C19.5,64.5149751 19.9850249,65 20.5833333,65 L63.9166667,65 C64.5149751,65 65,64.5149751 65,63.9166667 L65,1.08333333 C65,0.485024854 64.5149751,0 63.9166667,0 Z M62.8333333,62.8333333 L21.6666667,62.8333333 L21.6666667,28.782 L31.525,31.4101667 C32.792326,31.746362 34.143918,31.4751216 35.1834041,30.6759901 C36.2228902,29.8768586 36.8324541,28.6404105 36.8333333,27.32925 C36.8328336,25.4159862 35.5466831,23.7418572 33.6981667,23.2483333 L21.6666667,20.0416667 L21.6666667,2.16666667 L62.8333333,2.16666667 L62.8333333,62.8333333 Z\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"31\"\n              y=\"5\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"31\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"12\"\n              x=\"40\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"11\"\n              x=\"38\"\n              y=\"24\"\n            />\n            <rect\n              height=\"2\"\n              width=\"20\"\n              x=\"38\"\n              y=\"29\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"35\"\n            />\n            <rect\n              height=\"2\"\n              width=\"3\"\n              x=\"54\"\n              y=\"18\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"51\"\n              y=\"24\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"27\"\n              y=\"40\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"46\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"27\"\n              y=\"51\"\n            />\n            <rect\n              height=\"2\"\n              width=\"22\"\n              x=\"36\"\n              y=\"51\"\n            />\n            <rect\n              height=\"2\"\n              width=\"7\"\n              x=\"51\"\n              y=\"40\"\n            />\n            <rect\n              height=\"2\"\n              width=\"30\"\n              x=\"27\"\n              y=\"13\"\n            />\n          </g>\n          <g\n            transform=\"translate(74 71)\"\n          >\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z\"\n              fill=\"#FFFFFF\"\n              stroke=\"#FFFFFF\"\n              strokeWidth=\"3\"\n            />\n            <path\n              d=\"M12,0 C5.4,0 0,5.4 0,12 C0,18.6 5.4,24 12,24 C18.6,24 24,18.6 24,12 C24,5.4 18.6,0 12,0 L12,0 Z M9.6,18 L3.6,12 L5.28,10.32 L9.6,14.64 L18.72,5.52 L20.4,7.2 L9.6,18 L9.6,18 Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            SubmitChallengeSuccessIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    SubmitChallengeSuccessIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              SubmitChallengeSuccessIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TokenWalletIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"21\"\n        viewBox=\"0 0 24 21\"\n        width=\"24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M22.179 13.216L22.179 5.049C22.179 4.253 21.531 3.608 20.732 3.608L17.357 3.608 17.357 1.301C17.355 0.901 17.169 0.523 16.853 0.277 16.536 0.03 16.123-0.058 15.732 0.038L1.35 3.608C0.589 3.658-0.002 4.289 0 5.049L0 18.501C0 19.297 0.648 19.942 1.446 19.942L15.429 19.942C17.348 21.377 20.034 21.187 21.731 19.496 23.427 17.805 23.618 15.129 22.179 13.216ZM15.964 0.965C16.068 0.936 16.179 0.96 16.263 1.028 16.347 1.093 16.395 1.195 16.393 1.301L16.393 3.608 5.361 3.608 15.964 0.965ZM1.446 18.981C1.18 18.981 0.964 18.766 0.964 18.501L0.964 5.049C0.964 4.783 1.18 4.568 1.446 4.568L20.732 4.568C20.998 4.568 21.214 4.783 21.214 5.049L21.214 12.255C19.295 10.821 16.609 11.011 14.912 12.702 13.216 14.392 13.025 17.069 14.464 18.981L1.446 18.981ZM18.321 19.942C16.191 19.942 14.464 18.222 14.464 16.099 14.464 13.976 16.191 12.255 18.321 12.255 20.452 12.255 22.179 13.976 22.179 16.099 22.179 18.222 20.452 19.942 18.321 19.942ZM20.732 16.099C20.732 16.364 20.516 16.579 20.25 16.579L18.804 16.579 18.804 18.021C18.804 18.286 18.588 18.501 18.321 18.501 18.055 18.501 17.839 18.286 17.839 18.021L17.839 16.579 16.393 16.579C16.127 16.579 15.911 16.364 15.911 16.099 15.911 15.833 16.127 15.618 16.393 15.618L17.839 15.618 17.839 14.177C17.839 13.912 18.055 13.697 18.321 13.697 18.588 13.697 18.804 13.912 18.804 14.177L18.804 15.618 20.25 15.618C20.516 15.618 20.732 15.833 20.732 16.099Z\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TokenWalletIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    TokenWalletIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TokenWalletIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TrendsIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"48\"\n        viewBox=\"0 0 48 48\"\n        width=\"48\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"#2B56FF\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <path\n            d=\"M24,48 C10.766,48 0,37.234 0,24 C0,10.766 10.766,0 24,0 C37.234,0 48,10.766 48,24 C48,37.234 37.234,48 24,48 Z M24,2 C11.87,2 2,11.87 2,24 C2,36.13 11.87,46 24,46 C36.13,46 46,36.13 46,24 C46,11.87 36.13,2 24,2 Z\"\n            fillRule=\"nonzero\"\n          />\n          <polygon\n            points=\"36 24.9230769 34.0221193 24.9230769 34.0221193 17.6701884 26.7692308 17.6701884 26.7692308 15.6923077 35.0110596 15.6923077 36 16.681248\"\n          />\n          <polygon\n            points=\"14.3524956 31.3846154 12.9230769 29.9762196 19.7022011 23.2948061 20.7373671 23.0557573 26.2104029 24.8526073 34.5705813 16.6153846 36 18.0237804 27.1990673 26.6972671 26.1639013 26.938308 20.6908655 25.1394659\"\n          />\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TrendsIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    TrendsIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              TrendsIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons TwitterIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        className=\"sc-LzLqL cQzBHr\"\n        height={23}\n        viewBox=\"0 0 22 23\"\n        width={23}\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"m19 1h-16c-1.1 0-2 .89612069-2 1.99137931v15.93103449c0 1.0952586.9 1.9913793 2 1.9913793h16c1.1 0 2-.8961207 2-1.9913793v-15.93103449c0-1.09525862-.9-1.99137931-2-1.99137931zm-2.1171875 7.7004415c-.1015625 4.7261258-3.046875 8.0138655-7.515625 8.2193493-1.828125.1027418-3.1484375-.5137094-4.3671875-1.2329024 1.3203125.2054837 3.046875-.3082256 3.9609375-1.1301605-1.3203125-.1027419-2.1328125-.821935-2.5390625-1.9520955.40625.1027419.8125 0 1.1171875 0-1.21875-.4109675-2.03125-1.1301605-2.1328125-2.77403038.3046875.20548378.7109375.30822558 1.1171875.30822558-.9140625-.51370931-1.5234375-2.46580476-.8125-3.69870716 1.3203125 1.43838613 2.9453125 2.67128852 5.5859375 2.87677225-.7109375-2.87677225 3.1484375-4.41790024 4.671875-2.46580478.7109375-.10274187 1.21875-.41096747 1.7265625-.6164512-.203125.71919306-.609375 1.13016053-1.1171875 1.54112799.5078125-.10274186 1.015625-.20548373 1.421875-.41096746-.1015625.51370933-.609375.92467679-1.1171875 1.33564426z\"\n          fill=\"#8b8581\"\n          fillRule=\"evenodd\"\n          transform=\"translate(0 .457)\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            TwitterIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Styled(_TwitterIcon)\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Styled(_TwitterIcon)\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons VerifyIdentityIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"22\"\n        viewBox=\"0 0 18 22\"\n        width=\"18\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n        >\n          <g\n            transform=\"translate(-2 -0.5)\"\n          >\n            <polygon\n              points=\"0 0 22.9 0 22.9 22.9 0 22.9\"\n            />\n            <path\n              d=\"M11.5 1L2.9 4.8 2.9 10.5C2.9 15.8 6.5 20.8 11.5 22 16.4 20.8 20 15.8 20 10.5L20 4.8 11.5 1ZM18.1 10.5C18.1 14.8 15.3 18.8 11.5 20 7.6 18.8 4.8 14.8 4.8 10.5L4.8 6 11.5 3 18.1 6 18.1 10.5ZM7.1 11.1L5.7 12.4 9.5 16.2 17.2 8.6 15.8 7.2 9.5 13.5 7.1 11.1Z\"\n              fill=\"#2B56FF\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            VerifyIdentityIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    VerifyIdentityIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              VerifyIdentityIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons WaitForApply 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"54\"\n        viewBox=\"0 0 54 54\"\n        width=\"54\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <circle\n          cx=\"27\"\n          cy=\"27\"\n          fill=\"#90e8d3\"\n          r=\"27\"\n        />\n        <path\n          d=\"m22.0188072 35.5783153h-2.7243229v-3.6842105c0-.4440359-.3660757-.8044128-.8171334-.8044128s-.8171334.3603769-.8171334.8044128v4.4886233c0 .4440359.3660757.8044128.8171334.8044128h3.5414563c.4510577 0 .8171335-.3603769.8171335-.8044128 0-.4440358-.3656672-.8044128-.8171335-.8044128zm18.7752752-18.3273385-6.2919275-6.9802919c-.1552554-.1721443-.3775157-.2706849-.6112159-.2706849h-17.2349785c-.4510577 0-.8171335.3603769-.8171335.8044128v17.4633992c-3.3960066 1.1853022-5.838827 4.3707768-5.838827 8.1153183 0 4.7512641 3.9263262 8.6168697 8.7531334 8.6168697 2.8566986 0 5.3902208-1.360262 6.9889424-3.4509308h14.4407908c.4510576 0 .8171334-.3603769.8171334-.8044128v-22.9599517c0-.1970812-.073542-.3869226-.2059176-.5337279zm-6.1007183-4.3442312 3.7122372 4.1181912h-3.7122372zm-15.9406392 30.4840266c-3.9251005 0-7.1188666-3.1436451-7.1188666-7.0080441s3.1933575-7.0080441 7.1188666-7.0080441c3.925509 0 7.1188665 3.1440473 7.1188665 7.0080441s-3.1933575 7.0080441-7.1188665 7.0080441zm20.6130082-3.4509308h-12.6496343c.5025371-1.0859572.7901681-2.2877499.7901681-3.5571133 0-.22604-.0171598-.4476557-.0343196-.6692714h7.6205865c.4510576 0 .8171334-.3603769.8171334-.8044128s-.3660758-.8044128-.8171334-.8044128h-7.9069918c-.336659-1.2062169-.9270379-2.3090669-1.7204745-3.2429901h9.6270577c.4510577 0 .8171334-.3603769.8171334-.8044128 0-.4440358-.3660757-.8044128-.8171334-.8044128h-11.4304712c-1.4009753-.937543-3.0903986-1.486957-4.9089291-1.486957-.4355321 0-.8608501.0418295-1.2800396.1029649v-16.2603999h15.5860033v6.2209262c0 .4440358.3660758.8044128.8171335.8044128h5.4895024v21.306079zm-18.4365733-14.7340266c0 .4440358.3660758.8044127.8171334.8044127h13.3462406c.4510576 0 .8171334-.3603769.8171334-.8044127 0-.4440359-.3660758-.8044128-.8171334-.8044128h-13.3462406c-.4514662 0-.8171334.3599747-.8171334.8044128zm0-5c0 .4440358.2194549.8044127.4898547.8044127h8.0007976c.2703998 0 .4898547-.3603769.4898547-.8044127 0-.4440359-.2194549-.8044128-.4898547-.8044128h-8.0007976c-.2706447 0-.4898547.3599747-.4898547.8044128z\"\n          fill=\"#000000\"\n          fillRule=\"nonzero\"\n        />\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            WaitForApply\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WaitForApply\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WaitForApply\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\nexports[`Storyshots Pattern Library / icons / SVG Icons WarningIcon 1`] = `\n<div>\n  <div\n    style={\n      Object {\n        \"position\": \"relative\",\n        \"zIndex\": 0,\n      }\n    }\n  >\n    <div\n      className=\"sc-LzNOQ FJBmz\"\n    >\n      <svg\n        height=\"28\"\n        viewBox=\"0 0 28 28\"\n        width=\"28\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g\n          fill=\"none\"\n          fillRule=\"evenodd\"\n          stroke=\"none\"\n          strokeWidth=\"1\"\n          transform=\"translate(-40, -20)\"\n        >\n          <path\n            d=\"M4,0.5 C2.06700338,0.5 0.5,2.06700338 0.5,4 L0.5,64 C0.5,65.9329966 2.06700338,67.5 4,67.5 L726,67.5 C727.932997,67.5 729.5,65.9329966 729.5,64 L729.5,4 C729.5,2.06700338 727.932997,0.5 726,0.5 L4,0.5 Z\"\n            fill=\"#FCFCFC\"\n            stroke=\"#FF0C1A\"\n          />\n          <g\n            transform=\"translate(38, 18)\"\n          >\n            <polygon\n              points=\"0 0 32 0 32 32 0 32\"\n            />\n            <path\n              d=\"M16,2.66666667 C8.64,2.66666667 2.66666667,8.64 2.66666667,16 C2.66666667,23.36 8.64,29.3333333 16,29.3333333 C23.36,29.3333333 29.3333333,23.36 29.3333333,16 C29.3333333,8.64 23.36,2.66666667 16,2.66666667 Z M17.3333333,22.6666667 L14.6666667,22.6666667 L14.6666667,20 L17.3333333,20 L17.3333333,22.6666667 Z M17.3333333,17.3333333 L14.6666667,17.3333333 L14.6666667,9.33333333 L17.3333333,9.33333333 L17.3333333,17.3333333 Z\"\n              fill=\"#FF0C1A\"\n              fillRule=\"nonzero\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  </div>\n  <button\n    className=\"info__show-button\"\n    onClick={[Function]}\n    style={\n      Object {\n        \"background\": \"#027ac5\",\n        \"border\": \"none\",\n        \"borderRadius\": \"0 0 0 5px\",\n        \"color\": \"#fff\",\n        \"cursor\": \"pointer\",\n        \"display\": \"block\",\n        \"fontFamily\": \"sans-serif\",\n        \"fontSize\": \"12px\",\n        \"padding\": \"5px 15px\",\n        \"position\": \"fixed\",\n        \"right\": 0,\n        \"top\": 0,\n      }\n    }\n    type=\"button\"\n  >\n    Show Info\n  </button>\n  <div\n    className=\"info__overlay\"\n    style={\n      Object {\n        \"background\": \"white\",\n        \"bottom\": 0,\n        \"display\": \"none\",\n        \"height\": \"100vh\",\n        \"left\": 0,\n        \"overflow\": \"auto\",\n        \"position\": \"fixed\",\n        \"top\": 0,\n        \"width\": \"100vw\",\n        \"zIndex\": 99999,\n      }\n    }\n  >\n    <button\n      className=\"info__close-button\"\n      onClick={[Function]}\n      style={\n        Object {\n          \"background\": \"#027ac5\",\n          \"border\": \"none\",\n          \"borderRadius\": \"0 0 0 5px\",\n          \"color\": \"#fff\",\n          \"cursor\": \"pointer\",\n          \"display\": \"block\",\n          \"fontFamily\": \"sans-serif\",\n          \"fontSize\": \"12px\",\n          \"padding\": \"5px 15px\",\n          \"position\": \"fixed\",\n          \"right\": 0,\n          \"top\": 0,\n        }\n      }\n      type=\"button\"\n    >\n      ×\n    </button>\n    <div>\n      <div\n        style={\n          Object {\n            \"backgroundColor\": \"#fff\",\n            \"border\": \"1px solid #eee\",\n            \"borderRadius\": \"2px\",\n            \"color\": \"black\",\n            \"fontFamily\": \"Helvetica Neue, Helvetica, Segoe UI, Arial, freesans, sans-serif\",\n            \"fontSize\": \"15px\",\n            \"fontWeight\": 300,\n            \"lineHeight\": 1.45,\n            \"marginBottom\": \"20px\",\n            \"marginTop\": \"20px\",\n            \"padding\": \"20px 40px 40px\",\n          }\n        }\n      >\n        <div\n          style={\n            Object {\n              \"borderBottom\": \"1px solid #eee\",\n              \"marginBottom\": 10,\n              \"paddingTop\": 10,\n            }\n          }\n        >\n          <h1\n            style={\n              Object {\n                \"fontSize\": \"35px\",\n                \"margin\": 0,\n                \"padding\": 0,\n              }\n            }\n          >\n            Pattern Library / icons / SVG Icons\n          </h1>\n          <h2\n            style={\n              Object {\n                \"fontSize\": \"22px\",\n                \"fontWeight\": 400,\n                \"margin\": \"0 0 10px 0\",\n                \"padding\": 0,\n              }\n            }\n          >\n            WarningIcon\n          </h2>\n        </div>\n        \n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Story Source\n          </h1>\n          <pre\n            style={\n              Object {\n                \"alignItems\": \"center\",\n                \"backgroundColor\": \"#fafafa\",\n                \"display\": \"flex\",\n                \"fontFamily\": \"Menlo, Monaco, \\\\\"Courier New\\\\\", monospace\",\n                \"fontSize\": \".88em\",\n                \"justifyContent\": \"space-between\",\n                \"lineHeight\": 1.5,\n                \"overflowX\": \"scroll\",\n                \"padding\": \".5rem\",\n              }\n            }\n          >\n            <div>\n              <div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    Container\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 33,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;\n                    WarningIcon\n                  </span>\n                  <span />\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    /&gt;\n                  </span>\n                </div>\n                <div\n                  style={\n                    Object {\n                      \"paddingLeft\": 18,\n                      \"paddingRight\": 3,\n                    }\n                  }\n                >\n                  <span\n                    style={\n                      Object {\n                        \"color\": \"#444\",\n                      }\n                    }\n                  >\n                    &lt;/\n                    Container\n                    &gt;\n                  </span>\n                </div>\n              </div>\n            </div>\n            <button\n              onClick={[Function]}\n              style={\n                Object {\n                  \"alignSelf\": \"flex-start\",\n                  \"backgroundColor\": \"rgb(255, 255, 255)\",\n                  \"borderColor\": \"rgb(238, 238, 238)\",\n                  \"borderImage\": \"initial\",\n                  \"borderRadius\": \"3px\",\n                  \"borderStyle\": \"solid\",\n                  \"borderWidth\": \"1px\",\n                  \"cursor\": \"pointer\",\n                  \"flexShrink\": \"0\",\n                  \"fontSize\": \"13px\",\n                  \"overflow\": \"hidden\",\n                  \"padding\": \"3px 10px\",\n                }\n              }\n              type=\"button\"\n            >\n              Copy\n            </button>\n          </pre>\n        </div>\n        <div>\n          <h1\n            style={\n              Object {\n                \"borderBottom\": \"1px solid #EEE\",\n                \"fontSize\": \"25px\",\n                \"margin\": \"20px 0 0 0\",\n                \"padding\": \"0 0 5px 0\",\n              }\n            }\n          >\n            Prop Types\n          </h1>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              Container\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n          <div>\n            <h3\n              style={\n                Object {\n                  \"margin\": \"20px 0 0 0\",\n                }\n              }\n            >\n              \"\n              WarningIcon\n              \" Component\n            </h3>\n            <small>\n              No propTypes defined!\n            </small>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n"
  },
  {
    "path": "packages/elements/src/index.stories.tsx",
    "content": "import { storiesOf } from \"@storybook/react\";\nimport * as React from \"react\";\n\nstoriesOf(\"Common / Nav / Nav Bar\", module).add(\"Nav Error Bar\", () => {\n  return <div>hello world</div>;\n});\n"
  },
  {
    "path": "packages/elements/src/index.ts",
    "content": "export * from \"./buttons/index\";\nexport * from \"./colors/index\";\nexport * from \"./containers/index\";\nexport * from \"./icons/index\";\nexport * from \"./inputs/index\";\nexport * from \"./layouts/index\";\nexport * from \"./share/index\";\nexport * from \"./text/index\";\n"
  },
  {
    "path": "packages/elements/src/inputs/Input.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { fonts } from \"../text/fonts\";\nimport { colors } from \"../colors/index\";\n\nexport const InputIcon = styled.div`\n  position: relative;\n  left: calc(100% - 50px);\n  top: -30px;\n`;\n\nexport const InputLabel = styled.label`\n  font-size: 15px;\n  color: #000;\n  font-family: ${fonts.SANS_SERIF};\n`;\n\nexport const ErrorMessage = styled.small`\n  color: ${colors.accent.CIVIL_RED};\n  font-family: ${fonts.SANS_SERIF};\n`;\n\nexport interface InputBaseProps {\n  className?: string;\n  icon?: JSX.Element;\n  label?: string | JSX.Element;\n  noLabel?: boolean;\n  inputRef?:\n    | ((instance: HTMLInputElement | HTMLTextAreaElement | null) => void)\n    | React.RefObject<HTMLInputElement | HTMLTextAreaElement>;\n  invalid?: boolean;\n  disabled?: boolean;\n  invalidMessage?: string;\n  name: string;\n  value?: string;\n  placeholder?: string;\n  autocomplete?: string;\n  pattern?: string;\n  defaultValue?: any;\n  type?: string;\n  min?: string;\n  step?: string;\n  onBlur?(ev: any): void;\n  onFocus?(ev: any): void;\n  onKeyPress?(ev: any): void;\n  onChange?(name: string, value: string | null): void;\n}\n\nconst InputBaseWrapperComponent: React.FunctionComponent<InputBaseProps> = props => {\n  const { icon, className, label, noLabel, invalid, invalidMessage } = props;\n  return (\n    <div className={`${invalid ? \"civil-input-error\" : \"\"} ${className}`}>\n      {invalid && invalidMessage && <ErrorMessage>{invalidMessage}</ErrorMessage>}\n      {icon ? <InputIcon>{icon}</InputIcon> : null}\n      {props.children}\n      {!noLabel && <InputLabel>{label || props.placeholder}</InputLabel>}\n    </div>\n  );\n};\n\nconst InputBaseComponent = (props: InputBaseProps) => {\n  const { onChange, inputRef, invalid, noLabel, invalidMessage, ...inputProps } = props;\n  let cb;\n  if (onChange) {\n    cb = (ev: any) => onChange(props.name, ev.target.value);\n  }\n\n  if (inputProps.type === \"textarea\") {\n    return (\n      <InputBaseWrapperComponent {...props}>\n        <textarea {...inputProps} onChange={cb} ref={inputRef as any}>\n          {inputProps.value}\n        </textarea>\n      </InputBaseWrapperComponent>\n    );\n  }\n\n  return (\n    <InputBaseWrapperComponent {...props}>\n      <input {...inputProps} onChange={cb} ref={inputRef as any} />\n    </InputBaseWrapperComponent>\n  );\n};\n\nexport const InputBase = styled(InputBaseComponent)`\n  margin-bottom: 10px;\n  display: inline-grid;\n  width: 100%;\n  display: flex;\n  flex-direction: column-reverse;\n  font-family: ${fonts.SANS_SERIF};\n  > div {\n    display: flex;\n    flex-direction: row;\n  }\n  > input,\n  > textarea {\n    box-sizing: border-box;\n    font-size: inherit;\n    margin: 5px 0px 10px 0;\n    padding: 10px;\n    border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n    outline: none;\n  }\n  > input::placeholder,\n  > textarea::placeholder {\n    color: ${colors.accent.CIVIL_GRAY_3};\n  }\n  > input:focus,\n  > textarea:focus {\n    border-bottom: 1px solid ${colors.accent.CIVIL_BLUE};\n  }\n  &.civil-input-error {\n    color: ${colors.accent.CIVIL_RED};\n  }\n  &.civil-input-error > input {\n    color: ${colors.accent.CIVIL_RED};\n    border-bottom-color: ${colors.accent.CIVIL_RED};\n  }\n`;\n\nexport interface InputProps {\n  name: string;\n  value?: string;\n  placeholder?: string;\n  autocomplete?: string;\n  label?: string | JSX.Element;\n  icon?: JSX.Element;\n  className?: string;\n  invalid?: boolean;\n  disabled?: boolean;\n  invalidMessage?: string;\n  noLabel?: boolean;\n  readOnly?: boolean;\n  inputRef?:\n    | ((instance: HTMLInputElement | HTMLTextAreaElement | null) => void)\n    | React.RefObject<HTMLInputElement | HTMLTextAreaElement>;\n  type?: string;\n  min?: string;\n  step?: string;\n  onBlur?(ev: any): void;\n  onFocus?(ev: any): void;\n  onKeyPress?(ev: any): void;\n  onChange?(name: string, value: string): any;\n}\n\nexport const TextInput = (props: InputProps) => {\n  return <InputBase type=\"text\" {...props} />;\n};\n\nexport const NumericInput = (props: InputProps) => {\n  return <InputBase type=\"number\" {...props} />;\n};\n\nexport interface CurrencyProps extends InputProps {\n  currency: string;\n}\nexport const CurrencyInput = (props: InputProps) => {\n  const icon = props.icon || <span>USD</span>;\n  return <InputBase type=\"number\" {...props} icon={icon} />;\n};\n\nexport interface TextProps extends InputProps {\n  currency: string;\n}\nexport const HeaderInput = styled(TextInput)`\n  > input {\n    font-size: 25px;\n  }\n`;\n\nexport interface TextareaProps {\n  height?: string;\n  maxLength?: string;\n}\n\nexport const TextareaInput = (props: TextareaProps & InputProps) => {\n  return <InputBase type=\"textarea\" {...props} />;\n};\n\nexport const URLInput = (props: InputProps) => {\n  return <InputBase type=\"url\" pattern=\"https?://.+\" {...props} />;\n};\n"
  },
  {
    "path": "packages/elements/src/inputs/RadioInput.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { colors } from \"../colors/index\";\nimport { SecondaryButton } from \"../buttons/Button\";\nimport { InputLabel } from \"./Input\";\nimport { Heading, SubHeading } from \"../text/headings\";\n\nimport { OvalImage } from \"../icons/logos/index\";\n\nexport interface RadioButtonProps {\n  className?: string;\n  inputRef?: any;\n  onChange?: any;\n  value: any;\n  disabled?: boolean;\n  name?: string;\n  defaultValue?: any;\n}\n\nexport const RadioButtonDiv = styled.div`\n  input {\n    display: none;\n  }\n  input:checked + button {\n    background-color: ${colors.accent.CIVIL_BLUE};\n    border: 1px solid ${colors.accent.CIVIL_BLUE};\n    color: ${colors.basic.WHITE};\n  }\n`;\nexport const RadioButton: React.FunctionComponent<RadioButtonProps> = props => {\n  let input: any;\n  const { onChange, children, name } = props;\n  const clickHandler = () => {\n    input.checked = true;\n    if (onChange) {\n      onChange(props.name, input.value);\n    }\n  };\n  const defaultChecked = props.defaultValue === props.value;\n\n  return (\n    <RadioButtonDiv>\n      <input type=\"radio\" value={props.value} defaultChecked={defaultChecked} name={name} ref={ref => (input = ref)} />\n      <SecondaryButton onClick={clickHandler} disabled={props.disabled}>\n        {children}\n      </SecondaryButton>\n    </RadioButtonDiv>\n  );\n};\n\nexport const RadioBtnCircle = styled.div`\n  background-color: ${colors.basic.WHITE};\n  border-radius: 50%;\n  box-shadow: inset 0 0 0 1px ${colors.accent.CIVIL_GRAY_2};\n  height: 18px;\n  left: 2px;\n  position: absolute;\n  top: calc(50% - 9px);\n  width: 18px;\n`;\n\nexport const RadioBtnStandardStyled = styled.div`\n  width: 100%;\n  input {\n    display: none;\n  }\n  input:checked + button {\n    ${RadioBtnCircle} {\n      background-color: ${colors.basic.WHITE};\n      box-shadow: inset 0 0 0 6px ${colors.accent.CIVIL_BLUE};\n      height: 19px;\n      width: 19px;\n    }\n  }\n`;\n\nexport const RadioBtn = styled.button`\n  background-color: ${colors.basic.WHITE};\n  border: none;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  cursor: pointer;\n  font-size: 14px;\n  letter-spacing: -0.09px;\n  line-height: 24px;\n  margin-bottom: 10px;\n  outline: none;\n  padding-left: 30px;\n  position: relative;\n  text-align: left;\n`;\n\nexport const RadioButtonStandard: React.FunctionComponent<RadioButtonProps> = props => {\n  let input: any;\n  const { onChange, children, value, name } = props;\n  const clickHandler = () => {\n    input.checked = true;\n    if (onChange) {\n      onChange(name, input.value);\n    }\n  };\n  const defaultChecked = props.defaultValue === props.value;\n\n  return (\n    <RadioBtnStandardStyled>\n      <input\n        type=\"radio\"\n        value={value}\n        defaultChecked={defaultChecked}\n        onChange={onChange}\n        name={name}\n        ref={ref => (input = ref)}\n      />\n      <RadioBtn onClick={clickHandler}>\n        <RadioBtnCircle />\n        {children}\n      </RadioBtn>\n    </RadioBtnStandardStyled>\n  );\n};\n\nexport interface RadioInputProps {\n  name: string;\n  label?: string;\n  defaultValue?: any;\n  onChange?: any;\n  inputRef?: any;\n  className?: any;\n  children?: any;\n}\n\nconst RadioDiv = styled.div`\n  > div {\n    display: flex;\n    flex-direction: rows;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: center;\n  }\n`;\nexport const RadioInput = (props: RadioInputProps) => {\n  const { defaultValue, onChange, label, name, inputRef, children } = props;\n\n  const childrenWithProps = React.Children.map(children, (child: React.ReactChild) =>\n    React.cloneElement(child as React.ReactElement, { name, onChange, defaultValue }),\n  );\n\n  return (\n    <RadioDiv ref={inputRef}>\n      {label ? <InputLabel>{label}</InputLabel> : null}\n      <div>{childrenWithProps}</div>\n    </RadioDiv>\n  );\n};\nexport const RadioGroup = RadioInput;\n\nexport interface RadioCardInputProps {\n  heading: string;\n  subheading?: string;\n  value: any;\n  image?: any;\n  className?: string;\n  inputRef?: any;\n  onChange?: any;\n  name?: string;\n  disabled?: boolean;\n  defaultValue?: any;\n  prioritized?: boolean;\n}\n\nconst StyledRadioCardInput = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  background-color: #ffffff;\n  border: 1px solid #ebebeb;\n  border-radius: 4px;\n  box-shadow: 0 2px 4px 0 #e6e6e6;\n  width: 311px;\n  height: 117px;\n  margin-top: 15px;\n  cursor: pointer;\n  > div:nth-child(2) {\n    margin: 18px;\n  }\n  > div:nth-child(3) {\n    flex-grow: 1;\n  }\n  > input {\n    display: none;\n  }\n`;\n\nconst EnabledStyledRadioCardInput = styled(StyledRadioCardInput)`\n  :hover {\n    border: 1px solid #2b56ff;\n  }\n`;\n\nconst PrioritizedStyledRadioCardInput = styled(EnabledStyledRadioCardInput)`\n  box-shadow: 0px 0px 2px 2px ${colors.accent.CIVIL_BLUE_FADED};\n`;\n\nconst DisabledStyledRadioCardInput = styled(StyledRadioCardInput)`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  cursor: not-allowed;\n`;\n\nexport const RadioCardInput: React.FC<RadioCardInputProps> = props => {\n  let input: any;\n  const { onChange, name, image, heading, subheading, disabled, prioritized } = props;\n  const clickHandler = () => {\n    input.checked = true;\n    if (onChange) {\n      onChange(props.name, input.value);\n    }\n  };\n  const defaultChecked = props.defaultValue === props.value;\n\n  let SelectedStyledRadioCardInput = EnabledStyledRadioCardInput;\n  if (disabled) {\n    SelectedStyledRadioCardInput = DisabledStyledRadioCardInput;\n  } else if (prioritized) {\n    SelectedStyledRadioCardInput = PrioritizedStyledRadioCardInput;\n  }\n\n  return (\n    <SelectedStyledRadioCardInput onClick={disabled ? undefined : clickHandler}>\n      <input type=\"radio\" value={props.value} defaultChecked={defaultChecked} name={name} ref={ref => (input = ref)} />\n      <OvalImage>{image}</OvalImage>\n      <div>\n        <Heading>{heading}</Heading>\n        <SubHeading>{subheading}</SubHeading>\n      </div>\n    </SelectedStyledRadioCardInput>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/inputs/index.ts",
    "content": "export * from \"./Input\";\nexport * from \"./RadioInput\";\n"
  },
  {
    "path": "packages/elements/src/layouts/index.ts",
    "content": "export const LayoutsTest = \"test\";\n"
  },
  {
    "path": "packages/elements/src/module.d.ts",
    "content": "declare module \"@storybook/addon-storyshots\";\ndeclare module \"storybook-react-router\";\ndeclare module \"*.png\";\n"
  },
  {
    "path": "packages/elements/src/share/SharePanel.tsx",
    "content": "import * as React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport styled from \"styled-components\";\nimport { colors } from \"../colors\";\nimport { CloseXButton } from \"../buttons\";\nimport { mediaQueries } from \"../containers\";\n\nconst SharePanelInner = styled.div`\n  background-color: ${colors.basic.WHITE};\n  opacity: 0;\n  overflow: auto;\n  padding: 10px 0;\n  position: relative;\n  width: 360px;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    bottom: 0;\n    right: 0;\n    position: fixed;\n    width: 100%;\n  }\n`;\n\nconst SharePanelOuter = styled.div`\n  align-items: center;\n  background-color: rgba(0, 0, 0, 0.4);\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  left: 0;\n  position: fixed;\n  overflow: auto;\n  right: 0;\n  top: 74px;\n  z-index: 4;\n\n  &.share-enter > div {\n    opacity: 0;\n    transform: scale(0.9);\n  }\n  &.share-enter-active > div {\n    opacity: 1;\n    transform: translateX(0);\n    transition: opacity 300ms, transform 300ms;\n  }\n  &.share-enter-done > div {\n    opacity: 1;\n  }\n  &.share-exit > div {\n    opacity: 1;\n  }\n  &.share-exit-active > div {\n    opacity: 0;\n    transform: scale(0.9);\n    transition: opacity 300ms, transform 300ms;\n  }\n\n  ${mediaQueries.MOBILE} {\n    top: 54px;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    align-items: flex-end;\n\n    &.share-enter > div {\n      opacity: 1;\n      transform: translate(0, 100%) scale(1);\n    }\n    &.share-enter-active > div {\n      transform: translate(0);\n      transition: transform 300ms;\n    }\n    &.share-exit > div {\n      transform: translate(0);\n    }\n    &.share-exit-active > div {\n      opacity: 1;\n      transform: translate(0, 100%) scale(1);\n      transition: transform 300ms;\n    }\n  }\n`;\n\nconst SharePanelClose = styled.div`\n  position: absolute;\n  right: 20px;\n  top: 20px;\n`;\n\nexport interface SharePanelProps {\n  open: boolean;\n  handleClose?(): void;\n}\n\nexport const SharePanel: React.FunctionComponent<SharePanelProps> = props => {\n  return (\n    <CSSTransition in={props.open} timeout={300} classNames=\"share\" mountOnEnter unmountOnExit>\n      <SharePanelOuter>\n        <SharePanelInner>\n          {props.handleClose && (\n            <SharePanelClose>\n              <CloseXButton onClick={props.handleClose} />\n            </SharePanelClose>\n          )}\n          {props.children}\n        </SharePanelInner>\n      </SharePanelOuter>\n    </CSSTransition>\n  );\n};\n"
  },
  {
    "path": "packages/elements/src/share/ShareStory.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ShareEmailIcon, LinkIcon, ShareTwitterIcon, HollowGreenCheck } from \"../icons\";\nimport { colors } from \"../colors\";\nimport { fonts } from \"../text\";\nimport { mediaQueries } from \"../containers\";\n\nconst ShareWrapper = styled.div`\n  width: 360px;\n\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nconst ShareHeader = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 20px 15px;\n\n  h2 {\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 22px;\n    margin: 0 0 10px;\n  }\n`;\n\nconst ShareContent = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 20px;\n  margin: 0;\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    display: block;\n    overflow-wrap: break-word;\n    text-decoration: none;\n    word-wrap: break-word;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: underline;\n    }\n  }\n`;\n\nconst ShareOptions = styled.div`\n  padding: 0 15px 15px;\n\n  a,\n  button {\n    align-items: center;\n    background-color: ${colors.basic.WHITE};\n    border: none;\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    color: ${colors.primary.BLACK};\n    cursor: pointer;\n    display: flex;\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 14px;\n    justify-content: space-between;\n    line-height: 17px;\n    padding: 15px 0;\n    text-decoration: none;\n    transition: color 0.2s ease;\n    width: 100%;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nconst ShareCopyFeedback = styled.span`\n  align-items: center;\n  display: flex;\n  font-size: 13px;\n  margin-top: 5px;\n  width: 100%;\n\n  svg {\n    margin-right: 3px;\n  }\n`;\n\nexport interface ShareStoryProps {\n  title: string;\n  url: string;\n}\n\nexport interface ShareStoryState {\n  copied: boolean;\n}\n\nexport class ShareStory extends React.Component<ShareStoryProps, ShareStoryState> {\n  public constructor(props: ShareStoryProps) {\n    super(props);\n    this.state = {\n      copied: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ShareWrapper>\n        <ShareHeader>\n          <h2>Share</h2>\n          <ShareContent>\n            {this.props.title}\n            {this.state.copied ? (\n              <ShareCopyFeedback>\n                <HollowGreenCheck width={15} height={15} />\n                copied\n              </ShareCopyFeedback>\n            ) : (\n              <a href={this.props.url} target=\"_blank\">\n                {this.props.url}\n              </a>\n            )}\n          </ShareContent>\n        </ShareHeader>\n        <ShareOptions>\n          <a href={this.getTweetURL()}>\n            <>Share to Twitter</>\n            <ShareTwitterIcon />\n          </a>\n          <a href={this.getEmailURL()}>\n            <>Share via Email</>\n            <ShareEmailIcon />\n          </a>\n          {/* TODO(sruddy) add copy embed when embeds are ready\n          <a>\n            <>Embed Story Boost</>\n            <EmbedIcon />\n          </a>\n          */}\n          <button onClick={() => this.copyURL()}>\n            <>Copy Link</>\n            <LinkIcon />\n          </button>\n        </ShareOptions>\n      </ShareWrapper>\n    );\n  }\n\n  private getEmailURL = () => {\n    const emailShare = \"mailto:?subject=\" + encodeURI(this.props.title) + \"&body=\" + encodeURI(this.props.url);\n    return emailShare;\n  };\n\n  private getTweetURL = () => {\n    const twitterShare =\n      \"https://twitter.com/intent/tweet?text=\" + encodeURI(this.props.title) + \"&url=\" + this.props.url;\n    return twitterShare;\n  };\n\n  // @TODO This should ideally re-use `copyToClipboard` from `utils`, but `elements` shouldn't depend on `utils`. Either this should be in `components`, or should be in some new package that has fewer deps than `components` but more than `elements`, and/or we break out some stuff from `utils` because right now `utils` depends on everything too.\n  private copyURL = () => {\n    const textArea = document.createElement(\"textarea\");\n    textArea.innerText = this.props.url;\n    document.body.appendChild(textArea);\n    textArea.select();\n    document.execCommand(\"copy\");\n    textArea.remove();\n\n    this.setState({ copied: true });\n  };\n}\n"
  },
  {
    "path": "packages/elements/src/share/index.ts",
    "content": "export * from \"./ShareStory\";\nexport * from \"./SharePanel\";\n"
  },
  {
    "path": "packages/elements/src/text/fonts.ts",
    "content": "export const fonts = {\n  SERIF: `\"Spectral\", serif`,\n  SANS_SERIF: `\"Libre Franklin\", sans-serif`,\n  SANS_SERIF_BOLD: `\"LibreFranklin-Bold\", sans-serif`,\n  MONOSPACE: `\"SF Mono\", \"Segoe UI Mono\", \"Roboto Mono\", \"Ubuntu Mono\", Menlo, Courier, monospace;`,\n};\n"
  },
  {
    "path": "packages/elements/src/text/headings.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\n\nexport const Heading = styled.span`\n  display: block;\n  margin: 6px;\n  color: ${props => props.theme.headingColor};\n  font-family: ${props => props.theme.headingFont};\n  font-size: 18px;\n  font-weight: 500;\n  line-height: 26px;\n`;\n\nexport const SubHeading = styled.span`\n  display: block;\n  margin: 6px;\n  color: ${props => props.theme.subheadingColor};\n  font-family: ${props => props.theme.headingFont};\n  font-size: 14px;\n  font-weight: 500;\n  line-height: 24px;\n`;\n"
  },
  {
    "path": "packages/elements/src/text/index.ts",
    "content": "export * from \"./fonts\";\n"
  },
  {
    "path": "packages/elements/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declaration\": true,\n    \"declarationDir\": \"build/\",\n    \"jsx\": \"react\",\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"lib\": [\"dom\", \"es2017\"]\n  },\n  \"include\": [\"./src/**/*.ts\", \"./src/**/*.tsx\"]\n}\n"
  },
  {
    "path": "packages/elements/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"],\n    \"no-unused-variable\": [true, { \"ignore-pattern\": \"^React|styled|StyledComponentClass\" }]\n  }\n}\n"
  },
  {
    "path": "packages/ethapi/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/ethapi/README.md",
    "content": "# @joincivil/ethapi\n\nAn abstraction of Ethereum communication\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n"
  },
  {
    "path": "packages/ethapi/package.json",
    "content": "{\n  \"name\": \"@joincivil/ethapi\",\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"version\": \"0.4.9\",\n  \"description\": \"An abstraction of Ethereum communication\",\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"lint\": \"tslint --project ./\",\n    \"clean\": \"rimraf build/\"\n  },\n  \"author\": \"The Civil Media Company\",\n  \"license\": \"Apache-2.0\",\n  \"devDependencies\": {\n    \"@joincivil/typescript-types\": \"^1.4.8\",\n    \"@types/debug\": \"^0.0.30\",\n    \"@types/lodash\": \"^4.14.99\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/joincivil/Civil/issues\"\n  },\n  \"dependencies\": {\n    \"@joincivil/utils\": \"^1.9.9\",\n    \"bn.js\": \"4.11.6\",\n    \"debug\": \"^4.1.0\",\n    \"ethereumjs-abi\": \"^0.6.7\",\n    \"ethereumjs-util\": \"^5.2.0\",\n    \"lodash\": \"^4.17.10\",\n    \"rxjs\": \"^5.5.6\",\n    \"web3\": \"^1.2.4\",\n    \"web3-core\": \"^1.2.4\",\n    \"web3-core-helpers\": \"^1.2.4\",\n    \"web3-eth\": \"^1.2.4\",\n    \"web3-eth-abi\": \"^1.2.4\",\n    \"web3-eth-contract\": \"^1.2.4\",\n    \"web3-providers-http\": \"^1.2.4\",\n    \"web3-providers-ws\": \"^1.2.4\",\n    \"web3-utils\": \"^1.2.4\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/ethapi/src/abidecoder.ts",
    "content": "import { isUndefined } from \"lodash\";\n\nimport { AbiType, DecodedLogEntry } from \"@joincivil/typescript-types\";\n\nimport Web3 from \"web3\";\nimport { Log } from \"web3-core\";\nimport { AbiItem } from \"web3-utils\";\nimport { JsonRpcPayload } from \"web3-core-helpers\";\n\n// JsonRpcResponse is in the latest version of web3-core-helpers but not released yet\ntype JsonRpcResponse = any;\n\nconst stubProvider = {\n  send: (payload: JsonRpcPayload, callback: JsonRpcResponse) => ({}),\n  host: \"x\",\n  supportsSubscriptions: () => false,\n  sendBatch: async (methods: any, moduleInstance: any) => Promise.reject([]),\n  connected: false,\n  disconnect: () => true,\n};\n\nexport class AbiDecoder {\n  private savedABIs: any[] = [];\n  private methodIds: { [signatureHash: string]: AbiItem } = {};\n\n  constructor(abiArrays: any[][]) {\n    abiArrays.forEach(this.addABI.bind(this));\n  }\n\n  public tryToDecodeLogOrNoop<LogType extends DecodedLogEntry = DecodedLogEntry>(log: Log): LogType {\n    const methodId = log.topics[0];\n    const event = this.methodIds[methodId as string];\n\n    if (isUndefined(event)) {\n      // @ts-ignore\n      return log;\n    }\n    // @ts-ignore\n    const decoded = new Web3(stubProvider).eth.abi.decodeLog(event.inputs!, log.data, log.topics);\n    return ({\n      ...log,\n      event: event.name as any,\n      args: decoded,\n    } as any) as LogType;\n  }\n  private addABI(abiArray: AbiItem[]): void {\n    abiArray.forEach(abi => {\n      if (abi.type === AbiType.Event) {\n        const abiTypes = abi.inputs!.map(input => input.type);\n        const signature = `${abi.name}(${abiTypes.join(\",\")})`;\n        const signatureHash = new Web3(stubProvider).utils.sha3(signature);\n        this.methodIds[signatureHash] = abi;\n      }\n    });\n    this.savedABIs = this.savedABIs.concat(abiArray);\n  }\n}\n\n/*\nCopyright 2017 ZeroEx Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n"
  },
  {
    "path": "packages/ethapi/src/ethapi.ts",
    "content": "import { CivilErrors, delay, hashPersonalMessage } from \"@joincivil/utils\";\nimport Debug from \"debug\";\nimport { bufferToHex, fromRpcSig, fromUtf8, toBuffer } from \"ethereumjs-util\";\nimport { ReplaySubject, Observable } from \"rxjs\";\nimport {\n  ContractOptions,\n  BigNumber,\n  bigNumberify,\n  DecodedTransactionReceipt,\n  EthAddress,\n  EthSignedMessage,\n  TxHash,\n} from \"@joincivil/typescript-types\";\n\nimport { AbiDecoder } from \"./abidecoder\";\nimport { requireAccount } from \"./helpers\";\n\nimport Web3 from \"web3\";\nimport Contract from \"web3-eth-contract\";\nimport { Block } from \"web3-eth\";\nimport { Transaction, TransactionConfig, Log, TransactionReceipt, provider as Provider } from \"web3-core\";\nimport { AbiItem } from \"web3-utils\";\n\nconst debug = Debug(\"civil:ethapi\");\n\nexport const DEFAULT_HTTP_NODE = \"http://127.0.0.1:8545\";\nconst POLL_MILLISECONDS = 5000;\n\nexport class EthApi {\n  // Initialized for sure by the helper method setProvider used in constructor\n  private web3!: Web3;\n  private abiDecoder: AbiDecoder;\n  private accountObservable: ReplaySubject<EthAddress | undefined>;\n  private networkObservable: ReplaySubject<number>;\n\n  // TODO(ritave): Use abi decoding seperatly in just the generated smart-contracts\n  constructor(provider: Provider, abis: any[][]) {\n    this.currentProvider = provider;\n    this.abiDecoder = new AbiDecoder(abis);\n\n    this.accountObservable = new ReplaySubject<EthAddress | undefined>(1);\n\n    this.web3.eth\n      .getAccounts()\n      .then(accounts => {\n        const account = accounts && accounts.length > 0 ? accounts[0] : undefined;\n        this.web3.eth.defaultAccount = account!;\n        if (account) {\n          this.accountObservable.next(account);\n        }\n      })\n      .catch(err => {\n        console.error(\"error getting accounts\", err);\n      });\n\n    // @ts-ignore `on` exists for providers that support subscriptions\n    if (provider.on) {\n      // @ts-ignore `on` exists for providers that support subscriptions\n      provider.on(\"accountsChanged\", accounts => {\n        const account = accounts && accounts.length > 0 ? accounts[0] : undefined;\n        this.web3.eth.defaultAccount = account!;\n        if (account) {\n          this.accountObservable.next(account);\n        }\n      });\n    }\n\n    this.networkObservable = new ReplaySubject<number>(1);\n    this.web3.eth.net\n      .getId()\n      .then(network => {\n        this.networkObservable.next(network);\n      })\n      .catch(err => {\n        console.error(\"error getting network\", err);\n      });\n\n    // @ts-ignore `on` exists for providers that support subscriptions\n    if (provider.on) {\n      // @ts-ignore `on` exists for providers that support subscriptions\n      provider.on(\"networkChanged\", network => {\n        this.networkObservable.next(network);\n      });\n    }\n  }\n\n  public get currentProvider(): Provider {\n    return this.web3.currentProvider;\n  }\n\n  public set currentProvider(provider: Provider) {\n    // TODO(ritave): Cancel any pending calls to the previous provider\n    console.log(\"provider change\");\n    // @ts-ignore\n    this.web3 = new Web3(provider);\n  }\n\n  public get accountStream(): Observable<EthAddress | undefined> {\n    return this.accountObservable;\n  }\n\n  public get networkStream(): Observable<number> {\n    return this.networkObservable;\n  }\n\n  public async network(): Promise<number> {\n    const network = await this.networkObservable.first().toPromise();\n\n    return network;\n  }\n\n  public async getAccount(): Promise<string | null> {\n    return this.web3.eth.defaultAccount;\n  }\n\n  public async getGasPriceString(): Promise<string> {\n    // @ts-ignore @types/web3 are wrong - this really does return a string\n    // https://web3js.readthedocs.io/en/v1.2.1/web3-eth.html#getgasprice\n    return this.web3.eth.getGasPrice();\n  }\n\n  public async getGasPrice(): Promise<BigNumber> {\n    return this.getGasPriceString().then(gp => new BigNumber(gp));\n  }\n\n  public async getBlock(blockNumber: number | \"latest\" | \"pending\"): Promise<Block> {\n    return this.web3.eth.getBlock(blockNumber);\n  }\n\n  public async getLatestBlockNumber(): Promise<number> {\n    return this.web3.eth.getBlockNumber();\n  }\n\n  public async getConfirmations(startBlock: number): Promise<number> {\n    const block = await this.getLatestBlockNumber();\n    return block - startBlock;\n  }\n\n  public async getCode(address: EthAddress): Promise<string> {\n    return this.web3.eth.getCode(address);\n  }\n\n  public async sendTransaction(txData: TransactionConfig): Promise<TxHash> {\n    // TOOD(dankins): handle rejection\n    // tslint:disable-next-line:no-unbound-method\n    return new Promise((resolve, reject) => {\n      this.web3.eth\n        .sendTransaction(txData)\n        .once(\"transactionHash\", hash => {\n          resolve(hash);\n        })\n        .catch(reject);\n    });\n  }\n\n  public async getTransaction(txHash: TxHash): Promise<Transaction> {\n    return this.web3.eth.getTransaction(txHash);\n  }\n\n  public async signMessage(message: string, account?: EthAddress): Promise<EthSignedMessage> {\n    const messageHex = fromUtf8(message);\n\n    const signerAccount = account || (await requireAccount(this).toPromise());\n    // @ts-ignore types are wrong, password is not required\n    const signature = await this.web3.eth.personal.sign(messageHex, signerAccount);\n\n    const rsv = fromRpcSig(signature);\n\n    return {\n      ...hashPersonalMessage(message),\n      signature,\n\n      message,\n      r: bufferToHex(rsv.r),\n      s: bufferToHex(rsv.s),\n      v: bufferToHex(toBuffer(rsv.v)),\n      signer: signerAccount,\n    };\n  }\n\n  /**\n   * Converts an address to a web3 checksummed address\n   * @param address\n   */\n  public toChecksumAddress(address: string): string {\n    return this.web3.utils.toChecksumAddress(address);\n  }\n\n  /**\n   * Converts a given number into a BigNumber instance\n   * @param numberOrHexString\n   */\n  public toBigNumber(amount: number | string | BigNumber): any {\n    if (typeof amount === \"number\") {\n      return bigNumberify(amount);\n    } else if (amount instanceof BigNumber) {\n      return amount;\n    } else if (typeof amount === \"string\" && amount.startsWith(\"<sub>\")) {\n      console.log(\"found a weird bignumber:\", amount);\n      return bigNumberify(0);\n    }\n    return bigNumberify(amount);\n  }\n\n  public toWei(amount: number): BigNumber {\n    const wei = this.web3.utils.toWei(amount.toString());\n    return this.toBigNumber(wei);\n  }\n\n  public async accountBalace(account: EthAddress): Promise<number> {\n    const balance = await this.web3.eth.getBalance(account);\n    return parseFloat(this.web3.utils.fromWei(balance, \"ether\"));\n  }\n\n  /**\n   * Awaits to confirm that the transaction was succesfull\n   * @param txHash Transaction hash which will be checked\n   * @param blockConfirmations Blockchain can get reorganized and the transaction can go to mempool,\n   *                           wait for some for confirmations\n   */\n  public async awaitReceipt<R extends DecodedTransactionReceipt | TransactionReceipt = TransactionReceipt>(\n    txHash: TxHash,\n    blockConfirmations: number = 1, // wait till the api says the current block is confirmed\n  ): Promise<R> {\n    while (true) {\n      const receipt = await this.getReceipt<R>(txHash);\n      if (!receipt) {\n        // TODO(ritave): Move to pending block parsing instead of polling\n        await delay(POLL_MILLISECONDS);\n        continue;\n      }\n\n      this.checkForEvmException(receipt);\n      await this.awaitConfirmations(receipt.blockNumber, blockConfirmations);\n      return receipt;\n    }\n  }\n\n  public async awaitConfirmations(startblock: number, confirmations: number): Promise<void> {\n    while (true) {\n      const confirmationsSoFar = await this.getConfirmations(startblock);\n      if (confirmationsSoFar >= confirmations) {\n        return;\n      } else {\n        await delay(POLL_MILLISECONDS);\n      }\n    }\n  }\n\n  /**\n   * Low-level call,\n   * Tries to get the receipt from blockchain and automatically decodes it's logs\n   * into proper Events from our smart-contracts\n   * *Warning:* The transaction receipt can be returned even if the transaction has failed, check the `status` field\n   * @param txHash Transaction hash for which the receipt is returned\n   * @returns Null if the transaction is not yet inside the blockchain (still in mempool), decoded transaction otherwise\n   */\n  public async getReceipt<R extends DecodedTransactionReceipt | TransactionReceipt = TransactionReceipt>(\n    txHash: TxHash,\n  ): Promise<R | null> {\n    const receipt = await this.web3.eth.getTransactionReceipt(txHash);\n    if (receipt) {\n      return this.receiptToDecodedReceipt<R>(receipt);\n    }\n    return null;\n  }\n\n  public getContractClass(abi: AbiItem[], address?: string, options?: ContractOptions | undefined): typeof Contract {\n    const contract = new this.web3.eth.Contract(abi, address, options);\n\n    if (!contract.options.address) {\n      contract.options.address = address!;\n    }\n    return contract;\n  }\n\n  public async estimateGas(options: TransactionConfig): Promise<number> {\n    return this.web3.eth.estimateGas(options);\n  }\n\n  private receiptToDecodedReceipt<R extends DecodedTransactionReceipt<any> | TransactionReceipt>(\n    receipt: TransactionReceipt,\n  ): R {\n    receipt.logs = receipt.logs!.map((log: Log) => this.abiDecoder.tryToDecodeLogOrNoop(log));\n    return (receipt as any) as R;\n  }\n\n  private checkForEvmException(receipt: TransactionReceipt): void {\n    // tslint:disable-next-line\n    // https://ethereum.stackexchange.com/questions/28077/how-do-i-detect-a-failed-transaction-after-the-byzantium-fork-as-the-revert-opco/28078#28078\n    // Pre-Bizantium, let's just throw, Civil didn't exist before Bizantium\n    if (receipt.status === null) {\n      debug(\"Warning: Pre-Bizantium block, not supported\");\n      throw new Error(CivilErrors.EvmException);\n    }\n\n    if (receipt.status === false) {\n      throw new Error(CivilErrors.EvmException);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/ethapi/src/globals.d.ts",
    "content": "declare module \"web3/lib/solidity/coder\" {\n  const decodeParams: (types: string[], data: string) => any[];\n}\n\ndeclare module \"web3-eth-contract\";\n"
  },
  {
    "path": "packages/ethapi/src/helpers.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { CivilErrors, isDefined } from \"@joincivil/utils\";\nimport { Observable } from \"rxjs/Observable\";\nimport { EthApi } from \"./ethapi\";\n\nexport function requireAccount(ethApi: EthApi): Observable<EthAddress> {\n  return ethApi.accountStream.first().map(account => {\n    if (isDefined(account)) {\n      return account;\n    }\n    throw new Error(CivilErrors.NoUnlockedAccount);\n  });\n}\n\nexport function hasInjectedProvider(): boolean {\n  return typeof window !== \"undefined\" && (window as any).web3 !== undefined;\n}\n\nexport async function currentAccount(ethApi: EthApi): Promise<EthAddress | undefined> {\n  return ethApi.accountStream.first().toPromise();\n}\n\nexport async function currentNetwork(ethApi: EthApi): Promise<number> {\n  return ethApi.networkStream.first().toPromise();\n}\n\nexport enum EthereumUnits {\n  wei = \"1\",\n  kwei = \"1000\",\n  mwei = \"1000000\",\n  gwei = \"1000000000\",\n  microether = \"1000000000000\",\n  milliether = \"1000000000000000\",\n  ether = \"1000000000000000000\",\n  kether = \"1000000000000000000000\",\n  mether = \"1000000000000000000000000\",\n  gether = \"1000000000000000000000000000\",\n  tether = \"1000000000000000000000000000000\",\n\n  babbage = \"1000\",\n  lovelace = \"1000000\",\n  shannon = \"1000000000\",\n  szabo = \"1000000000000\",\n  finney = \"1000000000000000\",\n}\n"
  },
  {
    "path": "packages/ethapi/src/index.ts",
    "content": "export * from \"./ethapi\";\nexport * from \"./helpers\";\nexport * from \"./infura\";\n"
  },
  {
    "path": "packages/ethapi/src/infura.ts",
    "content": "export const INFURA_WEBSOCKET_HOSTS = {\n  MAINNET: \"wss://mainnet.infura.io/ws/v3\",\n  RINKEBY: \"wss://rinkeby.infura.io/ws/v3\",\n  ROPSTEN: \"wss://ropsten.infura.io/ws/v3\",\n};\n"
  },
  {
    "path": "packages/ethapi/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declarationDir\": \"build/\",\n    \"allowSyntheticDefaultImports\": true,\n    \"esModuleInterop\": true\n  },\n  \"include\": [\"./src/**/*.ts\"] // https://github.com/ReactiveX/rxjs/issues/3031\n}\n"
  },
  {
    "path": "packages/ethapi/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"]\n}\n"
  },
  {
    "path": "packages/kirby/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "packages/kirby/.releaserc",
    "content": "{\n  \"plugins\": [\n    [\n      \"@semantic-release/commit-analyzer\",\n      {\n        \"preset\": \"angular\",\n        \"releaseRules\": [\n          { \"type\": \"docs\", \"scope\": \"README\", \"release\": \"patch\" },\n          { \"type\": \"refactor\", \"release\": \"patch\" },\n          { \"type\": \"style\", \"release\": \"patch\" }\n        ],\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\"]\n        }\n      }\n    ],\n    [\n      \"@semantic-release/release-notes-generator\",\n      {\n        \"preset\": \"angular\",\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\", \"BREAKING\"]\n        },\n        \"writerOpts\": {\n          \"commitsSort\": [\"subject\", \"scope\"]\n        }\n      }\n    ]\n  ]\n}"
  },
  {
    "path": "packages/kirby/README.md",
    "content": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.<br>\nOpen [http://localhost:3000](http://localhost:3000) to view it in the browser.\n\nThe page will reload if you make edits.<br>\nYou will also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.<br>\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.<br>\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.<br>\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `npm run eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can’t go back!**\n\nIf you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.\n\nYou don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n"
  },
  {
    "path": "packages/kirby/package.json",
    "content": "{\n  \"name\": \"@joincivil/kirby\",\n  \"version\": \"0.1.0\",\n  \"private\": false,\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"dependencies\": {\n    \"@joincivil/elements\": \"^0.0.1\",\n    \"@kirby-web3/child-core\": \"^1.7.0\",\n    \"@kirby-web3/child-react\": \"^1.1.13\",\n    \"@kirby-web3/plugin-connext\": \"^1.1.13\",\n    \"@kirby-web3/plugin-ethereum\": \"^1.11.0\",\n    \"@types/jest\": \"24.0.15\",\n    \"@types/node\": \"12.6.8\",\n    \"@types/reach__router\": \"^1.2.4\",\n    \"@types/react\": \"16.8.23\",\n    \"@types/react-dom\": \"16.8.5\",\n    \"ethers\": \"^4.0.37\",\n    \"query-string\": \"^6.8.3\",\n    \"react\": \"^16.11.0\",\n    \"react-dom\": \"^16.11.0\",\n    \"react-redux\": \"^7.1.0\",\n    \"react-scripts\": \"3.1.1\",\n    \"redux\": \"^4.0.4\",\n    \"styled-components\": \"^4.3.2\"\n  },\n  \"devDependencies\": {\n    \"enzyme\": \"^3.10.0\",\n    \"enzyme-adapter-react-16\": \"^1.14.0\",\n    \"react-test-renderer\": \"^16.11.0\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"lint\": \"tslint --project ./\",\n    \"clean\": \"rimraf build/\"\n  },\n  \"eslintConfig\": {\n    \"extends\": \"react-app\"\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/kirby/src/KirbyApp.tsx",
    "content": "import React from \"react\";\nimport { KirbyChildProvider, overrideTheme } from \"@kirby-web3/child-react\";\nimport { EthereumChildPlugin, SignatureInterceptorPlugin, IDToNetwork } from \"@kirby-web3/plugin-ethereum\";\nimport { ConnextChildPlugin } from \"@kirby-web3/plugin-connext\";\n\nimport { Viewport } from \"./viewport/Viewport\";\nimport { createGlobalStyle } from \"styled-components\";\nimport { CivilIDPlugin } from \"./plugins/CivilID\";\n\nconst GlobalStyle = createGlobalStyle`\n.por_portis-widget-frame {\n  top: 0 !important;\n  bottom: auto !important;\n}\n @media (max-width: 576px)  {\n   .por_portis-widget-frame {\n     top: 0 !important;\n     bottom: auto !important;\n   }\n }\n`;\n\nconst theme = overrideTheme({\n  headingFont: \"Libre Franklin\",\n});\n\nexport interface KirbyAppProps {\n  config: {\n    INFURA_APP_KEY: string;\n    PORTIS_APP_ID: string;\n    DEFAULT_ETHEREUM_NETWORK: string;\n  };\n}\nconst KirbyApp: React.FunctionComponent<KirbyAppProps> = ({ config }) => {\n  console.log(\"loading kirby with config\", config);\n  const plugins = React.useMemo(() => {\n    return [\n      new CivilIDPlugin(),\n      new ConnextChildPlugin({\n        ethProviderUrl: \"https://rinkeby.infura.io/v3/\" + config.INFURA_APP_KEY,\n        nodeUrl: \"wss://rinkeby.indra.connext.network/api/messaging\",\n      }),\n      new SignatureInterceptorPlugin({ autoSign: false }),\n      new EthereumChildPlugin({\n        burnerPreference: \"never\",\n        networks: {\n          mainnet: \"wss://mainnet.infura.io/ws/v3/\" + config.INFURA_APP_KEY,\n          rinkeby: \"wss://rinkeby.infura.io/ws/v3/\" + config.INFURA_APP_KEY,\n        },\n        defaultNetwork: IDToNetwork[parseInt(config.DEFAULT_ETHEREUM_NETWORK, 10)],\n        portis: {\n          appID: config.PORTIS_APP_ID,\n        },\n      }),\n    ];\n  }, [config]);\n\n  return (\n    <KirbyChildProvider plugins={plugins} theme={theme}>\n      <GlobalStyle></GlobalStyle>\n      <Viewport />\n    </KirbyChildProvider>\n  );\n};\n\nexport default KirbyApp;\n"
  },
  {
    "path": "packages/kirby/src/common/colors.ts",
    "content": "export enum colors {\n  pink = \"#ff4081\",\n  purple = \"#aa66cc\",\n  orange = \"#ffbb33\",\n  lightBlue = \"#ff4444\",\n  blue = \"#0d47a1\",\n  green = \"#00C851\",\n  red = \"#ff4444\",\n}\n"
  },
  {
    "path": "packages/kirby/src/common/containers/layouts.tsx",
    "content": "import styled from \"styled-components\";\n\nexport const PageLayout = styled.div`\n  background-color: #ffffff;\n  border-radius: 4px 4px 4px;\n  box-shadow: 0 2px 8px 0 rgba(128, 128, 128, 0.5);\n  width: 375px;\n  height: 500px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 5px;\n`;\n\nexport const CenteredPage = styled(PageLayout)`\n  flex-direction: row;\n  align-items: center;\n  padding: 5px;\n`;\n\nexport const SwitchAuthTypeDiv = styled.div`\n  margin-top: 10px;\n  margin-bottom: 10px;\n  margin-left: 10px;\n`;\n\nexport const WaitingForConnectionDiv = styled.div`\n  display: flex;\n  height: 300px;\n  flex-direction: column;\n  align-items: center;\n  justify-content: space-around;\n`;\n"
  },
  {
    "path": "packages/kirby/src/common/input/WalletOptions.tsx",
    "content": "import * as React from \"react\";\n\nimport { RadioGroup, RadioCardInput, MetaMask, Portis } from \"@joincivil/elements\";\nimport { ProviderTypes } from \"@kirby-web3/plugin-ethereum\";\n\nexport interface WalletOptionsProps {\n  optionPrefix?: string;\n  onChange(selection: ProviderTypes): void;\n}\n\nexport const WalletOptions: React.FunctionComponent<WalletOptionsProps> = ({ optionPrefix, onChange }) => {\n  const hasInjectedWeb3 = (window as any).ethereum;\n  const metaMaskSubheading = hasInjectedWeb3\n    ? \"Your browser has Web3 built-in! Click here to use your built-in Web3 wallet.\"\n    : \"To use this option, you can install the MetaMask extension, or use another Web3 browser.\";\n\n  const prefix = optionPrefix ? optionPrefix + \" \" : \"\";\n\n  return (\n    <RadioGroup name=\"WalletOptions\" onChange={(_: string, provider: ProviderTypes) => onChange(provider)}>\n      <RadioCardInput\n        image={<MetaMask />}\n        value={ProviderTypes.METAMASK}\n        heading={prefix + \"MetaMask\"}\n        subheading={metaMaskSubheading}\n        disabled={!hasInjectedWeb3}\n        prioritized={hasInjectedWeb3}\n      />\n      <RadioCardInput\n        image={<Portis />}\n        value={ProviderTypes.PORTIS}\n        heading={prefix + \"Portis\"}\n        subheading=\"Web3 Wallet that does not require any downloads\"\n      />\n    </RadioGroup>\n  );\n};\n"
  },
  {
    "path": "packages/kirby/src/common/text/index.tsx",
    "content": "import styled from \"styled-components\";\nimport { colors } from \"../colors\";\n\nexport interface FocusWordProps {\n  color: colors;\n}\nexport const FocusWord = styled.span<FocusWordProps>`\n  padding: 10px;\n  color: ${(props: FocusWordProps) => props.color};\n`;\n\nexport const CenteredTextBlock = styled.div`\n  margin-top: 20px;\n  text-align: center;\n  font-size: 28px;\n`;\n\nexport const Notice = styled.div`\n  background-color: ${colors.lightBlue};\n  font-size: 13px;\n  width: 95%;\n  margin: 10px 0;\n  padding: 5px 10px;\n`;\n\n// Otherwise no href means no pointer.\nexport const PointerAnchor = styled.a`\n  cursor: pointer;\n`;\n"
  },
  {
    "path": "packages/kirby/src/index.tsx",
    "content": "import KirbyApp from \"./KirbyApp\";\n\nexport default KirbyApp;\n\nexport { KirbyApp };\n"
  },
  {
    "path": "packages/kirby/src/plugins/CivilID.ts",
    "content": "import { Action, MiddlewareAPI, Dispatch } from \"redux\";\nimport { ChildPlugin, PARENT_REQUEST, ParentHandler, ViewPlugin } from \"@kirby-web3/child-core\";\nimport { EthereumChildPlugin } from \"@kirby-web3/plugin-ethereum\";\nimport * as ethers from \"ethers\";\n\nimport { IDENTITY_LOGIN_REQUEST, IDENTITY_LOGIN_RESPONSE, IDENTITY_SIGNUP_REQUEST, LoginResponse } from \"./common\";\n\n// action types\n// state\nexport interface ChildPluginState {\n  pendingLoginRequest?: {\n    requestID: number;\n    message: string;\n    domain: string;\n  };\n  pendingSignupRequest?: {\n    requestID: number;\n    message: string;\n    domain: string;\n  };\n}\n\n// actions\nexport interface IdentityLoginResponseAction {\n  type: typeof IDENTITY_LOGIN_RESPONSE;\n  payload: LoginResponse;\n}\n\n// action union type\nexport type ChildPluginActions = IdentityLoginResponseAction;\n\nexport interface ChildDependencies {\n  ethereum: EthereumChildPlugin;\n  iframe: ParentHandler;\n}\n\nexport class CivilIDPlugin extends ChildPlugin<any, ChildDependencies, ChildPluginActions> {\n  public name = \"civilid\";\n  public dependsOn = [\"view\", \"ethereum\", \"iframe\"];\n  public channel?: any;\n\n  public middleware = (api: MiddlewareAPI<any>) => (next: Dispatch<any>) => <A extends Action>(action: any): void => {\n    if (action.type === PARENT_REQUEST) {\n      switch (action.data.type) {\n        case IDENTITY_LOGIN_REQUEST:\n          (this.dependencies.view as ViewPlugin).requestView(\"/identity/login\");\n          next(action);\n          break;\n        case IDENTITY_SIGNUP_REQUEST:\n          (this.dependencies.view as ViewPlugin).requestView(\"/identity/signup\");\n          next(action);\n          break;\n        default:\n          next(action);\n      }\n    } else {\n      next(action);\n    }\n  };\n\n  public reducer(state: ChildPluginState = {}, action: any): any {\n    if (action.type === PARENT_REQUEST && action.data.type === IDENTITY_LOGIN_REQUEST) {\n      return {\n        ...state,\n        pendingLoginRequest: this.buildSignatureRequest(action.requestID, this.dependencies.iframe.parentDomain),\n      };\n    } else if (action.type === PARENT_REQUEST && action.data.type === IDENTITY_SIGNUP_REQUEST) {\n      return {\n        ...state,\n        pendingSignupRequest: this.buildSignatureRequest(action.requestID, this.dependencies.iframe.parentDomain),\n      };\n    }\n    return state;\n  }\n\n  public async startup(): Promise<void> {\n    this.logger(\"starting up\");\n  }\n\n  public buildSignatureRequest(requestID: string, domain: string): any {\n    const message = `Authenticate to ${domain} @ ${new Date().toISOString()}`;\n    return {\n      message,\n      requestID,\n      domain,\n    };\n  }\n\n  public sendLoginResponse(signer: string, signature: string): void {\n    const state = this.getState().civilid as ChildPluginState;\n    const { requestID, domain, ...request } = state.pendingLoginRequest!;\n    const response = { signer, signature, ...request };\n    this.dependencies.iframe.respond(requestID, response);\n  }\n  public cancelLogin(reason?: any): void {\n    const state = this.getState().civilid as ChildPluginState;\n    const { requestID } = state.pendingLoginRequest!;\n    this.dependencies.iframe.reject(requestID, reason || \"cancelled\");\n  }\n\n  public sendSignupResponse(signer: string, signature: string): void {\n    const state = this.getState().civilid as ChildPluginState;\n    const { requestID, domain, ...request } = state.pendingSignupRequest!;\n    const response = { signer, signature, ...request };\n    this.dependencies.iframe.respond(requestID, response);\n  }\n  public cancelSignup(reason?: any): void {\n    const state = this.getState().civilid as ChildPluginState;\n    const { requestID } = state.pendingSignupRequest!;\n    this.dependencies.iframe.reject(requestID, reason || \"cancelled\");\n  }\n\n  public generateWallet(mnemonic: string): void {\n    const walletPath = \"m/44'/60'/0'/0/0\";\n\n    const hdnode = ethers.utils.HDNode.fromMnemonic(mnemonic);\n    const node = hdnode.derivePath(walletPath);\n\n    console.log(\"node\", node.derivePath(\"1\"));\n    console.log(\"node1\", node.derivePath(\"2\"));\n    console.log(\"node2\", node.derivePath(\"3\"));\n    console.log(\"node3\", node.derivePath(\"4\"));\n  }\n}\n"
  },
  {
    "path": "packages/kirby/src/plugins/common.ts",
    "content": "export const IDENTITY_LOGIN_REQUEST = \"IDENTITY_LOGIN_REQUEST\";\nexport const IDENTITY_LOGIN_RESPONSE = \"IDENTITY_LOGIN_RESPONSE\";\nexport const IDENTITY_SIGNUP_REQUEST = \"IDENTITY_SIGNUP_REQUEST\";\n\nexport interface LoginRequest {\n  service: string;\n}\nexport interface SignupRequest {\n  service: string;\n}\n\nexport interface LoginResponse {\n  did: string;\n}\n"
  },
  {
    "path": "packages/kirby/src/viewport/Viewport.tsx",
    "content": "import * as React from \"react\";\nimport { useSelector as useKirbySelector } from \"@kirby-web3/child-react\";\n\nimport { Web3Enable } from \"../views/Web3Enable\";\nimport { SignatureConfirm } from \"../views/SignatureConfirm\";\nimport { Login } from \"../views/identity/Login\";\nimport { Signup } from \"../views/identity/Signup\";\n\nexport const Viewport: React.FC = () => {\n  const view = useKirbySelector((state: any) => state.view.queue);\n\n  if (view.length === 0) {\n    return <div>empty queue</div>;\n  } else {\n    switch (view[0].route) {\n      case \"/identity/login\":\n        return <Login />;\n      case \"/identity/signup\":\n        return <Signup />;\n      case \"/ethereum/confirm-signature\":\n        return <SignatureConfirm />;\n      case \"/ethereum/web3enable\":\n        return <Web3Enable />;\n      default:\n        // @ts-ignore\n        return <div>error determining view</div>;\n    }\n  }\n};\n"
  },
  {
    "path": "packages/kirby/src/views/SignatureConfirm.tsx",
    "content": "import * as React from \"react\";\nimport { CoreContext, useSelector as useKirbySelector, CenteredPage } from \"@kirby-web3/child-react\";\nimport { SignatureInterceptorPlugin, ProviderTypes } from \"@kirby-web3/plugin-ethereum\";\n\nexport const SignatureConfirm: React.FunctionComponent = () => {\n  // context\n  const ctx = React.useContext(CoreContext);\n  const sig = ctx.core.plugins.signatureInterceptor as SignatureInterceptorPlugin;\n\n  // state\n  const [isPending, setPending] = React.useState(false);\n\n  // kirby selectors\n  const providerType = useKirbySelector((state: any) => state.ethereum.providerType);\n  const plaintext = useKirbySelector((state: any) => {\n    if (state.signatureInterceptor.requests && state.signatureInterceptor.requests[0]) {\n      return state.signatureInterceptor.requests[0].plaintext;\n    }\n  });\n\n  // memos\n  React.useMemo(() => {\n    // these providers will prompt the user through their own UI\n    if ([ProviderTypes.METAMASK, ProviderTypes.PORTIS].indexOf(providerType) > -1) {\n      sig.approveAction();\n      setPending(true);\n    }\n  }, []);\n\n  if (isPending) {\n    return <></>;\n  }\n\n  return (\n    <CenteredPage>\n      <small>signature requested:</small>\n      <div>{plaintext}</div>\n      <div>\n        <button onClick={() => sig.approveAction()}>approve</button>\n        <button onClick={() => sig.rejectAction()}>reject</button>\n      </div>\n    </CenteredPage>\n  );\n};\n"
  },
  {
    "path": "packages/kirby/src/views/Web3Enable.tsx",
    "content": "import * as React from \"react\";\n\nimport { CoreContext, useSelector, CenteredPage } from \"@kirby-web3/child-react\";\nimport { EthereumChildPlugin } from \"@kirby-web3/plugin-ethereum\";\nimport { ViewPlugin } from \"@kirby-web3/child-core\";\nimport { ClipLoader } from \"@joincivil/elements\";\nimport { WalletOptions } from \"../common/input/WalletOptions\";\nimport { SwitchAuthTypeDiv } from \"../common/containers/layouts\";\n\nconst WAITING_FOR_CONNECTION = \"Waiting for Web3 Wallet Connection...\";\n\nexport const Web3Enable: React.FC = () => {\n  const ctx = React.useContext(CoreContext);\n  const [status, setStatus] = React.useState(\"provided\");\n  const ethPlugin = ctx.core.plugins.ethereum as EthereumChildPlugin;\n\n  const viewData = useSelector((state: any) => {\n    if (state.view && state.view.queue && state.view.queue[0]) {\n      return state.view.queue[0].data;\n    }\n  });\n\n  React.useEffect(() => {\n    if (viewData.requestID) {\n      if (viewData.providerPreference) {\n        selection(viewData.providerPreference as string, true).catch(err => console.log(\"error with selection\", err));\n      } else {\n        setStatus(\"select\");\n      }\n    }\n  }, [viewData]);\n\n  async function selection(provider: string, providerKnown: boolean = false): Promise<void> {\n    console.log(\"selected:\", provider, viewData.requestID, viewData.network);\n    try {\n      if (providerKnown) {\n        setStatus(\"enabling known provider\");\n      } else {\n        setStatus(\"enabling provider\");\n      }\n      await ethPlugin.enableWeb3(viewData.requestID, provider, viewData.network as any);\n      setStatus(\"done\");\n\n      (ctx.core.plugins.view as ViewPlugin).completeView();\n    } catch (err) {\n      console.log(\"error with enableWeb3: \", err);\n      (ctx.core.plugins.view as ViewPlugin).completeView();\n    }\n  }\n\n  if (status === \"provided\") {\n    return <></>;\n  } else if (status === \"enabling known provider\") {\n    return <></>;\n  } else if (status === \"enabling provider\") {\n    return (\n      <CenteredPage>\n        <ClipLoader />\n        <span>{WAITING_FOR_CONNECTION}</span>\n      </CenteredPage>\n    );\n  }\n\n  return (\n    <CenteredPage>\n      <strong>Enable your web3 wallet</strong>\n      <WalletOptions onChange={selection} />\n      <SwitchAuthTypeDiv>\n        Don't want to connect a Web3 wallet at this time?{\" \"}\n        <a\n          onClick={() => {\n            ethPlugin.cancelEnableWeb3(viewData.requestID);\n            (ctx.core.plugins.view as ViewPlugin).completeView();\n          }}\n        >\n          Close\n        </a>\n      </SwitchAuthTypeDiv>\n    </CenteredPage>\n  );\n};\n"
  },
  {
    "path": "packages/kirby/src/views/identity/Login.tsx",
    "content": "import * as React from \"react\";\nimport { CoreContext, useSelector as useKirbySelector, CenteredPage } from \"@kirby-web3/child-react\";\n\nimport { ClipLoader } from \"@joincivil/elements\";\n\nimport { Notice, PointerAnchor } from \"../../common/text\";\nimport { EthereumChildPlugin } from \"@kirby-web3/plugin-ethereum\";\nimport { CivilIDPlugin } from \"../../plugins/CivilID\";\nimport { ViewPlugin } from \"@kirby-web3/child-core\";\nimport { WaitingForConnectionDiv, SwitchAuthTypeDiv } from \"../../common/containers/layouts\";\nimport { WalletOptions } from \"../../common/input/WalletOptions\";\n\nconst CIVIL_DOMAINS = [\n  \"http://localhost:3000\",\n  \"https://staging.civil.app\",\n  \"https://test.civil.app\",\n  \"https://registry.civil.co\",\n  \"https://civil.co\",\n];\n\nconst WAITING_FOR_CONNECTION = \"Waiting for Web3 Wallet Connection...\";\nconst WAITING_FOR_SIGNATURE = \"Waiting for Signature...\";\n\nexport const Login: React.FunctionComponent = () => {\n  const ctx = React.useContext(CoreContext);\n  const identityPlugin = ctx.core.plugins.civilid as CivilIDPlugin;\n  const parentDomain = useKirbySelector((state: any) => state.iframe.parentDomain);\n  const ready = useKirbySelector((state: any) => state.civilid.pendingLoginRequest);\n  const service = useKirbySelector((state: any) => ready && state.civilid.pendingLoginRequest.service);\n  const isCivil = service === \"Civil\" && CIVIL_DOMAINS.indexOf(parentDomain) > -1;\n  const [hideSelections, setHideSelections] = React.useState(false);\n  const [selectionProcess, setSelectionProcess] = React.useState(\"none\");\n\n  React.useEffect(() => {\n    (ctx.core.plugins.view as ViewPlugin).onParentClick(() => {\n      identityPlugin.cancelLogin();\n      (ctx.core.plugins.view as ViewPlugin).completeView();\n    });\n  }, [ctx.core.plugins.view, identityPlugin]);\n\n  async function selection(provider: string): Promise<void> {\n    setHideSelections(true);\n    setSelectionProcess(WAITING_FOR_CONNECTION);\n    const network = ctx.core.plugins.ethereum.config.defaultNetwork;\n    const ethPlugin = ctx.core.plugins.ethereum as EthereumChildPlugin;\n    const request = ctx.store.getState().civilid.pendingLoginRequest;\n\n    await ethPlugin.changeProvider(provider, network as any);\n    const accounts = await (ethPlugin.web3 as any).eth.getAccounts();\n    const signer = accounts[0];\n\n    try {\n      setSelectionProcess(WAITING_FOR_SIGNATURE);\n      const signature = await (ethPlugin.web3 as any).eth.personal.sign(request.message, signer);\n      identityPlugin.sendLoginResponse(signer, signature);\n    } catch (err) {\n      console.error(\"error with signature\");\n      identityPlugin.cancelLogin(err);\n    }\n\n    (ctx.core.plugins.view as ViewPlugin).completeView();\n  }\n\n  return (\n    <CenteredPage>\n      {isCivil ? null : (\n        <Notice>\n          <b>{parentDomain}</b> is requesting to log in.\n        </Notice>\n      )}\n\n      {hideSelections && (\n        <WaitingForConnectionDiv>\n          <ClipLoader size={100} />\n          <>{selectionProcess}</>\n        </WaitingForConnectionDiv>\n      )}\n      {!hideSelections && (\n        <>\n          <WalletOptions optionPrefix=\"Log in with \" onChange={selection} />\n          <SwitchAuthTypeDiv>\n            Not a Civil member?{\" \"}\n            <PointerAnchor\n              onClick={() => {\n                identityPlugin.cancelLogin(\"switch to sign up\");\n                (ctx.core.plugins.view as ViewPlugin).completeView();\n              }}\n            >\n              Sign up to join\n            </PointerAnchor>\n          </SwitchAuthTypeDiv>\n        </>\n      )}\n    </CenteredPage>\n  );\n};\n"
  },
  {
    "path": "packages/kirby/src/views/identity/Signup.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { CoreContext, useSelector as useKirbySelector, CenteredPage } from \"@kirby-web3/child-react\";\nimport { EthereumChildPlugin } from \"@kirby-web3/plugin-ethereum\";\nimport { ViewPlugin } from \"@kirby-web3/child-core\";\nimport { ClipLoader } from \"@joincivil/elements\";\nimport { Notice } from \"../../common/text\";\nimport { CivilIDPlugin } from \"../../plugins/CivilID\";\nimport { SwitchAuthTypeDiv, WaitingForConnectionDiv } from \"../../common/containers/layouts\";\nimport { WalletOptions } from \"../../common/input/WalletOptions\";\n\nconst CIVIL_DOMAINS = [\n  \"http://localhost:3000\",\n  \"https://staging.civil.app\",\n  \"https://test.civil.app\",\n  \"https://registry.civil.co\",\n  \"https://civil.co\",\n];\n\nconst WAITING_FOR_CONNECTION = \"Waiting for Web3 Wallet Connection...\";\nconst WAITING_FOR_SIGNATURE = \"Waiting for Signature...\";\n\nconst SignupFooter = styled.div`\n  border-top: 1px solid #d8d8d8;\n  margin-top: 40px;\n  padding-top: 20px;\n  text-align: center;\n  font-size: 15px;\n`;\n\nexport const Signup: React.FunctionComponent = () => {\n  const ctx = React.useContext(CoreContext);\n  const identityPlugin = ctx.core.plugins.civilid as CivilIDPlugin;\n  const parentDomain = useKirbySelector((state: any) => state.iframe.parentDomain);\n  const ready = useKirbySelector((state: any) => state.civilid.pendingSignupRequest);\n  const service = useKirbySelector((state: any) => ready && state.civilid.pendingSignupRequest.service);\n  const isCivil = service === \"Civil\" && CIVIL_DOMAINS.indexOf(parentDomain) > -1;\n  const [hideSelections, setHideSelections] = React.useState(false);\n  const [selectionProcess, setSelectionProcess] = React.useState(\"none\");\n\n  React.useEffect(() => {\n    (ctx.core.plugins.view as ViewPlugin).onParentClick(() => {\n      identityPlugin.cancelSignup();\n      (ctx.core.plugins.view as ViewPlugin).completeView();\n    });\n  }, [ctx.core.plugins.view, identityPlugin]);\n\n  async function selection(provider: string): Promise<void> {\n    setHideSelections(true);\n    setSelectionProcess(WAITING_FOR_CONNECTION);\n    const network = ctx.core.plugins.ethereum.config.defaultNetwork;\n    const ethPlugin = ctx.core.plugins.ethereum as EthereumChildPlugin;\n    const request = ctx.store.getState().civilid.pendingSignupRequest;\n\n    await ethPlugin.changeProvider(provider, network as any);\n    const accounts = await (ethPlugin.web3 as any).eth.getAccounts();\n    const signer = accounts[0];\n\n    console.log(\"preparing to sign:\", signer, request);\n    try {\n      setSelectionProcess(WAITING_FOR_SIGNATURE);\n      const signature = await (ethPlugin.web3 as any).eth.personal.sign(request.message, signer);\n      identityPlugin.sendSignupResponse(signer, signature);\n      setHideSelections(false);\n    } catch (err) {\n      console.error(\"error with signature\");\n      identityPlugin.cancelSignup();\n      setHideSelections(false);\n    }\n    (ctx.core.plugins.view as ViewPlugin).completeView();\n  }\n\n  return (\n    <CenteredPage>\n      {isCivil ? null : (\n        <Notice>\n          <b>{parentDomain}</b> would like you to sign up to their service.\n        </Notice>\n      )}\n\n      {hideSelections && (\n        <WaitingForConnectionDiv>\n          <ClipLoader size={100} />\n          <>{selectionProcess}</>\n        </WaitingForConnectionDiv>\n      )}\n      {!hideSelections && (\n        <>\n          <WalletOptions optionPrefix=\"Sign up with\" onChange={selection} />\n\n          <SwitchAuthTypeDiv>\n            Already a Civil member?{\" \"}\n            <a\n              onClick={() => {\n                identityPlugin.cancelSignup(\"switch to log in\");\n                (ctx.core.plugins.view as ViewPlugin).completeView();\n              }}\n            >\n              Click to Log In\n            </a>\n          </SwitchAuthTypeDiv>\n\n          {isCivil ? renderTerms() : null}\n        </>\n      )}\n    </CenteredPage>\n  );\n\n  function renderTerms(): JSX.Element {\n    return (\n      <SignupFooter>\n        By signing up, you accept Civil's\n        <a href=\"https://learn.civil.co/terms\" target=\"_blank\">\n          Terms of Use\n        </a>{\" \"}\n        and{\" \"}\n        <a href=\"https://learn.civil.co/privacy-policy\" target=\"_blank\">\n          Privacy Policy\n        </a>\n        .\n      </SignupFooter>\n    );\n  }\n};\n"
  },
  {
    "path": "packages/kirby/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declaration\": true,\n    \"declarationDir\": \"build/\",\n    \"jsx\": \"react\",\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"lib\": [\"dom\", \"es2017\"]\n  },\n  \"include\": [\"./src/**/*.ts\", \"./src/**/*.tsx\"]\n}\n"
  },
  {
    "path": "packages/kirby/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"]\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-manager/package.json",
    "content": "{\n  \"name\": \"@joincivil/newsroom-manager\",\n  \"version\": \"1.8.11\",\n  \"description\": \"ui for managing a newsroom contract\",\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"repository\": \"https://github.com/joincivil/Civil\",\n  \"license\": \"MIT\",\n  \"private\": false,\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"lint\": \"tslint --project ./\",\n    \"clean\": \"rimraf build/\",\n    \"prepublish\": \"run-s build\",\n    \"test\": \"echo \\\"add tests please\\\"\"\n  },\n  \"dependencies\": {\n    \"@joincivil/components\": \"^1.9.10\",\n    \"@joincivil/core\": \"^4.8.11\",\n    \"@joincivil/ethapi\": \"^0.4.9\",\n    \"@joincivil/utils\": \"^1.9.9\",\n    \"@types/react\": \"^16.8.10\",\n    \"@types/styled-components\": \"^4.1.18\",\n    \"ethereumjs-util\": \"^5.2.0\",\n    \"ipfs-api\": \"^26.1.2\",\n    \"lodash\": \"^4.17.10\"\n  },\n  \"devDependencies\": {\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@types/redux-thunk\": \"^2.1.0\",\n    \"immutable\": \"^3.8.2\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"react\": \"^16.11.0\",\n    \"react-dom\": \"^16.11.0\",\n    \"react-redux\": \"^7.1.1\",\n    \"redux\": \"^4.0.0\",\n    \"rimraf\": \"^2.6.2\",\n    \"styled-components\": \"^5.0.0-beta.8\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"peerDependencies\": {\n    \"react\": \"^16.8\",\n    \"react-dom\": \"^16.8\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-manager/src/ApplyToTCR.tsx",
    "content": "import * as React from \"react\";\nimport { StepHeader, StepFormSection, TransactionButton } from \"@joincivil/components\";\nimport styled from \"styled-components\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { connect } from \"react-redux\";\nimport { CivilContext, CivilContextValue } from \"./CivilContext\";\n\nexport interface ApplyToTCRProps {\n  address?: EthAddress;\n  newsroom?: any;\n}\n\nconst FormSectionInner = styled(\"div\")`\n  padding: 46px;\n  background-color: #fffef6;\n  opacity: 0.8;\n  margin: 16px -38px;\n`;\n\nexport class ApplyToTCRComponent extends React.Component<ApplyToTCRProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <StepHeader>Apply to the Civil Registry</StepHeader>\n        <StepFormSection>\n          <FormSectionInner>\n            <CivilContext.Consumer>\n              {(value: CivilContextValue) => {\n                return (\n                  <>\n                    <TransactionButton\n                      transactions={[\n                        {\n                          transaction: async () => {\n                            const multisigAddr = await this.props.newsroom.getMultisigAddress();\n                            const tcr = await value.civil!.tcrSingletonTrusted();\n                            const parameterizer = await tcr.getParameterizer();\n                            const minDeposit = await parameterizer.getParameterValue(\"minDeposit\");\n                            const token = await tcr.getToken();\n                            return token.transfer(multisigAddr, minDeposit);\n                          },\n                        },\n                      ]}\n                    >\n                      Send CVL to Multisig\n                    </TransactionButton>\n                    <TransactionButton\n                      transactions={[\n                        {\n                          transaction: async () => {\n                            const multisigAddr = await this.props.newsroom.getMultisigAddress();\n                            const tcr = await value.civil!.tcrSingletonTrustedMultisigSupport(multisigAddr);\n                            const parameterizer = await tcr.getParameterizer();\n                            const minDeposit = await parameterizer.getParameterValue(\"minDeposit\");\n                            const token = await tcr.getToken();\n                            const approvedTokens = await token.getApprovedTokensForSpender(tcr.address, multisigAddr);\n                            if (approvedTokens.lt(minDeposit)) {\n                              return token.approveSpender(tcr.address, minDeposit);\n                            }\n                            return;\n                          },\n                        },\n                        {\n                          transaction: async () => {\n                            const multisigAddr = await this.props.newsroom.getMultisigAddress();\n                            const tcr = await value.civil!.tcrSingletonTrustedMultisigSupport(multisigAddr);\n                            const parameterizer = await tcr.getParameterizer();\n                            const deposit = await parameterizer.getParameterValue(\"minDeposit\");\n                            return tcr.apply(this.props.address!, deposit, \"\");\n                          },\n                        },\n                      ]}\n                    >\n                      Apply to TCR\n                    </TransactionButton>\n                  </>\n                );\n              }}\n            </CivilContext.Consumer>\n          </FormSectionInner>\n        </StepFormSection>\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (state: any, ownProps: ApplyToTCRProps): ApplyToTCRProps => {\n  const newsroom = state.newsrooms.get(ownProps.address);\n\n  return {\n    ...ownProps,\n    newsroom: newsroom ? newsroom.newsroom : null,\n  };\n};\n\nexport const ApplyToTCR = connect(mapStateToProps)(ApplyToTCRComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/ApplyToTCRPlaceholder.tsx",
    "content": "import * as React from \"react\";\nimport { StepHeader, StepFormSection, BorderlessButton, WaitForApply, buttonSizes } from \"@joincivil/components\";\nimport styled from \"styled-components\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { connect } from \"react-redux\";\n\nexport interface ApplyToTCRProps {\n  address?: EthAddress;\n  newsroom?: any;\n}\n\nconst FormSectionInner = styled(\"div\")`\n  padding: 46px;\n  background-color: #fffef6;\n  opacity: 0.8;\n  margin: 16px -38px;\n`;\n\nconst LearnMoreButton = styled(BorderlessButton)`\n  margin-left: 0;\n  padding-left: 0;\n`;\n\nconst P = styled(\"p\")`\n  font-size: 14px;\n`;\n\nconst H = styled(\"h4\")`\n  color: #000;\n  margin-bottom: 0;\n`;\n\nexport class ApplyToTCRComponent extends React.Component<ApplyToTCRProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <StepHeader>Apply to the Civil Registry</StepHeader>\n        <StepFormSection>\n          <FormSectionInner>\n            <WaitForApply />\n            <P>\n              Your current newsroom application is saved. Thank you for filling out your newsroom application. We are\n              launching the Civil Registry soon and you will need to come back to complete your newsroom application\n              once that happens.\n            </P>\n            <P>You are able to edit your application at any time before submission.</P>\n            <P>\n              You'll recieve a notification message in your WordPress dashboard when you are able to apply to the\n              Registry.\n            </P>\n            <hr />\n            <H>What is the Civil Registry?</H>\n            <LearnMoreButton\n              href=\"https://cvlconsensys.zendesk.com/hc/en-us/articles/360017687131-What-is-the-Civil-Registry-\"\n              size={buttonSizes.SMALL}\n            >\n              Learn More\n            </LearnMoreButton>\n          </FormSectionInner>\n        </StepFormSection>\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (state: any, ownProps: ApplyToTCRProps): ApplyToTCRProps => {\n  const newsroom = state.newsrooms.get(ownProps.address);\n\n  return {\n    ...ownProps,\n    newsroom: newsroom ? newsroom.newsroom : null,\n  };\n};\n\nexport const ApplyToTCRPlaceholder = connect(mapStateToProps)(ApplyToTCRComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/CivilContext.tsx",
    "content": "import { Civil } from \"@joincivil/core\";\nimport * as React from \"react\";\n\nexport interface CivilContextValue {\n  civil: Civil | undefined;\n  account?: string;\n  requiredNetwork: string;\n  currentNetwork?: string;\n}\n\nconst defaultContext: CivilContextValue = {\n  civil: undefined,\n  account: undefined,\n  currentNetwork: undefined,\n  requiredNetwork: \"rinkeby|ganache\",\n};\n\nexport const CivilContext = React.createContext(defaultContext);\n"
  },
  {
    "path": "packages/newsroom-manager/src/CompleteYourProfile.tsx",
    "content": "import {\n  AddressInput,\n  BorderlessButton,\n  buttonSizes,\n  colors,\n  DetailTransactionButton,\n  fonts,\n  StepDescription,\n  StepHeader,\n  StepFormSection,\n  Transaction,\n  TransactionButtonModalFlowState,\n  MetaMaskModal,\n  ModalHeading,\n  Modal,\n  Button,\n} from \"@joincivil/components\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { NewsroomRoles } from \"@joincivil/utils\";\nimport * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { addAndHydrateEditor, addAndHydrateOwner } from \"./actionCreators\";\nimport { CivilContext, CivilContextValue } from \"./CivilContext\";\nimport { NewsroomUser, UserTypes } from \"./NewsroomUser\";\nimport { FormTitle, QuestionToolTip } from \"./styledComponents\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { getUserObject } from \"./utils\";\nimport { UserData } from \"./types\";\nimport { TransactionButtonInner } from \"./TransactionButtonInner\";\nimport { isValidAddress } from \"ethereumjs-util\";\n\nexport interface CompleteYourProfileComponentExternalProps {\n  userIsOwner?: boolean;\n  userIsEditor?: boolean;\n  address?: EthAddress;\n  profileWalletAddress?: EthAddress;\n  renderUserSearch?(onSetAddress: any): JSX.Element;\n}\n\nexport interface CompleteYourProfileComponentProps {\n  owners: UserData[];\n  editors: UserData[];\n  userIsOwner?: boolean;\n  userIsEditor?: boolean;\n  address?: EthAddress;\n  newsroom: any;\n  active?: boolean;\n}\n\nexport interface CompleteYourProfileComponentState extends TransactionButtonModalFlowState {\n  addOwner: boolean;\n  addEditor: boolean;\n  newOwner: EthAddress;\n  newEditor: EthAddress;\n  disableOwnerAdd: boolean;\n  disableEditorAdd: boolean;\n}\n\nconst Section = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: space-between;\n  margin-bottom: 20px;\n`;\n\nconst FormTitleSection = styled(Section)`\n  flex-direction: row;\n  justify-content: flex-start;\n`;\n\nconst FormDescription = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-size: 15px;\n  width: 430px;\n  margin-left: 50px;\n`;\n\nconst AddButton = styled(BorderlessButton)`\n  padding-left: 0px;\n`;\n\nconst Description = styled(StepDescription)`\n  font-size: 14px;\n`;\n\nclass CompleteYourProfileComponent extends React.Component<\n  CompleteYourProfileComponentProps & CompleteYourProfileComponentExternalProps & DispatchProp<any>,\n  CompleteYourProfileComponentState\n> {\n  constructor(props: CompleteYourProfileComponentProps & DispatchProp<any>) {\n    super(props);\n    this.state = {\n      addOwner: false,\n      addEditor: false,\n      newOwner: \"\",\n      newEditor: \"\",\n      modalOpen: false,\n      disableEditorAdd: true,\n      disableOwnerAdd: true,\n    };\n  }\n\n  public renderPreMetamMask(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n    const message = this.state.addEditor ? \"Open MetaMask to add Civil Member\" : \"Open MetaMask to add Civil Officer\";\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message = this.state.addEditor\n      ? \"Your new Civil Member was not added\"\n      : \"Your new Civil Officer was not added\";\n\n    const denialMessage = this.state.addEditor\n      ? \"To add a new Civil Member, you need to confirm the transaction in your MetaMask wallet.\"\n      : \"To add a new Civil Officer, you need to confirm the transaction in your MetaMask wallet.\";\n\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <MetaMaskModal\n            waiting={false}\n            denied={true}\n            denialText={denialMessage}\n            cancelTransaction={() => this.cancelTransaction()}\n            restartTransactions={this.getTransaction(true)}\n          >\n            <ModalHeading>{message}</ModalHeading>\n          </MetaMaskModal>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting to Confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderProgressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    const message = this.state.addEditor\n      ? \"A Civil Member is being added to your newsroom smart contract\"\n      : \"A Civil Officer is being added to your newsroom smart contract\";\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>You have confirmed the transaction in your MetaMask wallet and it is currently processing</p>\n        <p>\n          Note, that this could take a while depending on traffic on the Ethereum network. You can close this while the\n          transaction is processing.\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderCompleteModal(): JSX.Element | null {\n    if (!this.state.completeModalOpen) {\n      return null;\n    }\n    const message = this.state.addEditor\n      ? \"A Civil Member has been added to the newsroom smart contract!\"\n      : \"A Civil Officer has been added to the newsroom smart contract!\";\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>\n          The transaction has completed and the {this.state.addEditor ? \"Civil Member\" : \"Civil Officer\"} was added. You\n          can keep adding officers and members to your newsroom smart contract or continue to the next step to create\n          your Registry profile.\n        </p>\n        <Button\n          size={buttonSizes.MEDIUM_WIDE}\n          onClick={() => this.setState({ completeModalOpen: false, addEditor: false, addOwner: false })}\n        >\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderEditorInputs(): JSX.Element {\n    const onSetAddress = (address: string) => {\n      const valid = isValidAddress(address);\n      this.setState({ newEditor: address, disableEditorAdd: !valid });\n    };\n\n    return this.props.renderUserSearch ? (\n      this.props.renderUserSearch(onSetAddress)\n    ) : (\n      <AddressInput address={this.state.newEditor} onChange={(name: any, val: any) => onSetAddress(val)} />\n    );\n  }\n\n  public renderOwnerInputs(): JSX.Element {\n    const onSetAddress = (address: string) => {\n      const valid = isValidAddress(address);\n      this.setState({ newOwner: address, disableOwnerAdd: !valid });\n    };\n\n    return this.props.renderUserSearch ? (\n      this.props.renderUserSearch(onSetAddress)\n    ) : (\n      <AddressInput address={this.state.newOwner} onChange={(name, val) => onSetAddress(val)} />\n    );\n  }\n\n  public renderAddEditorForm(): JSX.Element {\n    if (!this.state.addEditor) {\n      return (\n        <AddButton size={buttonSizes.SMALL} onClick={() => this.setState({ addEditor: true })}>\n          + Add Civil Member\n        </AddButton>\n      );\n    } else {\n      return (\n        <CivilContext.Consumer>\n          {(value: CivilContextValue) => (\n            <>\n              {this.renderEditorInputs()}\n              <DetailTransactionButton\n                disabled={this.state.disableEditorAdd}\n                transactions={this.getTransaction()}\n                Button={TransactionButtonInner}\n                civil={value.civil}\n                requiredNetwork={value.requiredNetwork}\n                noModal={true}\n              >\n                Add Civil Member\n              </DetailTransactionButton>\n            </>\n          )}\n        </CivilContext.Consumer>\n      );\n    }\n  }\n\n  public renderAddOwnerForm(): JSX.Element {\n    if (this.props.userIsEditor && !this.props.userIsOwner) {\n      return (\n        <p style={{ color: colors.accent.CIVIL_GRAY_2 }}>\n          You are on the contract as a Member, not an Officer, so you cannot add additional Officers. You may add and\n          remove Civil Members below.\n        </p>\n      );\n    } else if (!this.state.addOwner) {\n      return (\n        <AddButton size={buttonSizes.SMALL} onClick={() => this.setState({ addOwner: true })}>\n          + Add Civil Officer\n        </AddButton>\n      );\n    } else {\n      return (\n        <CivilContext.Consumer>\n          {(value: CivilContextValue) => (\n            <>\n              {this.renderOwnerInputs()}\n              <DetailTransactionButton\n                disabled={this.state.disableOwnerAdd}\n                transactions={this.getTransaction()}\n                civil={value.civil}\n                Button={TransactionButtonInner}\n                requiredNetwork={value.requiredNetwork}\n                noModal={true}\n              >\n                Add Civil Officer\n              </DetailTransactionButton>\n            </>\n          )}\n        </CivilContext.Consumer>\n      );\n    }\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StepHeader>Add accounts to your newsroom smart contract</StepHeader>\n        <Description>\n          Add additional officers and members to your newsroom smart contract. You will need their public wallet\n          addresses. This step is optional, but recommended.\n          <QuestionToolTip\n            explainerText={\n              \"If you lose access to your wallet, only a Civil Officer can add you back to the smart contract with a new address. You can always add Officers and Members later.\"\n            }\n          />\n        </Description>\n        <StepFormSection>\n          <FormTitleSection>\n            <FormTitle>Civil Officer</FormTitle>\n            <FormDescription>\n              An Officer is an admin role that has all possible capabilities in the newsroom smart contract. They can\n              add additional officers and members and have access to your newsroom's funds and Civil Registry\n              application.\n              <QuestionToolTip\n                explainerText={\n                  \"You can skip adding an additional Officer but if you do not have one, you will not be able to access your newsroom contract if you lose access to your wallet.\"\n                }\n              />\n            </FormDescription>\n          </FormTitleSection>\n          <Section>\n            {this.props.owners.map(item => {\n              return (\n                <NewsroomUser\n                  newsroomAddress={this.props.address}\n                  type={UserTypes.OWNER}\n                  profileWalletAddress={this.props.profileWalletAddress}\n                  key={item.rosterData.ethAddress}\n                  address={item.rosterData.ethAddress}\n                  name={item.rosterData.name}\n                  readOnly={!this.props.userIsOwner}\n                />\n              );\n            })}\n          </Section>\n          {this.renderAddOwnerForm()}\n        </StepFormSection>\n        <StepFormSection>\n          <FormTitleSection>\n            <FormTitle>Civil Member</FormTitle>\n            <FormDescription>\n              A Member is the standard role in the newsroom smart contract. They have permission to sign, index and\n              archive posts on the blockchain. They cannot add Civil Officers to you newsroom smart contract or access\n              your newsroom's funds.\n              <QuestionToolTip\n                explainerText={\n                  \"If you lose your public wallet address, a Civil Member does not have the option to add additional officers to the contract.\"\n                }\n              />\n            </FormDescription>\n          </FormTitleSection>\n          <Section>\n            {this.props.editors.map(item => (\n              <NewsroomUser\n                newsroomAddress={this.props.address}\n                type={UserTypes.EDITOR}\n                profileWalletAddress={this.props.profileWalletAddress}\n                key={item.rosterData.ethAddress}\n                address={item.rosterData.ethAddress}\n                name={item.rosterData.name}\n              />\n            ))}\n          </Section>\n          {this.renderAddEditorForm()}\n        </StepFormSection>\n        {this.renderPreMetamMask()}\n        {this.renderAwaitingTransactionModal()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.renderCompleteModal()}\n        {this.renderProgressModal()}\n      </>\n    );\n  }\n\n  private getTransaction = (noPreModal?: boolean): Transaction[] => {\n    return [\n      {\n        requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n        transaction: async (): Promise<void> => {\n          this.setState({\n            metaMaskRejectionModal: false,\n            isWaitingTransactionModalOpen: true,\n            isPreTransactionModalOpen: false,\n          });\n          return this.state.addEditor ? this.addEditor() : this.addOwner();\n        },\n        postTransaction: result => {\n          if (this.state.addEditor) {\n            this.props.dispatch!(addAndHydrateEditor(this.props.address!, this.state.newEditor));\n          } else {\n            this.props.dispatch!(addAndHydrateOwner(this.props.address!, this.state.newOwner));\n          }\n          this.setState({\n            modalOpen: false,\n            completeModalOpen: true,\n            newOwner: \"\",\n            newEditor: \"\",\n          });\n        },\n        handleTransactionHash: txhash => {\n          this.setState({\n            modalOpen: true,\n            isWaitingTransactionModalOpen: false,\n          });\n        },\n        handleTransactionError: (err: Error) => {\n          this.setState({ isWaitingTransactionModalOpen: false });\n          if (err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n            this.setState({ metaMaskRejectionModal: true });\n          }\n        },\n      },\n    ];\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n\n  private addOwner = async (): Promise<void> => {\n    return this.props.newsroom.addOwner(this.state.newOwner);\n  };\n\n  private addEditor = async (): Promise<void> => {\n    return this.props.newsroom.addRole(this.state.newEditor, NewsroomRoles.Editor);\n  };\n}\n\nconst mapStateToProps = (\n  state: StateWithNewsroom,\n  ownProps: CompleteYourProfileComponentExternalProps,\n): CompleteYourProfileComponentProps & CompleteYourProfileComponentExternalProps => {\n  const { address } = ownProps;\n  const newsroom = state.newsrooms.get(address || \"\") || { wrapper: { data: {} } };\n  const owners: UserData[] = (newsroom.wrapper.data.owners || []).map(getUserObject.bind(null, state));\n  const editors: UserData[] = ((newsroom.editors && newsroom.editors.toArray()) || []).map(\n    getUserObject.bind(null, state),\n  );\n  return {\n    ...ownProps,\n    address,\n    owners,\n    editors,\n    newsroom: newsroom.newsroom,\n  };\n};\n\nexport const CompleteYourProfile = connect(mapStateToProps)(CompleteYourProfileComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/CreateCharterPartOne.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { find, findIndex } from \"lodash\";\nimport styled from \"styled-components\";\nimport { colors, StepHeader, StepProps, StepDescription, QuestionToolTip } from \"@joincivil/components\";\nimport { EthAddress, CharterData, RosterMember as RosterMemberInterface } from \"@joincivil/typescript-types\";\nimport { isValidHttpUrl } from \"@joincivil/utils\";\nimport { RosterMember } from \"./RosterMember\";\nimport {\n  FormSection,\n  FormTitle,\n  FormSubhead,\n  FormRow,\n  FormRowItem,\n  HelperText,\n  StyledTextInput,\n  StyledTextareaInput,\n} from \"./styledComponents\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { getUserObject } from \"./utils\";\nimport { UserData } from \"./types\";\n\nexport interface CreateCharterPartOneExternalProps extends StepProps {\n  charter: Partial<CharterData>;\n  address?: EthAddress;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nexport interface CreateCharterPartOneProps extends CreateCharterPartOneExternalProps {\n  owners: UserData[];\n  editors: UserData[];\n}\n\nconst LogoFormWrap = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin-top: -4px;\n`;\nconst LogoURLWrap = styled.div`\n  flex-grow: 2;\n  margin-right: 15px;\n  padding-right: 15px;\n  border-right: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\nconst LogoURLInput = styled(StyledTextInput)`\n  &,\n  input {\n    margin-bottom: 0;\n  }\n`;\nconst LogoImgWrap = styled.div`\n  position: relative;\n  width: 100px;\n`;\nconst LogoImg = styled.img`\n  position: absolute;\n  width: 100px;\n  height: auto;\n  top: -50%;\n`;\n\nconst NewsroomURLInput = styled(StyledTextInput)`\n  max-width: 400px;\n`;\nconst TaglineTextarea = styled(StyledTextareaInput)`\n  height: 80px;\n  margin: -4px 0 0;\n`;\n\nconst AddRosterMember = styled.a`\n  display: block;\n  cursor: pointer;\n  padding: 22px 0 22px 30px;\n  text-decoration: none;\n  font-weight: bold;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  outline: none !important;\n  box-shadow: none !important;\n`;\n\nclass CreateCharterPartOneComponent extends React.Component<CreateCharterPartOneProps & DispatchProp<any>> {\n  public render(): JSX.Element {\n    const charter = this.props.charter;\n    const contractUsers = this.props.owners.concat(this.props.editors);\n\n    return (\n      <>\n        <StepHeader>Create your Registry profile</StepHeader>\n        <StepDescription>\n          Add your Newsroom profile information. This will be included on your smart contract and shown on your listing\n          page in the Civil Registry.\n        </StepDescription>\n\n        <FormSection>\n          <FormTitle>Newsroom Profile</FormTitle>\n          <p>Enter your newsroom profile details.</p>\n\n          <div>\n            <FormSubhead>\n              Logo\n              <QuestionToolTip\n                explainerText={\n                  \"You need to add a URL to a logo or image. If you set a Site Icon in your WordPress dashboard under Appearance > Customize > Site Identity it will be used here. We recommend the image be square and at minimum 300 x 300 pixels.\"\n                }\n              />\n            </FormSubhead>\n            <LogoFormWrap>\n              <LogoURLWrap>\n                <LogoURLInput\n                  noLabel\n                  name=\"logoUrl\"\n                  value={charter.logoUrl || \"\"}\n                  onChange={this.charterInputChange}\n                  invalid={this.invalidUrlInput(charter.logoUrl)}\n                  invalidMessage={\"Invalid URL\"}\n                />\n              </LogoURLWrap>\n              <LogoImgWrap>{charter.logoUrl && <LogoImg src={charter.logoUrl} />}</LogoImgWrap>\n            </LogoFormWrap>\n            <HelperText style={{ marginTop: 4 }}>Must be image URL</HelperText>\n          </div>\n\n          <div>\n            <FormSubhead>Newsroom URL</FormSubhead>\n            <NewsroomURLInput\n              name=\"newsroomUrl\"\n              value={charter.newsroomUrl || \"\"}\n              onChange={this.charterInputChange}\n              invalid={this.invalidUrlInput(charter.newsroomUrl)}\n              invalidMessage={\"Invalid URL\"}\n            />\n          </div>\n\n          <div>\n            <FormSubhead>\n              Tagline\n              <QuestionToolTip explainerText={\"This can be a tagline or short summary about your Newsroom.\"} />\n            </FormSubhead>\n            <TaglineTextarea\n              name=\"tagline\"\n              value={charter.tagline || \"\"}\n              onChange={this.charterInputChange}\n              invalid={!!charter.tagline && charter.tagline.length > 120}\n              invalidMessage={\"Too long\"}\n            />\n            <HelperText>Maximum of 120 Characters</HelperText>\n          </div>\n\n          <FormRow>\n            <FormRowItem>\n              <div>\n                <FormSubhead optional>Twitter URL</FormSubhead>\n                <StyledTextInput\n                  name=\"twitter\"\n                  value={(charter.socialUrls || {}).twitter || \"\"}\n                  onChange={this.charterSocialInputChange}\n                  invalid={this.invalidUrlInput((charter.socialUrls || {}).twitter)}\n                  invalidMessage={\"Invalid URL\"}\n                />\n              </div>\n            </FormRowItem>\n            <FormRowItem>\n              <div>\n                <FormSubhead optional>Facebook URL</FormSubhead>\n                <StyledTextInput\n                  name=\"facebook\"\n                  value={(charter.socialUrls || {}).facebook || \"\"}\n                  onChange={this.charterSocialInputChange}\n                  invalid={this.invalidUrlInput((charter.socialUrls || {}).facebook)}\n                  invalidMessage={\"Invalid URL\"}\n                />\n              </div>\n            </FormRowItem>\n          </FormRow>\n        </FormSection>\n\n        <FormSection>\n          <FormTitle>Newsroom Roster</FormTitle>\n          <p>\n            Select the participants in your WordPress newsroom you want to add your roster and include any relevant\n            credentials.\n          </p>\n          {(charter.roster || []).map((member, i) => {\n            const contractUser = find(contractUsers, user => user.rosterData.ethAddress === member.ethAddress);\n            return (\n              <RosterMember\n                newsroomAddress={this.props.address!}\n                key={i}\n                user={{\n                  rosterData: member,\n                  isCmsUser: contractUser && contractUser.isCmsUser,\n                  username: contractUser && contractUser.username,\n                }}\n                onContract={!!contractUser}\n                updateRosterMember={this.rosterMemberUpdate}\n              />\n            );\n          })}\n          <AddRosterMember href=\"#\" onClick={this.addRosterMember}>\n            Add Additional Roster Member\n          </AddRosterMember>\n        </FormSection>\n      </>\n    );\n  }\n\n  private charterInputChange = (name: string, val: string) => {\n    this.props.updateCharter({\n      ...this.props.charter,\n      [name]: val,\n    });\n  };\n\n  private charterSocialInputChange = (type: string, url: string) => {\n    this.props.updateCharter({\n      ...this.props.charter,\n      socialUrls: {\n        ...this.props.charter.socialUrls,\n        [type]: url,\n      },\n    });\n  };\n\n  private addRosterMember = (e: any) => {\n    e.preventDefault();\n    const newMember = {};\n    this.props.updateCharter({\n      ...this.props.charter,\n      roster: (this.props.charter.roster || []).concat(newMember as RosterMemberInterface),\n    });\n  };\n\n  private rosterMemberUpdate = (\n    oldVal: Partial<RosterMemberInterface>,\n    newVal: Partial<RosterMemberInterface>,\n    deleteMember?: boolean,\n  ) => {\n    const roster = (this.props.charter.roster || []).slice();\n\n    if (\n      newVal.ethAddress &&\n      oldVal.ethAddress !== newVal.ethAddress &&\n      find(roster, rosterMember => rosterMember.ethAddress === newVal.ethAddress)\n    ) {\n      // Address being updated to an address already on roster, an edge-case that would put UI in a weird state, a pain to handle, so just alert for now and don't apply change.\n      alert('Wallet address \"' + newVal.ethAddress + '\" already exists your newsroom roster.');\n      return;\n    }\n\n    const key = oldVal.ethAddress ? \"ethAddress\" : \"name\";\n    const memberIndex = findIndex(roster, rosterMember => rosterMember[key] === oldVal[key]);\n\n    if (deleteMember) {\n      roster.splice(memberIndex, 1);\n    } else {\n      roster[memberIndex] = newVal as RosterMemberInterface;\n    }\n\n    this.props.updateCharter({\n      ...this.props.charter,\n      roster,\n    });\n  };\n\n  private invalidUrlInput = (url?: string): boolean => {\n    return !!url && !isValidHttpUrl(url);\n  };\n}\n\nconst mapStateToProps = (\n  state: StateWithNewsroom,\n  ownProps: CreateCharterPartOneExternalProps,\n): CreateCharterPartOneProps => {\n  const newsroom = state.newsrooms.get(ownProps.address || \"\") || { wrapper: { data: {} } };\n  const owners: UserData[] = (newsroom.wrapper.data.owners || []).map(getUserObject.bind(null, state));\n  const editors: UserData[] = ((newsroom.editors && newsroom.editors.toArray()) || []).map(\n    getUserObject.bind(null, state),\n  );\n\n  return {\n    ...ownProps,\n    owners,\n    editors,\n  };\n};\n\nexport const CreateCharterPartOne = connect(mapStateToProps)(CreateCharterPartOneComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/CreateCharterPartTwo.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { StepHeader, StepProps, StepDescription, TextareaInput } from \"@joincivil/components\";\nimport { CharterData } from \"@joincivil/typescript-types\";\nimport { FormSection, FormTitle, FormSubhead } from \"./styledComponents\";\nimport { StateWithNewsroom } from \"./reducers\";\n\nexport interface CreateCharterPartTwoProps extends StepProps {\n  charter: Partial<CharterData>;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nconst Textarea = styled(TextareaInput)`\n  height: 140px;\n`;\n\nclass CreateCharterPartTwoComponent extends React.Component<CreateCharterPartTwoProps & DispatchProp<any>> {\n  constructor(props: CreateCharterPartTwoProps & DispatchProp<any>) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <StepHeader>Write your charter</StepHeader>\n        <StepDescription>\n          Civil’s Registry is based on transparency and trust, so we ask newsrooms to be as open and clear as possible\n          in answering the following questions. The aim is to ensure the Civil community is able to make an informed\n          decision about new applicants and uphold the highest standards of journalism. We ask that any newsroom\n          applying to the registry provide the information below to the best of their ability.\n        </StepDescription>\n        <StepDescription>\n          {/*TODO: link \"Civil Registry\" to registry once it's launch*/}\n          This information will also be included on your smart contract and shown on your listing page in the Civil\n          Registry.{\" \"}\n          <strong>\n            Note that the information you provide will be public on the platform and used by the Civil community as the\n            basis for accepting or rejecting your newsroom. We recommend reviewing the{\" \"}\n            <a href=\"https://civil.co/constitution/\" target=\"blank\">\n              Constitution\n            </a>{\" \"}\n            closely to familiarize yourself with Civil’s code of ethics before filling it out.\n          </strong>{\" \"}\n          You can change or amend this charter at any time.\n        </StepDescription>\n\n        <FormSection>\n          <FormTitle>Identify your newsroom's journalistic mission.</FormTitle>\n\n          <FormSubhead>Please describe your newsroom's mission or purpose.</FormSubhead>\n          <Textarea\n            name=\"purpose\"\n            value={(this.props.charter.mission && this.props.charter.mission.purpose) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>What is your newsroom's ownership structure? (e.g. non-profit, for-profit, co-op)</FormSubhead>\n          <Textarea\n            name=\"structure\"\n            value={(this.props.charter.mission && this.props.charter.mission.structure) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>\n            What are your newsroom's current or planned revenue sources? (ex: membership, subscriptions, advertising,\n            sponsored content, promoted links)\n          </FormSubhead>\n          <Textarea\n            name=\"revenue\"\n            value={(this.props.charter.mission && this.props.charter.mission.revenue) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>\n            Does anything get in the way of your ability to report independently? Are there any conflicts of interest\n            that voters should be aware of?\n          </FormSubhead>\n          <Textarea\n            name=\"encumbrances\"\n            value={(this.props.charter.mission && this.props.charter.mission.encumbrances) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>\n            Is there anything else the Civil community should know about your Newsroom to support its inclusion on the\n            Registry?\n          </FormSubhead>\n          <Textarea\n            name=\"miscellaneous\"\n            value={(this.props.charter.mission && this.props.charter.mission.miscellaneous) || \"\"}\n            onChange={this.missionInputChange}\n          />\n        </FormSection>\n      </>\n    );\n  }\n\n  private missionInputChange = (name: string, val: string) => {\n    this.props.updateCharter({\n      ...this.props.charter,\n      mission: {\n        ...this.props.charter.mission,\n        [name]: val,\n      } as any, // \"as any\" required because Partial<T> doesn't recurse to optional mission values inside CharterData\n    });\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: CreateCharterPartTwoProps): CreateCharterPartTwoProps => {\n  return {\n    ...ownProps,\n  };\n};\n\nexport const CreateCharterPartTwo = connect(mapStateToProps)(CreateCharterPartTwoComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/NameAndAddress.tsx",
    "content": "import {\n  AddressWithCopyButton,\n  Button,\n  buttonSizes,\n  DetailTransactionButton,\n  fonts,\n  GreenCheckMark,\n  LoadingIndicator,\n  Modal,\n  StepDescription,\n  StepHeader,\n  TextInput,\n  ViewTransactionLink,\n  MetaMaskModal,\n  ModalHeading,\n  Transaction,\n  TransactionButtonModalFlowState,\n  QuestionToolTip,\n} from \"@joincivil/components\";\nimport { Civil, TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { changeName, updateNewsroom } from \"./actionCreators\";\nimport { CivilContext, CivilContextValue } from \"./CivilContext\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { TransactionButtonInner } from \"./TransactionButtonInner\";\nimport { Newsroom } from \"@joincivil/core/build/src/contracts/newsroom\";\n\nexport interface NameAndAddressProps {\n  userIsOwner?: boolean;\n  address?: EthAddress;\n  txHash?: TxHash;\n  name?: string;\n  newsroom?: Newsroom;\n  active?: boolean;\n  onNewsroomCreated?(result: any): void;\n  onContractDeployStarted?(txHash: TxHash): void;\n}\n\nexport interface NameAndAddressState extends TransactionButtonModalFlowState {\n  name?: string;\n  collapsableOpen: boolean;\n}\n\nconst Label = styled.div`\n  font-size: 15px;\n  color: #000;\n  font-family: ${fonts.SANS_SERIF};\n  margin-bottom: 10px;\n`;\n\nconst PendingWrapper = styled.div`\n  display: flex;\n  align-items: center;\n  flex-direction: column;\n`;\n\nconst Description = styled(StepDescription)`\n  font-size: 14px;\n`;\n\nconst Success = styled.div`\n  position: absolute;\n  left: 25px;\n  top: 20px;\n`;\n\nclass NameAndAddressComponent extends React.Component<NameAndAddressProps & DispatchProp<any>, NameAndAddressState> {\n  constructor(props: NameAndAddressProps & DispatchProp<any>) {\n    super(props);\n    this.state = {\n      name: this.props.name,\n      modalOpen: false,\n      collapsableOpen: true,\n      isPreTransactionModalOpen: false,\n    };\n  }\n\n  public componentWillReceiveProps(newProps: NameAndAddressProps): void {\n    this.setState({ name: newProps.name });\n  }\n\n  public onChange(name: string, value: string | void): void {\n    this.props.dispatch!(updateNewsroom(this.props.address || \"\", { wrapper: { data: { name: value || \"\" } } }));\n  }\n\n  public onContractChange(name: string, value: string | void): void {\n    this.setState({ name: value || undefined });\n  }\n\n  public progressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    const message = this.props.address\n      ? \"Your name change is processing\"\n      : \"Your newsroom smart contract is processing\";\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>\n          You have confirmed the transaction in MetaMask\n          {!this.props.address && \", and now computers around the world are learning about your newsroom contract\"}.\n        </p>\n        <p>\n          Note: this could take a while depending on Ethereum network traffic. You can close this window while the\n          transaction is processing.\n          <br />\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderCheckMark(): JSX.Element | null {\n    if (!this.props.address) {\n      return null;\n    }\n    return (\n      <Success>\n        <GreenCheckMark />\n      </Success>\n    );\n  }\n\n  public renderPreMetamaskCreateModal(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n    const message = this.props.address\n      ? \"Open MetaMask to confirm your name change\"\n      : \"Open MetaMask to confirm and create a newsroom smart contract\";\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message = this.props.address\n      ? \"Your name change did not complete\"\n      : \"Your newsroom smart contract did not complete\";\n\n    const denialMessage = this.props.address\n      ? \"To change your newsroom's name, you need to confirm the transaction in your MetaMask wallet.\"\n      : \"To create your newsroom smart contract, you need to confirm the transaction in your MetaMask wallet. You will not be able to proceed without creating a newsroom smart contract.\";\n\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <MetaMaskModal\n            waiting={false}\n            denied={true}\n            denialText={denialMessage}\n            cancelTransaction={() => this.cancelTransaction()}\n            restartTransactions={this.getTransactions(value.civil!, true)}\n          >\n            <ModalHeading>{message}</ModalHeading>\n          </MetaMaskModal>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting for you to confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderNoContract(): JSX.Element {\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <>\n            <TextInput\n              label=\"Newsroom Name\"\n              placeholder=\"Enter your newsroom's name\"\n              name=\"NameInput\"\n              value={this.props.name || \"\"}\n              onChange={(name, val) => this.onChange(name, val)}\n            />\n            <DetailTransactionButton\n              transactions={this.getTransactions(value.civil!)}\n              civil={value.civil}\n              estimateFunctions={[value.civil!.estimateNewsroomDeployTrusted.bind(value.civil, this.props.name!)]}\n              requiredNetwork={value.requiredNetwork}\n              Button={TransactionButtonInner}\n              noModal={true}\n            >\n              Create Newsroom\n            </DetailTransactionButton>\n          </>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public renderContract(): JSX.Element {\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <>\n            <TextInput\n              label=\"Newsroom Name\"\n              placeholder=\"Enter your newsroom's name\"\n              name=\"NameInput\"\n              value={this.state.name || \"\"}\n              onChange={(name, val) => this.onContractChange(name, val)}\n              disabled={!this.props.userIsOwner}\n            />\n            {this.props.userIsOwner && (\n              <DetailTransactionButton\n                transactions={this.getTransactions(value.civil!)}\n                civil={value.civil}\n                requiredNetwork={value.requiredNetwork}\n                Button={TransactionButtonInner}\n                noModal={true}\n              >\n                Change Name\n              </DetailTransactionButton>\n            )}\n            <div>\n              <Label>Newsroom Contract Address</Label>\n              <AddressWithCopyButton address={this.props.address || \"\"} />\n              <StepDescription>\n                This is your newsroom contract address. It will be added to the Civil Registry. You will be able to view\n                it on this page, but you can also save it for future use.\n              </StepDescription>\n            </div>\n          </>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public renderOnlyTxHash(): JSX.Element {\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <PendingWrapper>\n            <LoadingIndicator height={100} width={150} />\n            <h3>Your newsroom smart contract is processing.</h3>\n            <p>\n              You have confirmed this transaction in MetaMask, and now computers around the world are learning about\n              your newsroom contract.\n            </p>\n            <p>\n              Note: this could take a while depending on Ethereum network traffic. You can close this window while the\n              transaction is processing.\n              <br />\n              <ViewTransactionLink txHash={this.props.txHash!} network={value.requiredNetwork} />\n            </p>\n          </PendingWrapper>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public render(): JSX.Element {\n    let body;\n    if (this.props.address) {\n      body = this.renderContract();\n    } else if (this.props.txHash) {\n      body = this.renderOnlyTxHash();\n    } else {\n      body = this.renderNoContract();\n    }\n    return (\n      <>\n        <StepHeader active={this.props.active}>\n          {this.props.address ? \"Newsroom successfully created!\" : \"Create your newsroom\"}\n        </StepHeader>\n        <Description>\n          {this.props.address\n            ? \"Your newsroom smart contract is set up and ready to go. Here are the details.\"\n            : \"Enter your newsroom name to create your newsroom smart contract.\"}\n          <QuestionToolTip\n            explainerText={\n              \"This name will be on your newsroom smart contract. It will also be the public name listed on the Civil Registry.\"\n            }\n          />\n        </Description>\n        {body}\n        {this.renderPreMetamaskCreateModal()}\n        {this.renderAwaitingTransactionModal()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.progressModal()}\n      </>\n    );\n  }\n\n  private getTransactions = (civil: Civil, noPreModal?: boolean): Transaction[] => {\n    if (!this.props.address) {\n      return [\n        {\n          requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n          transaction: async () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.createNewsroom(civil);\n          },\n          postTransaction: this.postTransaction,\n          handleTransactionHash: (txHash: TxHash) => {\n            if (this.props.onContractDeployStarted) {\n              this.props.onContractDeployStarted(txHash);\n            }\n            this.setState({\n              modalOpen: true,\n              isWaitingTransactionModalOpen: false,\n            });\n          },\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    } else {\n      return [\n        {\n          requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n          transaction: async () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.changeName();\n          },\n          postTransaction: this.onNameChange,\n          handleTransactionHash: txhash => {\n            this.setState({\n              modalOpen: true,\n              isWaitingTransactionModalOpen: false,\n            });\n          },\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    }\n  };\n\n  private postTransaction = (result: any): void => {\n    if (this.props.onNewsroomCreated) {\n      this.props.onNewsroomCreated(result);\n    }\n    this.setState({ modalOpen: false, collapsableOpen: false });\n  };\n\n  private changeName = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.props.newsroom!.setName(this.state.name!);\n  };\n\n  private onNameChange = (result: any): void => {\n    this.props.dispatch!(changeName(this.props.address!, this.state.name!));\n    this.setState({ modalOpen: false });\n  };\n\n  private createNewsroom = async (civil: Civil): Promise<TwoStepEthTransaction<any>> => {\n    return civil.newsroomDeployTrusted(this.props.name!);\n  };\n\n  private handleTransactionError = (err: Error) => {\n    this.setState({ isWaitingTransactionModalOpen: false });\n    if (err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n      this.setState({ metaMaskRejectionModal: true });\n    }\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: NameAndAddressProps): NameAndAddressProps => {\n  let newsroom;\n  if (ownProps.address && state.newsrooms.get(ownProps.address)) {\n    newsroom = state.newsrooms.get(ownProps.address).newsroom;\n  }\n  return {\n    newsroom,\n    ...ownProps,\n  };\n};\n\nexport const NameAndAddress = connect(mapStateToProps)(NameAndAddressComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/Newsroom.tsx",
    "content": "import {\n  ButtonTheme,\n  colors,\n  StepProcessTopNav,\n  Step,\n  ManagerHeading,\n  WalletOnboarding,\n  RenderButtonsArgs,\n  Button,\n  SecondaryButton,\n  buttonSizes,\n  DEFAULT_BUTTON_THEME,\n  DEFAULT_CHECKBOX_THEME,\n} from \"@joincivil/components\";\nimport { Civil } from \"@joincivil/core\";\nimport { EthAddress, TxHash, CharterData } from \"@joincivil/typescript-types\";\nimport * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { debounce } from \"lodash\";\nimport styled, { ThemeProvider } from \"styled-components\";\nimport {\n  addGetCmsUserDataForAddress,\n  addPersistCharter,\n  updateNewsroom,\n  getEditors,\n  getIsOwner,\n  getIsEditor,\n  getNewsroom,\n  updateCharter,\n  addConstitutionHash,\n  addConstitutionUri,\n  fetchConstitution,\n} from \"./actionCreators\";\nimport { CreateCharterPartOne } from \"./CreateCharterPartOne\";\nimport { CreateCharterPartTwo } from \"./CreateCharterPartTwo\";\nimport { Welcome } from \"./Welcome\";\nimport { CivilContext } from \"./CivilContext\";\nimport { CompleteYourProfile } from \"./CompleteYourProfile\";\nimport { NameAndAddress } from \"./NameAndAddress\";\nimport { SignConstitution } from \"./SignConstitution\";\nimport { ApplyToTCR } from \"./ApplyToTCR\";\nimport { ApplyToTCRPlaceholder } from \"./ApplyToTCRPlaceholder\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { CmsUserData } from \"./types\";\n\nexport interface NewsroomComponentState {\n  currentStep: number;\n  subscription?: any;\n  charterPartOneComplete?: boolean;\n  charterPartTwoComplete?: boolean;\n  hasPublishedCharter?: boolean;\n}\n\nexport interface IpfsObject {\n  add(content: any, options?: { hash: string; pin: boolean }): Promise<[{ path: string; hash: string; size: number }]>;\n}\n\nexport interface NewsroomExternalProps {\n  address?: EthAddress;\n  txHash?: TxHash;\n  disabled?: boolean;\n  account?: string;\n  currentNetwork?: string;\n  requiredNetwork?: string;\n  requiredNetworkNiceName?: string;\n  civil?: Civil;\n  ipfs?: IpfsObject;\n  theme?: ButtonTheme;\n  profileWalletAddress?: EthAddress;\n  showWalletOnboarding?: boolean;\n  showWelcome?: boolean;\n  helpUrl?: string;\n  helpUrlBase?: string;\n  profileUrl?: string;\n  profileAddressSaving?: boolean;\n  newsroomUrl?: string;\n  logoUrl?: string;\n  metamaskEnabled?: boolean;\n  allSteps?: boolean; // @TODO temporary while excluding it from IRL newsroom use but including for testing in dapp\n  initialStep?: number;\n  enable(): void;\n  getPersistedCharter?(): Promise<Partial<CharterData> | void>;\n  persistCharter?(charter: Partial<CharterData>): Promise<void>;\n  saveAddressToProfile?(): Promise<void>;\n  renderUserSearch?(onSetAddress: any): JSX.Element;\n  onNewsroomCreated?(address: EthAddress): void;\n  onContractDeployStarted?(txHash: TxHash): void;\n  getCmsUserDataForAddress?(address: EthAddress): Promise<CmsUserData>;\n}\n\nexport interface NewsroomProps extends NewsroomExternalProps {\n  charter: Partial<CharterData>;\n  owners: string[];\n  editors: string[];\n  name?: string;\n  newsroom?: any;\n  userIsOwner?: boolean;\n  userIsEditor?: boolean;\n  userNotOnContract?: boolean;\n  charterUri?: string;\n}\n\nexport const NoteSection = styled.p`\n  color: ${(props: { disabled: boolean }) => (props.disabled ? \"#dcdcdc\" : colors.accent.CIVIL_GRAY_3)};\n`;\n\nexport const Wrapper = styled.div`\n  max-width: 845px;\n\n  &,\n  & p {\n    font-size: 14px;\n  }\n`;\n\nconst ErrorP = styled.p`\n  color: ${colors.accent.CIVIL_RED};\n`;\n\nconst Heading = styled(ManagerHeading)`\n  color: ${(props: { disabled: boolean }) => (props.disabled ? colors.accent.CIVIL_GRAY_3 : colors.primary.BLACK)};\n`;\n\nclass NewsroomComponent extends React.Component<NewsroomProps & DispatchProp<any>, NewsroomComponentState> {\n  public static defaultProps = {\n    theme: {\n      ...DEFAULT_BUTTON_THEME,\n      ...DEFAULT_CHECKBOX_THEME,\n    },\n  };\n\n  private persistCharter = debounce(\n    (charter: Partial<CharterData>): void => {\n      if (this.props.persistCharter) {\n        // We don't need to know when this finishes, but maybe some day we'd have a saving indicator or something.\n        // tslint:disable-next-line: no-floating-promises\n        this.props.persistCharter(charter);\n        return;\n      }\n\n      try {\n        localStorage[`civil:${this.props.address!}:charter`] = JSON.stringify(charter);\n      } catch (e) {\n        console.error(\"Failed to save charter to local storage:\", e);\n      }\n    },\n    1000,\n    { maxWait: 2000 },\n  );\n\n  private checkCharterCompletion = debounce(\n    () => {\n      const charterPartOneComplete = !!(\n        this.props.charter &&\n        this.props.charter.logoUrl &&\n        this.props.charter.newsroomUrl &&\n        this.props.charter.tagline &&\n        this.props.charter.roster &&\n        this.props.charter.roster.length\n      );\n\n      let charterPartTwoComplete = false;\n      const mission = this.props.charter.mission;\n      if (mission) {\n        charterPartTwoComplete = !!(\n          mission.purpose &&\n          mission.structure &&\n          mission.revenue &&\n          mission.encumbrances &&\n          mission.miscellaneous\n        );\n      }\n\n      this.setState({\n        charterPartOneComplete,\n        charterPartTwoComplete,\n      });\n    },\n    1000,\n    { maxWait: 2000 },\n  );\n\n  constructor(props: NewsroomProps & DispatchProp) {\n    super(props);\n    let currentStep = props.address ? 1 : 0;\n    if (typeof props.initialStep !== \"undefined\") {\n      currentStep = props.initialStep;\n    } else {\n      try {\n        if (localStorage.newsroomOnBoardingLastSeen) {\n          currentStep = Number(localStorage.newsroomOnBoardingLastSeen);\n\n          // @TODO Temporary cause of infinite loop in sign constitution step\n          if (this.props.allSteps && currentStep === 4) {\n            currentStep--;\n          }\n        }\n      } catch (e) {\n        console.error(\"Failed to load step index\", e);\n      }\n    }\n\n    this.state = {\n      currentStep,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    if (this.props.getCmsUserDataForAddress) {\n      this.props.dispatch!(addGetCmsUserDataForAddress(this.props.getCmsUserDataForAddress));\n    }\n\n    this.props.dispatch!(addPersistCharter(this.persistCharter));\n\n    if (this.props.address && this.props.civil) {\n      await this.hydrateNewsroom(this.props.address);\n    }\n    if (this.props.civil) {\n      const tcr = await this.props.civil.tcrSingletonTrusted();\n      const government = await tcr.getGovernment();\n      const hash = await government.getConstitutionHash();\n      const uri = await government.getConstitutionURI();\n      this.props.dispatch!(addConstitutionHash(hash));\n      this.props.dispatch!(addConstitutionUri(uri));\n      this.props.dispatch!(fetchConstitution(uri));\n    }\n  }\n\n  public async componentWillReceiveProps(newProps: NewsroomProps & DispatchProp<any>): Promise<void> {\n    if (newProps.address && !this.props.address) {\n      await this.hydrateNewsroom(newProps.address);\n    }\n    if (this.props.newsroom && newProps.account !== this.props.account) {\n      this.setRoles(newProps.address || this.props.address!);\n    }\n  }\n\n  public renderManager(): JSX.Element | null {\n    const disabled = this.isDisabled();\n    return (\n      <>\n        {this.props.userNotOnContract && (\n          <ErrorP>\n            Your wallet address is not listed on your newsroom contract, so you are unable to make changes to it. Please\n            contact a newsroom officer in order to be added.\n          </ErrorP>\n        )}\n        <Heading disabled={disabled}>Newsroom Application</Heading>\n        <CivilContext.Provider\n          value={{\n            civil: this.props.civil,\n            currentNetwork: this.props.currentNetwork,\n            requiredNetwork: this.props.requiredNetwork || \"rinkeby|ganache\",\n            account: this.props.account,\n          }}\n        >\n          <StepProcessTopNav\n            activeIndex={this.state.currentStep}\n            onActiveTabChange={(newIndex: number) => {\n              try {\n                localStorage.newsroomOnBoardingLastSeen = JSON.stringify(newIndex);\n              } catch (e) {\n                console.error(\"Failed to save step index\", e);\n              }\n              this.setState({ currentStep: newIndex });\n            }}\n          >\n            {this.renderSteps()}\n          </StepProcessTopNav>\n        </CivilContext.Provider>\n      </>\n    );\n  }\n\n  public renderSteps(): JSX.Element[] {\n    const baseSteps = [\n      <Step\n        title={\"Create newsroom\"}\n        renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n          return (\n            <Button disabled={!this.props.address} onClick={args.goNext} size={buttonSizes.MEDIUM}>\n              Next\n            </Button>\n          );\n        }}\n        complete={!!this.props.address}\n        key=\"createNewsroom\"\n      >\n        <NameAndAddress\n          userIsOwner={this.props.userIsOwner}\n          onNewsroomCreated={this.onNewsroomCreated}\n          name={this.props.name}\n          address={this.props.address}\n          txHash={this.props.txHash}\n          onContractDeployStarted={this.props.onContractDeployStarted}\n        />\n      </Step>,\n      <Step\n        disabled={!this.props.address}\n        title={\"Add accounts\"}\n        renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n          return (\n            <>\n              <SecondaryButton size={buttonSizes.MEDIUM} onClick={args.goPrevious}>\n                Back\n              </SecondaryButton>\n              <Button onClick={args.goNext} size={buttonSizes.MEDIUM}>\n                Next\n              </Button>\n            </>\n          );\n        }}\n        complete={this.props.owners.length > 1 || !!this.props.editors.length || this.state.currentStep > 1}\n        key=\"nameAndAddress\"\n      >\n        <CompleteYourProfile\n          userIsOwner={this.props.userIsOwner}\n          userIsEditor={this.props.userIsEditor}\n          address={this.props.address}\n          renderUserSearch={this.props.renderUserSearch}\n          profileWalletAddress={this.props.profileWalletAddress}\n        />\n      </Step>,\n      <Step\n        title={\"Create Registry profile\"}\n        disabled={!this.props.address || !this.props.userIsOwner}\n        renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n          return (\n            <>\n              <SecondaryButton size={buttonSizes.MEDIUM} onClick={args.goPrevious}>\n                Back\n              </SecondaryButton>\n              <Button onClick={args.goNext} size={buttonSizes.MEDIUM} disabled={!this.state.charterPartOneComplete}>\n                Next\n              </Button>\n            </>\n          );\n        }}\n        complete={this.state.charterPartOneComplete}\n        key=\"createCharterPartOne\"\n      >\n        <CreateCharterPartOne\n          address={this.props.address}\n          charter={this.props.charter}\n          updateCharter={this.updateCharter}\n        />\n      </Step>,\n      <Step\n        title={\"Write your charter\"}\n        disabled={(!this.props.address && !this.state.charterPartOneComplete) || !this.props.userIsOwner}\n        renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n          return (\n            <>\n              <SecondaryButton size={buttonSizes.MEDIUM} onClick={args.goPrevious}>\n                Back\n              </SecondaryButton>\n              <Button onClick={args.goNext} size={buttonSizes.MEDIUM} disabled={!this.state.charterPartTwoComplete}>\n                Next\n              </Button>\n            </>\n          );\n        }}\n        complete={this.state.charterPartTwoComplete}\n        key=\"createCharterPartTwo\"\n      >\n        <CreateCharterPartTwo charter={this.props.charter} updateCharter={this.updateCharter} />\n      </Step>,\n    ];\n    if (this.props.allSteps) {\n      baseSteps.push(\n        <Step\n          title={\"Sign the Constitution\"}\n          disabled={!this.props.address && !this.state.charterPartTwoComplete}\n          complete={!!this.props.charterUri}\n          renderButtons={(args: RenderButtonsArgs): JSX.Element => {\n            return (\n              <>\n                <SecondaryButton size={buttonSizes.MEDIUM} onClick={args.goPrevious}>\n                  Back\n                </SecondaryButton>\n                <Button onClick={args.goNext} size={buttonSizes.MEDIUM} disabled={!this.props.charterUri}>\n                  Next\n                </Button>\n              </>\n            );\n          }}\n          key=\"signConstitution\"\n        >\n          <SignConstitution\n            newsroomAdress={this.props.address}\n            ipfs={this.props.ipfs}\n            charter={this.props.charter}\n            updateCharter={this.updateCharter}\n          />\n        </Step>,\n      );\n    }\n    baseSteps.push(\n      <Step\n        title={\"Apply to the Registry\"}\n        disabled={(!this.props.address && !this.props.charterUri) || !this.props.userIsOwner}\n        key=\"applyToRegistry\"\n      >\n        {this.props.allSteps ? (\n          <ApplyToTCR address={this.props.address} />\n        ) : (\n          <ApplyToTCRPlaceholder address={this.props.address} />\n        )}\n      </Step>,\n    );\n    return baseSteps;\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ThemeProvider theme={this.props.theme}>\n        <Wrapper>\n          {this.props.showWelcome && <Welcome helpUrl={this.props.helpUrl!} helpUrlBase={this.props.helpUrlBase!} />}\n          {this.props.showWalletOnboarding && (\n            <WalletOnboarding\n              civil={this.props.civil}\n              noProvider={false}\n              notEnabled={this.props.civil && !this.props.metamaskEnabled}\n              enable={this.props.enable}\n              walletLocked={this.props.civil && this.props.metamaskEnabled && !this.props.account}\n              wrongNetwork={\n                this.props.civil &&\n                !!this.props.requiredNetwork &&\n                this.props.currentNetwork !== this.props.requiredNetwork\n              }\n              requiredNetworkNiceName={this.props.requiredNetworkNiceName || this.props.requiredNetwork}\n              metamaskWalletAddress={this.props.account}\n              profileUrl={this.props.profileUrl}\n              helpUrl={this.props.helpUrl}\n              helpUrlBase={this.props.helpUrlBase}\n              profileAddressSaving={this.props.profileAddressSaving}\n              profileWalletAddress={this.props.profileWalletAddress}\n              saveAddressToProfile={this.props.saveAddressToProfile}\n            />\n          )}\n\n          {this.renderManager()}\n        </Wrapper>\n      </ThemeProvider>\n    );\n  }\n\n  public onNewsroomCreated = async (result: any) => {\n    await this.props.dispatch!(\n      updateNewsroom(result.address, {\n        wrapper: await result.getNewsroomWrapper(),\n        newsroom: result,\n      }),\n    );\n    if (this.props.onNewsroomCreated) {\n      this.props.onNewsroomCreated(result.address);\n    }\n  };\n\n  private async initCharter(): Promise<void> {\n    this.updateCharter(this.defaultCharterValues(this.getCharterFromLocalStorage() || {}));\n\n    if (this.props.getPersistedCharter) {\n      try {\n        const charter = await this.props.getPersistedCharter();\n        if (charter) {\n          this.updateCharter(this.defaultCharterValues(charter));\n        }\n      } catch (e) {\n        console.error(\"Failed to load persisted charter\", e);\n      }\n    }\n  }\n\n  private isDisabled = (): boolean => {\n    const onRequiredNetwork =\n      !this.props.requiredNetwork || this.props.requiredNetwork.includes(this.props.currentNetwork!);\n    return (\n      this.props.disabled ||\n      !this.props.civil ||\n      !onRequiredNetwork ||\n      !this.props.account ||\n      !!this.props.userNotOnContract\n    );\n  };\n\n  private hydrateNewsroom = async (address: EthAddress): Promise<void> => {\n    // Load charter first, otherwise contract/CMS updates that affect charter will be clobbered when charter comes in. Those changes handle being merged into an existing charter, but handling possible merge in the other direction is more complicated.\n    await this.initCharter();\n\n    await this.props.dispatch!(getNewsroom(address, this.props.civil!));\n    this.props.dispatch!(getEditors(address, this.props.civil!));\n    this.setRoles(address);\n  };\n\n  private setRoles = (address: EthAddress): void => {\n    this.props.dispatch!(getIsOwner(address, this.props.civil!));\n    this.props.dispatch!(getIsEditor(address, this.props.civil!));\n  };\n\n  private getCharterFromLocalStorage = (): Partial<CharterData> | undefined => {\n    try {\n      const key = `civil:${this.props.address!}:charter`;\n      if (localStorage[key]) {\n        return JSON.parse(localStorage[key]);\n      }\n    } catch (e) {\n      console.error(\"Failed to retrieve charter from local storage:\", e);\n    }\n    return undefined;\n  };\n\n  private updateCharter = (charter: Partial<CharterData>): void => {\n    this.props.dispatch!(updateCharter(this.props.address!, charter));\n    this.checkCharterCompletion();\n  };\n\n  /** Replace even empty string values for newsroom/logo URLs in case user has partially filled charter and later goes in to CMS and sets these values. */\n  private defaultCharterValues = (charter: Partial<CharterData>): Partial<CharterData> => {\n    const { newsroomUrl, logoUrl } = this.props;\n    return {\n      ...charter,\n      newsroomUrl: charter.newsroomUrl || newsroomUrl,\n      logoUrl: charter.logoUrl || logoUrl,\n    };\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: NewsroomExternalProps): NewsroomProps => {\n  const { address } = ownProps;\n  const newsroom = state.newsrooms.get(address || \"\") || { wrapper: { data: {} } };\n  const userIsOwner = newsroom.isOwner;\n  const userIsEditor = newsroom.isEditor;\n  const userNotOnContract = !!ownProps.address && userIsOwner === false && userIsEditor === false;\n  const editors = newsroom.editors ? newsroom.editors.toArray() : [];\n\n  const charterUri = newsroom.wrapper.data.charterHeader && newsroom.wrapper.data.charterHeader.uri;\n  return {\n    ...ownProps,\n    charterUri,\n    newsroom: newsroom.newsroom,\n    name: newsroom.wrapper.data.name,\n    userIsOwner,\n    userIsEditor,\n    userNotOnContract,\n    owners: newsroom.wrapper.data.owners || [],\n    editors,\n    charter: newsroom.charter || {},\n  };\n};\n\nexport const Newsroom = connect(mapStateToProps)(NewsroomComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/NewsroomUser.tsx",
    "content": "import * as React from \"react\";\nimport {\n  colors,\n  fonts,\n  Modal,\n  Button,\n  TransactionButtonNoModal,\n  TransactionButtonModalFlowState,\n  Transaction,\n  buttonSizes,\n  MetaMaskModal,\n  ModalHeading,\n  TransactionButtonInnerProps,\n  ClipLoader,\n} from \"@joincivil/components\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { NewsroomRoles } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport { TertiaryButton as _TertiaryButton, FormSubhead, QuestionToolTip } from \"./styledComponents\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { CivilContext, CivilContextValue } from \"./CivilContext\";\nimport { removeEditor, fetchNewsroom } from \"./actionCreators\";\n\nexport enum UserTypes {\n  EDITOR = \"EDITOR\",\n  OWNER = \"OWNER\",\n}\n\nconst TertiaryButton = styled(_TertiaryButton)`\n  margin: 1em 0;\n`;\n\nconst Wrapper = styled.div`\n  width: 100%;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: flex-end;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nconst Address = styled.p`\n  font-family: ${fonts.MONOSPACE};\n  letter-spacing: -0.15px;\n`;\n\nconst NameSection = styled.div`\n  margin-right: 20px;\n  width: 180px;\n`;\n\nconst ButtonWrapper = styled.div`\n  min-width: 72px;\n  margin-left: 15px;\n`;\n\nexport interface AddressComponentProps {\n  name?: string;\n}\n\nexport interface NewsroomUserProps {\n  newsroomAddress?: EthAddress;\n  address: EthAddress;\n  profileWalletAddress?: EthAddress;\n  readOnly?: boolean;\n  name?: string;\n  newsroom: any;\n  type: UserTypes;\n}\n\nexport const DisabledTransactionProcessingButton = styled.button`\n  padding: 8px;\n  background: transparent;\n  border-radius: 3px;\n  border: solid 1px #dddddd;\n  display: flex;\n  justify-content: center;\n  width: 100%;\n  margin: 1em 0;\n`;\n\nconst TransactionButtonInner = (props: TransactionButtonInnerProps): JSX.Element => {\n  let buttonComponent = (\n    <TertiaryButton disabled={props.disabled} onClick={props.onClick} size={buttonSizes.SMALL} fullWidth>\n      Remove\n    </TertiaryButton>\n  );\n  switch (props.step) {\n    case 1:\n      buttonComponent = (\n        <TertiaryButton disabled={true} size={buttonSizes.SMALL} fullWidth>\n          Confirm\n        </TertiaryButton>\n      );\n      break;\n    case 2:\n      buttonComponent = (\n        <DisabledTransactionProcessingButton>\n          <ClipLoader size={10} />\n        </DisabledTransactionProcessingButton>\n      );\n      break;\n  }\n  return buttonComponent;\n};\n\nexport class NewsroomUserComponent extends React.Component<\n  NewsroomUserProps & DispatchProp<any>,\n  TransactionButtonModalFlowState\n> {\n  constructor(props: NewsroomUserProps & DispatchProp<any>) {\n    super(props);\n    this.state = {};\n  }\n  public renderPreMetamMask(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n    const message =\n      this.props.type === UserTypes.EDITOR\n        ? \"Open MetaMask to remove a Civil Member\"\n        : \"Open MetaMask to remove a Civil Officer\";\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message =\n      this.props.type === UserTypes.EDITOR ? \"Civil Member was not removed\" : \"Civil Officer was not removed\";\n\n    const denialMessage =\n      this.props.type === UserTypes.EDITOR\n        ? \"To remove a Civil Member, you need to confirm the transaction in your MetaMask wallet.\"\n        : \"To remove a Civil Officer, you need to confirm the transaction in your MetaMask wallet.\";\n\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <MetaMaskModal\n            waiting={false}\n            denied={true}\n            denialText={denialMessage}\n            cancelTransaction={() => this.cancelTransaction()}\n            restartTransactions={this.getTransaction(true)}\n          >\n            <ModalHeading>{message}</ModalHeading>\n          </MetaMaskModal>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting to Confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderProgressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    const message =\n      this.props.type === UserTypes.EDITOR\n        ? \"A Civil Member is being removed from the newsroom smart contract!\"\n        : \"A Civil Officer is being removed from the newsroom smart contract!\";\n\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>You have confirmed the transaction in your MetaMask wallet and it is currently processing</p>\n        <p>\n          Note: this could take a while depending on traffic on the Ethereum network. You can close this while the\n          transaction is processing.\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderCompleteModal(): JSX.Element | null {\n    if (!this.state.completeModalOpen) {\n      return null;\n    }\n\n    const message =\n      this.props.type === UserTypes.EDITOR\n        ? \"A Civil Member has been removed from the newsroom smart contract!\"\n        : \"A Civil Officer has been removed from the newsroom smart contract!\";\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>\n          The transaction has completed and the{\" \"}\n          {this.props.type === UserTypes.EDITOR ? \"Civil Member\" : \"Civil Officer\"} was removed.\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ completeModalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <Wrapper>\n          <NameSection>\n            <FormSubhead>Name</FormSubhead>\n            <p>\n              {this.props.name || (\n                <>\n                  <i>unknown address</i>\n                  <QuestionToolTip explainerText=\"No WordPress user was found with this address. If the owner of this address does have an account on your site, they will need to add it to their profile in order to use the Civil Publisher.\" />\n                </>\n              )}\n            </p>\n          </NameSection>\n          <div>\n            <FormSubhead>Wallet Address</FormSubhead>\n            <Address>{this.props.address}</Address>\n          </div>\n          <ButtonWrapper>\n            {this.props.address !== this.props.profileWalletAddress && !this.props.readOnly && (\n              <TransactionButtonNoModal transactions={this.getTransaction()} Button={TransactionButtonInner} />\n            )}\n          </ButtonWrapper>\n        </Wrapper>\n        {this.renderProgressModal()}\n        {this.renderPreMetamMask()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.renderCompleteModal()}\n        {this.renderAwaitingTransactionModal()}\n      </>\n    );\n  }\n\n  private getTransaction = (noPreModal?: boolean): Transaction[] => {\n    return [\n      {\n        requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n        transaction: async () => {\n          this.setState({\n            metaMaskRejectionModal: false,\n            isWaitingTransactionModalOpen: true,\n            isPreTransactionModalOpen: false,\n          });\n          return this.props.type === UserTypes.OWNER\n            ? this.removeOwner(this.props.address)\n            : this.removeEditor(this.props.address);\n        },\n        postTransaction: () => {\n          if (this.props.type === UserTypes.EDITOR) {\n            this.props.dispatch!(removeEditor(this.props.newsroomAddress!, this.props.address!));\n          }\n          if (this.props.type === UserTypes.OWNER) {\n            this.props.dispatch!(fetchNewsroom(this.props.newsroomAddress!));\n          }\n          this.setState({\n            modalOpen: false,\n            completeModalOpen: true,\n          });\n        },\n        handleTransactionError: this.handleTransactionError,\n        handleTransactionHash: this.handleTransactionHash,\n      },\n    ];\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n\n  private handleTransactionHash = (txhash: TxHash): void => {\n    this.setState({\n      modalOpen: true,\n      isWaitingTransactionModalOpen: false,\n    });\n  };\n\n  private handleTransactionError = (err: Error): void => {\n    this.setState({ isWaitingTransactionModalOpen: false });\n    if (err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n      this.setState({ metaMaskRejectionModal: true });\n    }\n  };\n\n  private removeEditor = async (address: EthAddress) => {\n    return this.props.newsroom.removeRole(address, NewsroomRoles.Editor);\n  };\n\n  private removeOwner = async (address: EthAddress) => {\n    return this.props.newsroom.removeOwner(address);\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: Partial<NewsroomUserProps>): NewsroomUserProps => {\n  const { newsroomAddress } = ownProps;\n  const newsroom = state.newsrooms.get(newsroomAddress || \"\") || { wrapper: { data: {} } };\n  return {\n    ...ownProps,\n    type: ownProps.type!,\n    address: ownProps.address!,\n    newsroom: newsroom.newsroom,\n  };\n};\n\nexport const NewsroomUser = connect(mapStateToProps)(NewsroomUserComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/RosterMember.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { isValidAddress } from \"ethereumjs-util\";\nimport { colors, buttonSizes, ToolTip } from \"@joincivil/components\";\nimport { EthAddress, RosterMember as RosterMemberInterface } from \"@joincivil/typescript-types\";\nimport { isValidHttpUrl } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport {\n  FormSubhead,\n  FormRow,\n  FormRowItem,\n  HelperText,\n  StyledTextInput,\n  StyledTextareaInput,\n  TertiaryButton,\n} from \"./styledComponents\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { UserData } from \"./types\";\n\nexport interface RosterMemberProps {\n  newsroomAddress: EthAddress;\n  user: UserData;\n  onContract?: boolean;\n  updateRosterMember(\n    oldVal: Partial<RosterMemberInterface>,\n    newVal: Partial<RosterMemberInterface>,\n    deleteMembere?: boolean,\n  ): void;\n}\n\nconst Wrapper = styled.div`\n  padding: 20px 0;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nconst DisplayName = styled(FormSubhead)`\n  display: inline-block;\n  font-weight: bold;\n  margin: 0 10px 0 0;\n`;\nconst Username = styled.span`\n  color: #72777c;\n  margin-right: 5px;\n`;\n\nconst AvatarWrap = styled.div`\n  display: inline-block;\n  vertical-align: middle;\n  margin-right: 8px;\n  width: 24px;\n  height: 24px;\n`;\nconst AvatarImg = styled.img`\n  width: 100%;\n  height: 100%;\n`;\nconst _NoAvatar = styled.div`\n  display: inline-block;\n  width: 24px;\n  height: 21px;\n  padding-top: 3px;\n  text-align: center;\n  font-weight: bold;\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_2};\n`;\nconst noAvatar = <_NoAvatar>?</_NoAvatar>;\n\nconst Input = styled(StyledTextInput)`\n  margin: -8px 0 -20px;\n`;\nconst Textarea = styled(StyledTextareaInput)`\n  margin: -8px 0 0;\n  small {\n    top: 70px;\n  }\n`;\n\nexport class RosterMemberComponent extends React.Component<RosterMemberProps & DispatchProp<any>> {\n  constructor(props: RosterMemberProps & DispatchProp<any>) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    const user = this.props.user;\n    return (\n      <Wrapper>\n        <div>\n          <AvatarWrap>\n            {user.isCmsUser ? (\n              <ToolTip explainerText=\"This user can change their profile image by going to Gravatar and signing in with the email account they use for this WordPress site. If you have the Co-Authors Plus plugin installed, they should instead change the avatar in their Guest User profile.\">\n                {user.rosterData.avatarUrl ? <AvatarImg src={user.rosterData.avatarUrl} /> : noAvatar}\n              </ToolTip>\n            ) : (\n              user.rosterData.avatarUrl && <AvatarImg src={user.rosterData.avatarUrl} />\n            )}\n          </AvatarWrap>\n\n          {user.rosterData.name && <DisplayName>{user.rosterData.name} </DisplayName>}\n          {user.username && <Username title=\"WordPress username\">{user.username} </Username>}\n          {user.rosterData.ethAddress && <code>{user.rosterData.ethAddress}</code>}\n        </div>\n\n        {!user.isCmsUser && (\n          <FormRow>\n            <FormRowItem>\n              <FormSubhead>Name</FormSubhead>\n              <Input name=\"name\" value={user.rosterData.name || \"\"} onChange={this.rosterInputChange} />\n            </FormRowItem>\n            <FormRowItem>\n              <FormSubhead optional>Avatar</FormSubhead>\n              <Input\n                name=\"avatarUrl\"\n                value={user.rosterData.avatarUrl || \"\"}\n                onChange={this.rosterInputChange}\n                invalid={!!user.rosterData.avatarUrl && !isValidHttpUrl(user.rosterData.avatarUrl)}\n                invalidMessage={\"Invalid URL\"}\n              />\n            </FormRowItem>\n          </FormRow>\n        )}\n\n        {!this.props.onContract && (\n          <>\n            <FormSubhead optional>Public Wallet Address</FormSubhead>\n            <Input\n              name=\"ethAddress\"\n              value={user.rosterData.ethAddress || \"\"}\n              onChange={this.rosterInputChange}\n              invalid={!!user.rosterData.ethAddress && !isValidAddress(user.rosterData.ethAddress)}\n              invalidMessage={\"Invalid wallet address\"}\n            />\n          </>\n        )}\n\n        <FormRow>\n          <FormRowItem>\n            <FormSubhead>Role</FormSubhead>\n            <Input name=\"role\" value={user.rosterData.role} onChange={this.rosterInputChange} />\n          </FormRowItem>\n          <FormRowItem>\n            <FormSubhead optional>Twitter URL</FormSubhead>\n            <Input\n              name=\"twitter\"\n              value={(user.rosterData.socialUrls || {}).twitter}\n              onChange={this.rosterSocialInputChange}\n              invalid={\n                !!user.rosterData.socialUrls &&\n                !!user.rosterData.socialUrls.twitter &&\n                !isValidHttpUrl(user.rosterData.socialUrls.twitter)\n              }\n              invalidMessage={\"Invalid URL\"}\n            />\n          </FormRowItem>\n        </FormRow>\n\n        <FormSubhead>Bio</FormSubhead>\n        <Textarea\n          name=\"bio\"\n          value={user.rosterData.bio}\n          onChange={this.rosterInputChange}\n          invalid={!!user.rosterData.bio && user.rosterData.bio.length > 1000}\n          invalidMessage={\"Too long\"}\n        />\n        <HelperText>Maximum of 1000 characters</HelperText>\n\n        <FormSubhead />\n        {!this.props.onContract && (\n          <TertiaryButton size={buttonSizes.SMALL} onClick={this.removeMember}>\n            Remove Member\n          </TertiaryButton>\n        )}\n      </Wrapper>\n    );\n  }\n\n  private removeMember = () => {\n    this.props.updateRosterMember(this.props.user.rosterData, {}, true);\n  };\n\n  private rosterInputChange = (name: string, val: string) => {\n    this.props.updateRosterMember(this.props.user.rosterData, {\n      ...this.props.user.rosterData,\n      [name]: val,\n    });\n  };\n\n  private rosterSocialInputChange = (type: string, val: string) => {\n    this.props.updateRosterMember(this.props.user.rosterData, {\n      ...this.props.user.rosterData,\n      socialUrls: {\n        ...this.props.user.rosterData.socialUrls,\n        [type]: val,\n      },\n    });\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: RosterMemberProps): RosterMemberProps => {\n  return ownProps;\n};\n\nexport const RosterMember = connect(mapStateToProps)(RosterMemberComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/SignConstitution.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport {\n  StepHeader,\n  StepDescription,\n  StepFormSection,\n  Checkbox,\n  MetaMaskLogoButton,\n  MetaMaskModal,\n  ModalHeading,\n  TransactionButtonNoModal,\n  Transaction,\n  MetaMaskStepCounter,\n  fonts,\n  colors,\n} from \"@joincivil/components\";\nimport { prepareConstitutionSignMessage, hashContent } from \"@joincivil/utils\";\nimport { Civil } from \"@joincivil/core\";\nimport { Map } from \"immutable\";\nimport styled from \"styled-components\";\nimport { CivilContext, CivilContextValue } from \"./CivilContext\";\nimport { EthAddress, CharterData, EthSignedMessage, TxHash } from \"@joincivil/typescript-types\";\nimport { IpfsObject } from \"./Newsroom\";\nimport { toBuffer } from \"ethereumjs-util\";\nimport { fetchNewsroom } from \"./actionCreators\";\n\nconst CheckWrapper = styled.span`\n  margin-right: 8px;\n`;\n\nconst ConstitutionContainer = styled.div`\n  height: 462px;\n  overflow-y: scroll;\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  margin-bottom: 38px;\n  h2 {\n    font-size: 32px;\n    font-weight: 200;\n    letter-spacing: -0.67px;\n    line-height: 36px;\n    font-family: ${fonts.SERIF};\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    padding: 31px 23px;\n    margin-top: 0;\n  }\n  h4 {\n    font-size: 24px;\n    font-weight: 600;\n    line-height: 32px;\n    font-family: ${fonts.SANS_SERIF};\n  }\n`;\n\nconst Constitution = styled.div`\n  padding: 20px 93px 50px 15px;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  line-height: 26px;\n  p {\n    font-size: 16px;\n    line-height: 26px;\n  }\n`;\n\nexport interface SignConstitutionReduxProps {\n  charter: Partial<CharterData>;\n  government?: Map<string, string>;\n  newsroomAdress?: EthAddress;\n  ipfs?: IpfsObject;\n  newsroom?: any;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nexport interface SignConstitutionState {\n  isNewsroomOwner: boolean;\n  agreedToConstitution: boolean;\n  preSignModalOpen: boolean;\n  isWaitingSignatureOpen: boolean;\n  metaMaskRejectionModal: boolean;\n  isWaitingPublishModalOpen: boolean;\n  metaMaskPublishRejectionModal: boolean;\n  startTransaction(): void;\n  cancelTransaction(): void;\n}\n\nclass SignConstitutionComponent extends React.Component<\n  DispatchProp<any> & SignConstitutionReduxProps,\n  SignConstitutionState\n> {\n  constructor(props: SignConstitutionReduxProps & DispatchProp<any>) {\n    super(props);\n    this.state = {\n      isNewsroomOwner: false,\n      agreedToConstitution: false,\n      preSignModalOpen: false,\n      isWaitingSignatureOpen: false,\n      metaMaskRejectionModal: false,\n      metaMaskPublishRejectionModal: false,\n      isWaitingPublishModalOpen: false,\n      startTransaction: () => {\n        return;\n      },\n      cancelTransaction: () => {\n        return;\n      },\n    };\n  }\n\n  public componentDidUpdate(prevProps: SignConstitutionReduxProps): void {\n    if (!this.state.agreedToConstitution) {\n      this.setState({\n        agreedToConstitution: !!prevProps.charter!.signatures && !!prevProps.charter!.signatures!.length, // TODO, check if your signature is here\n      });\n    }\n  }\n\n  public renderPreSignModal(): JSX.Element | null {\n    if (!this.state.preSignModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={false}\n        signing={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <MetaMaskStepCounter>Step 1 of 2</MetaMaskStepCounter>\n        <ModalHeading>To sign the Civil Constitution, please open MetaMask and sign the request.</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderWaitingSignModal(): JSX.Element | null {\n    if (!this.state.isWaitingSignatureOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        signing={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <MetaMaskStepCounter>Step 1 of 2</MetaMaskStepCounter>\n        <ModalHeading>Waiting for you to sign in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderWaitingPublishModal(): JSX.Element | null {\n    if (!this.state.isWaitingPublishModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        signing={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <MetaMaskStepCounter>Step 2 of 2</MetaMaskStepCounter>\n        <ModalHeading>Waiting for you to confirm the transaction in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message = \"Your signature was not created\";\n\n    const denialMessage =\n      \"To sign the constitution, you need to confirm in your MetaMask wallet. You will not be able to proceed without signing the constitution.\";\n\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <MetaMaskModal\n            waiting={false}\n            denied={true}\n            denialText={denialMessage}\n            cancelTransaction={() => this.cancelTransaction()}\n            restartTransactions={this.getTransactions(value.civil!, true)}\n          >\n            <MetaMaskStepCounter>Step 1 of 2</MetaMaskStepCounter>\n            <ModalHeading>{message}</ModalHeading>\n          </MetaMaskModal>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public renderMetaMaskPublishRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskPublishRejectionModal) {\n      return null;\n    }\n    const message = \"Your charter was not saved to your newsroom smart contract.\";\n\n    const denialMessage =\n      \"To save your charter to your newsroom smart contract, you need to confirm in your MetaMask wallet. You will not be able to proceed without saving.\";\n\n    return (\n      <CivilContext.Consumer>\n        {(value: CivilContextValue) => (\n          <MetaMaskModal\n            waiting={false}\n            denied={true}\n            denialText={denialMessage}\n            cancelTransaction={() => this.cancelTransaction()}\n            restartTransactions={this.getPublishTransaction(value.civil!)}\n          >\n            <MetaMaskStepCounter>Step 2 of 2</MetaMaskStepCounter>\n            <ModalHeading>{message}</ModalHeading>\n          </MetaMaskModal>\n        )}\n      </CivilContext.Consumer>\n    );\n  }\n\n  public render(): JSX.Element {\n    const content = this.props.government ? this.props.government.get(\"constitutionContent\") : \"\";\n    return (\n      <>\n        <StepHeader>Sign the Civil Constitution</StepHeader>\n        <StepDescription>\n          Signing the Civil Constitution is an acknowledgement that you agree to abide by its set of ethical standards.\n        </StepDescription>\n        <StepFormSection>\n          <h4>Civil Constitution</h4>\n          <StepDescription>Please read and sign the Civil Constitution below</StepDescription>\n          <ConstitutionContainer>\n            <h2>Civil Constitution</h2>\n            <Constitution dangerouslySetInnerHTML={{ __html: content }} />\n          </ConstitutionContainer>\n          <p>\n            <CheckWrapper>\n              <Checkbox\n                checked={this.state.agreedToConstitution}\n                onClick={() => this.setState({ agreedToConstitution: !this.state.agreedToConstitution })}\n              />\n            </CheckWrapper>{\" \"}\n            I agree to abide by the Civil Community's ethical principles as described in the Civil Constitution\n          </p>\n        </StepFormSection>\n        <StepFormSection>\n          <CivilContext.Consumer>\n            {(value: CivilContextValue) => {\n              return (\n                <>\n                  <h4>Add signature and complete your charter</h4>\n                  <StepDescription>\n                    You will now cryptographically sign the constitution and add the signature to your charter and then\n                    save the charter to your newsroom smart contract. You will see two windows: one to sign this message\n                    and the other to confirm.\n                  </StepDescription>\n                  <TransactionButtonNoModal\n                    disabled={!this.state.agreedToConstitution}\n                    Button={props => {\n                      return (\n                        <MetaMaskLogoButton disabled={props.disabled} onClick={props.onClick}>\n                          Complete Your Charter\n                        </MetaMaskLogoButton>\n                      );\n                    }}\n                    transactions={this.getTransactions(value.civil!)}\n                  />\n                </>\n              );\n            }}\n          </CivilContext.Consumer>\n          {this.renderPreSignModal()}\n          {this.renderWaitingSignModal()}\n          {this.renderWaitingPublishModal()}\n          {this.renderMetaMaskRejectionModal()}\n          {this.renderMetaMaskPublishRejectionModal()}\n        </StepFormSection>\n      </>\n    );\n  }\n  private getTransactions = (civil: Civil, noPremodal?: boolean): Transaction[] => {\n    return [\n      {\n        requireBeforeTransaction: noPremodal\n          ? undefined\n          : async (): Promise<any> => {\n              return new Promise((res, rej) => {\n                this.setState({\n                  startTransaction: res,\n                  cancelTransaction: rej,\n                  preSignModalOpen: true,\n                });\n              });\n            },\n        transaction: async (): Promise<EthSignedMessage> => {\n          this.setState({ isWaitingSignatureOpen: true });\n          const constitutionHash = this.props.government ? this.props.government!.get(\"constitutionHash\") : \"[NONE]\";\n          return civil.signMessage(prepareConstitutionSignMessage(this.props.newsroomAdress!, constitutionHash));\n        },\n        postTransaction: async (sig: EthSignedMessage): Promise<void> => {\n          const { signature, message, signer } = sig;\n          const signatures = this.props.charter.signatures || [];\n          signatures.push({ signature, message, signer });\n          const charter = { ...this.props.charter, signatures };\n          this.props.updateCharter(charter);\n          this.setState({\n            isWaitingSignatureOpen: false,\n          });\n        },\n        handleTransactionError: (err: Error) => {\n          this.setState({ isWaitingSignatureOpen: false });\n          if (err.message.indexOf(\"Error: MetaMask Message Signature: User denied message signature.\") !== -1) {\n            this.setState({ metaMaskRejectionModal: true });\n          } else {\n            console.error(\"Transaction failed:\", err);\n            alert(\"Transaction failed: \" + err.message);\n          }\n        },\n      },\n      ...this.getPublishTransaction(civil),\n    ];\n  };\n\n  private getPublishTransaction = (civil: Civil): Transaction[] => {\n    return [\n      {\n        transaction: async () => {\n          this.setState({ isWaitingPublishModalOpen: true });\n          const charter = JSON.stringify(this.props.charter);\n\n          let uri;\n          let contentHash;\n          try {\n            if (this.props.ipfs) {\n              const files = await this.props.ipfs!.add(toBuffer(charter), {\n                hash: \"keccak-256\",\n                pin: true,\n              });\n              contentHash = hashContent(charter);\n              uri = `ipfs://${files[0].path}`;\n            } else {\n              const header = await civil.publishContent(charter, { hash: \"keccak-256\" });\n              uri = header.uri;\n              contentHash = header.contentHash;\n            }\n          } catch (e) {\n            console.error(\"Failed to publish charter to IPFS\", e);\n            throw Error(\"Failed to publish charter to IPFS: \" + ((e || {}).message || e));\n          }\n          return this.props.newsroom.updateRevisionURIAndHash(0, uri, contentHash);\n        },\n        handleTransactionHash: (hash: TxHash) => {\n          this.setState({ isWaitingPublishModalOpen: false });\n        },\n        postTransaction: () => {\n          this.props.dispatch!(fetchNewsroom(this.props.newsroomAdress!));\n        },\n        handleTransactionError: (err: Error) => {\n          this.setState({ isWaitingPublishModalOpen: false });\n          if (err.message.indexOf(\"Error: MetaMask Message Signature: User denied message signature.\") !== -1) {\n            this.setState({ metaMaskPublishRejectionModal: true });\n          } else {\n            console.error(\"Transaction failed:\", err);\n            alert(\"Transaction failed: \" + err.message);\n          }\n        },\n      },\n    ];\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: () => {\n        return;\n      },\n      startTransaction: () => {\n        return;\n      },\n      preSignModalOpen: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: () => {\n        return;\n      },\n      startTransaction: () => {\n        return;\n      },\n      preSignModalOpen: false,\n      isWaitingSignatureOpen: true,\n    });\n  };\n}\n\nconst mapStateToProps = (state: any, ownProps: SignConstitutionReduxProps): SignConstitutionReduxProps => {\n  const { newsroomGovernment } = state;\n  const newsroom = state.newsrooms.get(ownProps.newsroomAdress) || {};\n\n  return {\n    ...ownProps,\n    government: newsroomGovernment,\n    newsroom: newsroom.newsroom,\n  };\n};\n\nexport const SignConstitution = connect(mapStateToProps)(SignConstitutionComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/TransactionButtonInner.tsx",
    "content": "import * as React from \"react\";\nimport { TransactionButtonInnerProps, buttonSizes, Button } from \"@joincivil/components\";\n\nexport const TransactionButtonInner: React.FunctionComponent<TransactionButtonInnerProps> = (\n  props: TransactionButtonInnerProps,\n): JSX.Element => {\n  return (\n    <Button onClick={props.onClick} disabled={props.disabled} size={buttonSizes.MEDIUM_WIDE}>\n      {props.step === 1 && \"Waiting for confirmation...\"}\n      {props.step === 2 && \"Processing...\"}\n      {props.step === 0 && props.children}\n    </Button>\n  );\n};\n"
  },
  {
    "path": "packages/newsroom-manager/src/Welcome.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ManagerHeading, MetaMaskSideIcon } from \"@joincivil/components\";\n\nexport interface WelcomeProps {\n  helpUrl: string;\n  helpUrlBase: string;\n}\n\nconst IconWrap = styled.span`\n  position: relative;\n  top: 3px;\n  padding: 5px 4px 0;\n  border-radius: 2px;\n  border: solid 1px #dddddd;\n`;\n\nconst MoreDetails = styled.p`\n  color: #72777c;\n  && {\n    font-size: 13px;\n  }\n`;\n\nexport class Welcome extends React.Component<WelcomeProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <ManagerHeading>Welcome</ManagerHeading>\n\n        <p>\n          Before getting started setting up your newsroom and applying to the Civil Registry, you'll need to take the\n          following steps.\n        </p>\n\n        <p>\n          You'll need an Ethereum wallet-enabled browser (\n          <a href=\"https://www.google.com/chrome/\" target=\"_blank\">\n            Chrome\n          </a>\n          ,{\" \"}\n          <a href=\"https://brave.com/\" target=\"_blank\">\n            Brave\n          </a>\n          , or{\" \"}\n          <a href=\"https://www.mozilla.org/firefox/\" target=\"_blank\">\n            Firefox\n          </a>\n          ) with the{\" \"}\n          <a href=\"https://metamask.io/\" target=\"_blank\">\n            MetaMask\n          </a>{\" \"}\n          <IconWrap>\n            <MetaMaskSideIcon />\n          </IconWrap>{\" \"}\n          extension installed.{\" \"}\n          <a href={this.props.helpUrl} target=\"_blank\">\n            Read our guide\n          </a>{\" \"}\n          to learn more about browsers and wallets.{\" \"}\n        </p>\n\n        <p>Next, you'll create your newsroom smart contract. Have the following information ready before you begin:</p>\n\n        <ol>\n          <li>Your public wallet address - this will be pulled from MetaMask</li>\n          <li>\n            Funds in your wallet - you will need a small amount of Ether (ETH) to pay for{\" \"}\n            <a href={this.props.helpUrlBase + \"articles/360016788791-What-is-Gas-\"} target=\"_blank\">\n              gas\n            </a>{\" \"}\n            fees.{\" \"}\n          </li>\n          <li>Your newsroom name</li>\n          <li>The public wallet addresses for your newsroom's officers and editors that you want to include</li>\n        </ol>\n\n        <p>\n          You’ll be able to use Civil’s blockchain signing and publishing tools once your newsroom smart contract is\n          created. After that, you will complete your Newsroom Application by applying to the Civil Registry. You will\n          create your charter, sign the Civil Constitution and deposit CVL tokens.\n        </p>\n\n        <MoreDetails>\n          For full details about the Civil Newsroom Manager,{\" \"}\n          <a href={this.props.helpUrl} target=\"_blank\">\n            visit our FAQ\n          </a>\n          .{\" \"}\n        </MoreDetails>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-manager/src/actionCreators.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { findIndex } from \"lodash\";\nimport { EthAddress, CharterData, RosterMember } from \"@joincivil/typescript-types\";\nimport { Civil } from \"@joincivil/core\";\nimport { getInfuraUrlFromIpfs, sanitizeConstitutionHtml } from \"@joincivil/utils\";\nimport { NewsroomState, StateWithNewsroom } from \"./reducers\";\nimport { CmsUserData } from \"./types\";\nimport { makeUserObject } from \"./utils\";\n\nexport enum newsroomActions {\n  ADD_NEWSROOM = \"ADD_NEWSROOM\",\n  UPDATE_NEWSROOM = \"UPDATE_NEWSROOM\",\n  CHANGE_NAME = \"CHANGE_NAME\",\n  ADD_EDITOR = \"ADD_EDITOR\",\n  ADD_OWNER = \"ADD_OWNER\",\n  REMOVE_EDITOR = \"REMOVE_EDITOR\",\n  SET_IS_OWNER = \"SET_IS_OWNER\",\n  SET_IS_EDITOR = \"SET_IS_EDITOR\",\n}\n\nexport enum uiActions {\n  ADD_GET_CMS_USER_DATA_FOR_ADDRESS = \"ADD_GET_CMS_USER_DATA_FOR_ADDRESS\",\n  GET_CMS_USER_DATA_FOR_ADDRESS = \"GET_CMS_USER_DATA_FOR_ADDRESS\",\n  ADD_PERSIST_CHARTER = \"ADD_PERSIST_CHARTER\",\n  PERSIST_CHARTER = \"PERSIST_CHARTER\",\n}\n\nexport enum userActions {\n  STORE_USER_DATA = \"STORE_USER_DATA\",\n}\n\nexport enum governmentActions {\n  ADD_CONSTITUTION_URI = \"ADD_CONSTITUTION_URI\",\n  ADD_CONSTITUTION_HASH = \"ADD_CONSTITUTION_HASH\",\n  ADD_CONSTITUTION_CONTENT = \"ADD_CONSTITUTION_CONTENT\",\n}\n\nexport const getEditors = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<void> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  newsroom\n    .editors()\n    .distinct()\n    .forEach(val => {\n      dispatch(initContractMember(address, val));\n      dispatch(addEditor(address, val));\n    });\n};\n\nexport const getNewsroom = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  const wrapper = await newsroom.getNewsroomWrapper();\n  wrapper.data.owners.forEach((userAddress: EthAddress) => {\n    dispatch(initContractMember(address, userAddress));\n  });\n  return dispatch(updateNewsroom(address, { wrapper, newsroom }));\n};\n\nexport const getIsOwner = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  return dispatch(setIsOwner(address, await newsroom.isOwner()));\n};\n\nexport const getIsEditor = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  return dispatch(setIsEditor(address, await newsroom.isEditor()));\n};\n\nexport const addNewsroom = (newsroom: NewsroomState): AnyAction => {\n  return {\n    type: newsroomActions.ADD_NEWSROOM,\n    data: newsroom,\n  };\n};\n\nexport const updateNewsroom = (address: EthAddress, data: any): AnyAction => {\n  return {\n    type: newsroomActions.UPDATE_NEWSROOM,\n    data: {\n      address,\n      ...data,\n    },\n  };\n};\n\nexport const addEditor = (address: EthAddress, editor: EthAddress): AnyAction => {\n  return {\n    type: newsroomActions.ADD_EDITOR,\n    data: {\n      address,\n      editor,\n    },\n  };\n};\n\nexport const addOwner = (address: EthAddress, owner: EthAddress): AnyAction => {\n  return {\n    type: newsroomActions.ADD_OWNER,\n    data: {\n      address,\n      owner,\n    },\n  };\n};\n\nexport const removeEditor = (address: EthAddress, editor: EthAddress) => {\n  return {\n    type: newsroomActions.REMOVE_EDITOR,\n    data: {\n      address,\n      editor,\n    },\n  };\n};\n\nexport const setIsOwner = (address: EthAddress, isOwner: boolean) => {\n  return {\n    type: newsroomActions.SET_IS_OWNER,\n    data: {\n      address,\n      isOwner,\n    },\n  };\n};\n\nexport const setIsEditor = (address: EthAddress, isEditor: boolean) => {\n  return {\n    type: newsroomActions.SET_IS_EDITOR,\n    data: {\n      address,\n      isEditor,\n    },\n  };\n};\n\nexport const changeName = (address: EthAddress, name: string): AnyAction => {\n  return {\n    type: newsroomActions.CHANGE_NAME,\n    data: { name, address },\n  };\n};\n\nexport const updateCharter = (address: EthAddress, charter: Partial<CharterData>): any => (\n  dispatch: any,\n  getState: any,\n): AnyAction => {\n  const { newsrooms, newsroomUi }: StateWithNewsroom = getState();\n  const newsroom = newsrooms.get(address) || { wrapper: { data: {} } };\n  const persistCharter = newsroomUi.get(uiActions.PERSIST_CHARTER);\n  if (persistCharter) {\n    persistCharter(charter);\n  }\n  return dispatch(\n    updateNewsroom(address, {\n      ...newsroom,\n      charter,\n    }),\n  );\n};\n\nexport const fetchNewsroom = (address: EthAddress): any => async (dispatch: any, getState: any) => {\n  const { newsrooms }: StateWithNewsroom = getState();\n  const newsroom = newsrooms.get(address);\n  const wrapper = await newsroom.newsroom!.getNewsroomWrapper();\n  await dispatch(updateNewsroom(address, { ...newsroom, wrapper }));\n  // might have additional owners now, so:\n  wrapper.data.owners.forEach((userAddress: EthAddress) => {\n    dispatch(initContractMember(address, userAddress));\n  });\n};\n\nexport const addGetCmsUserDataForAddress = (func: (address: EthAddress) => Promise<CmsUserData>): AnyAction => {\n  return {\n    type: uiActions.ADD_GET_CMS_USER_DATA_FOR_ADDRESS,\n    data: func,\n  };\n};\n\nexport const addPersistCharter = (func: (charter: Partial<CharterData>) => void): AnyAction => {\n  return {\n    type: uiActions.ADD_PERSIST_CHARTER,\n    data: func,\n  };\n};\n\nexport const ensureUserOnRoster = (newsroomAddress: EthAddress, address: EthAddress, userData?: CmsUserData): any => (\n  dispatch: any,\n  getState: any,\n) => {\n  const { newsrooms, newsroomUsers }: StateWithNewsroom = getState();\n  const charter = (newsrooms.get(newsroomAddress) || {}).charter || {};\n  let roster = charter.roster || [];\n\n  const rosterMemberIndex = findIndex(\n    roster,\n    member => (member.ethAddress || \"\").toLowerCase() === address.toLowerCase(),\n  );\n  if (rosterMemberIndex === -1) {\n    const user = makeUserObject(address, userData || newsroomUsers.get(address));\n    roster = roster.concat(user.rosterData as RosterMember);\n  } else {\n    // Make sure it's up to date in case there are any changes to these read-only fields we populate from the CMS:\n    if (userData) {\n      const rosterMember = roster[rosterMemberIndex];\n      roster[rosterMemberIndex] = {\n        ...rosterMember,\n        name: userData.displayName || rosterMember.name,\n        avatarUrl: userData.avatarUrl || rosterMember.avatarUrl,\n      };\n    }\n  }\n\n  dispatch(\n    updateCharter(newsroomAddress, {\n      ...charter,\n      roster,\n    }),\n  );\n};\n\nexport const storeUserData = (newsroomAddress: EthAddress, address: EthAddress, userData: CmsUserData): AnyAction => {\n  return {\n    type: userActions.STORE_USER_DATA,\n    data: {\n      address,\n      userData,\n    },\n  };\n};\n\n/* Ensures we have fetched and stored data for this user (if possible) and added to roster. */\nexport const initContractMember = (newsroomAddress: EthAddress, userAddress: EthAddress): any => async (\n  dispatch: any,\n  getState: any,\n) => {\n  const state = getState();\n  let userData = state.newsroomUsers.get(userAddress);\n\n  const getCmsUserDataForAddress = state.newsroomUi.get(uiActions.GET_CMS_USER_DATA_FOR_ADDRESS);\n  if (!userData && getCmsUserDataForAddress) {\n    userData = await getCmsUserDataForAddress(userAddress);\n    dispatch(storeUserData(newsroomAddress, userAddress, userData));\n  }\n\n  dispatch(ensureUserOnRoster(newsroomAddress, userAddress, userData));\n};\n\nexport const addAndHydrateEditor = (newsroomAddress: EthAddress, editorAddress: EthAddress): any => async (\n  dispatch: any,\n  getState: any,\n) => {\n  dispatch(addEditor(newsroomAddress, editorAddress));\n  return dispatch(initContractMember(newsroomAddress, editorAddress));\n};\n\nexport const addAndHydrateOwner = (newsroomAddress: EthAddress, ownerAddress: EthAddress): any => async (\n  dispatch: any,\n  getState: any,\n) => {\n  dispatch(addOwner(newsroomAddress, ownerAddress));\n  return dispatch(initContractMember(newsroomAddress, ownerAddress));\n};\n\nexport const addConstitutionUri = (uri: string): AnyAction => {\n  return {\n    type: governmentActions.ADD_CONSTITUTION_URI,\n    data: {\n      uri,\n    },\n  };\n};\n\nexport const fetchConstitution = (ipfsAddress: string): any => async (dispatch: any) => {\n  const infuraUrl = getInfuraUrlFromIpfs(ipfsAddress);\n  const constitution = await fetch(infuraUrl).then(async body => body.json());\n  return dispatch({\n    type: governmentActions.ADD_CONSTITUTION_CONTENT,\n    data: {\n      content: sanitizeConstitutionHtml(constitution.content),\n    },\n  });\n};\n\nexport const addConstitutionHash = (hash: string): AnyAction => {\n  return {\n    type: governmentActions.ADD_CONSTITUTION_HASH,\n    data: {\n      hash,\n    },\n  };\n};\n"
  },
  {
    "path": "packages/newsroom-manager/src/contentViewer/ContentItem.tsx",
    "content": "import * as React from \"react\";\nimport { Map } from \"immutable\";\nimport { RevisionAndJson } from \"./reducers\";\nimport { Revision } from \"./Revision\";\n\nexport interface ContentItemProps {\n  content: Map<number, RevisionAndJson>;\n}\n\nexport class ContentItem extends React.Component<ContentItemProps> {\n  public render(): JSX.Element {\n    const content = this.props.content.toArray();\n    return (\n      <div>\n        <h3>{content[0].revision.contentId || \"charter\"}</h3>\n        {content.map(\n          (item: RevisionAndJson): JSX.Element => {\n            return (\n              <div key={item.revision.revisionId}>\n                <Revision {...item} />\n              </div>\n            );\n          },\n        )}\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-manager/src/contentViewer/ContentViewer.tsx",
    "content": "import * as React from \"react\";\nimport { Map } from \"immutable\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { addRevision } from \"./actions\";\nimport { EthContentHeader } from \"@joincivil/typescript-types\";\nimport { ContentViewerReduxState, RevisionAndJson } from \"./reducers\";\nimport { ContentItem } from \"./ContentItem\";\nimport { Newsroom } from \"@joincivil/core/build/src/contracts/newsroom\";\n\nexport interface ContentViewerProps {\n  newsroom: Newsroom;\n}\nexport interface ContentInternalViewerProps extends ContentViewerProps {\n  content: Map<number, Map<number, RevisionAndJson>>;\n}\n\nclass ContentViewerComponent extends React.Component<ContentInternalViewerProps & DispatchProp<any>> {\n  public componentDidMount(): void {\n    this.props.newsroom.revisions().subscribe((item: EthContentHeader) => {\n      this.props.dispatch!(addRevision(item));\n    });\n  }\n  public render(): JSX.Element {\n    const content = this.props.content.toArray();\n    return (\n      <div>\n        <h2> Content </h2>\n        {content.map(\n          (item: Map<number, RevisionAndJson>, index: number): JSX.Element => (\n            <ContentItem key={index} content={item} />\n          ),\n        )}\n      </div>\n    );\n  }\n}\n\nconst mapStateToProps = (state: ContentViewerReduxState, ownProps: ContentViewerProps): ContentInternalViewerProps => {\n  return {\n    content: state.newsroomContent,\n    ...ownProps,\n  };\n};\n\nexport const ContentViewer = connect(mapStateToProps)(ContentViewerComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/contentViewer/Revision.tsx",
    "content": "import * as React from \"react\";\nimport { EthContentHeader } from \"@joincivil/typescript-types\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { fetchRevisionJson } from \"./actions\";\nimport styled from \"styled-components\";\n\nexport interface RevisionProps {\n  revision: EthContentHeader;\n  revisionJson?: any;\n}\n\nconst Table = styled.table`\n  border: 1px solid black;\n`;\n\nconst Tr = styled.tr`\n  border: 1px solid black;\n`;\n\nconst Td = styled.td`\n  border: 1px solid black;\n`;\n\nclass RevisionComponent extends React.Component<RevisionProps & DispatchProp<any>> {\n  public renderJsonSection(): JSX.Element {\n    if (!this.props.revisionJson) {\n      return (\n        <Tr>\n          <Td>\n            <button onClick={this.onClick}>get revision</button>\n          </Td>\n        </Tr>\n      );\n    }\n    const revisionJson = this.props.revisionJson;\n    return (\n      <>\n        <Tr>\n          <Td>title: {revisionJson.title}</Td>\n        </Tr>\n        <Tr>\n          <Td>slug: {revisionJson.slug}</Td>\n        </Tr>\n        <Tr>\n          <Td>description: {revisionJson.description}</Td>\n        </Tr>\n        {revisionJson.images.length &&\n          revisionJson.images.map((item: any) => {\n            return (\n              <>\n                <Tr>\n                  <Td>height: {item.h}</Td>\n                  <Td>width: {item.w}</Td>\n                  <Td>hash: {item.hash}</Td>\n                  <Td>url: {item.url}</Td>\n                </Tr>\n                <Tr>\n                  <img src={item.url} />\n                </Tr>\n              </>\n            );\n          })}\n        <Tr>\n          <Td>canonical url: {revisionJson.canonicalUrl}</Td>\n          <Td>civil schema version: {revisionJson.civilSchemaVersion}</Td>\n        </Tr>\n        <Tr>\n          <h4>Contributors</h4>\n        </Tr>\n        {revisionJson.contributors.map((item: any) => {\n          return (\n            <Tr>\n              <Td>role: {item.role}</Td>\n              <Td>name: {item.name}</Td>\n              <Td>signature: {item.signature}</Td>\n              <Td>address: {item.address}</Td>\n            </Tr>\n          );\n        })}\n        <Tr>\n          <h4>Credibility Indicators</h4>\n        </Tr>\n        <Tr>\n          <Td>original reporting: {`${revisionJson.credibilityIndicators.original_reporting}`}</Td>\n          <Td>on the ground: {`${revisionJson.credibilityIndicators.on_the_ground}`}</Td>\n          <Td>sources cited: {`${revisionJson.credibilityIndicators.sources_cited}`}</Td>\n          <Td>subject specialist: {`${revisionJson.credibilityIndicators.subject_specialist}`}</Td>\n        </Tr>\n        <Tr>\n          <Td>opinion: {`${revisionJson.opinion}`}</Td>\n        </Tr>\n        <Tr>\n          <Td>original publish date: {revisionJson.originalPublishDate}</Td>\n        </Tr>\n        <Tr>\n          <Td>primary tag: {revisionJson.primaryTag}</Td>\n        </Tr>\n        <Tr>\n          <Td>revision content hash: {revisionJson.revisionContentHash}</Td>\n        </Tr>\n        <Tr>\n          <Td>revision content url: {revisionJson.revisionContentUrl}</Td>\n        </Tr>\n        <Tr>\n          <Td>revision date: {revisionJson.revisionDate}</Td>\n        </Tr>\n        <Tr>\n          <Td>tags: {revisionJson.tags.join(\", \")}</Td>\n        </Tr>\n      </>\n    );\n  }\n  public render(): JSX.Element {\n    return (\n      <Table>\n        <thead>\n          <Tr>\n            <Td>revision id: {this.props.revision.revisionId}</Td>\n            <Td>content id: {this.props.revision.contentId}</Td>\n          </Tr>\n        </thead>\n        <tbody>\n          <Tr>\n            <Td>revision url: {this.props.revision.uri}</Td>\n          </Tr>\n          <Tr>\n            <Td>hash:{this.props.revision.contentHash}</Td>\n          </Tr>\n          <Tr>\n            <Td>block number: {this.props.revision.blockNumber}</Td>\n            <Td>time stamp: {this.props.revision.timestamp!.toDateString()}</Td>\n          </Tr>\n          <Tr>\n            <Td>transaction hash: {this.props.revision.transactionHash}</Td>\n          </Tr>\n          {this.renderJsonSection()}\n        </tbody>\n      </Table>\n    );\n  }\n  private onClick = (): void => {\n    this.props.dispatch!(\n      fetchRevisionJson(this.props.revision.uri, this.props.revision.contentId!, this.props.revision.revisionId!),\n    );\n  };\n}\n\nexport const Revision = connect()(RevisionComponent);\n"
  },
  {
    "path": "packages/newsroom-manager/src/contentViewer/actions.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { EthContentHeader } from \"@joincivil/typescript-types\";\n\nexport const ADD_REVISION = \"ADD_REVISION\";\nexport const ADD_REVISION_JSON = \"ADD_REVISION_JSON\";\n\nconst fetchRevision = async (uri: string) => {\n  return new Promise((resolve, reject) => {\n    fetch(uri)\n      .then(async res => res.json())\n      .then(json => {\n        resolve(json);\n      })\n      .catch(e => {\n        reject(e);\n      });\n  });\n};\n\nexport const addRevision = (revision: EthContentHeader): AnyAction => {\n  return {\n    type: ADD_REVISION,\n    data: revision,\n  };\n};\n\nexport const fetchRevisionJson = (uri: string, contentId: number, revisionId: number): any => async (\n  dispatch: any,\n): Promise<AnyAction> => {\n  const json = await fetchRevision(uri);\n  return dispatch({\n    type: ADD_REVISION_JSON,\n    data: {\n      contentId,\n      revisionId,\n      json,\n    },\n  });\n};\n"
  },
  {
    "path": "packages/newsroom-manager/src/contentViewer/index.ts",
    "content": "export * from \"./ContentViewer\";\nexport * from \"./reducers\";\nexport * from \"./actions\";\n"
  },
  {
    "path": "packages/newsroom-manager/src/contentViewer/reducers.ts",
    "content": "import { Map } from \"immutable\";\nimport { AnyAction } from \"redux\";\nimport { EthContentHeader } from \"@joincivil/typescript-types\";\nimport { ADD_REVISION, ADD_REVISION_JSON } from \"./actions\";\n\nexport interface ContentViewerReduxState {\n  newsroomContent: Map<number, Map<number, RevisionAndJson>>;\n}\n\nexport interface RevisionAndJson {\n  revision: EthContentHeader;\n  revisionJson: any;\n}\n\nexport function newsroomContent(\n  state: Map<number, Map<number, RevisionAndJson>> = Map(),\n  action: AnyAction,\n): Map<number, Map<number, RevisionAndJson>> {\n  let newState = state;\n  switch (action.type) {\n    case ADD_REVISION:\n      if (!state.get(action.data.contentId)) {\n        newState = state.set(action.data.contentId, Map());\n      }\n      newState = newState.setIn([action.data.contentId, action.data.revisionId], { revision: action.data });\n      return newState;\n    case ADD_REVISION_JSON:\n      const revision = newState.getIn([action.data.contentId, action.data.revisionId]);\n      return newState.setIn([action.data.contentId, action.data.revisionId], {\n        ...revision,\n        revisionJson: action.data.json,\n      });\n    default:\n      return newState;\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-manager/src/index.ts",
    "content": "export * from \"./Newsroom\";\nexport * from \"./reducers\";\nexport * from \"./actionCreators\";\nexport * from \"./contentViewer\";\nexport * from \"./utils\";\nexport * from \"./types\";\n"
  },
  {
    "path": "packages/newsroom-manager/src/reducers.ts",
    "content": "import { Map, Set } from \"immutable\";\nimport { AnyAction } from \"redux\";\nimport { NewsroomWrapper, EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport { newsroomActions, uiActions, userActions, governmentActions } from \"./actionCreators\";\nimport { CmsUserData } from \"./types\";\n\nexport interface NewsroomState {\n  address: EthAddress;\n  wrapper: NewsroomWrapper;\n  newsroom?: any;\n  editors?: Set<EthAddress>;\n  isOwner?: boolean;\n  isEditor?: boolean;\n  charter?: Partial<CharterData>;\n}\n\nexport interface StateWithNewsroom {\n  newsrooms: Map<string, NewsroomState>;\n  newsroomUi: Map<string, any>;\n  newsroomUsers: Map<EthAddress, CmsUserData>;\n  newsroomGovernment: Map<string, string>;\n}\n\nexport function newsrooms(\n  state: Map<string, NewsroomState> = Map<string, NewsroomState>({\n    \"\": { editors: Set(), wrapper: { data: {} } },\n  }),\n  action: AnyAction,\n): Map<string, NewsroomState> {\n  let newsroom;\n  let editors;\n  switch (action.type) {\n    case newsroomActions.ADD_NEWSROOM:\n      return state.set(action.data.address, action.data);\n    case newsroomActions.UPDATE_NEWSROOM:\n      return state.set(action.data.address, {\n        address: action.data.address,\n        ...state.get(action.data.address),\n        ...action.data,\n      });\n    case newsroomActions.CHANGE_NAME:\n      newsroom = state.get(action.data.address);\n      newsroom.wrapper.data.name = action.data.name;\n      return state.set(action.data.address, newsroom);\n    case newsroomActions.ADD_EDITOR:\n      newsroom = state.get(action.data.address);\n      editors = newsroom.editors || Set<EthAddress>();\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        editors: editors.add(action.data.editor),\n      });\n    case newsroomActions.ADD_OWNER:\n      newsroom = state.get(action.data.address);\n      newsroom.wrapper.data.owners = [...newsroom.wrapper.data.owners, action.data.owner];\n      return state.set(action.data.address, newsroom);\n    case newsroomActions.REMOVE_EDITOR:\n      newsroom = state.get(action.data.address);\n      editors = newsroom.editors || Set<EthAddress>();\n      return state.set(action.data.address, {\n        ...newsroom,\n        editors: editors.delete(action.data.editor),\n      });\n    case newsroomActions.SET_IS_OWNER:\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        isOwner: action.data.isOwner,\n      });\n    case newsroomActions.SET_IS_EDITOR:\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        isEditor: action.data.isEditor,\n      });\n    default:\n      return state;\n  }\n}\n\nexport function newsroomUi(state: Map<string, any> = Map(), action: AnyAction): Map<string, any> {\n  switch (action.type) {\n    case uiActions.ADD_GET_CMS_USER_DATA_FOR_ADDRESS:\n      return state.set(uiActions.GET_CMS_USER_DATA_FOR_ADDRESS, action.data);\n    case uiActions.ADD_PERSIST_CHARTER:\n      return state.set(uiActions.PERSIST_CHARTER, action.data);\n    default:\n      return state;\n  }\n}\n\nexport function newsroomUsers(\n  state: Map<EthAddress, CmsUserData> = Map(),\n  action: AnyAction,\n): Map<EthAddress, CmsUserData> {\n  switch (action.type) {\n    case userActions.STORE_USER_DATA:\n      return state.set(action.data.address, action.data.userData);\n    default:\n      return state;\n  }\n}\n\nexport function newsroomGovernment(state: Map<string, string> = Map(), action: AnyAction): Map<string, string> {\n  switch (action.type) {\n    case governmentActions.ADD_CONSTITUTION_HASH:\n      return state.set(\"constitutionHash\", action.data.hash);\n    case governmentActions.ADD_CONSTITUTION_URI:\n      return state.set(\"constitutionUri\", action.data.uri);\n    case governmentActions.ADD_CONSTITUTION_CONTENT:\n      return state.set(\"constitutionContent\", action.data.content);\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-manager/src/styledComponents.tsx",
    "content": "import {\n  colors,\n  fonts,\n  Button,\n  TextInput,\n  TextareaInput,\n  QuestionToolTip as _QuestionToolTip,\n} from \"@joincivil/components\";\n// tslint:disable-next-line:no-unused-variable\nimport * as React from \"react\"; // needed to export styled components\nimport styled from \"styled-components\";\n\nexport const FormSection = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding-top: 10px;\n  padding-bottom: 40px;\n`;\n\nexport const FormTitle = styled.h4`\n  font-size: 16px;\n  color: #000;\n  font-family: ${fonts.SANS_SERIF};\n  margin-right: 15px;\n`;\n\nexport interface FormSubheadProps {\n  optional?: any;\n}\nexport const FormSubhead = styled.h4<FormSubheadProps>`\n  font-size: 14px;\n  font-weight: 500;\n  color: #23282d;\n  font-family: ${fonts.SANS_SERIF};\n  margin-bottom: 5px;\n\n  ${props =>\n    props.optional &&\n    `\n    &:after {\n      content: \" (optional)\";\n      font-style: italic;\n    }\n  `};\n`;\n\nexport const FormRow = styled.div`\n  display: flex;\n  justify-content: space-between;\n`;\nexport const FormRowItem = styled.div`\n  flex: 1;\n  padding-right: 15px;\n  &:last-child {\n    padding-right: 0;\n  }\n`;\n\nexport const HelperText = styled.div`\n  margin-top: -6px;\n  padding-left: 15px;\n  font-size: 13px;\n  color: #72777c;\n`;\n\nexport const TertiaryButton = styled(Button)`\n  border-radius: 3px;\n  background-color: #f7f7f7;\n  border: solid 1px #cccccc;\n  font-size: 13px;\n  font-weight: normal;\n  color: #555555;\n  &:active,\n  &:hover {\n    border-radius: 3px;\n    background-color: #f7f7f7;\n    border: solid 1px #cccccc;\n    color: #555555;\n  }\n`;\n\nexport const StyledTextInput = styled(TextInput)`\n  position: relative;\n  small {\n    position: absolute;\n    width: 100%;\n    top: 45px;\n    right: 15px;\n    text-align: right;\n  }\n`;\n\nexport const StyledTextareaInput = styled(TextareaInput)`\n  position: relative;\n  small {\n    position: absolute;\n    width: 100%;\n    top: 75px;\n    right: 15px;\n    text-align: right;\n  }\n`;\n\nexport const QuestionToolTip = styled(_QuestionToolTip)`\n  position: relative;\n  top: 2px;\n`;\n"
  },
  {
    "path": "packages/newsroom-manager/src/types.ts",
    "content": "import { RosterMember } from \"@joincivil/typescript-types\";\n\n/** Data about a wallet address that we get from the CMS. */\nexport type CmsUserData =\n  | {\n      displayName?: string;\n      username?: string;\n      avatarUrl?: string;\n      bio?: string;\n    }\n  | undefined;\n\nexport interface UserData {\n  rosterData: Partial<RosterMember>;\n  isCmsUser?: boolean;\n  username?: string;\n}\n"
  },
  {
    "path": "packages/newsroom-manager/src/utils.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { uiActions } from \"./actionCreators\";\nimport { CmsUserData, UserData } from \"./types\";\n\nexport const getUserObject = (state: StateWithNewsroom, address: EthAddress): UserData => {\n  const userData = state.newsroomUi.get(uiActions.GET_CMS_USER_DATA_FOR_ADDRESS) && state.newsroomUsers.get(address);\n  return makeUserObject(address, userData);\n};\n\nexport const makeUserObject = (address: EthAddress, userData?: CmsUserData): UserData => {\n  return {\n    rosterData: {\n      ethAddress: address,\n      name: userData && userData.displayName,\n      avatarUrl: userData && userData.avatarUrl,\n      bio: userData && userData.bio,\n    },\n    isCmsUser: !!userData,\n    username: userData && userData.username,\n  };\n};\n"
  },
  {
    "path": "packages/newsroom-manager/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"baseUrl\": \"src/\",\n    \"outDir\": \"build/\",\n    \"sourceMap\": true,\n    \"jsx\": \"react\",\n    \"moduleResolution\": \"node\",\n    \"rootDir\": \"src\",\n    \"noImplicitReturns\": true,\n    \"suppressImplicitAnyIndexErrors\": true,\n    \"strictPropertyInitialization\": false\n  },\n  \"exclude\": [\"node_modules\", \"build\", \"scripts\", \"acceptance-tests\", \"webpack\", \"jest\", \"src/setupTests.ts\"],\n  \"include\": [\"./**/*.ts\", \"./**/*.tsx\"],\n  \"types\": [\"react\", \"jest\"]\n}\n"
  },
  {
    "path": "packages/newsroom-manager/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"],\n    \"no-var-requires\": false\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/package.json",
    "content": "{\n  \"name\": \"@joincivil/newsroom-signup\",\n  \"version\": \"1.8.11\",\n  \"description\": \"ui for managing a newsroom contract\",\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"repository\": \"https://github.com/joincivil/Civil\",\n  \"license\": \"MIT\",\n  \"private\": false,\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"lint\": \"tslint --project ./\",\n    \"clean\": \"rimraf build/\",\n    \"prepublish\": \"run-s build\",\n    \"test\": \"echo \\\"add tests please\\\"\"\n  },\n  \"dependencies\": {\n    \"@joincivil/components\": \"^1.9.10\",\n    \"@joincivil/core\": \"^4.8.11\",\n    \"@joincivil/ethapi\": \"^0.4.9\",\n    \"@joincivil/utils\": \"^1.9.9\",\n    \"@types/styled-components\": \"^4.1.18\",\n    \"ethereumjs-util\": \"^5.2.0\",\n    \"graphql-tag\": \"^2.9.2\",\n    \"lodash\": \"^4.17.10\",\n    \"react-add-to-calendar\": \"^0.1.5\",\n    \"react-apollo\": \"^2.3.3\",\n    \"react-select\": \"^2.4.2\",\n    \"redux-beacon\": \"^2.0.5\",\n    \"sanitize-html\": \"^1.20.0\"\n  },\n  \"devDependencies\": {\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@redux-beacon/google-analytics\": \"^1.2.0\",\n    \"@types/react\": \"^16.9.0\",\n    \"@types/react-dom\": \"^16.9.0\",\n    \"@types/react-router-dom\": \"^4.2.5\",\n    \"@types/react-select\": \"^2.0.15\",\n    \"@types/redux-thunk\": \"^2.1.0\",\n    \"immutable\": \"^3.8.2\",\n    \"npm-run-all\": \">=4.1.5\",\n    \"react\": \"^16.11.0\",\n    \"react-dom\": \"^16.11.0\",\n    \"react-redux\": \"^7.1.1\",\n    \"react-router-dom\": \"^5.1.2\",\n    \"redux\": \"^4.0.0\",\n    \"rimraf\": \"^2.6.2\",\n    \"styled-components\": \"^5.0.0-beta.8\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"peerDependencies\": {\n    \"react\": \"^16.8\",\n    \"react-dom\": \"^16.8\",\n    \"react-redux\": \"^7.1.1\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/AboutApplicationButton.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton, buttonSizes } from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\nimport { InfoModalButton, Header, SectionHeader, Paragraph } from \"../InfoModalButton\";\n\nexport class AboutApplicationButton extends React.Component {\n  public render(): JSX.Element | null {\n    return (\n      <InfoModalButton\n        buttonText=\"Learn more about the Application Review Process\"\n        content={\n          <>\n            <Header>About Application Review</Header>\n            <Paragraph>In this section we'll help explain your Newsroom Application Review process.</Paragraph>\n\n            <SectionHeader>Application Deposit</SectionHeader>\n            {/*@TODO/toby Populate from parameterizer*/}\n            <Paragraph>\n              Once your application is complete, you can submit your application to the Registry for review. You need to\n              stake 5,000 Civil tokens with your application.\n            </Paragraph>\n            <Paragraph>\n              If your Newsroom wallet doesn’t have enough tokens, you can add more Civil tokens to your Newsroom wallet.\n              Don’t worry, we’ll guide you along that process before you apply.\n            </Paragraph>\n\n            <SectionHeader>Applying to the Registry</SectionHeader>\n            {/*@TODO/toby Populate from parameterizer*/}\n            <Paragraph>\n              You will need to stake 5,000 Civil tokens with your application. This is to signal the seriousness of your\n              intent to the community.\n            </Paragraph>\n            <Paragraph>\n              Once you have applied, your application for the Registry will be up for community vote and review on the\n              Application in Review tab of the Civil Registry for 14 days. A newsroom will be approved if there are no\n              sucessful challenges.\n            </Paragraph>\n            <Paragraph>\n              During that time period, any CVL token holder may challenge this newsroom by matching the application\n              deposit if they believe the newsroom’s mission, charter or roster is in any way a violation of the\n              principles of the{\" \"}\n              <a href={urlConstants.CONSTITUTION} target=\"_blank\">\n                Civil Constitution\n              </a>\n              . If there are no challenges, this newsroom will be automatically approved. If there is a challenge, this\n              newsroom will not be able to edit their charter or profile until after the challenge period is over. By\n              applying to the{\" \"}\n              <a href={urlConstants.REGISTRY} target=\"_blank\">\n                Civil Registry\n              </a>\n              , newsroom is committed to upholding the values of the{\" \"}\n              <a href={urlConstants.CONSTITUTION} target=\"_blank\">\n                Civil Constitution\n              </a>\n              .\n            </Paragraph>\n            <Paragraph>\n              The Registry is designed with checks and balances in place to ensure that all voices and perspectives have\n              an opportunity to be heard in the Civil community. You can learn more about the review and challenge\n              phases{\" \"}\n              <a href={urlConstants.FAQ_COMMUNITY_VETTING_PROCESS} target=\"_blank\">\n                here\n              </a>\n              .\n            </Paragraph>\n\n            <InvertedButton size={buttonSizes.SMALL} target=\"_blank\" href={urlConstants.FAQ_HOME}>\n              Read more on our FAQ\n            </InvertedButton>\n          </>\n        }\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/ApplyToTCR.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  OBCollapsable,\n  OBSectionHeader,\n  OBSectionDescription,\n  CREATE_NEWSROOM_CHANNEL_MUTATION,\n  NRSIGNUP_DELETE,\n} from \"@joincivil/components\";\nimport { Mutation, MutationFunc } from \"react-apollo\";\nimport { saveApplyTxMutation } from \"../mutations\";\nimport { getCharterQuery } from \"../queries\";\nimport { ApplyToTCRStepOwnProps, ApplyToTCRStepReduxProps } from \"./index\";\nimport TransferToMultisig, { TransferPostTransactionProp } from \"./TransferToMultisig\";\nimport ApplyToTCRForm, { ApplyPostTransactionProp } from \"./ApplyToTCRForm\";\nimport { AboutApplicationButton } from \"./AboutApplicationButton\";\n\nexport type TApplyToTCRProps = ApplyToTCRStepOwnProps &\n  ApplyToTCRStepReduxProps &\n  TransferPostTransactionProp &\n  ApplyPostTransactionProp;\n\nconst TransferredCollapsable = styled(OBCollapsable)`\n  padding-top: 36px;\n  padding-bottom: 36px;\n`;\n\nclass ApplyToTCR extends React.Component<TApplyToTCRProps> {\n  public render(): JSX.Element {\n    const { address, minDeposit, multisigAddress, multisigHasMinDeposit, postApplyToTCR } = this.props;\n\n    // TODO: This would be a good place for a loading indicator\n    if (!minDeposit || !multisigAddress) {\n      return <>Loading...</>;\n    }\n\n    return (\n      <>\n        <OBSectionHeader>Apply to the Civil Registry</OBSectionHeader>\n        <OBSectionDescription>\n          Your application and Civil tokens are ready to be submitted to the Civil Registry. Your Newsroom will be up\n          for community review for the next {this.props.applyStageLenDisplay}. You can check back here at any time\n          during the process and will also be notified via email.\n        </OBSectionDescription>\n        <AboutApplicationButton />\n\n        {this.renderTransferSection()}\n        <Mutation\n          mutation={saveApplyTxMutation}\n          refetchQueries={[\n            {\n              query: getCharterQuery,\n            },\n          ]}\n        >\n          {(saveTxHash: MutationFunc) => {\n            return (\n              <Mutation mutation={CREATE_NEWSROOM_CHANNEL_MUTATION}>\n                {(createChannel: MutationFunc) => {\n                  return (\n                    <Mutation mutation={NRSIGNUP_DELETE}>\n                      {(deleteNrsignup: MutationFunc) => {\n                        return (\n                          <ApplyToTCRForm\n                            newsroomAddress={address!}\n                            minDeposit={minDeposit}\n                            multisigAddress={multisigAddress!}\n                            multisigHasMinDeposit={multisigHasMinDeposit}\n                            postApplyToTCR={async () => {\n                              this.setState({ didApplicationSucceed: true });\n                              await createChannel({\n                                variables: { newsroomContractAddress: address! },\n                              });\n                              await deleteNrsignup();\n                              postApplyToTCR();\n                            }}\n                            saveTxHash={async txHash => {\n                              await saveTxHash({ variables: { input: txHash } });\n                            }}\n                          />\n                        );\n                      }}\n                    </Mutation>\n                  );\n                }}\n              </Mutation>\n            );\n          }}\n        </Mutation>\n      </>\n    );\n  }\n\n  private renderTransferSection = (): JSX.Element => {\n    const {\n      minDeposit,\n      userBalance,\n      multisigBalance,\n      multisigHasMinDeposit,\n      multisigAddress,\n      postTransfer,\n    } = this.props;\n\n    if (multisigHasMinDeposit) {\n      return (\n        <TransferredCollapsable\n          open={false}\n          header={<>Civil tokens transferred from your wallet to your Newsroom’s wallet.</>}\n        />\n      );\n    }\n\n    return (\n      <TransferToMultisig\n        minDeposit={minDeposit!}\n        multisigAddress={multisigAddress!}\n        userBalance={userBalance!}\n        multisigBalance={multisigBalance!}\n        postTransfer={postTransfer}\n      />\n    );\n  };\n}\n\nexport default ApplyToTCR;\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/ApplyToTCRForm.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { BigNumber, EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { getFormattedTokenBalance, urlConstants as links } from \"@joincivil/utils\";\nimport {\n  QuestionToolTip,\n  OBSmallParagraph,\n  TransactionButtonNoModal,\n  ModalContent,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport {\n  FormSection,\n  FormRow,\n  FormRowItem,\n  FormTitle,\n  TransactionPopUpWarning,\n  DepositAmountText,\n  CivilLabel,\n} from \"../styledComponents\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../TransactionStatusModalsHOC\";\nimport { TransactionButtonInner } from \"../TransactionButtonInner\";\n\nenum TransactionTypes {\n  APPROVE_FOR_APPLY = \"APPROVE_FOR_APPLY\",\n  APPLY_TO_REGISTRY = \"APPLY_TO_REGISTRY\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.APPROVE_FOR_APPLY]: \"Approve Tokens for Application Deposit \",\n  [TransactionTypes.APPLY_TO_REGISTRY]: \"Apply To Registry\",\n};\n\nconst multiStepTransactionLabels = {\n  [TransactionTypes.APPROVE_FOR_APPLY]: \"1 of 2\",\n  [TransactionTypes.APPLY_TO_REGISTRY]: \"2 of 2\",\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.APPROVE_FOR_APPLY]: [\n    \"Your application was not submitted\",\n    \"Before submitting an application, you need to confirm the approval of your application deposit in your MetaMask wallet.\",\n  ],\n  [TransactionTypes.APPLY_TO_REGISTRY]: [\n    \"Your application was not submitted\",\n    \"To submit an application, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.APPROVE_FOR_APPLY]: [\n    \"There was an problem with approving your application deposit\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n  [TransactionTypes.APPLY_TO_REGISTRY]: [\n    \"The was an problem with submitting your application\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.APPROVE_FOR_APPLY]: [\n    \"Transaction Successful\",\n    <ModalContent>You have approved the token deposit for your application.</ModalContent>,\n  ],\n  [TransactionTypes.APPLY_TO_REGISTRY]: [\n    \"Transaction Successful\",\n    <ModalContent>\n      Your application to the registry has been recorded! You can follow the progress of your application on your{\" \"}\n      <Link to=\"/dashboard/newsrooms\">Newsroom Dashboard</Link>.\n    </ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  multiStepTransactionLabels,\n  transactionRejectionContent,\n  transactionErrorContent,\n  transactionSuccessContent,\n};\n\nexport interface ApplyToTCRFormProps {\n  minDeposit: BigNumber;\n  newsroomAddress: EthAddress;\n  multisigAddress: EthAddress;\n  multisigHasMinDeposit: boolean;\n  saveTxHash(txHash: EthAddress): Promise<any>;\n}\n\nexport interface ApplyPostTransactionProp {\n  postApplyToTCR(): void | Promise<void>;\n}\n\nexport interface TransactionsProp {\n  transactions: any;\n}\n\nconst ApplyToTCRForm: React.FunctionComponent<\n  ApplyToTCRFormProps & ApplyPostTransactionProp & TransactionsProp & InjectedTransactionStatusModalProps\n> = props => {\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n\n  const { minDeposit, multisigHasMinDeposit, multisigAddress, newsroomAddress, postApplyToTCR } = props;\n  const transactions = [\n    {\n      transaction: async () => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: true,\n          isTransactionProgressModalOpen: false,\n          isTransactionSuccessModalOpen: false,\n          isTransactionErrorModalOpen: false,\n          isTransactionRejectionModalOpen: false,\n          transactionType: TransactionTypes.APPROVE_FOR_APPLY,\n        });\n        const tcr = await civilCtx.civil!.tcrSingletonTrustedMultisigSupport(multisigAddress);\n        const token = await tcr.getToken();\n        const approvedTokens = await token.getApprovedTokensForSpender(tcr.address, multisigAddress);\n        if (approvedTokens.lt(minDeposit!)) {\n          return token.approveSpender(tcr.address, civilCtx.civil!.toBigNumber(minDeposit!));\n        }\n        return;\n      },\n      handleTransactionHash: (txHash: TxHash) => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: false,\n          isTransactionProgressModalOpen: true,\n        });\n      },\n      handleTransactionError: props.handleTransactionError,\n    },\n    {\n      transaction: async () => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: true,\n          isTransactionProgressModalOpen: false,\n          isTransactionSuccessModalOpen: false,\n          transactionType: TransactionTypes.APPLY_TO_REGISTRY,\n        });\n        const tcr = await civilCtx.civil!.tcrSingletonTrustedMultisigSupport(multisigAddress);\n        return tcr.apply(newsroomAddress!, civilCtx.civil!.toBigNumber(minDeposit), \"\");\n      },\n      handleTransactionHash: async (txHash: TxHash) => {\n        await props.saveTxHash(txHash);\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: false,\n          isTransactionProgressModalOpen: true,\n        });\n      },\n      handleTransactionError: props.handleTransactionError,\n      postTransaction: () => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: false,\n          isTransactionProgressModalOpen: false,\n          isTransactionSuccessModalOpen: true,\n        });\n        postApplyToTCR();\n        // @TODO A hack until https://github.com/joincivil/Civil/pull/1148\n        props.setHandleTransactionSuccessButtonClick(() => {\n          document.location.reload();\n        });\n      },\n    },\n  ];\n\n  props.setTransactions(transactions);\n\n  return (\n    <FormSection>\n      <FormRow>\n        <FormRowItem>\n          <FormTitle>\n            Newsroom Token Stake{\" \"}\n            <QuestionToolTip explainerText=\"The deposit is subject to change. You wil be notified when changes occur.\" />\n          </FormTitle>\n        </FormRowItem>\n\n        <FormRowItem align=\"right\">\n          <DepositAmountText>{getFormattedTokenBalance(minDeposit!, true)}</DepositAmountText>{\" \"}\n          <CivilLabel>CVL</CivilLabel>\n        </FormRowItem>\n      </FormRow>\n      <FormRow>\n        <FormRowItem>\n          <OBSmallParagraph>\n            By applying to the Civil Registry, you acknowledge that you have agreed to the{\" \"}\n            <a href={links.TERMS} target=\"_blank\">\n              Terms\n            </a>{\" \"}\n            and{\" \"}\n            <a href={links.PRIVACY_POLICY} target=\"_blank\">\n              Privacy Policy\n            </a>\n          </OBSmallParagraph>\n        </FormRowItem>\n        <FormRowItem align=\"right\">\n          <TransactionButtonNoModal\n            disabled={!multisigHasMinDeposit}\n            Button={TransactionButtonInner}\n            transactions={transactions}\n          >\n            Apply to the Civil Registry\n          </TransactionButtonNoModal>\n          <TransactionPopUpWarning>\n            This will open your wallet asking to process the transactions.\n          </TransactionPopUpWarning>\n        </FormRowItem>\n      </FormRow>\n    </FormSection>\n  );\n};\n\nexport default compose<React.ComponentClass<ApplyToTCRFormProps & ApplyPostTransactionProp>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(ApplyToTCRForm);\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/ApplyToTCRSuccess.tsx",
    "content": "import * as React from \"react\";\nimport AddToCalendar from \"react-add-to-calendar\";\nimport { ListingWrapper } from \"@joincivil/typescript-types\";\nimport {\n  SubmitChallengeSuccessIcon as ApplicationSuccessIcon,\n  OBSectionHeader,\n  OBSectionDescription,\n  StyledAddToCalendar,\n  Button,\n  buttonSizes,\n} from \"@joincivil/components\";\nimport { getLocalDateTimeStrings, padString, urlConstants } from \"@joincivil/utils\";\n\nimport { FormSection, FormRow, FormRowCenter, FormRowItem } from \"../styledComponents\";\n\nexport interface ApplyToTCRSuccessProps {\n  listing: ListingWrapper;\n  applyStageLenDisplay: string;\n}\n\nfunction getCalendarEventDateTime(seconds: number | Date): string {\n  const theDate = typeof seconds === \"number\" ? new Date(seconds * 1000) : seconds;\n  const pad = (num: number | string) => {\n    return padString(num, 2, \"0\");\n  };\n  const hours = pad(theDate.getHours());\n  const mins = pad(theDate.getMinutes());\n  const tzOffset = `${pad(theDate.getTimezoneOffset() / 60)}${pad(theDate.getTimezoneOffset() % 60)}`;\n  const dateString = `${theDate.getFullYear()}-${pad(theDate.getMonth() + 1)}-${pad(theDate.getDate())}`;\n  const timeString = `${hours}:${mins}-${tzOffset}`;\n  return `${dateString}T${timeString}`;\n}\n\ninterface AddApplicationEndToCalendar {\n  endTime: number;\n  listingDetailURL: string;\n}\n\nconst AddApplicationEndToCalendar: React.FunctionComponent<AddApplicationEndToCalendar> = props => {\n  const title = \"My Newsroom review period has ended for the Civil Registry\";\n  const description = \"My Newsroom review period has ended for the Civil Registry\";\n  const location = props.listingDetailURL;\n  const startTime = getCalendarEventDateTime(props.endTime);\n  const endTime = getCalendarEventDateTime(props.endTime);\n  const event = {\n    title,\n    description,\n    location,\n    startTime,\n    endTime,\n  };\n  return (\n    <StyledAddToCalendar>\n      <AddToCalendar event={event} />\n    </StyledAddToCalendar>\n  );\n};\n\nconst ApplyToTCRSuccess: React.FunctionComponent<ApplyToTCRSuccessProps> = props => {\n  const { listing } = props;\n  const listingAddress = listing.address;\n  const endTime = listing.data.appExpiry.toNumber();\n  const applicationEndDateTime = getLocalDateTimeStrings(endTime);\n  // Need an absolute URL cause it goes into calendar event:\n  const registryListingURL = `${document.location.origin}/listing/${listingAddress}`;\n\n  return (\n    <>\n      <FormRowCenter>\n        <ApplicationSuccessIcon />\n      </FormRowCenter>\n      <OBSectionHeader>Application submitted!</OBSectionHeader>\n      <OBSectionDescription>\n        Your newsroom application was submitted to the Civil Registry and will now be reviewed by the Civil Community\n        over the next {props.applyStageLenDisplay}.\n      </OBSectionDescription>\n\n      <FormSection>\n        <FormRow>\n          <FormRowItem>\n            <p>\n              Your newsroom review period ends on{\" \"}\n              <b>\n                {applicationEndDateTime[0]} at {applicationEndDateTime[1]}\n              </b>\n              .\n            </p>\n\n            <p>Please check your emails during that time to keep tabs on your newsroom's progress.</p>\n          </FormRowItem>\n          <FormRowItem align=\"right\">\n            <AddApplicationEndToCalendar endTime={endTime} listingDetailURL={registryListingURL} />\n          </FormRowItem>\n        </FormRow>\n        <FormRow>\n          If a community member challenges your newsroom during the review period, you will get an email with\n          recommendations on next steps. Please note, if your newsroom is challenged, you will not be able to make any\n          edits to your profile or charter until the challenge period is over.\n        </FormRow>\n      </FormSection>\n\n      <FormSection>\n        <OBSectionDescription>\n          You can also follow the progress of your application on your Newsroom Profile on the Registry.\n        </OBSectionDescription>\n\n        <FormRowCenter>\n          <Button size={buttonSizes.MEDIUM} href={registryListingURL}>\n            View your Newsroom\n          </Button>\n        </FormRowCenter>\n\n        <FormRowCenter>\n          <p>\n            If you have any questions, you can contact{\" \"}\n            <a href={urlConstants.EMAIL_MAILTO} target=\"_blank\">\n              support\n            </a>\n          </p>\n        </FormRowCenter>\n      </FormSection>\n    </>\n  );\n};\n\nexport default ApplyToTCRSuccess;\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/ApplyToTCRWhitelisted.tsx",
    "content": "import * as React from \"react\";\nimport { ListingWrapper } from \"@joincivil/typescript-types\";\nimport {\n  SubmitChallengeSuccessIcon as ApplicationSuccessIcon,\n  OBSectionHeader,\n  OBSectionDescription,\n  Button,\n  buttonSizes,\n} from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\n\nimport { FormSection, FormRow, FormRowCenter } from \"../styledComponents\";\n\nexport interface ApplyToTCRWhitelistedProps {\n  listing: ListingWrapper;\n}\n\nconst ApplyToTCRWhitelisted: React.FunctionComponent<ApplyToTCRWhitelistedProps> = props => {\n  const { listing } = props;\n  const listingAddress = listing.address;\n  const registryListingURL = `${document.location.origin}/listing/${listingAddress}`;\n\n  return (\n    <>\n      <FormRowCenter>\n        <ApplicationSuccessIcon />\n      </FormRowCenter>\n      <OBSectionHeader>Application Approved!</OBSectionHeader>\n      <OBSectionDescription>\n        Your newsroom application was received by the Civil Community, has passed the review period, and is now\n        whitelisted on the registry.\n      </OBSectionDescription>\n\n      <FormSection>\n        <FormRow>\n          A community member may still challenge your newsroom in the future. If they do, you will get an email with\n          recommendations on next steps. Please note, if your newsroom is challenged, you will not be able to make any\n          edits to your profile or charter until the challenge period is over.\n        </FormRow>\n      </FormSection>\n\n      <FormSection>\n        <OBSectionDescription>\n          You can also see your Newsroom Profile and any community discussions on the Registry.\n        </OBSectionDescription>\n\n        <FormRowCenter>\n          <Button size={buttonSizes.MEDIUM} href={registryListingURL}>\n            View your Newsroom\n          </Button>\n        </FormRowCenter>\n\n        <FormRowCenter>\n          <p>\n            If you have any questions, you can contact{\" \"}\n            <a href={urlConstants.EMAIL_MAILTO} target=\"_blank\">\n              support\n            </a>\n          </p>\n        </FormRowCenter>\n      </FormSection>\n    </>\n  );\n};\n\nexport default ApplyToTCRWhitelisted;\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/TransferToMultisig.tsx",
    "content": "import * as React from \"react\";\nimport { compose } from \"redux\";\nimport { EthAddress, TxHash, BigNumber } from \"@joincivil/typescript-types\";\nimport {\n  OBCollapsable,\n  OBCollapsableHeader,\n  OBSmallParagraph,\n  TransactionButtonNoModal,\n  CurrencyConvertedBox as CurrencyBox,\n  CurrencyCode,\n  ModalContent,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\n\nimport {\n  FormRowLeftAlign,\n  FormRowItem,\n  TransactionPopUpWarning,\n  TransferTextLarge,\n  CivilLabel,\n} from \"../styledComponents\";\nimport { InjectedTransactionStatusModalProps, hasTransactionStatusModals } from \"../TransactionStatusModalsHOC\";\nimport { TransactionButtonInner } from \"../TransactionButtonInner\";\n\nenum TransactionTypes {\n  TRANSFER_TO_MULTISIG = \"TRANSFER_TO_MULTISIG\",\n}\n\nconst transactionLabels = {\n  [TransactionTypes.TRANSFER_TO_MULTISIG]: \"Transfer Tokens\",\n};\n\nconst transactionSuccessContent = {\n  [TransactionTypes.TRANSFER_TO_MULTISIG]: [\n    \"Your tokens have been transferred to the Newsroom's wallet\",\n    <ModalContent>You may now apply to the registry</ModalContent>,\n  ],\n};\n\nconst transactionRejectionContent = {\n  [TransactionTypes.TRANSFER_TO_MULTISIG]: [\n    \"Your tokens were not transferred\",\n    \"To transfer your tokens, you need to confirm the transaction in your MetaMask wallet.\",\n  ],\n};\n\nconst transactionErrorContent = {\n  [TransactionTypes.TRANSFER_TO_MULTISIG]: [\n    \"There was a problem with transferring your tokens\",\n    <ModalContent>Please retry your transaction</ModalContent>,\n  ],\n};\n\nconst transactionStatusModalConfig = {\n  transactionLabels,\n  transactionSuccessContent,\n  transactionRejectionContent,\n  transactionErrorContent,\n};\n\nexport interface TransferToMultisigProps {\n  minDeposit: BigNumber;\n  userBalance: BigNumber;\n  multisigBalance: BigNumber;\n  multisigAddress: EthAddress;\n}\n\nexport interface TransferPostTransactionProp {\n  postTransfer(): void | Promise<void>;\n}\n\nexport interface TransactionsProp {\n  transactions: any;\n}\n\nconst TransferToMultisig: React.FunctionComponent<\n  TransferToMultisigProps & TransferPostTransactionProp & InjectedTransactionStatusModalProps\n> = props => {\n  const civilCtx = React.useContext<ICivilContext>(CivilContext);\n  const { multisigAddress, minDeposit, multisigBalance, postTransfer, userBalance } = props;\n  const tokenAmountToTransfer = minDeposit.sub(multisigBalance);\n  const transactions = [\n    {\n      transaction: async () => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: true,\n          isTransactionProgressModalOpen: false,\n          isTransactionSuccessModalOpen: false,\n          isTransactionErrorModalOpen: false,\n          isTransactionRejectionModalOpen: false,\n          transactionType: TransactionTypes.TRANSFER_TO_MULTISIG,\n        });\n        const tcr = await civilCtx.civil!.tcrSingletonTrusted();\n        const token = await tcr.getToken();\n        return token.transfer(multisigAddress, civilCtx.civil!.toBigNumber(tokenAmountToTransfer));\n      },\n      handleTransactionHash: (txHash: TxHash) => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: false,\n          isTransactionProgressModalOpen: true,\n        });\n      },\n      handleTransactionError: props.handleTransactionError,\n      postTransaction: () => {\n        props.updateTransactionStatusModalsState({\n          isWaitingTransactionModalOpen: false,\n          isTransactionProgressModalOpen: false,\n          isTransactionSuccessModalOpen: true,\n        });\n        postTransfer();\n      },\n    },\n  ];\n  const transformFormLeftColWidth = \"126px\";\n\n  return (\n    <OBCollapsable\n      open={true}\n      header={\n        <OBCollapsableHeader>\n          Transfer {getFormattedTokenBalance(minDeposit!)} from your wallet to your Newsroom’s wallet to deposit with\n          your application.\n        </OBCollapsableHeader>\n      }\n    >\n      <OBSmallParagraph>\n        You need to transfer your Civil tokens (CVL) to your Newsroom when you are applying on behalf of your newsroom.\n        This transaction moves your CVL to your Newsroom’s wallet.\n      </OBSmallParagraph>\n\n      <FormRowLeftAlign>\n        <FormRowItem width={transformFormLeftColWidth}>From</FormRowItem>\n        <FormRowItem>\n          <TransferTextLarge>Your Wallet</TransferTextLarge>\n          {getFormattedTokenBalance(userBalance, true)}\n          <CivilLabel>CVL</CivilLabel>\n          <br />\n        </FormRowItem>\n      </FormRowLeftAlign>\n      <FormRowLeftAlign>\n        <FormRowItem width={transformFormLeftColWidth}>To</FormRowItem>\n        <FormRowItem>\n          <TransferTextLarge>Newsroom Wallet</TransferTextLarge>\n          {getFormattedTokenBalance(multisigBalance!, true)}\n          <CivilLabel>CVL</CivilLabel>\n        </FormRowItem>\n      </FormRowLeftAlign>\n      <FormRowLeftAlign>\n        <FormRowItem width={transformFormLeftColWidth}>Amount</FormRowItem>\n        <FormRowItem>\n          <CurrencyBox>\n            {getFormattedTokenBalance(tokenAmountToTransfer, true)}\n            <CurrencyCode>CVL</CurrencyCode>\n          </CurrencyBox>\n        </FormRowItem>\n      </FormRowLeftAlign>\n\n      <FormRowLeftAlign>\n        <FormRowItem width={transformFormLeftColWidth} />\n        <FormRowItem>\n          <TransactionButtonNoModal Button={TransactionButtonInner} transactions={transactions}>\n            Transfer CVL Tokens\n          </TransactionButtonNoModal>\n          <TransactionPopUpWarning>\n            This will open your wallet asking to process the transactions.\n          </TransactionPopUpWarning>\n        </FormRowItem>\n      </FormRowLeftAlign>\n    </OBCollapsable>\n  );\n};\n\nexport default compose<React.ComponentClass<TransferToMultisigProps & TransferPostTransactionProp>>(\n  hasTransactionStatusModals(transactionStatusModalConfig),\n)(TransferToMultisig);\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCR/index.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { BigNumber, EthAddress, ListingWrapper } from \"@joincivil/typescript-types\";\nimport { Civil, NewsroomInstance } from \"@joincivil/core\";\nimport {\n  Parameters,\n  getFormattedParameterValue,\n  listingHelpers,\n  LISTING_QUERY,\n  transformGraphQLDataIntoListing,\n} from \"@joincivil/utils\";\nimport { NextBack } from \"../styledComponents\";\nimport { getNewsroomMultisigBalance } from \"../actionCreators\";\nimport ApplyToTCR from \"./ApplyToTCR\";\nimport ApplyToTCRSuccess from \"./ApplyToTCRSuccess\";\nimport ApplyToTCRWhitelisted from \"./ApplyToTCRWhitelisted\";\nimport { Query } from \"react-apollo\";\nimport { ErrorLoadingData } from \"@joincivil/components\";\n\nexport interface ApplyToTCRStepOwnProps {\n  address?: EthAddress;\n  newsroom: NewsroomInstance;\n  civil?: Civil;\n  minDeposit: BigNumber;\n  applyStageLen: BigNumber;\n  navigate(go: 1 | -1): void;\n}\n\nexport interface ApplyToTCRStepReduxProps {\n  userBalance: BigNumber;\n  multisigBalance: BigNumber;\n  applyStageLenDisplay?: string;\n  minDeposit: BigNumber;\n  multisigAddress?: EthAddress;\n  multisigHasMinDeposit: boolean;\n  listing?: ListingWrapper;\n}\n\nexport type TApplyToTCRStepProps = ApplyToTCRStepOwnProps & ApplyToTCRStepReduxProps;\n\nclass ApplyToTCRStepComponent extends React.Component<TApplyToTCRStepProps & DispatchProp<any>> {\n  public async componentDidMount(): Promise<void> {\n    if (this.props.civil && this.props.address) {\n      await this.hydrateNewsroomMultisigBalance();\n    }\n  }\n\n  public async componentDidUpdate(prevProps: TApplyToTCRStepProps & DispatchProp<any>): Promise<void> {\n    if (prevProps.address !== this.props.address || prevProps.newsroom !== this.props.newsroom) {\n      await this.hydrateNewsroomMultisigBalance();\n    }\n  }\n\n  public renderApply(): JSX.Element {\n    const { address, applyStageLenDisplay } = this.props;\n    if (address) {\n      return (\n        <Query query={LISTING_QUERY} variables={{ addr: address }}>\n          {({ loading, error, data, refetch }: any): JSX.Element => {\n            if (loading) {\n              return <>Loading...</>;\n            }\n            if (error) {\n              console.error(\"Error Loading Listing Data on ApplyToTCR: \", error);\n              return <ErrorLoadingData />;\n            }\n            let listing;\n            if (data && data.tcrListing) {\n              listing = transformGraphQLDataIntoListing(data.tcrListing, address);\n            }\n            if (listing && listing.data && listingHelpers.isWhitelisted(listing.data)) {\n              return <ApplyToTCRWhitelisted listing={listing} />;\n            }\n            if (listing && listing.data && listingHelpers.isInApplicationPhase(listing.data) && applyStageLenDisplay) {\n              return <ApplyToTCRSuccess listing={listing} applyStageLenDisplay={applyStageLenDisplay} />;\n            }\n            return (\n              <ApplyToTCR\n                {...this.props}\n                postTransfer={this.hydrateNewsroomMultisigBalance}\n                postApplyToTCR={async () => {\n                  refetch();\n                  await this.postApplyToTCR();\n                }}\n              />\n            );\n          }}\n        </Query>\n      );\n    } else {\n      return (\n        <ApplyToTCR\n          {...this.props}\n          postTransfer={this.hydrateNewsroomMultisigBalance}\n          postApplyToTCR={this.postApplyToTCR}\n        />\n      );\n    }\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        {this.renderApply()}\n        <NextBack navigate={this.props.navigate} nextHidden={true} />\n      </>\n    );\n  }\n\n  private hydrateNewsroomMultisigBalance = async (): Promise<void> => {\n    if (this.props.address && this.props.newsroom && this.props.civil) {\n      const multisigAddress = await this.props.newsroom.getMultisigAddress();\n      if (multisigAddress) {\n        await this.props.dispatch!(getNewsroomMultisigBalance(this.props.address, multisigAddress, this.props.civil));\n      }\n    }\n  };\n\n  private postApplyToTCR = async (): Promise<void> => {\n    this.props.navigate(1);\n  };\n}\n\nconst mapStateToProps = (state: any, ownProps: ApplyToTCRStepOwnProps): TApplyToTCRStepProps => {\n  const newsroom = state.newsrooms.get(ownProps.address);\n  const { user } = state.networkDependent;\n\n  const multisigAddress = newsroom && newsroom.multisigAddress;\n  const multisigBalance = (newsroom && newsroom.multisigBalance) || new BigNumber(0);\n\n  const applyStageLenValue = ownProps.applyStageLen;\n  let applyStageLenDisplay;\n  if (applyStageLenValue) {\n    applyStageLenDisplay = getFormattedParameterValue(Parameters.applyStageLen, applyStageLenValue);\n  }\n\n  const userBalance = new BigNumber((user && user.account && user.account.account !== \"\" && user.account.balance) || 0);\n\n  const minDeposit = ownProps.minDeposit;\n\n  const multisigHasMinDeposit = multisigBalance.gte(minDeposit);\n\n  return {\n    ...ownProps,\n    newsroom: newsroom ? newsroom.newsroom : null,\n    userBalance,\n    multisigAddress,\n    multisigBalance,\n    applyStageLenDisplay,\n    minDeposit,\n    multisigHasMinDeposit,\n  };\n};\n\nexport const ApplyToTCRStep = connect(mapStateToProps)(ApplyToTCRStepComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/ApplyToTCRPlaceholder.tsx",
    "content": "import * as React from \"react\";\nimport { StepHeader, StepFormSection, BorderlessButton, WaitForApply, buttonSizes } from \"@joincivil/components\";\nimport styled from \"styled-components\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { connect } from \"react-redux\";\n\nexport interface ApplyToTCRProps {\n  address?: EthAddress;\n  newsroom?: any;\n}\n\nconst FormSectionInner = styled(\"div\")`\n  padding: 46px;\n  background-color: #fffef6;\n  opacity: 0.8;\n  margin: 16px -38px;\n`;\n\nconst LearnMoreButton = styled(BorderlessButton)`\n  margin-left: 0;\n  padding-left: 0;\n`;\n\nconst P = styled(\"p\")`\n  font-size: 14px;\n`;\n\nconst H = styled(\"h4\")`\n  color: #000;\n  margin-bottom: 0;\n`;\n\nexport class ApplyToTCRComponent extends React.Component<ApplyToTCRProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <StepHeader>Apply to the Civil Registry</StepHeader>\n        <StepFormSection>\n          <FormSectionInner>\n            <WaitForApply />\n            <P>\n              Your current newsroom application is saved. Thank you for filling out your newsroom application. We are\n              launching the Civil Registry soon and you will need to come back to complete your newsroom application\n              once that happens.\n            </P>\n            <P>You are able to edit your application at any time before submission.</P>\n            <P>\n              You'll recieve a notification message in your WordPress dashboard when you are able to apply to the\n              Registry.\n            </P>\n            <hr />\n            <H>What is the Civil Registry?</H>\n            <LearnMoreButton\n              href=\"https://cvlconsensys.zendesk.com/hc/en-us/articles/360017687131-What-is-the-Civil-Registry-\"\n              size={buttonSizes.SMALL}\n            >\n              Learn More\n            </LearnMoreButton>\n          </FormSectionInner>\n        </StepFormSection>\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (state: any, ownProps: ApplyToTCRProps): ApplyToTCRProps => {\n  const newsroom = state.newsrooms.get(ownProps.address);\n\n  return {\n    ...ownProps,\n    newsroom: newsroom ? newsroom.newsroom : null,\n  };\n};\n\nexport const ApplyToTCRPlaceholder = connect(mapStateToProps)(ApplyToTCRComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/AuthWrapper.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { OBSectionTitle, OBSectionDescription } from \"@joincivil/components\";\nimport { isLoggedIn } from \"@joincivil/utils\";\n\nexport interface AuthWrapperState {\n  loading: boolean;\n  loggedIn: boolean;\n  magicEmailSent?: string;\n  showTokenVerified?: boolean;\n}\n\nexport interface AuthParams {\n  action?: \"login\" | \"signup\";\n}\n\nconst Wrapper = styled.div`\n  margin: 70px auto 0 auto;\n  max-width: 700px;\n`;\nconst SignupLoginInnerWrap = styled.div`\n  margin: 0 auto;\n  max-width: 520px;\n`;\n\nclass AuthWrapperComponent extends React.Component<RouteComponentProps<AuthParams>, AuthWrapperState> {\n  constructor(props: RouteComponentProps) {\n    super(props);\n    this.state = {\n      loading: true,\n      loggedIn: false,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    this.setState(\n      {\n        loggedIn: await isLoggedIn(),\n      },\n      () => {\n        this.setState({\n          loading: false,\n        });\n      },\n    );\n  }\n\n  public render(): JSX.Element {\n    if (this.state.loggedIn) {\n      return <>{this.props.children}</>;\n    }\n\n    if (this.state.loading) {\n      return <>Loading...</>;\n    }\n\n    return this.renderSignupLogin();\n  }\n\n  private renderSignupLogin(): JSX.Element {\n    return (\n      <Wrapper>\n        <SignupLoginInnerWrap>\n          <OBSectionTitle>Add your Newsroom to Civil</OBSectionTitle>\n          <OBSectionDescription>Sign Up or Log In to add your Newsroom to Civil.</OBSectionDescription>\n        </SignupLoginInnerWrap>\n      </Wrapper>\n    );\n  }\n}\n\n// Have to declare AuthWrapper type here, can't find any other way to get around \"Exported variable 'AuthWrapper' is using name 'StaticContext' from external module\" error. Importing `StaticContext` from `react-router` isn't fixing it.\nexport const AuthWrapper: React.ComponentClass<Pick<RouteComponentProps<AuthParams>, never>> = withRouter(\n  AuthWrapperComponent,\n);\n"
  },
  {
    "path": "packages/newsroom-signup/src/DataWrapper.tsx",
    "content": "import * as React from \"react\";\nimport { Mutation, Query, MutationFunc, FetchResult } from \"react-apollo\";\nimport { NewsroomGqlProps } from \"./Newsroom\";\nimport { userDataQuery, getCharterQuery } from \"./queries\";\nimport { saveCharterMutation, SaveAddressMutation, saveStepsMutation } from \"./mutations\";\nimport { Parameters } from \"@joincivil/utils\";\nimport gql from \"graphql-tag\";\nimport { EthAddress, CharterData, BigNumber } from \"@joincivil/typescript-types\";\n\nexport interface DataWrapperProps {\n  children(props: NewsroomGqlProps): any;\n}\n\nexport const parametersArray = [Parameters.minDeposit, Parameters.applyStageLen];\n\nexport const PARAMETERS_QUERY = gql`\n  query Parameters($input: [String!]) {\n    parameters: parameters(paramNames: $input) {\n      paramName\n      value\n    }\n  }\n`;\n\nexport class DataWrapper extends React.Component<DataWrapperProps> {\n  public render(): JSX.Element {\n    return (\n      <Query<any> query={PARAMETERS_QUERY} variables={{ input: parametersArray }}>\n        {({\n          loading: paramsLoading,\n          error: paramsError,\n          data: paramsData,\n        }: {\n          loading?: any;\n          error?: any;\n          data: any;\n        }) => {\n          if (paramsLoading || paramsError) {\n            return <></>;\n          }\n          const minDeposit = new BigNumber(paramsData.parameters[0].value);\n          const applyStageLen = new BigNumber(paramsData.parameters[1].value);\n          return (\n            <Query<any> query={userDataQuery}>\n              {({ loading, error, data: userData }) => {\n                if (loading) {\n                  return \"Loading...\";\n                }\n                if (error) {\n                  return (\n                    <>\n                      Sorry, there was an error! <code>{JSON.stringify(error)}</code>\n                    </>\n                  );\n                }\n\n                return (\n                  <Query<any> query={getCharterQuery}>\n                    {({\n                      loading: charterLoading,\n                      error: charterError,\n                      data: charterData,\n                      refetch: refetchCharterQuery,\n                    }) => {\n                      if (charterLoading) {\n                        return \"Loading...\";\n                      }\n                      let doRefetchHack = false;\n                      if (charterError) {\n                        if (\n                          charterError.graphQLErrors[0] &&\n                          charterError.graphQLErrors[0].message === \"No jsonb found\"\n                        ) {\n                          // ok, they haven't saved a charter yet\n                          // Due to an apollo bug (https://github.com/apollographql/react-apollo/issues/2070) when a query errors, future refetches from mutation refetchQueries fail to update the query. There are various solutions suggested, some of which didn't work, but using the refetch function we get here will work if we call it just once (once we do data and the query won't error).\n                          doRefetchHack = true;\n                        } else {\n                          return (\n                            <>\n                              Sorry, there was an error! <code>{JSON.stringify(charterError)}</code>\n                            </>\n                          );\n                        }\n                      }\n\n                      let persistedCharter: Partial<CharterData>;\n                      let grantRequested: boolean;\n                      let grantApproved: boolean;\n                      let newsroomDeployTx: string;\n                      let newsroomAddress: EthAddress;\n                      let tcrApplyTx: string;\n                      if (charterData && charterData.nrsignupNewsroom) {\n                        if (charterData.nrsignupNewsroom.charter) {\n                          persistedCharter = charterData.nrsignupNewsroom.charter;\n                        }\n                        grantRequested = charterData.nrsignupNewsroom.grantRequested;\n                        grantApproved = charterData.nrsignupNewsroom.grantApproved;\n                        newsroomDeployTx = charterData.nrsignupNewsroom.newsroomDeployTx;\n                        newsroomAddress = charterData.nrsignupNewsroom.newsroomAddress;\n                        tcrApplyTx = charterData.nrsignupNewsroom.tcrApplyTx;\n                      }\n\n                      return (\n                        <Mutation<any>\n                          mutation={SaveAddressMutation}\n                          refetchQueries={[\n                            {\n                              query: getCharterQuery,\n                            },\n                          ]}\n                        >\n                          {saveAddress => {\n                            return (\n                              <Mutation\n                                mutation={saveCharterMutation}\n                                onCompleted={async () => {\n                                  if (doRefetchHack) {\n                                    await refetchCharterQuery();\n                                    doRefetchHack = false;\n                                  }\n                                }}\n                              >\n                                {(saveCharter: MutationFunc) => {\n                                  return (\n                                    <Mutation mutation={saveStepsMutation}>\n                                      {(saveSteps: MutationFunc) => {\n                                        return this.props.children({\n                                          grantRequested,\n                                          grantApproved,\n                                          newsroomDeployTx,\n                                          newsroomAddress,\n                                          tcrApplyTx,\n                                          profileWalletAddress: userData.currentUser.ethAddress,\n                                          savedStep: userData.currentUser.nrStep || 0,\n                                          furthestStep: userData.currentUser.nrFurthestStep || 0,\n                                          persistedCharter,\n                                          saveAddress,\n                                          saveSteps,\n                                          persistCharter: this.saveCharterFuncFromMutation(saveCharter),\n                                          minDeposit,\n                                          applyStageLen,\n                                        });\n                                      }}\n                                    </Mutation>\n                                  );\n                                }}\n                              </Mutation>\n                            );\n                          }}\n                        </Mutation>\n                      );\n                    }}\n                  </Query>\n                );\n              }}\n            </Query>\n          );\n        }}\n      </Query>\n    );\n  }\n\n  private saveCharterFuncFromMutation(\n    mutation: MutationFunc,\n  ): (charter: Partial<CharterData>) => Promise<void | FetchResult> {\n    return async (charter: any) => {\n      return mutation({\n        variables: {\n          input: charter,\n        },\n      });\n    };\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/InfoModalButton.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { BorderlessButton, Modal, fonts, colors } from \"@joincivil/components\";\n\nconst Wrapper = styled.div`\n  margin: auto;\n  margin-top: 100px;\n  max-width: 850px;\n  position: relative;\n  display: flex;\n  justify-content: flex-start;\n  align-items: flex-start;\n`;\n\nconst ContentWrapper = styled.div`\n  width: 80%;\n  margin-left: 15px;\n`;\n\nexport const Header = styled.h2`\n  text-align: center;\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 32px;\n  font-weight: bold;\n  letter-spacing: -0.67px;\n  line-height: 30px;\n  padding-bottom: 60px;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  margin-bottom: 20px;\n`;\n\nexport const SectionHeader = styled.h4`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 32px;\n`;\n\nexport const Paragraph = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 14px;\n  line-height: 24px;\n  margin-bottom: 28px;\n`;\n\nconst Button = styled(BorderlessButton)`\n  margin: auto;\n  display: block;\n`;\n\nconst LightButton = styled(BorderlessButton)`\n  font-weight: 200;\n  display: block;\n`;\n\nexport interface InfoModalButtonState {\n  modalOpen: boolean;\n}\n\nexport interface InfoModalButtonProps {\n  content: JSX.Element;\n  buttonText: string;\n  lightStyle?: boolean;\n}\n\nexport class InfoModalButton extends React.Component<InfoModalButtonProps, InfoModalButtonState> {\n  constructor(props: InfoModalButtonProps) {\n    super(props);\n    this.state = {\n      modalOpen: false,\n    };\n  }\n  public renderModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    return (\n      <Modal fullScreen={true}>\n        <Wrapper>\n          <BorderlessButton onClick={this.close}>Back</BorderlessButton>\n          <ContentWrapper>{this.props.content}</ContentWrapper>\n        </Wrapper>\n      </Modal>\n    );\n  }\n  public render(): JSX.Element {\n    const button = this.props.lightStyle ? (\n      <LightButton onClick={this.showModal}>{this.props.buttonText}</LightButton>\n    ) : (\n      <Button onClick={this.showModal}>{this.props.buttonText}</Button>\n    );\n\n    return (\n      <>\n        {button}\n        {this.renderModal()}\n      </>\n    );\n  }\n  private showModal = (): void => {\n    this.setState({ modalOpen: true });\n  };\n  private close = (): void => {\n    this.setState({ modalOpen: false });\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/Newsroom.tsx",
    "content": "import * as qs from \"querystring\";\nimport { BigNumber, EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport {\n  ButtonTheme,\n  colors,\n  StepProcessTopNavNoButtons,\n  StepNoButtons,\n  WalletOnboardingV2,\n  AuthApplicationEnum,\n} from \"@joincivil/components\";\nimport { Civil, NewsroomInstance } from \"@joincivil/core\";\nimport * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { debounce } from \"lodash\";\nimport styled, { ThemeProvider } from \"styled-components\";\nimport {\n  addGetCmsUserDataForAddress,\n  addPersistCharter,\n  getEditors,\n  getIsOwner,\n  getIsEditor,\n  getNewsroom,\n  updateCharter,\n  addConstitutionHash,\n  addConstitutionUri,\n  fetchConstitution,\n  navigateStep,\n  reachedNewStep,\n  analyticsEvent,\n} from \"./actionCreators\";\nimport { AuthWrapper } from \"./AuthWrapper\";\nimport { DataWrapper } from \"./DataWrapper\";\nimport { NewsroomProfile } from \"./NewsroomProfile\";\nimport { SmartContract } from \"./SmartContract\";\nimport { PurchaseTokens } from \"./PurchaseTokens/index\";\nimport { RepublishCharterNotice } from \"./RepublishCharterNotice\";\nimport { ApplyToTCRStep } from \"./ApplyToTCR/index\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { CmsUserData } from \"./types\";\nimport { Wrapper, DEFAULT_THEME } from \"./styledComponents\";\nimport { MutationFunc } from \"react-apollo\";\n\nenum SECTION {\n  PROFILE,\n  CONTRACT,\n  TOKENS,\n  APPLY,\n}\n\nexport enum STEP {\n  PROFILE_BIO,\n  PROFILE_ROSTER,\n  PROFILE_CHARTER,\n  PROFILE_SIGN,\n  PROFILE_SO_FAR,\n  PROFILE_GRANT,\n  CONTRACT_GET_STARTED,\n  CONTRACT_UNDERSTANDING_ETH,\n  CONTRACT_CREATE,\n  CONTRACT_ASSIGN,\n  TOKENS,\n  APPLY,\n  APPLIED, // @HACK: API needs distinct step for \"has applied to TCR\" state, which is not how we built it. This extra pseuo-step doesn't affect rendering but makes it easy to package with the rest of API's step-depenent logic.\n}\n\nconst STEP_TO_SECTION = {\n  [STEP.PROFILE_BIO]: SECTION.PROFILE,\n  [STEP.PROFILE_ROSTER]: SECTION.PROFILE,\n  [STEP.PROFILE_CHARTER]: SECTION.PROFILE,\n  [STEP.PROFILE_SIGN]: SECTION.PROFILE,\n  [STEP.PROFILE_SO_FAR]: SECTION.PROFILE,\n  [STEP.PROFILE_GRANT]: SECTION.PROFILE,\n  [STEP.CONTRACT_GET_STARTED]: SECTION.CONTRACT,\n  [STEP.CONTRACT_UNDERSTANDING_ETH]: SECTION.CONTRACT,\n  [STEP.CONTRACT_CREATE]: SECTION.CONTRACT,\n  [STEP.CONTRACT_ASSIGN]: SECTION.CONTRACT,\n  [STEP.TOKENS]: SECTION.TOKENS,\n  [STEP.APPLY]: SECTION.APPLY,\n};\n\nconst SECTION_STARTS = {\n  [SECTION.PROFILE]: 0,\n  [SECTION.CONTRACT]: 6,\n  [SECTION.TOKENS]: 10,\n  [SECTION.APPLY]: 11,\n};\n\nexport interface NewsroomComponentState {\n  currentStep: STEP;\n  furthestStep: STEP;\n  subscription?: any;\n  charterPartOneComplete?: boolean;\n  charterPartTwoComplete?: boolean;\n  hasPublishedCharter?: boolean;\n}\n\nexport interface IpfsObject {\n  add(content: any, options?: { hash: string; pin: boolean }): Promise<[{ path: string; hash: string; size: number }]>;\n}\n\nexport interface NewsroomExternalProps {\n  newsroomAddress?: string;\n  disabled?: boolean;\n  account?: string;\n  currentNetwork?: string;\n  requiredNetwork?: string;\n  requiredNetworkNiceName?: string;\n  civil?: Civil;\n  ipfs?: IpfsObject;\n  theme?: ButtonTheme;\n  showWelcome?: boolean;\n  helpUrl?: string;\n  helpUrlBase?: string;\n  logoUrl?: string;\n  forceStep?: STEP;\n  renderUserSearch?(onSetAddress: any): JSX.Element;\n  getCmsUserDataForAddress?(address: EthAddress): Promise<CmsUserData>;\n}\n\nexport interface NewsroomReduxProps extends NewsroomExternalProps {\n  charter: Partial<CharterData>;\n  name?: string;\n  newsroom?: NewsroomInstance;\n  userIsOwner?: boolean;\n  userIsEditor?: boolean;\n  userNotOnContract?: boolean;\n  charterUri?: string;\n  waitingOnGrant?: boolean;\n  completedGrantFlow?: boolean;\n}\n\nexport interface NewsroomGqlProps {\n  newsroomAddress?: string;\n  grantRequested?: boolean;\n  grantApproved?: boolean;\n  tcrApplyTx?: string;\n  newsroomDeployTx?: EthAddress;\n  profileWalletAddress?: EthAddress;\n  persistedCharter?: Partial<CharterData>;\n  savedStep: STEP;\n  furthestStep: STEP;\n  saveAddress: MutationFunc;\n  saveSteps: MutationFunc;\n  minDeposit: BigNumber;\n  applyStageLen: BigNumber;\n  persistCharter(charter: Partial<CharterData>): Promise<any>;\n}\n\nexport type NewsroomProps = NewsroomGqlProps & NewsroomReduxProps & DispatchProp<any>;\n\nexport const NoteSection = styled.p`\n  color: ${(props: { disabled: boolean }) => (props.disabled ? \"#dcdcdc\" : colors.accent.CIVIL_GRAY_3)};\n`;\n\nconst ErrorP = styled.p`\n  color: ${colors.accent.CIVIL_RED};\n`;\n\nclass NewsroomComponent extends React.Component<NewsroomProps, NewsroomComponentState> {\n  public static defaultProps = {\n    theme: DEFAULT_THEME,\n  };\n\n  public static getDerivedStateFromProps(\n    props: NewsroomProps,\n    state: NewsroomComponentState,\n  ): NewsroomComponentState | null {\n    if (state.currentStep === STEP.PROFILE_GRANT && props.completedGrantFlow) {\n      props.dispatch!(\n        analyticsEvent({\n          action: \"Auto advancing past grant step\",\n          label: props.charter && props.charter.name,\n          value: props.grantRequested ? 1 : 0,\n        }),\n      );\n      return {\n        ...state,\n        currentStep: state.currentStep + 1,\n      };\n    }\n    return null;\n  }\n\n  private debouncedPersistCharter = debounce(this.props.persistCharter, 1000, { maxWait: 5000 });\n\n  private checkCharterCompletion = debounce(\n    () => {\n      const charterPartOneComplete = !!(\n        this.props.charter &&\n        this.props.charter.logoUrl &&\n        this.props.charter.newsroomUrl &&\n        this.props.charter.tagline &&\n        this.props.charter.roster &&\n        this.props.charter.roster.length\n      );\n\n      let charterPartTwoComplete = false;\n      const mission = this.props.charter.mission;\n      if (mission) {\n        charterPartTwoComplete = !!(\n          mission.purpose &&\n          mission.structure &&\n          mission.revenue &&\n          mission.encumbrances &&\n          mission.miscellaneous\n        );\n      }\n\n      this.setState({\n        charterPartOneComplete,\n        charterPartTwoComplete,\n      });\n    },\n    1000,\n    { maxWait: 2000 },\n  );\n\n  constructor(props: NewsroomProps) {\n    super(props);\n    this.state = {\n      currentStep: this.determineInitialStep(),\n      furthestStep: props.furthestStep,\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    if (this.props.getCmsUserDataForAddress) {\n      this.props.dispatch!(addGetCmsUserDataForAddress(this.props.getCmsUserDataForAddress));\n    }\n\n    this.initCharter();\n    this.props.dispatch!(addPersistCharter(this.debouncedPersistCharter));\n\n    if (this.props.civil) {\n      if (this.props.newsroomAddress) {\n        await this.hydrateNewsroom(this.props.newsroomAddress);\n      }\n\n      if (!this.props.newsroomAddress && this.props.newsroomDeployTx) {\n        const newsroom = await this.props.civil.newsroomFromFactoryTxHashUntrusted(this.props.newsroomDeployTx);\n        await this.props.saveAddress({ variables: { input: newsroom.address } });\n      }\n      // if they left before the apply step happened and they are stuck on 12\n      if (this.props.tcrApplyTx && this.props.savedStep === STEP.APPLY) {\n        await this.props.civil.awaitReceipt(this.props.tcrApplyTx);\n        this.navigate(1);\n      }\n\n      const tcr = await this.props.civil.tcrSingletonTrusted();\n      const government = await tcr.getGovernment();\n      const hash = await government.getConstitutionHash();\n      const uri = await government.getConstitutionURI();\n      this.props.dispatch!(addConstitutionHash(hash));\n      this.props.dispatch!(addConstitutionUri(uri));\n      this.props.dispatch!(fetchConstitution(uri));\n    }\n\n    this.saveStep(this.props.savedStep, true); // lazy way to update `lastSeen` - can't bear to make another separate mutation\n  }\n\n  public async componentDidUpdate(prevProps: NewsroomProps): Promise<void> {\n    if (this.props.newsroomAddress && !prevProps.newsroomAddress) {\n      await this.hydrateNewsroom(this.props.newsroomAddress);\n    }\n    if (prevProps.newsroom && this.props.account !== prevProps.account) {\n      this.setRoles(this.props.newsroomAddress || prevProps.newsroomAddress!);\n    }\n  }\n\n  public renderManager(): JSX.Element {\n    return (\n      <>\n        {this.props.userNotOnContract && (\n          <ErrorP>\n            Your wallet address is not listed on your newsroom contract, so you are unable to make changes to it. Please\n            contact a newsroom officer in order to be added.\n          </ErrorP>\n        )}\n        <StepProcessTopNavNoButtons\n          activeIndex={STEP_TO_SECTION[this.state.currentStep]}\n          onActiveTabChange={this.navigateToSection}\n          contentPrepend={this.renderRepublishCharter()}\n          fullyControlledIndex={true}\n        >\n          {this.renderSteps()}\n        </StepProcessTopNavNoButtons>\n      </>\n    );\n  }\n\n  public renderSteps(): JSX.Element[] {\n    return [\n      <StepNoButtons title={\"Registry Profile\"} complete={this.state.charterPartOneComplete} key=\"createCharterPartOne\">\n        <NewsroomProfile\n          profileWalletAddress={this.props.profileWalletAddress}\n          currentStep={this.state.currentStep - SECTION_STARTS[SECTION.PROFILE]}\n          furthestStep={this.props.furthestStep}\n          navigate={this.navigate}\n          grantRequested={this.props.grantRequested}\n          waitingOnGrant={this.props.waitingOnGrant}\n          completedGrantFlow={this.props.completedGrantFlow}\n          charter={this.props.charter}\n          updateCharter={this.updateCharter}\n        />\n      </StepNoButtons>,\n      <StepNoButtons title={\"Smart Contract\"} disabled={this.getDisabled(SECTION.CONTRACT)()} key=\"smartcontract\">\n        <SmartContract\n          currentStep={this.state.currentStep - SECTION_STARTS[SECTION.CONTRACT]}\n          navigate={this.navigate}\n          profileWalletAddress={this.props.profileWalletAddress}\n          charter={this.props.charter}\n          userIsOwner={this.props.userIsOwner}\n          newsroomAddress={this.props.newsroomAddress}\n          newsroomDeployTxHash={this.props.newsroomDeployTx}\n          updateCharter={this.updateCharter}\n          newsroom={this.props.newsroom}\n        />\n      </StepNoButtons>,\n      <StepNoButtons title={\"Civil Tokens\"} disabled={this.getDisabled(SECTION.TOKENS)()} key=\"ct\">\n        <PurchaseTokens\n          navigate={this.navigate}\n          grantApproved={this.props.grantApproved}\n          minDeposit={this.props.minDeposit}\n        />\n      </StepNoButtons>,\n      <StepNoButtons title={\"Apply to Registry\"} disabled={this.getDisabled(SECTION.APPLY)()} key=\"atr\">\n        <ApplyToTCRStep\n          navigate={this.navigate}\n          newsroom={this.props.newsroom!}\n          address={this.props.newsroomAddress}\n          civil={this.props.civil}\n          minDeposit={this.props.minDeposit}\n          applyStageLen={this.props.applyStageLen}\n        />\n      </StepNoButtons>,\n    ];\n  }\n\n  public render(): JSX.Element {\n    return (\n      <ThemeProvider theme={this.props.theme}>\n        <Wrapper>\n          <WalletOnboardingV2\n            civil={this.props.civil}\n            wrongNetwork={!!this.props.requiredNetwork && this.props.currentNetwork !== this.props.requiredNetwork}\n            requiredNetworkNiceName={this.props.requiredNetworkNiceName || this.props.requiredNetwork}\n            metamaskWalletAddress={this.props.account}\n            profileWalletAddress={this.props.profileWalletAddress}\n            authApplicationType={AuthApplicationEnum.NEWSROOM}\n          >\n            {this.renderManager()}\n          </WalletOnboardingV2>\n        </Wrapper>\n      </ThemeProvider>\n    );\n  }\n\n  private determineInitialStep(): STEP {\n    let currentStep = this.props.savedStep;\n    if (currentStep === STEP.APPLIED) {\n      // Not a real step, see its description above\n      currentStep--;\n    }\n\n    if (qs.parse(document.location.search.substr(1)).purchased) {\n      // Just been redirected back from token purchase\n      currentStep = STEP.TOKENS;\n    }\n\n    if (this.props.forceStep) {\n      currentStep = this.props.forceStep;\n    }\n\n    if (this.props.waitingOnGrant) {\n      // We've run out of fields in GA event so need to use numeric \"value\" to pass this info in:\n      let grantInfo;\n      if (this.props.grantApproved === true) {\n        grantInfo = 1;\n      } else if (this.props.grantApproved === false) {\n        grantInfo = 2;\n      } else {\n        grantInfo = 0;\n      }\n\n      this.props.dispatch!(\n        analyticsEvent({\n          action: \"Pushed back to grant step\",\n          label: this.props.charter && this.props.charter.name,\n          value: grantInfo,\n        }),\n      );\n      currentStep = STEP.PROFILE_GRANT;\n    }\n\n    currentStep = this.backtrackSteps(currentStep);\n\n    return currentStep;\n  }\n\n  /** Handle situation where user used nav to jump too far ahead in step process before we put in disable checks - they should be backtracked back to where they need to be. */\n  private backtrackSteps(step: STEP): STEP {\n    const section = STEP_TO_SECTION[step];\n    if (this.getDisabled(section)()) {\n      return this.backtrackSteps(step - 1);\n    }\n    return step;\n  }\n\n  private renderRepublishCharter(): JSX.Element | undefined {\n    if (!this.props.newsroomAddress || STEP_TO_SECTION[this.state.currentStep] !== SECTION.PROFILE) {\n      return;\n    }\n\n    return (\n      <RepublishCharterNotice civil={this.props.civil!} charter={this.props.charter} newsroom={this.props.newsroom!} />\n    );\n  }\n\n  private getDisabled(section: SECTION): () => boolean {\n    const functions = {\n      [SECTION.PROFILE]: () => {\n        return false;\n      },\n      [SECTION.CONTRACT]: () => {\n        return !this.props.completedGrantFlow;\n      },\n      [SECTION.TOKENS]: () => {\n        return !this.props.newsroomAddress;\n      },\n      [SECTION.APPLY]: () => {\n        // Really it should be disabled if user's token balance is insufficient, but not worth rigging that up - this step handles insufficient tokens ok\n        return !this.props.newsroomAddress;\n      },\n    };\n\n    return functions[section];\n  }\n\n  private navigateToSection = (newSection: SECTION): void => {\n    if (newSection === STEP_TO_SECTION[this.state.currentStep]) {\n      // Already on this section\n      return;\n    }\n\n    let newStep = SECTION_STARTS[newSection]; // Go to first step in that section\n    if (newSection === SECTION.PROFILE) {\n      if (this.props.waitingOnGrant) {\n        newStep = STEP.PROFILE_GRANT;\n      } else {\n        newStep = STEP.PROFILE_SO_FAR; // For this section, makes more sense to go to \"your profile so far\" step\n      }\n    }\n    newStep = Math.min(this.state.furthestStep, newStep); // Don't let them advance past where they have gotten through next button\n\n    document.documentElement.scrollTop = document.body.scrollTop = 0;\n    this.saveStep(newStep);\n    this.setState({ currentStep: newStep });\n  };\n  private navigate = (go: 1 | -1): void => {\n    let newStep = this.state.currentStep + go;\n    this.saveStep(newStep);\n    if (newStep === STEP.APPLIED) {\n      // Dummy step we don't actually update view for, but need to send to API.\n      return;\n    } else if (newStep === STEP.PROFILE_GRANT && this.props.completedGrantFlow) {\n      newStep += go; // skip the step and go one further in the requested direction\n    }\n    document.documentElement.scrollTop = document.body.scrollTop = 0;\n    this.setState({ currentStep: newStep });\n  };\n  private saveStep(step: STEP, doNotTrack?: boolean): void {\n    if (!doNotTrack) {\n      this.props.dispatch!(navigateStep(step));\n      if (step > this.state.furthestStep) {\n        this.props.dispatch!(reachedNewStep(step));\n      }\n    }\n\n    const furthestStep = Math.max(step, this.state.furthestStep);\n    this.setState({ furthestStep });\n    this.props\n      .saveSteps({\n        variables: {\n          input: {\n            step,\n            furthestStep,\n            lastSeen: Math.floor(Date.now() / 1000),\n          },\n        },\n      })\n      .catch(err => {}); // easier than changing 10 functions to async\n  }\n\n  private initCharter(): void {\n    this.updateCharter(this.props.persistedCharter || {}, true);\n  }\n\n  private hydrateNewsroom = async (address: EthAddress): Promise<void> => {\n    await this.props.dispatch!(getNewsroom(address, this.props.civil!, this.props.persistedCharter || {}));\n    this.props.dispatch!(getEditors(address, this.props.civil!));\n    this.setRoles(address);\n  };\n\n  private setRoles = (address: EthAddress): void => {\n    this.props.dispatch!(getIsOwner(address, this.props.civil!));\n    this.props.dispatch!(getIsEditor(address, this.props.civil!));\n  };\n\n  private updateCharter = (charter: Partial<CharterData>, dontPersist?: boolean): void => {\n    this.props.dispatch!(updateCharter(this.props.newsroomAddress || \"\", charter, dontPersist));\n    this.checkCharterCompletion();\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: NewsroomGqlProps): NewsroomReduxProps => {\n  const { newsroomAddress } = ownProps;\n  const newsroom = state.newsrooms.get(newsroomAddress || \"\") || { wrapper: { data: {} } };\n\n  const waitingOnGrant = !!ownProps.grantRequested && typeof ownProps.grantApproved !== \"boolean\";\n  const completedGrantFlow = typeof ownProps.grantApproved === \"boolean\";\n\n  return {\n    ...ownProps,\n    waitingOnGrant,\n    completedGrantFlow,\n    newsroom: newsroom.newsroom,\n    charter: newsroom.charter || {},\n  };\n};\n\nconst NewsroomRedux = connect(mapStateToProps)(NewsroomComponent);\n\nexport const Newsroom: React.FunctionComponent<NewsroomExternalProps> = props => {\n  return (\n    <AuthWrapper>\n      <DataWrapper>\n        {(gqlProps: NewsroomGqlProps) => {\n          // @ts-ignore Type 'ButtonTheme | undefined' is not assignable to type\n          return <NewsroomRedux {...props} {...gqlProps} />;\n        }}\n      </DataWrapper>\n    </AuthWrapper>\n  );\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomManager/ManageContractMembers.tsx",
    "content": "import * as React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { CivilContext, ICivilContext, LoadingMessage } from \"@joincivil/components\";\nimport { NewsroomInstance } from \"@joincivil/core\";\nimport { EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport styled from \"styled-components\";\nimport { AddMembersToContract } from \"../SmartContract/AddMembersToContract\";\nimport { updateNewsroom, fetchNewsroom, getEditors } from \"../actionCreators\";\nimport { StateWithNewsroom } from \"../reducers\";\n\nconst Wrapper = styled.div`\n  margin: auto;\n  max-width: 880px;\n`;\n\nexport interface ManageContractMembersProps {\n  charter: Partial<CharterData>;\n  /** @NOTE: Make sure to use the newsroom instance `newsroom.address`, which is mixed case, because everything in newsroom-signup depends on that. This is used just to instantiate the contract. */\n  newsroomAddress: EthAddress;\n}\n\nexport const ManageContractMembers: React.FunctionComponent<ManageContractMembersProps> = props => {\n  const dispatch = useDispatch();\n  const context = React.useContext<ICivilContext>(CivilContext);\n  const [newsroom, setNewsroom] = React.useState<NewsroomInstance | undefined>();\n\n  React.useEffect(() => {\n    if (!context.civil) {\n      return;\n    }\n    context.civil.newsroomAtUntrusted(props.newsroomAddress).then(setNewsroom);\n  }, [context.civil]);\n\n  const reduxCharter = useSelector((state: StateWithNewsroom) => {\n    if (!newsroom) {\n      return undefined;\n    }\n    const newsroomState = state.newsrooms.get(newsroom.address);\n    return newsroomState && newsroomState.charter;\n  });\n  const owners = useSelector((state: StateWithNewsroom) => {\n    if (!newsroom) {\n      return undefined;\n    }\n    const newsroomState = state.newsrooms.get(newsroom.address);\n    return newsroomState && newsroomState.wrapper && newsroomState.wrapper.data && newsroomState.wrapper.data.owners;\n  });\n\n  // Hydrate redux store if it hasn't been already:\n  React.useEffect(() => {\n    if (!newsroom) {\n      return;\n    }\n    if (!reduxCharter) {\n      dispatch(updateNewsroom(newsroom.address, { newsroom, charter: props.charter }));\n    }\n    dispatch(fetchNewsroom(newsroom.address));\n  }, [reduxCharter, newsroom, dispatch]);\n  React.useEffect(() => {\n    if (!newsroom || !context.civil) {\n      return;\n    }\n    dispatch(getEditors(newsroom.address, context.civil));\n  }, [newsroom, dispatch, context.civil]);\n\n  if (!newsroom) {\n    return <LoadingMessage>Loading Newsroom</LoadingMessage>;\n  }\n\n  if (!owners) {\n    return <LoadingMessage>Loading Users</LoadingMessage>;\n  }\n\n  return (\n    <Wrapper>\n      <AddMembersToContract\n        charter={reduxCharter || props.charter}\n        newsroom={newsroom}\n        profileWalletAddress={context.currentUser.ethAddress}\n        updateCharter={() => {}}\n        managerMode={true}\n      />\n    </Wrapper>\n  );\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomManager/index.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { Prompt } from \"react-router-dom\";\nimport styled, { ThemeProvider } from \"styled-components\";\n\nimport { NewsroomInstance } from \"@joincivil/core\";\nimport { EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport {\n  ButtonTheme,\n  CivilContext,\n  ICivilContext,\n  OBSectionHeader,\n  colors,\n  MetaMaskLogoButton,\n  LoadingMessage,\n  LoadingIndicator,\n  metaMaskLoginImgUrl,\n  ErrorIcon,\n} from \"@joincivil/components\";\n\nimport { StateWithNewsroom } from \"../reducers\";\nimport { updateNewsroom, getNewsroom, updateCharter } from \"../actionCreators\";\nimport { Wrapper, DEFAULT_THEME } from \"../styledComponents\";\nimport { RepublishCharterNotice } from \"../RepublishCharterNotice\";\nimport { NewsroomBio } from \"../NewsroomProfile/NewsroomBio\";\nimport { AddRosterMember } from \"../NewsroomProfile/AddRosterMembers\";\nimport { CharterQuestions } from \"../NewsroomProfile/CharterQuestions\";\nimport { ApplicationSoFarPage } from \"../NewsroomProfile/ApplicationSoFarPage\";\n\nexport { ManageContractMembers } from \"./ManageContractMembers\";\n\nexport interface NewsroomManagerExternalProps {\n  newsroomAddress: EthAddress;\n  publishedCharter: Partial<CharterData>;\n  listingPhaseState: any;\n  theme?: ButtonTheme;\n}\n\nexport interface NewsroomManagerReduxProps {\n  charter?: Partial<CharterData>;\n  newsroom?: NewsroomInstance;\n}\n\nexport type NewsroomManagerProps = NewsroomManagerExternalProps & NewsroomManagerReduxProps & DispatchProp<any>;\n\nexport interface NewsroomManagerState {\n  web3Enabled: boolean; // @TODO This state logic should be lifted to something dapp-wide, or reuse the wallet onboarding component\n  editMode?: boolean;\n  dirty?: boolean;\n  saving?: boolean;\n  lastSavedCharter?: Partial<CharterData>;\n}\n\nconst StyledHeader = styled(OBSectionHeader)`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-size: 20px;\n  padding-top: 24px;\n  margin-top: 25px;\n  text-align: left;\n`;\n\nconst EditLink = styled.a`\n  color: ${colors.primary.CIVIL_BLUE_1};\n  cursor: pointer;\n`;\nconst SaveNoticeWrapper = styled.div`\n  bottom: 0;\n  left: 0;\n  position: fixed;\n  width: 100%;\n  z-index: 1;\n`;\nconst SaveNotice = styled(RepublishCharterNotice)`\n  font-size: 14px;\n  line-height: 18px;\n  margin: 0;\n  max-width: 900px;\n  margin: auto;\n`;\nconst SaveButtonWrapper = styled.div`\n  display: inline-block;\n  margin: 8px auto 0;\n`;\n\nconst LockedWarning = styled.span`\n  color: ${colors.accent.CIVIL_RED};\n\n  & svg {\n    margin: 0 2px -3px 0;\n  }\n`;\n\nconst DEFAULT_DIRTY_MESSAGE = \"Are you sure you want to leave this page? Your changes have not been saved.\";\n\nclass NewsroomManagerComponent extends React.Component<NewsroomManagerProps, NewsroomManagerState> {\n  public static contextType = CivilContext;\n\n  public static defaultProps: Partial<NewsroomManagerProps> = {\n    theme: DEFAULT_THEME,\n  };\n  public context!: ICivilContext;\n\n  constructor(props: NewsroomManagerProps) {\n    super(props);\n    this.state = { web3Enabled: false };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    if (!this.props.newsroomAddress || !this.props.publishedCharter) {\n      // Type safety should ensure this doesn't happen, but I don't trust everything to be lined up all the way up component tree, and if undefined this page will be borked with blank charter, user might try to add stuff back in, republish... so just in case:\n      throw Error(\"NewsroomManagerComponent: newsroomAddress and/or publishedCharter props missing\");\n    }\n    if (!this.context.civil) {\n      // Pretty certain this will have been instantiated by the time this component is mounted, but if that's ever not the case I want to catch it!\n      throw Error(\"NewsroomManagerComponent: civil instance not yet instantiated in context\");\n    }\n\n    window.addEventListener(\"beforeunload\", this.unsavedWarning);\n\n    this.context.civil.currentProviderEnable().then(() => this.setState({ web3Enabled: true }));\n\n    // Hydrate redux:\n    if (!this.props.newsroom || !this.props.charter) {\n      // Dumb shenanigans to handle the fact that newsroom-signup uses mixed case `newsroom.address` from contract instance for keying redux. Making newsroom-signup use lowercase would be a massive multi-pronged find-and-replace job and I worry about missing something and tons of testing. So we accommodate this by instantiating contract here from lowercase address, and getting mixed case address from it. - @tobek\n      const newsroom = await this.context.civil.newsroomAtUntrusted(this.props.newsroomAddress);\n      // Pop this newsroom contract into redux keyed by lowercase `props.newsroomAddress` so we can pick it up in mapStateToProps:\n      this.props.dispatch!(updateNewsroom(this.props.newsroomAddress, { newsroom }));\n      // Now actually hydrate everything:\n      await this.props.dispatch!(getNewsroom(newsroom.address, this.context.civil!, this.props.publishedCharter));\n    }\n  }\n\n  public componentWillUnmount(): void {\n    // Remove \"are you sure you want to leave?\" prompt.\n    window.removeEventListener(\"beforeunload\", this.unsavedWarning);\n  }\n\n  public render(): JSX.Element {\n    if (!this.props.charter) {\n      return <LoadingMessage>Loading Charter</LoadingMessage>;\n    }\n    if (!this.props.newsroom) {\n      return <LoadingMessage>Loading Newsroom</LoadingMessage>;\n    }\n    if (!this.state.web3Enabled) {\n      // @TODO This logic should be lifted to something dapp-wide, and with a less hacky UI of course - or reuse wallet onboarding component\n      return (\n        <LoadingMessage>\n          <p>Connecting to your Ethereum wallet</p>\n          <div>\n            <img src={metaMaskLoginImgUrl} style={{ width: 255, marginTop: 8 }} />\n          </div>\n        </LoadingMessage>\n      );\n    }\n    return (\n      <ThemeProvider theme={this.props.theme}>\n        <Wrapper>\n          <Prompt when={!!this.unsavedWarning()} message={DEFAULT_DIRTY_MESSAGE} />\n\n          <p>\n            {this.props.listingPhaseState.isUnderChallenge ? (\n              <LockedWarning>\n                <ErrorIcon width={16} height={16} /> Your newsroom is under challenge. Your charter is locked from\n                editing until the challenge period has ended.\n              </LockedWarning>\n            ) : this.state.saving ? (\n              <>\n                Saving <LoadingIndicator inline={true} />\n              </>\n            ) : (\n              <EditLink onClick={() => (this.state.editMode ? this.discardChanges() : this.enableEditMode())}>\n                {this.state.editMode ? (this.state.dirty ? \"Discard Changes\" : \"Cancel\") : \"Edit >\"}\n              </EditLink>\n            )}\n          </p>\n\n          {this.renderSaveNotice()}\n\n          {this.state.editMode ? (\n            <>\n              <StyledHeader>Newsroom Details</StyledHeader>\n              <NewsroomBio editMode={true} charter={this.props.charter} updateCharter={this.updateCharter} />\n              <StyledHeader>Roster</StyledHeader>\n              <AddRosterMember editMode={true} charter={this.props.charter} updateCharter={this.updateCharter} />\n              <StyledHeader>Charter</StyledHeader>\n              <CharterQuestions editMode={true} charter={this.props.charter} updateCharter={this.updateCharter} />\n            </>\n          ) : (\n            <ApplicationSoFarPage editMode={true} charter={this.props.charter} />\n          )}\n        </Wrapper>\n      </ThemeProvider>\n    );\n  }\n\n  private renderSaveNotice = (): JSX.Element | null => {\n    if (!this.state.dirty || !this.props.charter || !this.props.newsroom) {\n      return null;\n    }\n    return (\n      <SaveNoticeWrapper>\n        <SaveNotice\n          civil={this.context.civil!}\n          charter={this.props.charter}\n          newsroom={this.props.newsroom}\n          introCopy={\n            \"Once you have finished making changes you must save them. This will open your wallet to process the transaction. You are republishing your charter alongside your newsroom smart contract\"\n          }\n          transactionButtonComponent={(props: any) => (\n            <SaveButtonWrapper>\n              <MetaMaskLogoButton onClick={props.onClick}>Save Changes</MetaMaskLogoButton>\n            </SaveButtonWrapper>\n          )}\n          onTxStart={this.saveInProgress}\n          onTxComplete={this.saveComplete}\n        />\n      </SaveNoticeWrapper>\n    );\n  };\n\n  private updateCharter = (charter: Partial<CharterData>) => {\n    if (!this.state.dirty) {\n      this.setState({ dirty: true });\n    }\n    this.props.dispatch!(updateCharter(this.props.newsroom!.address || \"\", charter, true));\n  };\n\n  private enableEditMode = () => {\n    this.setState({ editMode: true });\n  };\n  private discardChanges = () => {\n    this.updateCharter(this.state.lastSavedCharter || this.props.publishedCharter);\n    this.setState({ editMode: false, dirty: false });\n  };\n\n  private saveInProgress = () => {\n    this.setState({ editMode: false, saving: true });\n  };\n  private saveComplete = () => {\n    this.setState({ dirty: false, saving: false, lastSavedCharter: { ...this.props.charter } });\n  };\n\n  private unsavedWarning = (event?: BeforeUnloadEvent): boolean | undefined => {\n    if (this.state.dirty && !this.state.saving) {\n      if (event) {\n        event.preventDefault(); // specification\n        event.returnValue = \"\"; // some Chrome\n      }\n      return true; // what most browsers actually use\n    }\n    return undefined;\n  };\n}\n\nconst mapStateToProps = (\n  state: StateWithNewsroom,\n  ownProps: NewsroomManagerExternalProps,\n): NewsroomManagerReduxProps => {\n  const { newsroomAddress } = ownProps;\n  const dummyNewsroom = state.newsrooms.get(newsroomAddress);\n  const casedNewsroomAddress = dummyNewsroom && dummyNewsroom.newsroom && dummyNewsroom.newsroom.address;\n  const newsroom = state.newsrooms.get(casedNewsroomAddress);\n\n  return {\n    ...ownProps,\n    charter: newsroom && newsroom.charter,\n    newsroom: newsroom && newsroom.newsroom,\n  };\n};\n\nexport const NewsroomManager = connect(mapStateToProps)(NewsroomManagerComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/AddRosterMembers.tsx",
    "content": "import * as React from \"react\";\nimport { LearnMoreButton } from \"./LearnMoreButton\";\nimport { StyledHr, FormSection, StepSectionCounter } from \"../styledComponents\";\nimport { CharterData, RosterMember as RosterMemberInterface, EthAddress } from \"@joincivil/typescript-types\";\nimport {\n  InvertedButton,\n  BorderlessButton,\n  buttonSizes,\n  OBSectionHeader,\n  OBSectionDescription,\n} from \"@joincivil/components\";\nimport { RosterMember } from \"./RosterMember\";\nimport styled from \"styled-components\";\nimport { RosterMemberListItem } from \"./RosterMemberListItem\";\n\nexport interface AddRosterMemberProps {\n  charter: Partial<CharterData>;\n  profileWalletAddress?: EthAddress;\n  /** Onboarding complete, now just managing info, so remove onboarding copy. */\n  editMode?: boolean;\n  updateCharter(charter: Partial<CharterData>): void;\n  setButtonVisibility?(visibility: boolean): void;\n}\nexport interface AddRosterMemberDefaultProps {\n  setButtonVisibility(visibility: boolean): void;\n}\n\nexport interface AddRosterMemberState {\n  editingMember: Partial<RosterMemberInterface> | null;\n  editingIndex: number;\n}\n\nconst LowerHeader = styled(OBSectionHeader)`\n  font-size: 20px;\n  text-align: left;\n`;\n\nconst LowerDescription = styled(OBSectionDescription)`\n  text-align: left;\n`;\n\nconst StyledCounter = styled(StepSectionCounter)`\n  margin-bottom: 35px;\n`;\n\nconst StyledUl = styled.ul`\n  list-style: none;\n  margin: 0 0 35px 0;\n  padding: 0;\n`;\n\nconst ButtonSection = styled.div`\n  display: flex;\n  justify-content: flex-start;\n  margin-top: 15px;\n`;\n\nconst RemoveButton = styled(BorderlessButton)`\n  margin-left: auto;\n`;\n\nexport class AddRosterMember extends React.Component<\n  AddRosterMemberProps & AddRosterMemberDefaultProps,\n  AddRosterMemberState\n> {\n  public static defaultProps: AddRosterMemberDefaultProps = {\n    setButtonVisibility: (vis: boolean) => {},\n  };\n  constructor(props: AddRosterMemberProps & AddRosterMemberDefaultProps) {\n    super(props);\n    this.state = {\n      editingMember: null,\n      editingIndex: -1,\n    };\n  }\n  public render(): JSX.Element {\n    return (\n      <>\n        {!this.props.editMode && this.renderOnboardingHeader()}\n        <FormSection>\n          {!this.props.editMode && (\n            <>\n              <LowerHeader>Newsroom Roster</LowerHeader>\n              <LowerDescription>\n                Add yourself, in addition to any staff or team members to your roster.\n              </LowerDescription>\n              <StyledCounter>Step 2 of 4: Roster</StyledCounter>\n            </>\n          )}\n          {this.state.editingMember ? (\n            <RosterMember\n              user={{ rosterData: this.state.editingMember }}\n              updateRosterMember={this.rosterMemberUpdate}\n            />\n          ) : (\n            <StyledUl>\n              {(this.props.charter.roster || []).map((member, i) => {\n                return <RosterMemberListItem key={i} member={member} edit={() => this.editRosterMember(i)} />;\n              })}\n            </StyledUl>\n          )}\n          {this.state.editingMember ? (\n            <ButtonSection>\n              <InvertedButton size={buttonSizes.MEDIUM} onClick={this.saveRosterMember}>\n                Save\n              </InvertedButton>\n              <BorderlessButton size={buttonSizes.MEDIUM} onClick={this.cancelEdit}>\n                Cancel\n              </BorderlessButton>\n              <RemoveButton size={buttonSizes.MEDIUM} onClick={this.removeRosterMember}>\n                Remove\n              </RemoveButton>\n            </ButtonSection>\n          ) : (\n            <InvertedButton size={buttonSizes.MEDIUM_WIDE} onClick={this.addRosterMember}>\n              {this.props.charter.roster && this.props.charter.roster.length\n                ? \"Add a profile\"\n                : \"Add yourself to roster\"}\n            </InvertedButton>\n          )}\n        </FormSection>\n      </>\n    );\n  }\n\n  private renderOnboardingHeader(): JSX.Element {\n    return (\n      <>\n        <OBSectionHeader>Now, add your team to the Newsroom Roster</OBSectionHeader>\n        <OBSectionDescription>\n          Your newsroom roster is a list of journalists who are part of your newsroom. This is part of your public\n          Registry Profile.\n        </OBSectionDescription>\n        <LearnMoreButton />\n        <StyledHr />\n      </>\n    );\n  }\n\n  private addRosterMember = (e: any) => {\n    e.preventDefault();\n    this.props.setButtonVisibility(false);\n    const editingMember: Partial<RosterMemberInterface> = {};\n    if (!this.props.charter.roster || (this.props.charter.roster && this.props.charter.roster.length === 0)) {\n      editingMember.ethAddress = this.props.profileWalletAddress;\n    }\n    this.setState({ editingMember });\n  };\n\n  private cancelEdit = () => {\n    this.props.setButtonVisibility(true);\n    this.setState({ editingMember: null, editingIndex: -1 });\n  };\n\n  private rosterMemberUpdate = (newVal: Partial<RosterMemberInterface>): void => {\n    this.setState({ editingMember: newVal });\n  };\n\n  private removeRosterMember = () => {\n    const roster = (this.props.charter.roster || []).slice();\n    const memberIndex = this.state.editingIndex;\n    if (memberIndex >= 0) {\n      roster.splice(memberIndex, 1);\n      this.props.updateCharter({\n        ...this.props.charter,\n        roster,\n      });\n    }\n    this.props.setButtonVisibility(true);\n    this.setState({ editingMember: null, editingIndex: -1 });\n  };\n\n  private saveRosterMember = () => {\n    const roster = (this.props.charter.roster || []).slice();\n    const memberIndex = this.state.editingIndex;\n    if (memberIndex >= 0) {\n      roster[memberIndex] = this.state.editingMember as RosterMemberInterface;\n    } else {\n      roster.push(this.state.editingMember as RosterMemberInterface);\n    }\n\n    this.props.updateCharter({\n      ...this.props.charter,\n      roster,\n    });\n    this.props.setButtonVisibility(true);\n    this.setState({ editingMember: null, editingIndex: -1 });\n  };\n\n  private editRosterMember = (index: number) => {\n    this.props.setButtonVisibility(false);\n    this.setState({ editingMember: this.props.charter.roster![index], editingIndex: index });\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/ApplicationSoFarPage.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  fonts,\n  colors,\n  OBCollapsable,\n  OBSectionHeader,\n  OBSectionDescription,\n  HollowGreenCheck,\n} from \"@joincivil/components\";\nimport { AvatarWrap, AvatarImg, noAvatar } from \"../styledComponents\";\nimport { CharterData, RosterMember } from \"@joincivil/typescript-types\";\nimport { charterQuestions, questionsCopy } from \"../constants\";\nimport { RosterMemberListItem } from \"./RosterMemberListItem\";\n\nexport interface ApplicationSoFarPageProps {\n  charter: Partial<CharterData>;\n  /** Onboarding complete, now just managing info, so remove onboarding copy. */\n  editMode?: boolean;\n}\n\nconst Collapsable = styled(OBCollapsable)`\n  &:last-child {\n    margin-bottom: 64px;\n  }\n`;\n\nconst SectionHeaders = styled.h4`\n  padding-left: 36px;\n  margin-bottom: 0;\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 32px;\n  font-family: ${fonts.SANS_SERIF};\n`;\nconst SectionHeaderCheck = styled(HollowGreenCheck)`\n  position: absolute;\n  left: 0;\n  top: 3px;\n  width: 24px;\n  height: 24px;\n`;\n\nconst Label = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 12px;\n  line-height: 16px;\n  color: ${colors.accent.CIVIL_GRAY_2};\n`;\n\nconst Value = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  letter-spacing: 0.13px;\n  line-height: 24px;\n  color: ${colors.primary.BLACK};\n  word-break: break-word;\n`;\n\nconst CollapsableInner = styled.div`\n  padding: 10px 20px 10px 36px;\n`;\n\nconst GridWrapper = styled.div`\n  position: relative;\n  display: grid;\n  grid-template-columns: 40% 50%;\n  grid-template-rows: 70px minmax(70px, auto) auto 70px;\n`;\n\nconst TwoSpanner = styled.div`\n  grid-column: span 2;\n`;\n\nconst QuestionContainer = styled.div`\n  padding: 20px 0;\n  ${Label} {\n    margin-bottom: 10px;\n  }\n`;\n\nconst StyledAvatarWrap = styled(AvatarWrap)`\n  margin: 5px 10px;\n`;\nconst NewsroomLogoWrap = styled(StyledAvatarWrap)`\n  height: 130px;\n  width: 130px;\n`;\nconst NewsroomLogo = styled(AvatarImg)`\n  border-radius: 0;\n  object-fit: contain;\n`;\n\nexport class ApplicationSoFarPage extends React.Component<ApplicationSoFarPageProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        {!this.props.editMode && this.renderOnboardingHeader()}\n        <Collapsable\n          open={true}\n          header={\n            <SectionHeaders>\n              <SectionHeaderCheck />\n              Newsroom Details\n            </SectionHeaders>\n          }\n        >\n          <CollapsableInner>\n            <GridWrapper>\n              <div>\n                <Label>Newsroom Name</Label>\n                <Value>{this.props.charter.name}</Value>\n              </div>\n              <div>\n                <Label>Newsroom URL</Label>\n                <Value>{this.props.charter.newsroomUrl}</Value>\n              </div>\n              <TwoSpanner>\n                <div>\n                  <Label>Newsroom Logo</Label>\n                  <NewsroomLogoWrap>\n                    {this.props.charter.logoUrl ? <NewsroomLogo src={this.props.charter.logoUrl} /> : noAvatar}\n                  </NewsroomLogoWrap>\n                </div>\n              </TwoSpanner>\n              <TwoSpanner>\n                <Label>Tagline</Label>\n                <Value>{this.props.charter.tagline}</Value>\n              </TwoSpanner>\n              {this.renderSocial()}\n            </GridWrapper>\n          </CollapsableInner>\n        </Collapsable>\n        <Collapsable\n          open={true}\n          header={\n            <SectionHeaders>\n              <SectionHeaderCheck />\n              Roster\n            </SectionHeaders>\n          }\n        >\n          <CollapsableInner>\n            {this.props.charter.roster &&\n              this.props.charter.roster.map((member: RosterMember) => {\n                return <RosterMemberListItem member={member} key={member.ethAddress || member.name} />;\n              })}\n          </CollapsableInner>\n        </Collapsable>\n        <Collapsable\n          open={true}\n          header={\n            <SectionHeaders>\n              <SectionHeaderCheck />\n              Charter\n            </SectionHeaders>\n          }\n        >\n          <CollapsableInner>\n            <QuestionContainer>\n              <Label>{questionsCopy[charterQuestions.PURPOSE]}</Label>\n              <Value>{this.props.charter.mission && this.props.charter.mission[charterQuestions.PURPOSE]}</Value>\n            </QuestionContainer>\n            <QuestionContainer>\n              <Label>{questionsCopy[charterQuestions.STRUCTURE]}</Label>\n              <Value>{this.props.charter.mission && this.props.charter.mission[charterQuestions.STRUCTURE]}</Value>\n            </QuestionContainer>\n            <QuestionContainer>\n              <Label>{questionsCopy[charterQuestions.REVENUE]}</Label>\n              <Value>{this.props.charter.mission && this.props.charter.mission[charterQuestions.REVENUE]}</Value>\n            </QuestionContainer>\n            <QuestionContainer>\n              <Label>{questionsCopy[charterQuestions.ENCUMBRANCES]}</Label>\n              <Value>{this.props.charter.mission && this.props.charter.mission[charterQuestions.ENCUMBRANCES]}</Value>\n            </QuestionContainer>\n            <QuestionContainer>\n              <Label>{questionsCopy[charterQuestions.MISCELLANEOUS]}</Label>\n              <Value>{this.props.charter.mission && this.props.charter.mission[charterQuestions.MISCELLANEOUS]}</Value>\n            </QuestionContainer>\n          </CollapsableInner>\n        </Collapsable>\n        <Collapsable\n          open={true}\n          header={\n            <SectionHeaders>\n              <SectionHeaderCheck />\n              Civil Constitution\n            </SectionHeaders>\n          }\n        >\n          <CollapsableInner>\n            I agree to abide by the Civil Community's ethical principles as described in the Civil Constitution.\n          </CollapsableInner>\n        </Collapsable>\n      </>\n    );\n  }\n\n  private renderOnboardingHeader(): JSX.Element {\n    return (\n      <>\n        <OBSectionHeader>Here’s your Registry Profile so far</OBSectionHeader>\n        <OBSectionDescription>\n          Please review your newsroom Registry Profile. Keep in mind that this is a public document.\n        </OBSectionDescription>\n      </>\n    );\n  }\n\n  private renderSocial = (): JSX.Element | null => {\n    if (!this.props.charter.socialUrls) {\n      return null;\n    }\n    return (\n      <>\n        {!!this.props.charter.socialUrls!.twitter && (\n          <div>\n            <Label>Twitter Profile</Label>\n            <Value>{this.props.charter.socialUrls!.twitter}</Value>\n          </div>\n        )}\n        {!!this.props.charter.socialUrls!.facebook && (\n          <div>\n            <Label>Facebook Profile</Label>\n            <Value>{this.props.charter.socialUrls!.facebook}</Value>\n          </div>\n        )}\n      </>\n    );\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/CharterQuestions.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { StepProps, TextareaInput, OBSectionHeader, OBSectionDescription, colors } from \"@joincivil/components\";\nimport { CharterData } from \"@joincivil/typescript-types\";\nimport { FormSection, FormSubhead, StyledHr, StepSectionCounter } from \"../styledComponents\";\nimport { LearnMoreButton } from \"./LearnMoreButton\";\nimport { charterQuestions, questionsCopy } from \"../constants\";\nimport { urlConstants } from \"@joincivil/utils\";\n\nexport interface CharterQuestionsProps extends StepProps {\n  charter: Partial<CharterData>;\n  /** Onboarding complete, now just managing info, so remove onboarding copy. */\n  editMode?: boolean;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nconst Textarea = styled(TextareaInput)`\n  height: 140px;\n`;\n\nconst MoreQuestionsBox = styled.div`\n  padding: 15px 25px;\n  font-size: 13px;\n  text-align: center;\n  color: ${colors.primary.CIVIL_GRAY_2};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin-bottom: 30px;\n  margin-top: 20px;\n`;\n\nexport class CharterQuestions extends React.Component<CharterQuestionsProps> {\n  constructor(props: CharterQuestionsProps) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        {!this.props.editMode && this.renderOnboardingHeader()}\n        <FormSection>\n          <FormSubhead>{questionsCopy[charterQuestions.PURPOSE]}</FormSubhead>\n          <Textarea\n            name={charterQuestions.PURPOSE}\n            value={(this.props.charter.mission && this.props.charter.mission.purpose) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>{questionsCopy[charterQuestions.STRUCTURE]}</FormSubhead>\n          <Textarea\n            name={charterQuestions.STRUCTURE}\n            value={(this.props.charter.mission && this.props.charter.mission.structure) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>{questionsCopy[charterQuestions.REVENUE]}</FormSubhead>\n          <Textarea\n            name={charterQuestions.REVENUE}\n            value={(this.props.charter.mission && this.props.charter.mission.revenue) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>{questionsCopy[charterQuestions.ENCUMBRANCES]}</FormSubhead>\n          <Textarea\n            name={charterQuestions.ENCUMBRANCES}\n            value={(this.props.charter.mission && this.props.charter.mission.encumbrances) || \"\"}\n            onChange={this.missionInputChange}\n          />\n\n          <FormSubhead>{questionsCopy[charterQuestions.MISCELLANEOUS]}</FormSubhead>\n          <Textarea\n            name={charterQuestions.MISCELLANEOUS}\n            value={(this.props.charter.mission && this.props.charter.mission.miscellaneous) || \"\"}\n            onChange={this.missionInputChange}\n          />\n        </FormSection>\n      </>\n    );\n  }\n\n  private renderOnboardingHeader(): JSX.Element {\n    return (\n      <>\n        <OBSectionHeader>Let’s write your Newsroom Charter</OBSectionHeader>\n        <OBSectionDescription>\n          Your Charter is an outline of your Newsroom's journalistic mission and purpose. It helps the Civil community\n          discover and learn more about your newsroom. It's one of the first things the community views about your\n          organization.\n        </OBSectionDescription>\n        <LearnMoreButton />\n        <StyledHr />\n        <StepSectionCounter>Step 3 of 4: Charter</StepSectionCounter>\n        <MoreQuestionsBox>\n          Have any questions?{\" \"}\n          <a target=\"_blank\" href={urlConstants.FAQ_CHARTER_BEST_PRACTICES}>\n            Read the Civil Foundation's best practices on creating great charters.\n          </a>\n          <br />\n          You can also view{\" \"}\n          <a target=\"_blank\" href={urlConstants.FAQ_CHARTER_EXAMPLE}>\n            a sample charter.\n          </a>\n        </MoreQuestionsBox>\n      </>\n    );\n  }\n\n  private missionInputChange = (name: string, val: string) => {\n    this.props.updateCharter({\n      ...this.props.charter,\n      mission: {\n        ...this.props.charter.mission,\n        [name]: val,\n      } as any, // \"as any\" required because Partial<T> doesn't recurse to optional mission values inside CharterData\n    });\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/GrantApplication.tsx",
    "content": "import * as React from \"react\";\nimport {\n  fonts,\n  colors,\n  Checkbox,\n  Modal,\n  BorderlessButton,\n  OBSectionHeader,\n  OBSectionDescription,\n  QuestionToolTip,\n  Notice,\n  NoticeTypes,\n} from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { setGrant, setSkip, grantSubmitted, grantSkipped } from \"../actionCreators\";\nimport { StateWithNewsroom } from \"../reducers\";\nimport { WaitingForGrant } from \"./WaitingForGrant\";\nimport { Mutation, MutationFunc, Query } from \"react-apollo\";\nimport { grantQuery } from \"../queries\";\nimport { requestGrantMutation } from \"../mutations\";\n\nconst DialogueBox = styled.div`\n  border: 1px solid rgba(43, 86, 255, 0.4);\n  border-radius: 8px;\n  padding: 22px 24px;\n`;\n\nconst DialogueHeader = styled.h4`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 32px;\n`;\n\nconst DialogueDescription = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 15px;\n  line-height: 24px;\n`;\n\nconst SmallNote = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  line-height: 20px;\n`;\n\nconst CheckboxArea = styled.div`\n  display: grid;\n  grid-template-columns: 5% 95%;\n`;\n\nconst CheckboxP = styled.p`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 15px;\n  letter-spacing: -0.1px;\n  line-height: 26px;\n  margin: 0;\n`;\n\nconst Divider = styled.div`\n  display: grid;\n  grid-template-columns: auto 15px auto;\n  grid-column-gap: 10px;\n  align-items: center;\n  margin: 20px 0;\n`;\n\nconst DividerLine = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_3};\n`;\n\nconst Or = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 10px;\n  font-weight: 500;\n  line-height: 21px;\n  color: ${colors.accent.CIVIL_GRAY_2};\n`;\n\nconst CostSectionHeader = styled.h5`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  font-weight: bold;\n  line-height: 24px;\n`;\n\nconst CostTip = styled(QuestionToolTip)`\n  margin-top: 3px;\n`;\n\nconst CostGrid = styled.div`\n  display: grid;\n  grid-template-columns: 30% auto;\n`;\n\nconst ModalHeader = styled.h4`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 24px;\n`;\n\nconst ModalP = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 24px;\n`;\n\nconst ModalLi = styled.li`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 24px;\n  margin-bottom: 9px;\n`;\n\nconst ButtonSection = styled.div`\n  display: flex;\n  justify-content: flex-end;\n`;\n\nconst AccountWarning = styled(Notice)`\n  margin-bottom: 15px;\n`;\n\nexport interface GrantApplicationProps {\n  chooseGrant: boolean;\n  chooseSkip: boolean;\n}\nexport interface GrantApplicationOwnProps {\n  navigate(go: 1 | -1): void;\n}\n\nclass GrantApplicationComponent extends React.Component<\n  GrantApplicationProps & GrantApplicationOwnProps & DispatchProp<any>\n> {\n  public renderGrantModal(): JSX.Element | null {\n    if (!this.props.chooseGrant) {\n      return null;\n    }\n    return (\n      <Modal width={560}>\n        <ModalHeader>Apply for a Civil Token Grant</ModalHeader>\n        <ModalP>By continuing, you agree to the following:</ModalP>\n        <ul>\n          <ModalLi>Your Newsroom Registry Profile will be reviewed by the Civil Foundation</ModalLi>\n          <ModalLi>\n            You will be notified via email once your application has been decided (reply times will vary)\n          </ModalLi>\n          <ModalLi>\n            You will <strong>not</strong> be able to to edit your Registry Profile until the Foundation team has\n            completed its review\n          </ModalLi>\n          <ModalLi>\n            If approved, the Civil Foundation will create a newsroom, provide it with the Civil Tokens (CVL) required,\n            and apply to the Registry on your behalf, then transfer ownership of the newsroom to you\n          </ModalLi>\n          <ModalLi>We recommend you consult a tax professional about reporting a token-based grant</ModalLi>\n          <ModalLi>\n            You understand that a successful token grant application does not allow you to bypass review and potential\n            challenge by the Civil community\n          </ModalLi>\n        </ul>\n        <ModalP>\n          <a href={urlConstants.FAQ_GRANT} target=\"_blank\">\n            Learn more about the Civil Token Grant process\n          </a>\n        </ModalP>\n        <Mutation<any>\n          update={cache => {\n            cache.writeQuery({\n              query: grantQuery,\n              data: { nrsignupNewsroom: { grantRequested: true } },\n            });\n          }}\n          mutation={requestGrantMutation}\n        >\n          {(requestGrant: MutationFunc) => {\n            return (\n              <ButtonSection>\n                <BorderlessButton onClick={this.deselectGrant}>Cancel</BorderlessButton>\n                <BorderlessButton\n                  onClick={async () => {\n                    this.props.dispatch!(grantSubmitted());\n                    return requestGrant({\n                      variables: {\n                        input: true,\n                      },\n                    });\n                  }}\n                >\n                  Continue\n                </BorderlessButton>\n              </ButtonSection>\n            );\n          }}\n        </Mutation>\n      </Modal>\n    );\n  }\n\n  public renderSkipModal(): JSX.Element | null {\n    if (!this.props.chooseSkip) {\n      return null;\n    }\n    return (\n      <Modal width={560}>\n        <ModalHeader>Skip applying for a Civil Token Grant</ModalHeader>\n        <ModalP>By continuing, you agree to the following:</ModalP>\n        <ul>\n          <ModalLi>\n            {/*@TODO/tobek get from parameterizer*/}\n            Your newsroom will be responsible for purchasing 5,000 Civil tokens (CVL) to apply to the Civil Registry. To\n            do so, you must purchase ETH, first.\n          </ModalLi>\n          <ModalLi>\n            You will also need to purchase enough Ether (ETH) to cover your transaction fees on the blockchain\n          </ModalLi>\n          <ModalLi>\n            You understand that your newsroom must submit to review and potential challenge by the Civil community\n          </ModalLi>\n        </ul>\n        <ButtonSection>\n          <BorderlessButton onClick={this.deselectSkip}>Cancel</BorderlessButton>\n          <BorderlessButton\n            onClick={() => {\n              this.props.dispatch!(grantSkipped());\n              this.props.navigate(1);\n            }}\n          >\n            Continue\n          </BorderlessButton>\n        </ButtonSection>\n      </Modal>\n    );\n  }\n\n  public renderOptions(): JSX.Element {\n    return (\n      <>\n        <OBSectionHeader>Civil Token Grant</OBSectionHeader>\n        <OBSectionDescription>Your Newsroom can apply for a Civil Token Grant at this time. </OBSectionDescription>\n        <DialogueBox>\n          <DialogueHeader>Apply for a Civil Token Grant</DialogueHeader>\n          <DialogueDescription>\n            Your grant will include enough Civil tokens (CVL) to pay your deposit to join the Civil Registry, and the\n            Foundation will take care of making the initial blockchain transactions to get your newsroom set up.\n          </DialogueDescription>\n          <SmallNote>\n            <strong>Note:</strong> The process can take up to 14 days. You will not be able to continue until the Civil\n            Foundation team has reviewed your application. If you application is accepted, the Civil Foundation will\n            create a newsroom and apply to the registry on your behalf, then transfer ownership of the newsroom to you.\n          </SmallNote>\n          <AccountWarning type={NoticeTypes.ALERT}>\n            <strong>Warning:</strong> Please take appropriate precautions to ensure you do not lose access to the\n            Ethereum account you use to log in to Civil. You will need this account to access your newsroom after the\n            Foundation applies on your behalf. For more information about how to secure your account,{\" \"}\n            <a\n              href=\"https://help.civil.co/hc/en-us/articles/360017414652-What-is-a-recovery-phrase-seed-and-why-is-it-important-to-secure-it-\"\n              target=\"_blank\"\n            >\n              click here\n            </a>\n            .\n          </AccountWarning>\n          <CheckboxArea>\n            <Checkbox checked={this.props.chooseGrant} onClick={this.selectGrant} id=\"apply_for_grant\" />\n            <div>\n              <CheckboxP>\n                <label htmlFor=\"apply_for_grant\">\n                  I would like to apply for a Civil Token Grant. My Newsroom Registry Profile will be reviewed by the\n                  Civil Foundation team so they can evaluate an ETH and Civil Token Grant.\n                </label>\n              </CheckboxP>\n              <SmallNote>Please consult with a tax professional about receiving a token grant.</SmallNote>\n            </div>\n          </CheckboxArea>\n        </DialogueBox>\n        <Divider>\n          <DividerLine />\n          <Or>OR</Or>\n          <DividerLine />\n        </Divider>\n        <DialogueBox>\n          <DialogueHeader>Skip applying for a Civil Token Grant</DialogueHeader>\n          <DialogueDescription>You will need to pay for the following:</DialogueDescription>\n          <hr />\n          <CostSectionHeader>\n            Joining Civil Registry Costs\n            <CostTip explainerText=\"These are standard Registry costs that would be covered by a grant.\" />\n          </CostSectionHeader>\n          <CostGrid>\n            <SmallNote>Civil Registry Token Deposit</SmallNote>\n            {/* @TODO/tobek get this from parameterizer */}\n            <SmallNote>5,000 Civil tokens (CVL)</SmallNote>\n            <SmallNote>ETH transaction fees</SmallNote>\n            <SmallNote>$10.00 USD (estimated)</SmallNote>\n          </CostGrid>\n          <CheckboxArea>\n            <Checkbox checked={this.props.chooseSkip} onClick={this.selectSkip} id=\"skip_grant\" />\n            <CheckboxP>\n              <label htmlFor=\"skip_grant\">Skip applying for a Civil Token Grant.</label>\n            </CheckboxP>\n          </CheckboxArea>\n        </DialogueBox>\n        {this.renderGrantModal()}\n        {this.renderSkipModal()}\n      </>\n    );\n  }\n\n  public render(): JSX.Element {\n    return (\n      <Query<any> query={grantQuery}>\n        {({ loading, error, data }) => {\n          if (loading) {\n            return \"Loading...\";\n          }\n          let grantRequested: boolean | undefined;\n          if (data && data.nrsignupNewsroom) {\n            grantRequested = data.nrsignupNewsroom.grantRequested;\n          }\n          if (grantRequested === true) {\n            return <WaitingForGrant />;\n          } else {\n            return this.renderOptions();\n          }\n        }}\n      </Query>\n    );\n  }\n\n  private selectSkip = () => {\n    this.props.dispatch!(setSkip(true));\n  };\n  private selectGrant = () => {\n    this.props.dispatch!(setGrant(true));\n  };\n  private deselectSkip = () => {\n    this.props.dispatch!(setSkip(false));\n  };\n  private deselectGrant = () => {\n    this.props.dispatch!(setGrant(false));\n  };\n}\n\nconst mapStateToProps = (\n  state: StateWithNewsroom,\n  ownProps: GrantApplicationOwnProps,\n): GrantApplicationProps & GrantApplicationOwnProps => {\n  return {\n    chooseGrant: state.grantApplication.get(\"chooseGrant\"),\n    chooseSkip: state.grantApplication.get(\"chooseSkip\"),\n    ...ownProps,\n  };\n};\n\nexport const GrantApplication = connect(mapStateToProps)(GrantApplicationComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/LearnMoreButton.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton, buttonSizes } from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\nimport { InfoModalButton, Header, SectionHeader, Paragraph } from \"../InfoModalButton\";\n\nexport interface LearnMoreButtonProps {\n  lightStyle?: boolean;\n}\n\nexport class LearnMoreButton extends React.Component<LearnMoreButtonProps> {\n  public render(): JSX.Element | null {\n    return (\n      <InfoModalButton\n        lightStyle={this.props.lightStyle}\n        buttonText=\"Learn more about applying to join Civil\"\n        content={\n          <>\n            <Header>About applying to join Civil</Header>\n            <Paragraph>\n              In this section we'll take you through the steps to join the Civil network. But first, let’s start with a\n              few key terms.\n            </Paragraph>\n\n            <SectionHeader>What is the Civil Registry</SectionHeader>\n            <Paragraph>\n              The Civil Registry is the online destination where prospective Civil newsrooms apply to be part of the\n              network.\n            </Paragraph>\n            <Paragraph>\n              Newsrooms on the Civil Registry have been vetted by the community and deemed it as having a credible,\n              journalistic practices as outlined in the{\" \"}\n              <a href={urlConstants.CONSTITUTION} target=\"_blank\">\n                Civil Constitution\n              </a>\n              .\n            </Paragraph>\n\n            <SectionHeader>Civil Tokens</SectionHeader>\n            <Paragraph>\n              Civil tokens (CVL) enable the \"community-owned and operated\" Civil model to work. A token is a piece of\n              software, it’s not a physical coin. But it does have value and represents a piece of ownership in the\n              network.\n            </Paragraph>\n\n            <SectionHeader>Ether (ETH)</SectionHeader>\n            <Paragraph>\n              Ether (ETH) is the cryptocurrency or fuel for the Ethereum blockchain. You will need ETH to pay for\n              certain transcations on Civil. Each transaction takes a small amount of computing effort, called Gas,\n              which is paid for in ETH.\n            </Paragraph>\n\n            <SectionHeader>Applying to the Civil Registry</SectionHeader>\n            <Paragraph>\n              {/*@TODO/toby Populate from parameterizer*/}\n              You will need to deposit 5,000 CVL tokens with your application. This is to signal the seriousness of your\n              intent to the community.\n            </Paragraph>\n            <Paragraph>\n              Your application to the Civil Registry will be up for community review on the Application in Review tab of\n              the Civil Registry for 14 days. A newsroom will be approved if there are no successful challenges.\n            </Paragraph>\n            <Paragraph>\n              When a new newsroom applies to be on the Civil Registry, the community has 14 days to review the\n              application. During the period, any CVL token holder may challenge this newsroom by matching the\n              application deposit if they believe the newsroom’s mission, charter or roster is in any way a violation of\n              the principles of the{\" \"}\n              <a href={urlConstants.CONSTITUTION} target=\"_blank\">\n                Civil Constitution\n              </a>\n              . If there are no challenges, this newsroom will be automatically approved. If there is a challenge, this\n              newsroom will not be able to edit their charter or profile until after the challenge period is over. By\n              applying to the{\" \"}\n              <a href={urlConstants.REGISTRY} target=\"_blank\">\n                Civil Registry\n              </a>\n              , a newsroom is committing to uphold the values of the{\" \"}\n              <a href={urlConstants.CONSTITUTION} target=\"_blank\">\n                Civil Constitution\n              </a>\n              .\n            </Paragraph>\n            <Paragraph>\n              The Registry is designed with checks and balances in place to ensure that all voices and perspectives have\n              an opportunity to be heard in the Civil community. You can learn more about the review and challenge\n              phases{\" \"}\n              <a href={urlConstants.FAQ_COMMUNITY_VETTING_PROCESS} target=\"_blank\">\n                here\n              </a>\n              .\n            </Paragraph>\n\n            <InvertedButton size={buttonSizes.SMALL} target=\"_blank\" href={urlConstants.FAQ_HOME}>\n              Read more on our FAQ\n            </InvertedButton>\n          </>\n        }\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/NewsroomBio.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  StepProps,\n  QuestionToolTip,\n  OBCollapsable,\n  OBCollapsableHeader,\n  OBSmallParagraph,\n  OBSectionHeader,\n  OBSectionDescription,\n} from \"@joincivil/components\";\nimport { CharterData } from \"@joincivil/typescript-types\";\nimport { isValidHttpUrl } from \"@joincivil/utils\";\nimport {\n  FormSection,\n  FormTitle,\n  FormSubhead,\n  FormRow,\n  FormRowItem,\n  HelperText,\n  StyledTextInput,\n  StyledImageToData,\n  StyledTextareaInput,\n  StepSectionCounter,\n} from \"../styledComponents\";\nimport { LearnMoreButton } from \"./LearnMoreButton\";\n\nexport interface NewsroomBioProps extends StepProps {\n  charter: Partial<CharterData>;\n  /** Onboarding complete, now just managing info, so remove onboarding copy. */\n  editMode?: boolean;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nconst LogoFormWrap = styled.div`\n  margin-bottom: 15px;\n  small {\n    background: white;\n    padding: 5px 5px 5px 10px;\n    right: 5px;\n    top: 10px;\n    width: auto;\n    z-index: 1;\n  }\n`;\n\nconst LogoImgWrap = styled.div`\n  position: relative;\n  max-width: 130px;\n`;\n\nconst LogoImg = styled.img`\n  height: 130px;\n  object-fit: contain;\n  width: 130px;\n`;\n\nconst NewsroomURLInput = styled(StyledTextInput)`\n  max-width: 400px;\n`;\n\nconst NewsroomLogoURLInput = styled(StyledImageToData)`\n  max-width: 400px;\n`;\n\nconst TaglineTextarea = styled(StyledTextareaInput)`\n  height: 80px;\n  margin: -4px 0 0;\n`;\n\nexport class NewsroomBio extends React.Component<NewsroomBioProps> {\n  public render(): JSX.Element {\n    const charter = this.props.charter;\n    return (\n      <>\n        {!this.props.editMode && this.renderOnboardingHeader()}\n        <FormSection>\n          {!this.props.editMode && (\n            <>\n              <FormTitle>First, tell us about your Newsroom</FormTitle>\n              <OBSmallParagraph>Enter your newsroom details below.</OBSmallParagraph>\n            </>\n          )}\n          <div>\n            <FormSubhead>Newsroom Name</FormSubhead>\n            <NewsroomURLInput name=\"name\" value={charter.name || \"\"} onChange={this.charterInputChange} />\n          </div>\n          <div>\n            <FormSubhead>\n              Newsroom Logo\n              <QuestionToolTip\n                explainerText={\n                  \"Recommended dimensions 260x260px, maximum file size 250KB. Image will be displayed constrained to a square.\"\n                }\n              />\n            </FormSubhead>\n            <LogoFormWrap>\n              <LogoImgWrap>{charter.logoUrl && <LogoImg src={charter.logoUrl} />}</LogoImgWrap>\n              <NewsroomLogoURLInput\n                onChange={(dataUri: string) => this.charterInputChange(\"logoUrl\", dataUri)}\n                buttonText={charter.logoUrl ? \"Change Image\" : \"Add Image\"}\n              />\n            </LogoFormWrap>\n          </div>\n\n          <div>\n            <FormSubhead>Newsroom URL</FormSubhead>\n            <NewsroomURLInput\n              name=\"newsroomUrl\"\n              value={charter.newsroomUrl || \"\"}\n              onChange={this.charterInputChange}\n              invalid={this.invalidUrlInput(charter.newsroomUrl)}\n              invalidMessage={\"Invalid URL\"}\n            />\n          </div>\n\n          <div>\n            <FormSubhead>\n              Tagline\n              <QuestionToolTip explainerText={\"This can be a tagline or short summary about your Newsroom.\"} />\n            </FormSubhead>\n            <TaglineTextarea\n              name=\"tagline\"\n              value={charter.tagline || \"\"}\n              onChange={this.charterInputChange}\n              invalid={!!charter.tagline && charter.tagline.length > 120}\n              invalidMessage={\"Too long\"}\n            />\n            <HelperText>Maximum of 120 Characters</HelperText>\n          </div>\n\n          <FormRow>\n            <FormRowItem>\n              <div>\n                <FormSubhead optional>Twitter URL</FormSubhead>\n                <StyledTextInput\n                  name=\"twitter\"\n                  value={(charter.socialUrls || {}).twitter || \"\"}\n                  onChange={this.charterSocialInputChange}\n                  invalid={this.invalidUrlInput((charter.socialUrls || {}).twitter)}\n                  invalidMessage={\"Invalid URL\"}\n                />\n              </div>\n            </FormRowItem>\n            <FormRowItem>\n              <div>\n                <FormSubhead optional>Facebook URL</FormSubhead>\n                <StyledTextInput\n                  name=\"facebook\"\n                  value={(charter.socialUrls || {}).facebook || \"\"}\n                  onChange={this.charterSocialInputChange}\n                  invalid={this.invalidUrlInput((charter.socialUrls || {}).facebook)}\n                  invalidMessage={\"Invalid URL\"}\n                />\n              </div>\n            </FormRowItem>\n          </FormRow>\n          {!this.props.editMode && <StepSectionCounter>Step 1 of 4: Details</StepSectionCounter>}\n        </FormSection>\n      </>\n    );\n  }\n\n  private renderOnboardingHeader(): JSX.Element {\n    return (\n      <>\n        <OBSectionHeader>Create your Newsroom Registry profile</OBSectionHeader>\n        <OBSectionDescription>\n          Civil is based on transparency so we ask you to provide the following information to the best of your ability.\n        </OBSectionDescription>\n        <LearnMoreButton />\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader> Where will this profile be viewable?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            The information provided will help the Civil network assess your newsrooms compliance with the Civil\n            Constitution and may be the basis for a challenge if warranted\n          </OBSmallParagraph>\n        </OBCollapsable>\n        <OBSmallParagraph>\n          To create your Newsroom Registry Profile, you will complete 4 steps:\n          <br />\n          Newsroom Details, Roster, Charter, and Signing.\n        </OBSmallParagraph>\n        <StepSectionCounter>Step 1 of 4: Details</StepSectionCounter>\n      </>\n    );\n  }\n\n  private charterInputChange = (name: string, val: string) => {\n    this.props.updateCharter({\n      ...this.props.charter,\n      [name]: val,\n    });\n  };\n\n  private charterSocialInputChange = (type: string, url: string) => {\n    this.props.updateCharter({\n      ...this.props.charter,\n      socialUrls: {\n        ...this.props.charter.socialUrls,\n        [type]: url,\n      },\n    });\n  };\n\n  private invalidUrlInput = (url?: string): boolean => {\n    return !!url && !isValidHttpUrl(url);\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/RosterMember.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { colors, fonts } from \"@joincivil/components\";\nimport { isValidHttpUrl } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport {\n  FormSubhead,\n  FormRow,\n  FormRowItem,\n  HelperText,\n  StyledTextInput,\n  StyledTextareaInput,\n  StyledImageToData,\n} from \"../styledComponents\";\nimport { StateWithNewsroom } from \"../reducers\";\nimport { UserData } from \"../types\";\nimport { RosterMember as RosterMemberInterface } from \"@joincivil/typescript-types\";\n\nexport interface RosterMemberProps {\n  user: UserData;\n  updateRosterMember(newVal: Partial<RosterMemberInterface>): void;\n}\n\nconst Wrapper = styled.div`\n  padding: 20px 0;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nconst Input = styled(StyledTextInput)`\n  margin: -8px 0 -20px;\n`;\n\nconst Textarea = styled(StyledTextareaInput)`\n  margin: -8px 0 0;\n  small {\n    top: 70px;\n  }\n`;\n\nconst Grid = styled.div`\n  display: grid;\n  grid-template-columns: 70% 30%;\n`;\n\nconst ImageLabel = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: 500;\n  line-height: 20px;\n`;\n\nconst Image = styled.img`\n  display: inline;\n  margin: 0 auto;\n  height: 100%;\n  width: auto;\n`;\n\nconst ImageCropper = styled.div`\n  width: 72px;\n  height: 72px;\n  position: relative;\n  object-fit: cover;\n  overflow: hidden;\n  border-radius: 50%;\n`;\n\nconst ImageArea = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: center;\n`;\n\nconst EmailHelpText = styled(HelperText)`\n  margin: 0 0 8px;\n  padding: 0;\n`;\n\nexport class RosterMemberComponent extends React.Component<RosterMemberProps & DispatchProp<any>> {\n  constructor(props: RosterMemberProps & DispatchProp<any>) {\n    super(props);\n  }\n\n  public render(): JSX.Element {\n    const user = this.props.user;\n    let imgArea: JSX.Element | null = null;\n    if (user.rosterData.avatarUrl && user.rosterData.avatarUrl !== \"\") {\n      imgArea = (\n        <ImageArea>\n          <ImageLabel>Profile photo</ImageLabel>\n          <ImageCropper>\n            <Image src={user.rosterData.avatarUrl} />\n          </ImageCropper>\n        </ImageArea>\n      );\n    }\n    return (\n      <Grid>\n        <Wrapper>\n          <FormSubhead>Name</FormSubhead>\n          <Input name=\"name\" value={user.rosterData.name || \"\"} onChange={this.rosterInputChange} />\n          <FormSubhead optional>Avatar URL</FormSubhead>\n          <StyledImageToData\n            onChange={(dataUri: string) => this.rosterInputChange(\"avatarUrl\", dataUri)}\n            buttonText={user.rosterData.avatarUrl ? \"Change Image\" : \"Add Image\"}\n          />\n          <FormSubhead>Role</FormSubhead>\n          <Input name=\"role\" value={user.rosterData.role} onChange={this.rosterInputChange} />\n\n          <FormSubhead>Bio</FormSubhead>\n          <Textarea\n            name=\"bio\"\n            value={user.rosterData.bio}\n            onChange={this.rosterInputChange}\n            invalid={!!user.rosterData.bio && user.rosterData.bio.length > 1000}\n            invalidMessage={\"Too long\"}\n          />\n          <HelperText>Maximum of 1000 characters</HelperText>\n          <FormSubhead optionalForNonAdmin>Public Wallet Address</FormSubhead>\n          <Input name=\"ethAddress\" value={user.rosterData.ethAddress || \"\"} onChange={this.rosterInputChange} />\n          <FormSubhead optional>Email Address</FormSubhead>\n          <EmailHelpText>Email addresses will not be displayed on the Registry Profile page. </EmailHelpText>\n          <Input\n            name=\"email\"\n            value={(user.rosterData.socialUrls || {}).email}\n            onChange={this.rosterSocialInputChange}\n          />\n          <FormRow>\n            <FormRowItem>\n              <FormSubhead optional>Twitter URL</FormSubhead>\n              <Input\n                name=\"twitter\"\n                value={(user.rosterData.socialUrls || {}).twitter}\n                onChange={this.rosterSocialInputChange}\n                invalid={\n                  !!user.rosterData.socialUrls &&\n                  !!user.rosterData.socialUrls.twitter &&\n                  !isValidHttpUrl(user.rosterData.socialUrls.twitter)\n                }\n                invalidMessage={\"Invalid URL\"}\n              />\n            </FormRowItem>\n            <FormRowItem>\n              <FormSubhead optional>Facebook</FormSubhead>\n              <Input\n                name=\"facebook\"\n                value={(user.rosterData.socialUrls || {}).facebook}\n                onChange={this.rosterSocialInputChange}\n              />\n            </FormRowItem>\n          </FormRow>\n        </Wrapper>\n        {imgArea}\n      </Grid>\n    );\n  }\n\n  private rosterInputChange = (name: string, val: string) => {\n    this.props.updateRosterMember({\n      ...this.props.user.rosterData,\n      [name]: val,\n    });\n  };\n\n  private rosterSocialInputChange = (type: string, val: string) => {\n    this.props.updateRosterMember({\n      ...this.props.user.rosterData,\n      socialUrls: {\n        ...this.props.user.rosterData.socialUrls,\n        [type]: val,\n      },\n    });\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: RosterMemberProps): RosterMemberProps => {\n  return ownProps;\n};\n\nexport const RosterMember = connect(mapStateToProps)(RosterMemberComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/RosterMemberListItem.tsx",
    "content": "import * as React from \"react\";\nimport { RosterMember } from \"@joincivil/typescript-types\";\nimport { colors, BorderlessButton, buttonSizes } from \"@joincivil/components\";\nimport { AvatarImg, AvatarWrap, noAvatar, MemberDisplayName } from \"../styledComponents\";\nimport styled from \"styled-components\";\n\nexport interface RosterMemberListItemProps {\n  member: RosterMember;\n  edit?(): void;\n}\n\nconst Role = styled.span`\n  color: #72777c;\n  margin-right: 10px;\n`;\n\nconst StyledLi = styled.li`\n  display: grid;\n  grid-template-columns: 60px 20% 30% auto 50px;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  justify-items: center;\n  align-items: center;\n  padding: 37px 10px 37px 3px;\n  &:last-child {\n    border-bottom: none;\n  }\n`;\n\nexport class RosterMemberListItem extends React.Component<RosterMemberListItemProps> {\n  public render(): JSX.Element {\n    return (\n      <StyledLi>\n        <AvatarWrap>\n          {this.props.member.avatarUrl ? <AvatarImg src={this.props.member.avatarUrl} /> : noAvatar}\n        </AvatarWrap>\n        <MemberDisplayName>{this.props.member.name}</MemberDisplayName>\n        <Role>{this.props.member.role}</Role>\n        {this.props.member.ethAddress && <code>{this.props.member.ethAddress}</code>}\n        {!!this.props.edit && (\n          <BorderlessButton onClick={this.props.edit} size={buttonSizes.SMALL}>\n            Edit\n          </BorderlessButton>\n        )}\n      </StyledLi>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/SignConstitution.tsx",
    "content": "import * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport {\n  StepDescription,\n  StepFormSection,\n  Checkbox,\n  MetaMaskLogoButton,\n  MetaMaskModal,\n  ModalHeading,\n  TransactionButtonNoModal,\n  Transaction,\n  colors,\n  fonts,\n  OBSectionHeader,\n  OBSectionDescription,\n  HollowGreenCheck,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { prepareConstitutionSignMessage } from \"@joincivil/utils\";\nimport { Civil } from \"@joincivil/core\";\nimport { Map } from \"immutable\";\nimport styled from \"styled-components\";\nimport { EthSignedMessage, EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport { IpfsObject } from \"../Newsroom\";\nimport { StyledHr, StepSectionCounter } from \"../styledComponents\";\nimport { LearnMoreButton } from \"./LearnMoreButton\";\n\nconst CheckWrapper = styled.span`\n  margin-right: 8px;\n`;\n\nexport interface SignConstitutionReduxProps {\n  charter: Partial<CharterData>;\n  government?: Map<string, string>;\n  newsroomAdress?: EthAddress;\n  ipfs?: IpfsObject;\n  newsroom?: any;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nexport interface SignConstitutionState {\n  isNewsroomOwner: boolean;\n  agreedToConstitution: boolean;\n  preSignModalOpen: boolean;\n  isWaitingSignatureOpen: boolean;\n  metaMaskRejectionModal: boolean;\n  startTransaction(): void;\n  cancelTransaction(): void;\n}\n\nconst ConstitutionContainer = styled.div`\n  height: 462px;\n  overflow-y: scroll;\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  margin-bottom: 38px;\n  h2 {\n    font-size: 32px;\n    font-weight: 200;\n    letter-spacing: -0.67px;\n    line-height: 36px;\n    font-family: ${fonts.SERIF};\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    padding: 31px 23px;\n  }\n`;\n\nconst Constitution = styled.div`\n  padding: 20px 93px 50px 15px;\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  line-height: 26px;\n  h2 {\n    border: none;\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 24px;\n    font-weight: 600;\n    line-height: 32px;\n    margin-top: 32px;\n    padding: 0;\n    &:first-child {\n      margin-top: 0;\n    }\n  }\n  h4 {\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 24px;\n    font-family: ${fonts.SANS_SERIF};\n  }\n  p {\n    font-size: 16px;\n    line-height: 26px;\n  }\n  a {\n    cursor: pointer;\n  }\n`;\n\nconst StyledCheck = styled(HollowGreenCheck)`\n  margin-right: 10px;\n`;\n\nconst SignedMessage = styled.div`\n  font-weight: bold;\n  display: flex;\n  align-items: center;\n`;\n\nclass SignConstitutionComponent extends React.Component<\n  DispatchProp<any> & SignConstitutionReduxProps,\n  SignConstitutionState\n> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  constructor(props: SignConstitutionReduxProps & DispatchProp<any>) {\n    super(props);\n    this.state = {\n      isNewsroomOwner: false,\n      preSignModalOpen: false,\n      isWaitingSignatureOpen: false,\n      metaMaskRejectionModal: false,\n      agreedToConstitution: !!(this.props.charter.signatures && this.props.charter.signatures.length),\n      startTransaction: () => {\n        return;\n      },\n      cancelTransaction: () => {\n        return;\n      },\n    };\n  }\n\n  public renderPreSignModal(): JSX.Element | null {\n    if (!this.state.preSignModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={false}\n        signing={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>To sign the Civil Constitution, please open MetaMask and sign the request.</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderWaitingSignModal(): JSX.Element | null {\n    if (!this.state.isWaitingSignatureOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        signing={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting for you to sign in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message = \"Your signature was not created\";\n\n    const denialMessage =\n      \"To sign the constitution, you need to confirm in your MetaMask wallet. You will not be able to proceed without signing the constitution.\";\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText={denialMessage}\n        cancelTransaction={() => this.cancelTransaction()}\n        restartTransactions={this.getTransactions(this.context.civil!, true)}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public render(): JSX.Element {\n    const content = this.props.government ? this.props.government.get(\"constitutionContent\") : \"\";\n    const hasSigned = this.props.charter.signatures && this.props.charter.signatures.length;\n    console.log(\"render\", this.context);\n    return (\n      <>\n        <OBSectionHeader>Review the Civil Constitution</OBSectionHeader>\n        <OBSectionDescription>\n          The Civil Constitution reflects the mission, purpose and values of ethical journalism on the Civil network.\n          All newsrooms are expected to comply with its standards and may be challenged if they are in violation of its\n          principles.{\" \"}\n        </OBSectionDescription>\n        <LearnMoreButton />\n        <StyledHr />\n        <StepSectionCounter>Step 4 of 4: Signing</StepSectionCounter>\n        <StepDescription>\n          Pledging to the Civil Constitution is an acknowledgement that you agree to abide by its set of ethical\n          standards.\n        </StepDescription>\n        <ConstitutionContainer>\n          <h2>Civil Constitution</h2>\n          <Constitution dangerouslySetInnerHTML={{ __html: content }} />\n        </ConstitutionContainer>\n        <p>\n          <CheckWrapper>\n            <Checkbox\n              id=\"agree_to_constitution\"\n              checked={this.state.agreedToConstitution}\n              onClick={() => this.setState({ agreedToConstitution: !this.state.agreedToConstitution })}\n            />\n          </CheckWrapper>{\" \"}\n          <label htmlFor=\"agree_to_constitution\">\n            I agree to abide by the Civil Community's ethical principles as described in the Civil Constitution\n          </label>\n        </p>\n        <StepFormSection>\n          <h4>Add signature and complete your charter</h4>\n          <StepDescription>\n            You will now cryptographically sign the constitution and add the signature to your charter and then save the\n            charter to your newsroom smart contract. You will see two windows: one to sign this message and the other to\n            confirm.\n          </StepDescription>\n          {hasSigned ? (\n            <SignedMessage>\n              {\" \"}\n              <StyledCheck /> <div>Civil Constitution Signed</div>\n            </SignedMessage>\n          ) : (\n            <TransactionButtonNoModal\n              disabled={!this.state.agreedToConstitution}\n              Button={props => {\n                return (\n                  <MetaMaskLogoButton disabled={props.disabled} onClick={props.onClick}>\n                    Complete Your Charter\n                  </MetaMaskLogoButton>\n                );\n              }}\n              transactions={this.getTransactions(this.context.civil!)}\n            />\n          )}\n\n          {this.renderPreSignModal()}\n          {this.renderWaitingSignModal()}\n          {this.renderMetaMaskRejectionModal()}\n        </StepFormSection>\n      </>\n    );\n  }\n  private getTransactions = (civil: Civil, noPremodal?: boolean): Transaction[] => {\n    return [\n      {\n        requireBeforeTransaction: noPremodal\n          ? undefined\n          : async (): Promise<any> => {\n              return new Promise((res, rej) => {\n                this.setState({\n                  startTransaction: res,\n                  cancelTransaction: rej,\n                  preSignModalOpen: true,\n                });\n              });\n            },\n        transaction: async (): Promise<EthSignedMessage> => {\n          this.setState({ isWaitingSignatureOpen: true });\n          const constitutionHash = this.props.government ? this.props.government!.get(\"constitutionHash\") : \"[NONE]\";\n          return civil.signMessage(prepareConstitutionSignMessage(this.props.charter.name!, constitutionHash));\n        },\n        postTransaction: async (sig: EthSignedMessage): Promise<void> => {\n          const { signature, message, signer } = sig;\n          const signatures = this.props.charter.signatures || [];\n          signatures.push({ signature, message, signer });\n          const charter = { ...this.props.charter, signatures };\n          this.props.updateCharter(charter);\n          this.setState({\n            isWaitingSignatureOpen: false,\n          });\n        },\n        handleTransactionError: (err?: Error) => {\n          this.setState({ isWaitingSignatureOpen: false });\n          if (err && err.message.indexOf(\"Error: MetaMask Message Signature: User denied message signature.\") !== -1) {\n            this.setState({ metaMaskRejectionModal: true });\n          } else {\n            console.error(\"Transaction failed:\", err);\n            alert(\"Transaction failed. Error: \" + (err && err.message));\n          }\n        },\n      },\n    ];\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: () => {\n        return;\n      },\n      startTransaction: () => {\n        return;\n      },\n      preSignModalOpen: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: () => {\n        return;\n      },\n      startTransaction: () => {\n        return;\n      },\n      preSignModalOpen: false,\n      isWaitingSignatureOpen: true,\n    });\n  };\n}\n\nconst mapStateToProps = (state: any, ownProps: SignConstitutionReduxProps): SignConstitutionReduxProps => {\n  const { newsroomGovernment } = state;\n  const newsroom = state.newsrooms.get(ownProps.newsroomAdress) || {};\n\n  return {\n    ...ownProps,\n    government: newsroomGovernment,\n    newsroom: newsroom.newsroom,\n  };\n};\n\nexport const SignConstitution = connect(mapStateToProps)(SignConstitutionComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/WaitingAfterSkip.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  colors,\n  OBSectionHeader,\n  OBSectionDescription,\n  OBSmallParagraph,\n  OBNoteHeading,\n  applicationSavedImgUrl,\n} from \"@joincivil/components\";\n\nconst Wrapper = styled.div`\n  margin: auto;\n  max-width: 700px;\n  text-align: center;\n`;\n\nconst ApplicationSavedImageWrap = styled.div`\n  margin-bottom: -6px;\n`;\nconst ApplicationSavedImage = styled.img`\n  width: 82px;\n  height: 82px;\n`;\n\nconst MainText = styled(OBSectionDescription)`\n  padding: 0 36px;\n`;\nconst AddendaLink = styled(OBNoteHeading)`\n  color: ${colors.accent.CIVIL_BLUE_FADED};\n  display: block;\n  margin: 48px 0;\n`;\nconst AddendaText = styled(OBSmallParagraph)`\n  && {\n    margin: 96px 0 60px;\n  }\n`;\n\nexport class WaitingAfterSkip extends React.Component {\n  public render(): JSX.Element {\n    return (\n      <Wrapper>\n        <ApplicationSavedImageWrap>\n          <ApplicationSavedImage src={applicationSavedImgUrl} />\n        </ApplicationSavedImageWrap>\n        <OBSectionHeader style={{ marginBottom: 24 }}>Newsroom Registry Profile Saved</OBSectionHeader>\n\n        <MainText>\n          Thank you for completing your Newsroom Registry Profile. You may now continue to create your Newsroom Smart\n          Contract and apply to the Civil Registry.\n        </MainText>\n\n        <AddendaLink>\n          <a\n            href=\"https://cvlconsensys.zendesk.com/hc/en-us/articles/360017687131-What-is-the-Civil-Registry-\"\n            target=\"_blank\"\n          >\n            Learn more about the Civil Registry\n          </a>\n        </AddendaLink>\n\n        <AddendaText>\n          If you have any questions, you can contact{\" \"}\n          <a href=\"mailto:support@civil.co\" target=\"_blank\">\n            support\n          </a>\n          .\n        </AddendaText>\n      </Wrapper>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/WaitingForGrant.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  colors,\n  HollowGreenCheck,\n  OBSectionHeader,\n  OBSectionDescription,\n  OBSmallParagraph,\n  OBNoteHeading,\n  grantSubmittedImgUrl,\n  ReviewIcon,\n} from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\n\nconst Wrapper = styled.div`\n  margin: auto;\n  max-width: 700px;\n  text-align: center;\n`;\nconst ReviewNotice = styled(OBNoteHeading)`\n  color: ${colors.accent.CIVIL_BLUE_FADED};\n  display: block;\n  margin: -24px 0 48px;\n`;\nconst ReviewNoticeMark = styled(ReviewIcon)`\n  margin-right: 4px;\n  position: relative;\n  top: 2px;\n  vertical-align: bottom;\n`;\n\nconst HeadingCheck = styled(HollowGreenCheck)`\n  margin-right: 5px;\n  vertical-align: bottom;\n`;\n\nconst GrantSubmittedImageWrap = styled.div`\n  margin-bottom: -6px;\n`;\nconst GrantSubmittedImage = styled.img`\n  width: 82px;\n  height: 82px;\n`;\n\nconst MainText = styled(OBSectionDescription)`\n  padding: 0 36px;\n`;\nconst AddendaText = styled(OBSmallParagraph)`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin-top: 42px;\n  padding: 36px 36px 0 36px;\n`;\n\nexport class WaitingForGrant extends React.Component {\n  public render(): JSX.Element {\n    return (\n      <Wrapper>\n        <ReviewNotice>\n          <ReviewNoticeMark />\n          Newsroom Registry Profile in Grant Review\n        </ReviewNotice>\n\n        <GrantSubmittedImageWrap>\n          <GrantSubmittedImage src={grantSubmittedImgUrl} />\n        </GrantSubmittedImageWrap>\n        <OBSectionHeader style={{ marginBottom: 24 }}>\n          <HeadingCheck width={32} height={32} />\n          Grant Request Submitted\n        </OBSectionHeader>\n\n        <MainText>\n          Your Registry Profile has been submitted to the Civil Foundation team and is now being reviewed for a Civil\n          Token Grant. We will be sending an email with next steps.\n        </MainText>\n        <MainText>\n          You can come back to this page at any time to check in on the status of your grant application.\n        </MainText>\n\n        <AddendaText>\n          More info:{\" \"}\n          <a href={urlConstants.FAQ_WHAT_IS_SMART_CONTRACT} target=\"_blank\">\n            Newsroom Smart Contract\n          </a>{\" \"}\n          and{\" \"}\n          <a href={urlConstants.FAQ_APPLICATION_DEPOSIT} target=\"_blank\">\n            Application Deposit\n          </a>\n          . While you wait for the Grant request to be reviewed, we suggest you review these items to familiarize\n          yourself with the Civil ecosystem.\n        </AddendaText>\n        <AddendaText>\n          <a href={urlConstants.FAQ_GRANT} target=\"_blank\">\n            Learn more\n          </a>{\" \"}\n          about the grant process and if you have any questions, contact{\" \"}\n          <a href={urlConstants.EMAIL_MAILTO} target=\"_blank\">\n            support\n          </a>\n          .\n        </AddendaText>\n      </Wrapper>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomProfile/index.tsx",
    "content": "import * as React from \"react\";\nimport { NextBack } from \"../styledComponents\";\nimport { CharterData, EthAddress } from \"@joincivil/typescript-types\";\nimport { STEP } from \"../Newsroom\";\nimport { NewsroomBio } from \"./NewsroomBio\";\nimport { AddRosterMember } from \"./AddRosterMembers\";\nimport { CharterQuestions } from \"./CharterQuestions\";\nimport { SignConstitution } from \"./SignConstitution\";\nimport { ApplicationSoFarPage } from \"./ApplicationSoFarPage\";\nimport { GrantApplication } from \"./GrantApplication\";\n\nexport interface NewsroomProfileState {\n  showButtons: boolean;\n}\n\nexport interface NewsroomProfileProps {\n  profileWalletAddress?: EthAddress;\n  currentStep: number;\n  furthestStep: STEP;\n  charter: Partial<CharterData>;\n  grantRequested?: boolean;\n  waitingOnGrant?: boolean;\n  completedGrantFlow?: boolean;\n  updateCharter(charter: Partial<CharterData>): void;\n  navigate(go: 1 | -1): void;\n}\n\nexport class NewsroomProfile extends React.Component<NewsroomProfileProps, NewsroomProfileState> {\n  constructor(props: NewsroomProfileProps) {\n    super(props);\n    this.state = {\n      showButtons: true,\n    };\n  }\n  public getDisabled(index: number): () => boolean {\n    const functions = [\n      () => {\n        return !(\n          this.props.charter &&\n          this.props.charter.name &&\n          this.props.charter.logoUrl &&\n          this.props.charter.newsroomUrl &&\n          this.props.charter.tagline\n        );\n      },\n      () => {\n        return !(this.props.charter && this.props.charter.roster && this.props.charter.roster.length);\n      },\n      () => {\n        return !(\n          this.props.charter &&\n          this.props.charter.mission &&\n          this.props.charter.mission.encumbrances &&\n          this.props.charter.mission.miscellaneous &&\n          this.props.charter.mission.purpose &&\n          this.props.charter.mission.revenue &&\n          this.props.charter.mission.structure\n        );\n      },\n      () => {\n        return !(this.props.charter.signatures && this.props.charter.signatures.length);\n      },\n      () => {\n        return false;\n      },\n      () => {\n        return !this.props.completedGrantFlow;\n      },\n    ];\n\n    return functions[index];\n  }\n  public renderCurrentStep(): JSX.Element {\n    const steps = [\n      <NewsroomBio charter={this.props.charter} updateCharter={this.props.updateCharter} />,\n      <AddRosterMember\n        charter={this.props.charter}\n        updateCharter={this.props.updateCharter}\n        setButtonVisibility={this.setButtonVisibility}\n        profileWalletAddress={this.props.profileWalletAddress}\n      />,\n      <CharterQuestions charter={this.props.charter} updateCharter={this.props.updateCharter} />,\n      <SignConstitution charter={this.props.charter} updateCharter={this.props.updateCharter} />,\n      <ApplicationSoFarPage charter={this.props.charter} />,\n      <GrantApplication navigate={this.props.navigate} />,\n    ];\n    return steps[this.props.currentStep];\n  }\n\n  public renderButtons(top?: boolean): JSX.Element | null {\n    if (!this.state.showButtons || this.props.waitingOnGrant) {\n      return null;\n    }\n    return (\n      <NextBack\n        top={top}\n        navigate={this.props.navigate}\n        backHidden={this.props.currentStep === 0}\n        nextDisabled={this.getDisabled(this.props.currentStep)}\n      />\n    );\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        {/*Bit ugly, but people always having issues figuring out how to navigate back to make changes, so once they've gotten this far, show navigation at the top as well:*/}\n        {this.props.furthestStep >= STEP.PROFILE_SO_FAR && this.renderButtons(true)}\n\n        {this.renderCurrentStep()}\n        {this.renderButtons()}\n      </>\n    );\n  }\n\n  private setButtonVisibility = (visible: boolean) => {\n    this.setState({ showButtons: visible });\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/NewsroomUser.tsx",
    "content": "import * as React from \"react\";\nimport {\n  colors,\n  fonts,\n  Modal,\n  Button,\n  TransactionButtonNoModal,\n  TransactionButtonModalFlowState,\n  Transaction,\n  buttonSizes,\n  MetaMaskModal,\n  ModalHeading,\n  TransactionButtonInnerProps,\n  ClipLoader,\n} from \"@joincivil/components\";\nimport { EthAddress, TxHash } from \"@joincivil/typescript-types\";\nimport { NewsroomRoles } from \"@joincivil/utils\";\nimport styled from \"styled-components\";\nimport { TertiaryButton as _TertiaryButton, FormSubhead, QuestionToolTip } from \"./styledComponents\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { removeEditor, fetchNewsroom } from \"./actionCreators\";\n\nexport enum UserTypes {\n  EDITOR = \"EDITOR\",\n  OWNER = \"OWNER\",\n}\n\nconst TertiaryButton = styled(_TertiaryButton)`\n  margin: 1em 0;\n`;\n\nconst Wrapper = styled.div`\n  width: 100%;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: flex-end;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nconst Address = styled.p`\n  font-family: ${fonts.MONOSPACE};\n  letter-spacing: -0.15px;\n`;\n\nconst NameSection = styled.div`\n  margin-right: 20px;\n  width: 180px;\n`;\n\nconst ButtonWrapper = styled.div`\n  min-width: 72px;\n  margin-left: 15px;\n`;\n\nexport interface AddressComponentProps {\n  name?: string;\n}\n\nexport interface NewsroomUserProps {\n  newsroomAddress: EthAddress;\n  address: EthAddress;\n  profileWalletAddress?: EthAddress;\n  readOnly?: boolean;\n  name?: string;\n  newsroom: any;\n  type: UserTypes;\n}\n\nexport const DisabledTransactionProcessingButton = styled.button`\n  padding: 8px;\n  background: transparent;\n  border-radius: 3px;\n  border: solid 1px #dddddd;\n  display: flex;\n  justify-content: center;\n  width: 100%;\n  margin: 1em 0;\n`;\n\nconst TransactionButtonInner = (props: TransactionButtonInnerProps): JSX.Element => {\n  let buttonComponent = (\n    <TertiaryButton disabled={props.disabled} onClick={props.onClick} size={buttonSizes.SMALL} fullWidth>\n      Remove\n    </TertiaryButton>\n  );\n  switch (props.step) {\n    case 1:\n      buttonComponent = (\n        <TertiaryButton disabled={true} size={buttonSizes.SMALL} fullWidth>\n          Confirm\n        </TertiaryButton>\n      );\n      break;\n    case 2:\n      buttonComponent = (\n        <DisabledTransactionProcessingButton>\n          <ClipLoader size={10} />\n        </DisabledTransactionProcessingButton>\n      );\n      break;\n  }\n  return buttonComponent;\n};\n\nexport class NewsroomUserComponent extends React.Component<\n  NewsroomUserProps & DispatchProp<any>,\n  TransactionButtonModalFlowState\n> {\n  constructor(props: NewsroomUserProps & DispatchProp<any>) {\n    super(props);\n    this.state = {};\n  }\n  public renderPreMetaMask(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n    const message =\n      this.props.type === UserTypes.EDITOR\n        ? \"Open MetaMask to remove a Civil Member\"\n        : \"Open MetaMask to remove a Civil Officer\";\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message =\n      this.props.type === UserTypes.EDITOR ? \"Civil Member was not removed\" : \"Civil Officer was not removed\";\n\n    const denialMessage =\n      this.props.type === UserTypes.EDITOR\n        ? \"To remove a Civil Member, you need to confirm the transaction in your MetaMask wallet.\"\n        : \"To remove a Civil Officer, you need to confirm the transaction in your MetaMask wallet.\";\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText={denialMessage}\n        cancelTransaction={() => this.cancelTransaction()}\n        restartTransactions={this.getTransaction(true)}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting to Confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderProgressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    const message =\n      this.props.type === UserTypes.EDITOR\n        ? \"A Civil Member is being removed from the newsroom smart contract!\"\n        : \"A Civil Officer is being removed from the newsroom smart contract!\";\n\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>You have confirmed the transaction in your MetaMask wallet and it is currently processing</p>\n        <p>\n          Note: this could take a while depending on traffic on the Ethereum network. You can close this while the\n          transaction is processing.\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderCompleteModal(): JSX.Element | null {\n    if (!this.state.completeModalOpen) {\n      return null;\n    }\n\n    const message =\n      this.props.type === UserTypes.EDITOR\n        ? \"A Civil Member has been removed from the newsroom smart contract!\"\n        : \"A Civil Officer has been removed from the newsroom smart contract!\";\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>\n          The transaction has completed and the{\" \"}\n          {this.props.type === UserTypes.EDITOR ? \"Civil Member\" : \"Civil Officer\"} was removed.\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ completeModalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        <Wrapper>\n          <NameSection>\n            <FormSubhead>Name</FormSubhead>\n            <p>\n              {this.props.name || (\n                <>\n                  <i>unknown address</i>\n                  <QuestionToolTip explainerText=\"No WordPress user was found with this address. If the owner of this address does have an account on your site, they will need to add it to their profile in order to use the Civil Publisher.\" />\n                </>\n              )}\n            </p>\n          </NameSection>\n          <div>\n            <FormSubhead>Wallet Address</FormSubhead>\n            <Address>{this.props.address}</Address>\n          </div>\n          <ButtonWrapper>\n            {this.props.address !== this.props.profileWalletAddress && !this.props.readOnly && (\n              <TransactionButtonNoModal transactions={this.getTransaction()} Button={TransactionButtonInner} />\n            )}\n          </ButtonWrapper>\n        </Wrapper>\n        {this.renderProgressModal()}\n        {this.renderPreMetaMask()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.renderCompleteModal()}\n        {this.renderAwaitingTransactionModal()}\n      </>\n    );\n  }\n\n  private getTransaction = (noPreModal?: boolean): Transaction[] => {\n    return [\n      {\n        requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n        transaction: async () => {\n          this.setState({\n            metaMaskRejectionModal: false,\n            isWaitingTransactionModalOpen: true,\n            isPreTransactionModalOpen: false,\n          });\n          return this.props.type === UserTypes.OWNER\n            ? this.removeOwner(this.props.address)\n            : this.removeEditor(this.props.address);\n        },\n        postTransaction: () => {\n          if (this.props.type === UserTypes.EDITOR) {\n            this.props.dispatch!(removeEditor(this.props.newsroomAddress!, this.props.address!));\n          }\n          if (this.props.type === UserTypes.OWNER) {\n            this.props.dispatch!(fetchNewsroom(this.props.newsroomAddress!));\n          }\n          this.setState({\n            modalOpen: false,\n            completeModalOpen: true,\n          });\n        },\n        handleTransactionError: this.handleTransactionError,\n        handleTransactionHash: this.handleTransactionHash,\n      },\n    ];\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n\n  private handleTransactionHash = (txhash: TxHash): void => {\n    this.setState({\n      modalOpen: true,\n      isWaitingTransactionModalOpen: false,\n    });\n  };\n\n  private handleTransactionError = (err: Error): void => {\n    this.setState({ isWaitingTransactionModalOpen: false });\n    if (err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n      this.setState({ metaMaskRejectionModal: true });\n    }\n  };\n\n  private removeEditor = async (address: EthAddress) => {\n    return this.props.newsroom.removeRole(address, NewsroomRoles.Editor);\n  };\n\n  private removeOwner = async (address: EthAddress) => {\n    return this.props.newsroom.removeOwner(address);\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: Partial<NewsroomUserProps>): NewsroomUserProps => {\n  const { newsroomAddress } = ownProps;\n  const newsroom = state.newsrooms.get(newsroomAddress || \"\") || { wrapper: { data: {} } };\n  return {\n    ...ownProps,\n    type: ownProps.type!,\n    address: ownProps.address!,\n    newsroomAddress: ownProps.newsroomAddress!,\n    newsroom: newsroom.newsroom,\n  };\n};\n\nexport const NewsroomUser = connect(mapStateToProps)(NewsroomUserComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/PurchaseTokens/index.tsx",
    "content": "import * as React from \"react\";\nimport * as qs from \"querystring\";\nimport styled from \"styled-components\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\nimport { connect } from \"react-redux\";\nimport { RouteComponentProps, Link, withRouter } from \"react-router-dom\";\nimport { getFormattedTokenBalance } from \"@joincivil/utils\";\nimport {\n  colors,\n  Button,\n  buttonSizes,\n  OBSectionHeader,\n  OBSectionDescription,\n  OBNoteText,\n  OBCollapsable,\n  OBCollapsableHeader,\n  OBSmallParagraph,\n  OBNoteHeading,\n  HollowGreenCheck,\n  ClipLoader,\n  QuestionToolTip,\n  Notice,\n  NoticeTypes,\n  GrantSubmitIcon,\n} from \"@joincivil/components\";\nimport { NextBack, FormTitle, FormSection, FormRow, FormRowItem } from \"../styledComponents\";\n\nexport interface PurchaseTokensExternalProps extends RouteComponentProps {\n  minDeposit: BigNumber;\n  grantApproved?: boolean;\n  navigate(go: 1 | -1): void;\n}\nexport interface PurchaseTokensProps extends PurchaseTokensExternalProps {\n  userCvlBalance: BigNumber;\n  hasMinDeposit: boolean;\n}\n\nconst BUY_TOKENS_PATH = \"/tokens?redirect=%2Fapply-to-registry%3Fpurchased=true\";\n\nconst Border = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 28px 0;\n`;\n\nconst OBSectionSubHeader = styled(OBSectionDescription)`\n  color: ${colors.primary.BLACK};\n  font-weight: bold;\n  text-align: left;\n`;\n\nconst YouHaveEnough = styled(OBSectionSubHeader)`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin: 36px 0 -12px;\n  padding-bottom: 36px;\n  text-align: center;\n`;\n\nconst BalanceTip = styled(QuestionToolTip)`\n  svg {\n    height: 24px;\n    width: 24px;\n  }\n`;\nconst CvlBalance = styled(FormTitle)`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin-bottom: -4px;\n`;\nconst CvlLabel = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 12px;\n`;\nconst BuyCvlTextLink = styled(OBNoteHeading)`\n  color: ${colors.accent.CIVIL_BLUE};\n  display: block;\n  font-weight: bold;\n  margin-top: 18px;\n`;\n\nconst BuyButtonContainer = styled.div`\n  display: inline-block;\n  margin: 8px 0 36px;\n  text-align: center;\n`;\n\nexport class PurchaseTokensComponent extends React.Component<PurchaseTokensProps> {\n  public renderButtons(): JSX.Element | void {\n    return <NextBack navigate={this.navigate} nextDisabled={() => !this.props.hasMinDeposit} />;\n  }\n\n  public renderNotEnoughTokens(): JSX.Element {\n    return (\n      <>\n        <Border />\n\n        <OBSmallParagraph>\n          To buy Civil tokens (CVL), you must buy Ether (ETH) and then you will be able to buy CVL. You can’t use USD or\n          local currencies to directly buy a Civil token – currencies need to be converted into ETH first.\n        </OBSmallParagraph>\n\n        <OBSectionSubHeader>You can buy Civil tokens (CVL) from our Token Store.</OBSectionSubHeader>\n        <OBSmallParagraph>\n          To buy tokens, you’ll be purchasing them from our Token store. It uses Airswap, a secure decentralized token\n          exchange where you can buy and sell tokens on Ethereum blockchain. Airswap does not charge any fees.\n        </OBSmallParagraph>\n\n        <BuyButtonContainer>\n          <Button textTransform=\"none\" width={220} size={buttonSizes.MEDIUM_WIDE} to={BUY_TOKENS_PATH}>\n            Buy CVL tokens\n          </Button>\n        </BuyButtonContainer>\n      </>\n    );\n  }\n\n  public renderEnoughTokensOrJustPurchased(): JSX.Element {\n    return (\n      <>\n        <YouHaveEnough>\n          {this.props.hasMinDeposit ? (\n            <>\n              <HollowGreenCheck width={48} height={48} />\n              <br />\n              You have enough tokens to apply\n            </>\n          ) : (\n            <>\n              <ClipLoader size={48} />\n              <br />\n              You token purchase is processing and your balance will update shortly\n            </>\n          )}\n        </YouHaveEnough>\n\n        <FormSection>\n          <FormRow>\n            <FormRowItem>\n              <OBSectionSubHeader>\n                Token Balance\n                <BalanceTip explainerText=\"This is the total amount of Civil tokens availabe in your connected wallet.\" />\n              </OBSectionSubHeader>\n            </FormRowItem>\n            <FormRowItem>\n              <CvlBalance>\n                {getFormattedTokenBalance(this.props.userCvlBalance, true)}\n                <CvlLabel>CVL</CvlLabel>\n              </CvlBalance>\n              <OBNoteText>tokens in your wallet</OBNoteText>\n              <BuyCvlTextLink>\n                <Link to={BUY_TOKENS_PATH}>Buy additional CVL tokens</Link>\n              </BuyCvlTextLink>\n            </FormRowItem>\n          </FormRow>\n        </FormSection>\n      </>\n    );\n  }\n\n  public render(): JSX.Element {\n    const justPurchased = !!qs.parse(document.location.search.substr(1)).purchased;\n    return (\n      <>\n        <OBSectionHeader>Purchase Tokens to Apply to the Registry</OBSectionHeader>\n        <OBSectionDescription>\n          You will need {!this.props.hasMinDeposit && \"to purchase\"}{\" \"}\n          {getFormattedTokenBalance(this.props.minDeposit, true, 0)} Civil tokens (CVL) to deposit with your\n          application. These tokens are to state the seriousness of your intent to the Civil community.\n        </OBSectionDescription>\n\n        {this.props.hasMinDeposit || justPurchased\n          ? this.renderEnoughTokensOrJustPurchased()\n          : this.renderNotEnoughTokens()}\n\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader>What else will I need to use Civil tokens (CVL) for?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            Tokens open up certain activities on the Civil platform including voting on Newsroom applications,\n            challenging a Newsroom, or backing another token holder’s Newsroom challenge.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Owning Civil tokens means owning a piece of the Civil network; they will act as voting stakes for the\n            platform’s governance (e.g., deciding whether or not a given Newsroom meets the ethical journalism standards\n            laid out in the Civil Constitution). There will only ever be a fixed supply of CVL tokens created. Owners of\n            CVL will be economically incentivized to ensure existing and future Civil Newsrooms maintain high quality\n            standards as the network, and its reach, grows.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        {this.props.grantApproved && (\n          <Notice type={NoticeTypes.FOUNDATION_ACTION} icon={<GrantSubmitIcon width={48} height={48} />}>\n            Civil tokens (CVL) were received from your Token Grant.\n          </Notice>\n        )}\n\n        {this.renderButtons()}\n      </>\n    );\n  }\n\n  private navigate = (go: 1 | -1): void => {\n    if (qs.parse(document.location.search.substr(1)).purchased) {\n      // Remove query string, otherwise they will be forced back to token purchase step if they refresh\n      this.props.history.replace({\n        pathname: this.props.location.pathname,\n      });\n    }\n    this.props.navigate(go);\n  };\n}\n\nconst mapStateToProps = (state: any, ownProps: PurchaseTokensExternalProps): PurchaseTokensProps => {\n  const { user } = state.networkDependent;\n  const userBalance = new BigNumber((user && user.account && user.account.balance) || 0);\n  const minDeposit = ownProps.minDeposit;\n  return {\n    ...ownProps,\n    userCvlBalance: userBalance,\n    minDeposit,\n    hasMinDeposit: userBalance.gte(minDeposit),\n  };\n};\n\nexport const PurchaseTokens = withRouter(connect(mapStateToProps)(PurchaseTokensComponent));\n"
  },
  {
    "path": "packages/newsroom-signup/src/RepublishCharterNotice.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Civil, IPFSProvider, NewsroomInstance } from \"@joincivil/core\";\nimport { CharterData, TxHash } from \"@joincivil/typescript-types\";\nimport {\n  Notice,\n  NoticeTypes,\n  Transaction,\n  TransactionButtonModalFlowState,\n  TransactionButtonNoModal,\n  TransactionButtonInnerProps,\n  MetaMaskModal,\n  ModalHeading,\n  Modal,\n  LoadingIndicator,\n  ClipLoader,\n  Button,\n  buttonSizes,\n  MetaMaskSideIcon,\n  colors,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\n\nexport interface RepublishCharterNoticeProps {\n  civil: Civil;\n  charter: Partial<CharterData>;\n  newsroom: NewsroomInstance;\n  className?: string;\n  introCopy?: JSX.Element | string;\n  onTxStart?(): void;\n  onTxComplete?(): void;\n  transactionButtonComponent?(props: TransactionButtonInnerProps): JSX.Element;\n}\n\nexport interface RepublishCharterNoticeState extends TransactionButtonModalFlowState {\n  isIpfsModalOpen?: boolean;\n  isTransactionSuccessModalOpen?: boolean;\n  errorText?: string;\n  ipfsError?: boolean;\n  contentHash?: string;\n  contentURI?: string;\n}\n\nconst Wrapper = styled(Notice)`\n  font-size: 12px;\n  line-height: 18px;\n  padding: 15px;\n  margin: -24px 0 36px;\n`;\n\nconst Loader = styled(ClipLoader)`\n  margin: 0 0 -2px 4px;\n`;\nconst IconWrap = styled.span`\n  position: relative;\n  top: 3px;\n  padding: 7px 4px 0;\n  border-radius: 2px;\n  border: solid 1px ${colors.accent.CIVIL_GRAY_4};\n`;\nconst RepublishLink = styled.a`\n  cursor: pointer;\n  display: inline-block;\n`;\n\nexport class RepublishCharterNotice extends React.Component<RepublishCharterNoticeProps, RepublishCharterNoticeState> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  constructor(props: RepublishCharterNoticeProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public render(): JSX.Element {\n    return (\n      <Wrapper className={this.props.className} type={NoticeTypes.ALERT}>\n        {this.renderIntroCopy()}{\" \"}\n        <TransactionButtonNoModal\n          transactions={this.getTransactions(this.context.civil!)}\n          Button={this.renderTransactionButtonComponent}\n        />\n        {this.renderIpfsModal()}\n        {this.renderPreMetamaskCreateModal()}\n        {this.renderAwaitingTransactionModal()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.renderErrorModal()}\n        {this.renderProgressModal()}\n        {this.renderTransactionSuccessModal()}\n      </Wrapper>\n    );\n  }\n\n  public renderIpfsModal(): JSX.Element | null {\n    if (!this.state.isIpfsModalOpen) {\n      return null;\n    }\n    return (\n      <Modal textAlign=\"center\">\n        <LoadingIndicator height={100} width={150} />\n        <ModalHeading>Saving charter to IPFS</ModalHeading>\n        <p>First we are saving your newsroom charter to IPFS. This can take a moment. Please don't close this tab.</p>\n      </Modal>\n    );\n  }\n\n  public renderPreMetamaskCreateModal(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Open MetaMask to confirm and republish your charter</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting for you to confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderErrorModal(): JSX.Element | null {\n    if (!this.state.metaMaskErrorModal) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={false}\n        errored={true}\n        errorText={this.state.errorText}\n        ipfsPost={this.state.ipfsError}\n        cancelTransaction={() => this.cancelTransaction()}\n        restartTransactions={this.getTransactions(this.context.civil!, true)}\n      >\n        <ModalHeading>Your charter republish did not complete</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText=\"To republish your newsroom charter, you need to confirm the transaction in your MetaMask wallet.\"\n        cancelTransaction={() => this.cancelTransaction()}\n        restartTransactions={this.getTransactions(this.context.civil!, true)}\n      >\n        <ModalHeading>Your charter republish did not complete</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderProgressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    return (\n      <Modal textAlign=\"left\">\n        <ModalHeading>Your charter republish is processing</ModalHeading>\n        <p>You have confirmed the transaction in MetaMask.</p>\n        <p>\n          Note: this could take a while depending on Ethereum network traffic. You can close this window while the\n          transaction is processing, but please note that changes won't be reflected until the transaction has\n          completed.\n        </p>\n        <p>If you remain on this page, you will be alerted when the transaction has been completed.</p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderTransactionSuccessModal(): JSX.Element | null {\n    if (!this.state.isTransactionSuccessModalOpen) {\n      return null;\n    }\n    const onClick = () => {\n      this.setState({\n        isTransactionSuccessModalOpen: false,\n      });\n      if (this.props.onTxComplete) {\n        this.props.onTxComplete();\n      }\n    };\n\n    return (\n      <Modal textAlign=\"left\">\n        <ModalHeading>Charter Republished Successfully</ModalHeading>\n        <p>Your updated charter has been republished and will be viewable on your newsroom page on the registry.</p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={onClick}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  private renderIntroCopy(): JSX.Element {\n    if (this.props.introCopy) {\n      return <>{this.props.introCopy}</>;\n    }\n    return (\n      <>\n        <strong>Note:</strong> Your charter has already been published alongside your newsroom smart contract. If you\n        wish to make any changes, please use the back/next buttons below to navigate between sections. Once you have\n        completed any changes, make sure to republish your charter.\n      </>\n    );\n  }\n  private renderTransactionButtonComponent = (props: TransactionButtonInnerProps): JSX.Element => {\n    if (props.disabled) {\n      return <Loader size={12} />;\n    }\n    if (this.props.transactionButtonComponent) {\n      return this.props.transactionButtonComponent(props);\n    }\n    return (\n      <RepublishLink onClick={props.onClick}>\n        Republish your charter{\" \"}\n        <IconWrap>\n          <MetaMaskSideIcon />\n        </IconWrap>\n      </RepublishLink>\n    );\n  };\n\n  private getTransactions = (civil: Civil, noPreModal?: boolean): Transaction[] => {\n    return [\n      {\n        requireBeforeTransaction: this.publishCharterToIpfs.bind(this, noPreModal),\n        transaction: async () => {\n          this.setState({\n            isIpfsModalOpen: false,\n            metaMaskRejectionModal: false,\n            metaMaskErrorModal: false,\n            isWaitingTransactionModalOpen: true,\n            isPreTransactionModalOpen: false,\n          });\n          return this.props.newsroom.updateRevisionURIAndHash(0, this.state.contentURI!, this.state.contentHash!);\n        },\n        postTransaction: () => {\n          this.setState({\n            modalOpen: false,\n            isTransactionSuccessModalOpen: true,\n          });\n        },\n        handleTransactionHash: async (txHash: TxHash) => {\n          this.setState({\n            modalOpen: true,\n            isWaitingTransactionModalOpen: false,\n          });\n          if (this.props.onTxStart) {\n            this.props.onTxStart();\n          }\n        },\n        handleTransactionError: this.handleTransactionError,\n      },\n    ];\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private publishCharterToIpfs = async (noPreModal?: boolean): Promise<any> => {\n    this.setState({\n      isIpfsModalOpen: true,\n      metaMaskErrorModal: false,\n    });\n    const ipfsProvider = new IPFSProvider();\n    let ipfsObject;\n    try {\n      ipfsObject = await ipfsProvider.put(JSON.stringify(this.props.charter));\n    } catch (err) {\n      console.error(\"Failed to publish updated charter to IPFS:\", err);\n      const errorText = \"Failed to publish updated charter to IPFS: \" + (err.message || err);\n      this.setState({\n        isIpfsModalOpen: false,\n        metaMaskErrorModal: true,\n        errorText,\n        ipfsError: true,\n      });\n      throw errorText;\n    }\n\n    this.setState({\n      contentHash: ipfsObject.contentHash,\n      contentURI: ipfsObject.uri,\n      isIpfsModalOpen: false,\n      ipfsError: false,\n    });\n    return noPreModal ? undefined : this.requireBeforeTransaction();\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n      metaMaskErrorModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n\n  private handleTransactionError = (err: Error, txHash?: TxHash) => {\n    this.setState({ isWaitingTransactionModalOpen: false });\n    if (err && err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n      this.setState({ metaMaskRejectionModal: true });\n    } else {\n      this.setState({\n        metaMaskErrorModal: true,\n        errorText: err ? err.message || err.toString() : \"An unknown error occurred\",\n      });\n    }\n  };\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/AboutSmartContractsButton.tsx",
    "content": "import * as React from \"react\";\nimport { InvertedButton, buttonSizes } from \"@joincivil/components\";\nimport { urlConstants } from \"@joincivil/utils\";\nimport { InfoModalButton, Header, SectionHeader, Paragraph } from \"../InfoModalButton\";\n\nexport class AboutSmartContractsButton extends React.Component {\n  public render(): JSX.Element | null {\n    return (\n      <InfoModalButton\n        buttonText=\"Learn more about Newsroom Smart Contracts\"\n        content={\n          <>\n            <Header>About Newsroom Smart Contracts</Header>\n            <Paragraph>\n              In this section, we explain the difference between the Smart Contract Address and Public Address and why\n              this is important to your Newsroom.\n            </Paragraph>\n\n            <SectionHeader>Newsroom Smart Contract</SectionHeader>\n            <Paragraph>\n              Smart contracts help you record activity and exchange things of value in a transparent, conflict-free way\n              while avoiding intermediary services. The public can find a newsroom by its contract address in order to\n              see its activities on the blockchain. You cannot send funds directly to a newsroom smart contract.\n            </Paragraph>\n            <Paragraph>\n              In the case of Civil Registry and Publisher, this newsroom smart contract code allows you to create and\n              maintain a decentralized index and/or archive of your content and control who has permission to update it.\n              In combination with your newsroom wallet address, the smart contract acts as a verification for your\n              newsroom's identity.\n            </Paragraph>\n            <Paragraph>\n              Using Civil's publishing tools, your content can be indexed on the Civil network, which provides a way to\n              track it back to your website, along with proof that the contents have not changed since last publish.\n            </Paragraph>\n            <Paragraph>\n              Archiving will save the full text of your post to IPFS and, if you choose, the Ethereum blockchain. You\n              will also publish an index of the post to provide proof that its contents have not changed. This will\n              create a permanent record of the full text of your story, in a way cannot be easily altered or removed.\n            </Paragraph>\n\n            <SectionHeader>Newsroom Wallet</SectionHeader>\n            <Paragraph>\n              The newsroom wallet, identified by its public wallet address, is used to manage permissions for your\n              newsroom smart contract. This specific type of wallet is a \"multisignature wallet\" (\"multisig\") which\n              means that multiple parties have control over it. Only Officers can control the newsroom smart contract,\n              which they do via this multisig. It is also a place where you can send, receive, and store your newsroom\n              funds.\n            </Paragraph>\n\n            <SectionHeader>Newsroom Smart Contract Roles</SectionHeader>\n            <Paragraph>\n              You need to assign role to key staff in your newsrooms. This will determine their level of access to the\n              newsroom smart contract. There are three distinct roles:\n            </Paragraph>\n            <Paragraph>\n              Officer - an admin role that has full access to newsroom smart contract functions, including adding other\n              officers to the newsroom contract; signing, indexing, and archiving posts; and controlling funds.\n            </Paragraph>\n            <Paragraph>\n              Member - standard role that has access to the tools to sign, index, and archive posts on the blockchain.\n              They cannot add Civil Officers to a newsroom contract but can add other members.\n            </Paragraph>\n            <Paragraph>\n              None - you may choose \"None\" for staff that you wish to include in your roster but who don't need access\n              to your newsroom smart contract.\n            </Paragraph>\n            <Paragraph>These roles will appear on your Civil Registry profile.</Paragraph>\n\n            <InvertedButton size={buttonSizes.SMALL} target=\"_blank\" href={urlConstants.FAQ_WHAT_IS_SMART_CONTRACT}>\n              Read more on our FAQ\n            </InvertedButton>\n          </>\n        }\n      />\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/AddMember.tsx",
    "content": "import * as React from \"react\";\nimport { Civil, NewsroomInstance } from \"@joincivil/core\";\nimport { NewsroomRoles, abbreviateAddress } from \"@joincivil/utils\";\nimport {\n  colors,\n  fonts,\n  TransactionButtonNoModal,\n  TransactionButtonModalFlowState,\n  HollowGreenCheck,\n  MetaMaskModal,\n  ModalHeading,\n  Modal,\n  buttonSizes,\n  Button,\n  TextInput,\n  BorderlessButton,\n  ToolTip,\n  QuestionToolTip,\n} from \"@joincivil/components\";\nimport { AvatarImg, AvatarWrap, noAvatar, MemberDisplayName } from \"../styledComponents\";\nimport styled from \"styled-components\";\nimport Select from \"react-select\";\nimport { TransactionButtonInner } from \"../TransactionButtonInner\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport { StateWithNewsroom } from \"../reducers\";\nimport { getUserObject } from \"../utils\";\nimport { UserData } from \"../types\";\nimport { EthAddress, CharterData } from \"@joincivil/typescript-types\";\nimport { addAndHydrateEditor, addAndHydrateOwner, fetchNewsroom, removeEditor } from \"../actionCreators\";\n\nexport interface AddMemberProps {\n  civil: Civil;\n  newsroom: NewsroomInstance;\n  name?: string;\n  index: number;\n  memberAddress?: EthAddress;\n  charter: Partial<CharterData>;\n  role?: memberTypes;\n  hasBothRoles?: boolean;\n  avatarUrl?: string;\n  isOnContract?: boolean;\n  notInCharter?: boolean;\n  profileWalletAddress?: EthAddress;\n  forceCharterUpdateForMissingAddress?: boolean;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nexport interface AddMemberState extends TransactionButtonModalFlowState {\n  selectedState: { label: string; value: memberTypes };\n  walletAddress: EthAddress;\n  removingOwner?: boolean;\n  removingEditor?: boolean;\n}\n\nexport interface ValueOption {\n  label: string;\n  value: memberTypes;\n}\n\nexport interface SelectProps {\n  isDisabled: boolean;\n  value: ValueOption;\n  options: ValueOption[];\n  onChange(selected: any): void;\n}\n\nexport enum memberTypes {\n  NONE = \"NONE\",\n  CIVIL_MEMBER = \"CIVIL_MEMBER\",\n  CIVIL_OFFICER = \"CIVIL_OFFICER\",\n}\n\nconst options = [\n  {\n    label: \"none\",\n    value: memberTypes.NONE,\n  },\n  {\n    label: \"Civil Member\",\n    value: memberTypes.CIVIL_MEMBER,\n  },\n  {\n    label: \"Civil Officer\",\n    value: memberTypes.CIVIL_OFFICER,\n  },\n];\n\nconst StyledLi = styled.li`\n  display: grid;\n  grid-template-columns: 28% 15% 27% 30%;\n  padding: 15px 0;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nconst SectionWrapper = styled.div`\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n`;\n\nconst RemoveButtonWrapper = styled.div`\n  margin-top: 15px;\n`;\n\nconst StyledDisplayName = styled(MemberDisplayName)`\n  margin-left: 16px;\n`;\n\nconst StatusText = styled.span`\n  color: ${colors.primary.BLACK};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 32px;\n`;\n\nconst AddAddressInfoSection = styled.div`\n  grid-column-start: 1;\n  grid-column-end: 3;\n  margin-top: 25px;\n`;\n\nconst AddAddressSection = styled.div`\n  display: flex;\n  grid-column-start: 1;\n  grid-column-end: 4;\n`;\n\nconst ErrorText = styled.h4`\n  color: ${colors.accent.CIVIL_RED};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: bold;\n  line-height: 21px;\n`;\n\nconst StyledInput = styled(TextInput)`\n  margin-top: 10px;\n  width: auto;\n  & > input {\n    padding: 17px;\n    display: inline-block;\n    width: 472px;\n    font-size: 15px;\n    line-height: 24px;\n  }\n  & > label {\n    display: none;\n  }\n`;\n\nconst ExplainerText = styled.p`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 21px;\n`;\n\nconst StyledSelect = styled(Select)`\n  width: 150px;\n`;\n\nconst StyledCheck = styled(HollowGreenCheck)`\n  margin-right: 10px;\n`;\n\nexport class AddMemberComponent extends React.Component<AddMemberProps & DispatchProp<any>, AddMemberState> {\n  constructor(props: AddMemberProps & DispatchProp<any>) {\n    super(props);\n    const value = options.find(option => {\n      return option.value === props.role;\n    });\n    this.state = {\n      selectedState: value!,\n      walletAddress: \"\",\n    };\n  }\n\n  public componentDidUpdate(prevProps: AddMemberProps): void {\n    if (prevProps.role !== this.props.role) {\n      const value = options.find(option => {\n        return option.value === this.props.role;\n      });\n      this.setState({\n        selectedState: value!,\n      });\n    }\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting to Confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderCompleteModal(): JSX.Element | null {\n    if (!this.state.completeModalOpen) {\n      return null;\n    }\n    const removing = this.state.removingEditor || this.state.removingOwner;\n    let message = \"\";\n    let role;\n    if (this.state.removingEditor) {\n      role = memberTypes.CIVIL_MEMBER;\n      message = \"A Civil Member has been removed from the newsroom smart contract!\";\n    } else if (this.state.removingOwner) {\n      role = memberTypes.CIVIL_OFFICER;\n      message = \"A Civil Officer has been removed from the newsroom smart contract!\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_MEMBER) {\n      role = memberTypes.CIVIL_MEMBER;\n      message = \"A Civil Member has been added to the newsroom smart contract!\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_OFFICER) {\n      role = memberTypes.CIVIL_OFFICER;\n      message = \"A Civil Officer has been added to the newsroom smart contract!\";\n    }\n\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>\n          The transaction has completed and the {role === memberTypes.CIVIL_MEMBER ? \"Civil Member\" : \"Civil Officer\"}{\" \"}\n          was {removing ? \"removed\" : \"added\"}. You can keep adding officers and members to your newsroom smart contract\n          or continue to the next step to create your Registry profile.\n        </p>\n        <Button\n          size={buttonSizes.MEDIUM_WIDE}\n          onClick={() => {\n            this.setState({\n              completeModalOpen: false,\n              removingEditor: false,\n              removingOwner: false,\n            });\n          }}\n        >\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderPreMetamMask(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n\n    let message = \"\";\n    if (this.state.removingEditor) {\n      message = \"Open MetaMask to remove Civil Member\";\n    } else if (this.state.removingOwner) {\n      message = \"Open MetaMask to remove Civil Officer\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_MEMBER) {\n      message = \"Open MetaMask to add Civil Member\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_OFFICER) {\n      message = \"Open MetaMask to add Civil Officer\";\n    }\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderProgressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n\n    let message = \"\";\n    if (this.state.removingEditor) {\n      message = \"A Civil Member is being removed from your newsroom smart contract\";\n    } else if (this.state.removingOwner) {\n      message = \"A Civil Officer is being removed from your newsroom smart contract\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_MEMBER) {\n      message = \"A Civil Member is being added to your newsroom smart contract\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_OFFICER) {\n      message = \"A Civil Officer is being added to your newsroom smart contract\";\n    }\n\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>You have confirmed the transaction in your MetaMask wallet and it is currently processing</p>\n        <p>\n          Note, that this could take a while depending on traffic on the Ethereum network. You can close this while the\n          transaction is processing.\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n\n    let message = \"\";\n    let denialMessage = \"\";\n    if (this.state.removingEditor) {\n      denialMessage = \"To remove a Civil Member, you need to confirm the transaction in your MetaMask wallet.\";\n      message = \"Your Civil Member was not removed\";\n    } else if (this.state.removingOwner) {\n      denialMessage = \"To remove a Civil Officer, you need to confirm the transaction in your MetaMask wallet.\";\n      message = \"Your Civil Officer was not removed\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_MEMBER) {\n      denialMessage = \"To add a new Civil Member, you need to confirm the transaction in your MetaMask wallet.\";\n      message = \"Your new Civil Member was not added\";\n    } else if (this.state.selectedState.value === memberTypes.CIVIL_OFFICER) {\n      denialMessage = \"To add a new Civil Officer, you need to confirm the transaction in your MetaMask wallet.\";\n      message = \"Your new Civil Officer was not added\";\n    }\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText={denialMessage}\n        cancelTransaction={() => this.cancelTransaction()}\n        restartTransactions={this.getTransaction(true)}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderAddAddress(): JSX.Element | null {\n    if (this.props.memberAddress || this.state.selectedState.value === memberTypes.NONE) {\n      return null;\n    }\n\n    return (\n      <>\n        <AddAddressInfoSection>\n          <ErrorText>Missing wallet address</ErrorText>\n          <ExplainerText>\n            To add this person to the Newsroom Smart Contract, please add their wallet address to their roster profile.\n          </ExplainerText>\n          {this.props.forceCharterUpdateForMissingAddress && (\n            <ExplainerText>\n              {/* This is a terrible UX hack, but the post-apply smart contract manager isn't wired up to the publish charter flow so we can't just add it on the fly here. */}\n              To do this, first select the \"Edit Charter\" tab above, then edit this user in the \"Roster\" section to add\n              their ethereum wallet address. Once you have saved and published your updated charter, please return here\n              to assign this user their role.\n            </ExplainerText>\n          )}\n        </AddAddressInfoSection>\n        {!this.props.forceCharterUpdateForMissingAddress && (\n          <AddAddressSection>\n            <StyledInput\n              placeholder=\"Public Wallet Address\"\n              name=\"walletAddress\"\n              value={this.state.walletAddress}\n              onChange={(name: any, val: any) => this.setState({ walletAddress: val })}\n            />\n            <BorderlessButton onClick={this.addAddress}>Add Wallet Address</BorderlessButton>\n          </AddAddressSection>\n        )}\n      </>\n    );\n  }\n\n  public renderRemoveButton(): JSX.Element | null {\n    const isMe =\n      this.props.profileWalletAddress &&\n      this.props.profileWalletAddress.toLowerCase() === (this.props.memberAddress || \"\").toLowerCase();\n    if (!this.props.isOnContract || isMe) {\n      return null;\n    }\n    return (\n      <RemoveButtonWrapper>\n        <TransactionButtonNoModal Button={TransactionButtonInner} transactions={this.getRemoveTransactions(false)}>\n          Remove Role\n        </TransactionButtonNoModal>\n      </RemoveButtonWrapper>\n    );\n  }\n\n  public render(): JSX.Element {\n    let fourthSection = null;\n    if (this.props.memberAddress && this.state.selectedState.value !== memberTypes.NONE) {\n      fourthSection = this.props.isOnContract ? (\n        <>\n          <StyledCheck />\n          <StatusText>Added to Smart Contract</StatusText>\n        </>\n      ) : (\n        <TransactionButtonNoModal Button={TransactionButtonInner} transactions={this.getTransaction(false)}>\n          Add to Smart Contract\n        </TransactionButtonNoModal>\n      );\n    }\n    return (\n      <>\n        <StyledLi>\n          <SectionWrapper>\n            <AvatarWrap>{this.props.avatarUrl ? <AvatarImg src={this.props.avatarUrl} /> : noAvatar}</AvatarWrap>\n            <StyledDisplayName>\n              {this.props.name}\n              {this.props.notInCharter && (\n                <>\n                  <i>not in charter</i>\n                  <QuestionToolTip\n                    explainerText={\n                      \"This ETH address was found on your newsroom smart contract, but there is no roster member in your charter with that address. If you know who this ETH address belongs to, please update your charter accordingly.\"\n                    }\n                  />\n                </>\n              )}\n            </StyledDisplayName>\n          </SectionWrapper>\n          <SectionWrapper>\n            <ToolTip explainerText={<code>{this.props.memberAddress}</code>} width={310}>\n              <code>{this.props.memberAddress && abbreviateAddress(this.props.memberAddress)}</code>\n            </ToolTip>\n          </SectionWrapper>\n          <SectionWrapper>\n            <StyledSelect\n              isDisabled={this.props.isOnContract}\n              value={this.state.selectedState}\n              onChange={this.onChange}\n              options={options}\n            />\n          </SectionWrapper>\n          <SectionWrapper>{fourthSection}</SectionWrapper>\n          <SectionWrapper>{this.renderRemoveButton()}</SectionWrapper>\n          {this.renderAddAddress()}\n        </StyledLi>\n        {this.renderPreMetamMask()}\n        {this.renderAwaitingTransactionModal()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.renderCompleteModal()}\n        {this.renderProgressModal()}\n      </>\n    );\n  }\n\n  private getRemoveTransactions = (noPremodal: boolean) => {\n    if (this.props.role === memberTypes.CIVIL_OFFICER) {\n      return [\n        {\n          requireBeforeTransaction: noPremodal\n            ? undefined\n            : async () => {\n                this.setState({ removingOwner: true });\n                return this.requireBeforeTransaction();\n              },\n          transaction: async () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.props.newsroom.removeOwner(this.props.memberAddress!);\n          },\n          postTransaction: () => {\n            this.setState({\n              modalOpen: false,\n              completeModalOpen: true,\n            });\n            this.props.dispatch!(fetchNewsroom(this.props.newsroom.address));\n          },\n          handleTransactionHash: this.handleTransactionHash,\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    } else {\n      return [\n        {\n          requireBeforeTransaction: noPremodal\n            ? undefined\n            : async () => {\n                this.setState({ removingEditor: true });\n                return this.requireBeforeTransaction();\n              },\n          transaction: async () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.props.newsroom.removeRole(this.props.memberAddress!, NewsroomRoles.Editor);\n          },\n          postTransaction: () => {\n            this.setState({\n              modalOpen: false,\n              completeModalOpen: true,\n            });\n            this.props.dispatch!(removeEditor(this.props.newsroom.address, this.props.memberAddress!));\n          },\n          handleTransactionHash: this.handleTransactionHash,\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    }\n  };\n\n  private getTransaction = (noPreModal: boolean) => {\n    if (this.state.selectedState.value === memberTypes.CIVIL_OFFICER) {\n      return [\n        {\n          requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n          transaction: async () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.props.newsroom.addOwner(this.props.memberAddress!);\n          },\n          postTransaction: () => {\n            this.props.dispatch!(addAndHydrateOwner(this.props.newsroom.address, this.props.memberAddress!));\n            this.setState({\n              modalOpen: false,\n              completeModalOpen: true,\n            });\n          },\n          handleTransactionHash: this.handleTransactionHash,\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    } else {\n      return [\n        {\n          requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n          transaction: () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.props.newsroom.addRole(this.props.memberAddress!, NewsroomRoles.Editor);\n          },\n          postTransaction: () => {\n            this.props.dispatch!(addAndHydrateEditor(this.props.newsroom.address, this.props.memberAddress!));\n            this.setState({\n              modalOpen: false,\n              completeModalOpen: true,\n            });\n          },\n          handleTransactionHash: this.handleTransactionHash,\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    }\n  };\n\n  private handleTransactionHash = () => {\n    this.setState({\n      modalOpen: true,\n      isWaitingTransactionModalOpen: false,\n    });\n  };\n\n  private handleTransactionError = (err: Error) => {\n    this.setState({ isWaitingTransactionModalOpen: false });\n    if (err && err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n      this.setState({ metaMaskRejectionModal: true });\n    }\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private onChange = (selected: any) => {\n    this.setState({ selectedState: selected });\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n\n  private addAddress = async () => {\n    const member = this.props.charter.roster![this.props.index];\n    const roster = [...this.props.charter.roster!];\n    roster[this.props.index] = { ...member, ethAddress: this.state.walletAddress };\n    return this.props.updateCharter({\n      ...this.props.charter,\n      roster,\n    });\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: AddMemberProps): AddMemberProps => {\n  const address = ownProps.newsroom ? ownProps.newsroom.address : \"\";\n  const newsroom = state.newsrooms.get(address);\n  const owners: UserData[] = ((newsroom.wrapper && newsroom.wrapper.data && newsroom.wrapper.data.owners) || []).map(\n    getUserObject.bind(null, state),\n  );\n  const editors: UserData[] = ((newsroom.editors && newsroom.editors.toArray()) || []).map(\n    getUserObject.bind(null, state),\n  );\n\n  let isOnContract = false;\n  let owner = false;\n  let editor = false;\n  let role = memberTypes.NONE;\n  if (ownProps.memberAddress) {\n    owner =\n      owners.findIndex((item: UserData) => {\n        return (\n          !!item.rosterData.ethAddress &&\n          item.rosterData.ethAddress!.toLowerCase() === ownProps.memberAddress!.toLowerCase()\n        );\n      }) > -1;\n    editor =\n      editors.findIndex((item: UserData) => {\n        return (\n          !!item.rosterData.ethAddress &&\n          item.rosterData.ethAddress!.toLowerCase() === ownProps.memberAddress!.toLowerCase()\n        );\n      }) > -1;\n    isOnContract = owner || editor;\n    if (owner) {\n      role = memberTypes.CIVIL_OFFICER;\n    } else if (editor) {\n      role = memberTypes.CIVIL_MEMBER;\n    }\n  }\n\n  return {\n    ...ownProps,\n    isOnContract,\n    role,\n  };\n};\n\nexport const AddMember = connect(mapStateToProps)(AddMemberComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/AddMembersToContract.tsx",
    "content": "import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n  OBSectionHeader,\n  OBSectionDescription,\n  OBCollapsable,\n  OBCollapsableHeader,\n  OBSmallParagraph,\n  fonts,\n  colors,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { CharterData, EthAddress, RosterMember } from \"@joincivil/typescript-types\";\nimport { NewsroomInstance } from \"@joincivil/core\";\nimport styled from \"styled-components\";\nimport { AddMember } from \"./AddMember\";\nimport { StateWithNewsroom } from \"../reducers\";\n\nconst MemberUL = styled.ul`\n  list-style: none;\n  padding: 0;\n  margin: 0;\n`;\n\nconst MemberUlLabels = styled.li`\n  display: grid;\n  grid-template-columns: 28% 15% 27% 30%;\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding-bottom: 10px;\n`;\n\nconst MemberUlLabel = styled.div`\n  font-size: 13px;\n  letter-spacing: -0.14px;\n  line-height: 16px;\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.accent.CIVIL_GRAY_3};\n  text-align: left;\n`;\n\nexport interface AddMembersToContractProps {\n  charter: Partial<CharterData>;\n  newsroom: NewsroomInstance;\n  profileWalletAddress?: EthAddress;\n  managerMode?: boolean;\n  nonCharterMembers?: EthAddress[];\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\ntype ContractMemberData = Partial<RosterMember> & { notInCharter: boolean };\n\nexport class AddMembersToContractComponent extends React.Component<AddMembersToContractProps> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  public render(): JSX.Element {\n    const members = ((this.props.charter.roster as ContractMemberData[]) || []).concat(\n      (this.props.nonCharterMembers || []).map(address => ({\n        ethAddress: address!,\n        notInCharter: true,\n      })),\n    );\n\n    return (\n      <>\n        <OBSectionHeader>Assign access to your Newsroom Smart Contract</OBSectionHeader>\n        <OBSectionDescription>\n          {this.props.managerMode ? \"Here you can\" : \"Now you'll\"} assign roles to key staff which will determine their\n          level of access to the Newsroom Smart Contract. We recommend adding at least two people as Officers to your\n          Newsroom Smart Contract. This is for your protection in the event you lose access to your wallet.\n        </OBSectionDescription>\n        <OBSectionDescription>\n          If you are the only Officer on your contract and you lose access to your wallet, you will no longer you will\n          no longer be able to access your newsroom and will have to create a new one. In order to be assigned to the\n          smart contract, your key staff will each need to set up a MetaMask wallet.\n        </OBSectionDescription>\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader>What are the types of Civil roles?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            <strong>Officer</strong> is an admin role that has all possible capabilities in the Newsroom Smart Contract.\n            They can add additional officers and members and have access to your newsrooms funds and Civil Registry\n            application. You can skip adding additional Officers but if you do not have one, you will not be able to\n            access your newsroom contract if you lose access to your wallet.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            <strong>Member</strong> is standard role in the Newsroom Smart Contract. They have access to sign and\n            publish posts on the blockchain using the Civil Publisher tool. They cannot add Civil Officers to a newsroom\n            contract, but can add additional Members. If you lose your access to your wallet, a Civil Member does not\n            have the option to add additional officers to the contract.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            <strong>None</strong> is a user role that has no access to your Newsroom Smart Contract but will still be\n            listed on your Roster on the Civil Registry page. These may be contributors to your newsroom or notable\n            board members or leadership that you see fit to add.\n          </OBSmallParagraph>\n        </OBCollapsable>\n        <MemberUL>\n          <MemberUlLabels>\n            <MemberUlLabel>Name</MemberUlLabel>\n            <MemberUlLabel>ETH Address</MemberUlLabel>\n            <MemberUlLabel>Civil Role</MemberUlLabel>\n            <MemberUlLabel>Status</MemberUlLabel>\n          </MemberUlLabels>\n          {members.map((member, index) => (\n            <AddMember\n              key={index}\n              index={index}\n              civil={this.context.civil!}\n              newsroom={this.props.newsroom}\n              name={member.name}\n              avatarUrl={member.avatarUrl}\n              memberAddress={member.ethAddress}\n              notInCharter={member.notInCharter}\n              updateCharter={this.props.updateCharter}\n              charter={this.props.charter}\n              profileWalletAddress={this.props.profileWalletAddress}\n              forceCharterUpdateForMissingAddress={this.props.managerMode}\n            />\n          ))}\n        </MemberUL>\n        <OBSectionDescription>\n          To add additional users, please{\" \"}\n          {this.props.managerMode\n            ? 'select the \"Edit Charter\" tab above'\n            : 'use the links above to navigate back to the \"Newsroom Roster\" step'}{\" \"}\n          and first add the user there. Make sure you have the user's ethereum wallet address on hand so that you can\n          include it. Once you have {this.props.managerMode ? \"published your updated charter\" : \"updated your charter\"}\n          , you can return here and assign them a role on your Newsroom Smart Contract.\n        </OBSectionDescription>\n      </>\n    );\n  }\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: AddMembersToContractProps): AddMembersToContractProps => {\n  const newsroomAddress = ownProps.newsroom ? ownProps.newsroom.address : \"\";\n  const newsroom = state.newsrooms.get(newsroomAddress);\n  const contractOwners = (newsroom.wrapper && newsroom.wrapper.data && newsroom.wrapper.data.owners) || [];\n  const contractEditors = (newsroom.editors && newsroom.editors.toArray()) || [];\n\n  const charterMemberAddresses = (ownProps.charter.roster || [])\n    .filter(member => !!member.ethAddress)\n    .map(member => member.ethAddress!.toLowerCase());\n  const nonCharterOfficers = contractOwners.filter(\n    address => charterMemberAddresses.indexOf(address.toLowerCase()) === -1,\n  );\n  const nonCharterEditors = contractEditors.filter(\n    address => charterMemberAddresses.indexOf(address.toLowerCase()) === -1,\n  );\n  const nonCharterMembers = nonCharterOfficers.concat(nonCharterEditors);\n\n  return {\n    ...ownProps,\n    nonCharterMembers,\n  };\n};\n\nexport const AddMembersToContract = connect(mapStateToProps)(AddMembersToContractComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/CreateNewsroomContract.tsx",
    "content": "import {\n  OBSectionHeader,\n  OBSectionDescription,\n  StepDescription,\n  AddressWithCopyButton,\n  Button,\n  buttonSizes,\n  TransactionButtonNoModal,\n  fonts,\n  GreenCheckMark,\n  Modal,\n  TextInput,\n  MetaMaskModal,\n  ModalHeading,\n  Transaction,\n  TransactionButtonModalFlowState,\n  QuestionToolTip,\n  colors,\n  GasEstimate,\n  ClipLoader,\n  LoadingIndicator,\n  CivilContext,\n  ICivilContext,\n} from \"@joincivil/components\";\nimport { Civil, IPFSProvider, TwoStepEthTransaction } from \"@joincivil/core\";\nimport { EthAddress, TxHash, CharterData } from \"@joincivil/typescript-types\";\nimport * as React from \"react\";\nimport { connect, DispatchProp } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { updateNewsroom, trackTx, TX_TYPE } from \"../actionCreators\";\nimport { StateWithNewsroom } from \"../reducers\";\nimport { TransactionButtonInner } from \"../TransactionButtonInner\";\nimport { AboutSmartContractsButton } from \"./AboutSmartContractsButton\";\nimport { FormTitle } from \"../styledComponents\";\nimport { MutationFunc } from \"react-apollo\";\n\nexport interface NameAndAddressProps {\n  userIsOwner?: boolean;\n  newsroomAddress?: EthAddress;\n  newsroomDeployTxHash?: TxHash;\n  charter: Partial<CharterData>;\n  newsroom?: any;\n  multisig?: EthAddress;\n  saveTx: MutationFunc;\n  saveAddress: MutationFunc;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nconst STANDIN_IPFS_URL = \"ipfs://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\";\nconst STAND_IN_HASH = \"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\";\n\nexport interface NameAndAddressState extends TransactionButtonModalFlowState {\n  collapsableOpen: boolean;\n  isIpfsModalOpen?: boolean;\n  contentHash?: string;\n  contentURI?: string;\n}\n\nconst SmallText = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-size: 13px;\n  line-height: 18px;\n  display: flex;\n  align-items: center;\n  margin: 0;\n  width: 280px;\n`;\n\nconst ToolTipLink = styled.a`\n  color: ${colors.basic.WHITE};\n`;\n\nconst Label = styled.div`\n  font-size: 14px;\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-family: ${fonts.SANS_SERIF};\n  margin-bottom: 8px;\n  margin-top: 15px;\n`;\n\nconst Success = styled.div`\n  position: absolute;\n  left: 25px;\n  top: 20px;\n`;\n\nconst Divider = styled.div`\n  margin: 24px 0 32px;\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  width: 100%;\n  height: 0;\n`;\n\nconst Subhead = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 32px;\n`;\n\nconst StyledInput = styled(TextInput)`\n  margin-top: 10px;\n  & > input {\n    padding: 17px;\n    display: inline-block;\n    width: 472px;\n    font-size: 15px;\n    line-height: 24px;\n  }\n`;\n\nconst NameDuringPending = styled.div`\n  color: ${colors.primary.BLACK};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  letter-spacing: 0.15px;\n  line-height: 24px;\n  margin-bottom: 35px;\n`;\n\nconst StyledButton = styled(Button)`\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n`;\n\nconst ButtonText = styled.div`\n  line-height: 20px;\n  margin-right: 15px;\n`;\n\nconst AddressSection = styled.div`\n  margin-bottom: 34px;\n`;\n\nexport class CreateNewsroomContractComponent extends React.Component<\n  NameAndAddressProps & DispatchProp<any>,\n  NameAndAddressState\n> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  constructor(props: NameAndAddressProps & DispatchProp<any>) {\n    super(props);\n    this.state = {\n      modalOpen: false,\n      collapsableOpen: true,\n      isPreTransactionModalOpen: false,\n    };\n  }\n\n  public onChange(name: string, value: string | void): void {\n    this.props.updateCharter({\n      ...this.props.charter,\n      name: value || undefined,\n    });\n  }\n\n  public progressModal(): JSX.Element | null {\n    if (!this.state.modalOpen) {\n      return null;\n    }\n    const message = this.props.newsroomAddress\n      ? \"Your name change is processing\"\n      : \"Your newsroom smart contract is processing\";\n    return (\n      <Modal textAlign=\"left\">\n        <h2>{message}</h2>\n        <p>\n          You have confirmed the transaction in MetaMask\n          {!this.props.newsroomAddress &&\n            \", and now computers around the world are learning about your newsroom contract\"}\n          .\n        </p>\n        <p>\n          Note: this could take a while depending on Ethereum network traffic. You can close this window while the\n          transaction is processing.\n          <br />\n        </p>\n        <Button size={buttonSizes.MEDIUM_WIDE} onClick={() => this.setState({ modalOpen: false })}>\n          OK\n        </Button>\n      </Modal>\n    );\n  }\n\n  public renderCheckMark(): JSX.Element | null {\n    if (!this.props.newsroomAddress) {\n      return null;\n    }\n    return (\n      <Success>\n        <GreenCheckMark />\n      </Success>\n    );\n  }\n\n  public renderIpfsModal(): JSX.Element | null {\n    if (!this.state.isIpfsModalOpen) {\n      return null;\n    }\n    return (\n      <Modal textAlign=\"center\">\n        <LoadingIndicator height={100} width={150} />\n        <ModalHeading>Saving charter to IPFS</ModalHeading>\n        <p>First we are saving your newsroom charter to IPFS. This can take a moment. Please don't close this tab.</p>\n      </Modal>\n    );\n  }\n\n  public renderPreMetamaskCreateModal(): JSX.Element | null {\n    if (!this.state.isPreTransactionModalOpen) {\n      return null;\n    }\n    const message = this.props.newsroomAddress\n      ? \"Open MetaMask to confirm your name change\"\n      : \"Open MetaMask to confirm and create a newsroom smart contract\";\n    return (\n      <MetaMaskModal\n        waiting={false}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderMetaMaskRejectionModal(): JSX.Element | null {\n    if (!this.state.metaMaskRejectionModal) {\n      return null;\n    }\n    const message = this.props.newsroomAddress\n      ? \"Your name change did not complete\"\n      : \"Your newsroom smart contract creation did not complete\";\n\n    const denialMessage = this.props.newsroomAddress\n      ? \"To change your newsroom's name, you need to confirm the transaction in your MetaMask wallet.\"\n      : \"To create your newsroom smart contract, you need to confirm the transaction in your MetaMask wallet. You will not be able to proceed without creating a newsroom smart contract.\";\n\n    return (\n      <MetaMaskModal\n        waiting={false}\n        denied={true}\n        denialText={denialMessage}\n        cancelTransaction={() => this.cancelTransaction()}\n        restartTransactions={this.getTransactions(this.context.civil!, true)}\n      >\n        <ModalHeading>{message}</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderAwaitingTransactionModal(): JSX.Element | null {\n    if (!this.state.isWaitingTransactionModalOpen) {\n      return null;\n    }\n    return (\n      <MetaMaskModal\n        waiting={true}\n        cancelTransaction={() => this.cancelTransaction()}\n        startTransaction={() => this.startTransaction()}\n      >\n        <ModalHeading>Waiting for you to confirm in MetaMask</ModalHeading>\n      </MetaMaskModal>\n    );\n  }\n\n  public renderNoContract(): JSX.Element {\n    return (\n      <>\n        <FormTitle>Let’s get your Newsroom Smart Contract started</FormTitle>\n        <Subhead>Enter or confirm your newsroom name to create your Newsroom Smart Contract.</Subhead>\n        <StyledInput\n          label=\"Newsroom Name\"\n          placeholder=\"Enter your newsroom's name\"\n          name=\"NameInput\"\n          value={this.props.charter.name || \"\"}\n          onChange={(name: any, val: any) => this.onChange(name, val)}\n        />\n        <SmallText>\n          Estimated Cost{\" \"}\n          <QuestionToolTip\n            explainerText={\n              <>\n                Current Prices based on{\" \"}\n                <ToolTipLink href=\"https://ethgasstation.info/\" target=\"_blank\">\n                  {\"https://ethgasstation.info/\"}\n                </ToolTipLink>\n              </>\n            }\n          />\n        </SmallText>\n        <GasEstimate\n          civil={this.context.civil!}\n          estimateFunctions={[\n            this.context.civil!.estimateNewsroomDeployTrusted.bind(\n              this.context.civil,\n              this.props.charter.name || \"\",\n              STANDIN_IPFS_URL,\n              STAND_IN_HASH,\n            ),\n          ]}\n        />\n        <TransactionButtonNoModal\n          transactions={this.getTransactions(this.context.civil!)}\n          Button={TransactionButtonInner}\n        >\n          Create Newsroom Smart Contract\n        </TransactionButtonNoModal>\n        <SmallText>This will open your wallet asking to process your transaction.</SmallText>\n      </>\n    );\n  }\n\n  public renderContract(): JSX.Element {\n    return (\n      <>\n        <FormTitle>Newsroom Smart Contract created!</FormTitle>\n        <Subhead>You'll be able to view these details on your Registry Profile page.</Subhead>\n        <Label>Newsroom Name</Label>\n        <NameDuringPending>{this.props.charter.name}</NameDuringPending>\n        <AddressSection>\n          <Label>Newsroom Contract Address</Label>\n          <AddressWithCopyButton address={this.props.newsroomAddress || \"\"} />\n          <StepDescription>\n            Your newsroom contract address is like the byline of your newsroom on the Ethereum blockchain.\n            <strong>\n              {\" \"}\n              CVL or ETH cannot be sent to this contract address. If funds are sent to this address, you will lose your\n              cryptocurrency and the Civil Media Company can not help you to retrieve it.\n            </strong>\n          </StepDescription>\n        </AddressSection>\n        <AddressSection>\n          <Label>Newsroom Public Wallet Address</Label>\n          <AddressWithCopyButton address={this.props.multisig || \"\"} />\n          <StepDescription>\n            The public wallet address is a multisignature address used to manage permissions for your Newsroom Smart\n            Contract. It is also a place where you can store your newsrooms funds.{\" \"}\n            <strong>CVL and ETH can be sent to this wallet address.</strong>\n          </StepDescription>\n        </AddressSection>\n      </>\n    );\n  }\n\n  public renderOnlyTxHash(): JSX.Element {\n    return (\n      <>\n        <FormTitle>Let’s get your Newsroom Smart Contract started</FormTitle>\n        <Subhead>Enter or confirm your newsroom name to create your Newsroom Smart Contract.</Subhead>\n        <Label>Newsroom Name</Label>\n        <NameDuringPending>{this.props.charter.name}</NameDuringPending>\n        <StyledButton disabled={true} size={buttonSizes.MEDIUM_WIDE}>\n          <ButtonText>Creating smart contract...</ButtonText> <ClipLoader size={20} />\n        </StyledButton>\n      </>\n    );\n  }\n\n  public render(): JSX.Element {\n    let body;\n    if (this.props.newsroomAddress) {\n      body = this.renderContract();\n    } else if (this.props.newsroomDeployTxHash) {\n      body = this.renderOnlyTxHash();\n    } else {\n      body = this.renderNoContract();\n    }\n    return (\n      <>\n        <OBSectionHeader>Create your Newsroom Smart Contract</OBSectionHeader>\n        <OBSectionDescription>\n          Your Newsroom Smart Contract effectively acts as your newsroom's byline on the Ethereum blockchain, and it\n          binds your newsroom’s identity to the content you create.\n        </OBSectionDescription>\n        <AboutSmartContractsButton />\n        <Divider />\n        {body}\n        {this.renderIpfsModal()}\n        {this.renderPreMetamaskCreateModal()}\n        {this.renderAwaitingTransactionModal()}\n        {this.renderMetaMaskRejectionModal()}\n        {this.progressModal()}\n      </>\n    );\n  }\n\n  private getTransactions = (civil: Civil, noPreModal?: boolean): Transaction[] => {\n    if (!this.props.newsroomAddress) {\n      let requireBeforeTransaction;\n      if (this.state.contentHash && this.state.contentURI) {\n        requireBeforeTransaction = noPreModal ? undefined : this.requireBeforeTransaction;\n      } else {\n        requireBeforeTransaction = this.beforeCreateNewsroom.bind(this, noPreModal);\n      }\n      return [\n        {\n          requireBeforeTransaction,\n          transaction: async () => {\n            this.setState({\n              isIpfsModalOpen: false,\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.createNewsroom(civil);\n          },\n          postTransaction: this.postTransaction,\n          handleTransactionHash: async (txHash: TxHash) => {\n            this.props.dispatch!(trackTx(TX_TYPE.CREATE_NEWSROOM, \"start\", txHash));\n            await this.props.saveTx({ variables: { input: txHash } });\n            this.setState({\n              modalOpen: true,\n              isWaitingTransactionModalOpen: false,\n            });\n          },\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    } else {\n      return [\n        {\n          requireBeforeTransaction: noPreModal ? undefined : this.requireBeforeTransaction,\n          transaction: async () => {\n            this.setState({\n              metaMaskRejectionModal: false,\n              isWaitingTransactionModalOpen: true,\n              isPreTransactionModalOpen: false,\n            });\n            return this.changeName();\n          },\n          postTransaction: this.onNameChange,\n          handleTransactionHash: txHash => {\n            this.props.dispatch!(trackTx(TX_TYPE.CHANGE_NAME, \"start\", txHash));\n            this.setState({\n              modalOpen: true,\n              isWaitingTransactionModalOpen: false,\n            });\n          },\n          handleTransactionError: this.handleTransactionError,\n        },\n      ];\n    }\n  };\n\n  private postTransaction = async (result: any, txHash?: TxHash): Promise<void> => {\n    await this.props.saveAddress({ variables: { input: result.address } });\n    this.props.dispatch!(updateNewsroom(result, { charter: this.props.charter }));\n    this.props.dispatch!(trackTx(TX_TYPE.CREATE_NEWSROOM, \"complete\", txHash));\n    this.setState({ modalOpen: false, collapsableOpen: false });\n  };\n\n  private changeName = async (): Promise<TwoStepEthTransaction<any>> => {\n    return this.props.newsroom!.setName(this.props.charter.name!);\n  };\n\n  private onNameChange = (result: any, txHash?: TxHash): void => {\n    this.props.dispatch!(trackTx(TX_TYPE.CHANGE_NAME, \"complete\", txHash));\n    this.setState({ modalOpen: false });\n  };\n\n  private createNewsroom = async (civil: Civil): Promise<TwoStepEthTransaction<any>> => {\n    return civil.newsroomDeployTrusted(this.props.charter.name!, this.state.contentURI, this.state.contentHash);\n  };\n\n  private handleTransactionError = (err: Error, txHash?: TxHash) => {\n    this.props.dispatch!(\n      trackTx(this.props.newsroomAddress ? TX_TYPE.CHANGE_NAME : TX_TYPE.CREATE_NEWSROOM, \"error\", txHash),\n    );\n    this.setState({ isWaitingTransactionModalOpen: false });\n    if (err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\") {\n      this.setState({ metaMaskRejectionModal: true });\n    }\n  };\n\n  private requireBeforeTransaction = async () => {\n    return new Promise((res, rej) => {\n      this.setState({\n        startTransaction: res,\n        cancelTransaction: rej,\n        isPreTransactionModalOpen: true,\n      });\n    });\n  };\n\n  private beforeCreateNewsroom = async (noPreModal?: boolean): Promise<any> => {\n    this.setState({\n      isIpfsModalOpen: true,\n    });\n    const ipfsProvider = new IPFSProvider();\n    const ipfsObject = await ipfsProvider.put(JSON.stringify(this.props.charter));\n    this.setState({\n      contentHash: ipfsObject.contentHash,\n      contentURI: ipfsObject.uri,\n    });\n    return noPreModal ? undefined : this.requireBeforeTransaction();\n  };\n\n  private cancelTransaction = () => {\n    if (this.state.cancelTransaction) {\n      this.state.cancelTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      metaMaskRejectionModal: false,\n    });\n  };\n\n  private startTransaction = () => {\n    if (this.state.startTransaction) {\n      this.state.startTransaction();\n    }\n    this.setState({\n      cancelTransaction: undefined,\n      startTransaction: undefined,\n      isPreTransactionModalOpen: false,\n      isWaitingTransactionModalOpen: true,\n    });\n  };\n}\n\nconst mapStateToProps = (state: StateWithNewsroom, ownProps: NameAndAddressProps): NameAndAddressProps => {\n  const { newsroomAddress } = ownProps;\n  const newsroom = state.newsrooms.get(newsroomAddress || \"\") || { wrapper: { data: {} } };\n  const multisig = newsroom.multisigAddress;\n\n  return {\n    ...ownProps,\n    multisig,\n  };\n};\n\nexport const CreateNewsroomContract = connect(mapStateToProps)(CreateNewsroomContractComponent);\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/LetsGetStartedPage.tsx",
    "content": "import * as React from \"react\";\nimport { OBSectionHeader, OBSectionDescription, colors, fonts } from \"@joincivil/components\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport styled from \"styled-components\";\nimport { AboutSmartContractsButton } from \"./AboutSmartContractsButton\";\n\nexport interface LetsGetStartedPageProps {\n  name: string;\n  walletAddress?: EthAddress;\n}\n\nconst BorderBox = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.09);\n  border-radius: 8px;\n  margin-top: 24px;\n  padding: 24px;\n  & > div:first-child {\n    margin-bottom: 25px;\n  }\n`;\n\nconst Label = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 24px;\n  color: ${colors.primary.CIVIL_GRAY_2};\n`;\n\nconst Value = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 16px;\n  line-height: 24px;\n`;\n\nconst Smalltext = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 21px;\n`;\n\nconst WalletAddress = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  background-color: ${colors.accent.CIVIL_GRAY_6};\n  box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.15);\n  font-family: ${fonts.MONOSPACE};\n  color: ${colors.primary.CIVIL_GRAY_1};\n  letter-spacing: -0.15px;\n  line-height: 24px;\n  padding: 5px 11px;\n  display: inline-block;\n`;\n\nexport class LetsGetStartedPage extends React.Component<LetsGetStartedPageProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <OBSectionHeader>Let’s get your Newsroom onto the Civil Network</OBSectionHeader>\n        <OBSectionDescription>\n          Next, you’ll be creating your Newsroom Smart Contract. Once your Newsroom Smart Contract is created, you can\n          use Civil's signing and publishing tools.\n        </OBSectionDescription>\n        <AboutSmartContractsButton />\n        <BorderBox>\n          <div>\n            <Label>Newsroom name</Label>\n            <Value>{this.props.name}</Value>\n          </div>\n          <div>\n            <Label>Wallet connected</Label>\n            <Smalltext>Your Public Wallet Address</Smalltext>\n            <WalletAddress>{this.props.walletAddress}</WalletAddress>\n          </div>\n        </BorderBox>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/UnderstandingEth.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport {\n  colors,\n  OBSectionHeader,\n  OBSectionDescription,\n  OBNoteText,\n  OBCollapsable,\n  OBCollapsableHeader,\n  OBSmallParagraph,\n  OBSmallList,\n  Notice,\n  NoticeTypes,\n  NorthEastArrow,\n} from \"@joincivil/components\";\nimport { Civil } from \"@joincivil/core\";\n\nconst EthNotice = styled(Notice)`\n  background: ${colors.accent.CIVIL_RED_ULTRA_FADED};\n  font-size: 13px;\n  padding-top: 10px;\n  padding-bottom: 10px;\n  margin: 24px 0;\n`;\n\nconst GrantNote = styled(OBNoteText)`\n  display: block;\n  text-align: center;\n`;\n\nconst GetMoreInfo = styled(OBSmallParagraph)`\n  margin-top: 32px;\n  text-align: left;\n`;\nconst ArrowWrap = styled.span`\n  margin-left: 1px;\n  path {\n    fill: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nexport interface UnderstandingEthProps {\n  civil?: Civil;\n}\n\nexport interface UnderstandingEthState {\n  balance?: number;\n}\n\nexport class UnderstandingEth extends React.Component<UnderstandingEthProps, UnderstandingEthState> {\n  constructor(props: UnderstandingEthProps) {\n    super(props);\n    this.state = {};\n  }\n  public async componentDidMount(): Promise<void> {\n    const account = await this.props.civil!.accountStream.first().toPromise();\n    this.setState({\n      balance: await this.props.civil!.accountBalance(account!),\n    });\n  }\n  public render(): JSX.Element {\n    const warningCopy =\n      this.state.balance && this.state.balance > 0.05\n        ? \"You can continue to the next step to create your Newsroom Smart Contract. You will use your ETH to process the transaction.\"\n        : \"You can continue to the next step to create your Newsroom Smart Contract, but without ETH your transaction will not go through. Please note, if you are a first-time purchaser, it may take a few days to get ETH in your wallet.\";\n\n    return (\n      <>\n        <OBSectionHeader>Understanding Ether (ETH)</OBSectionHeader>\n        <OBSectionDescription>\n          ETH is used to pay for gas fees to complete the transactions in your Newsroom Smart Contract, as well as to\n          buy Civil tokens later in this process.\n        </OBSectionDescription>\n\n        <EthNotice type={NoticeTypes.ERROR}>{warningCopy}</EthNotice>\n\n        <GrantNote>\n          If you received a Civil Foundation Grant, your grant covers your initial ETH transaction costs.\n        </GrantNote>\n\n        <OBCollapsable open={false} header={<OBCollapsableHeader>What is Ether (ETH)?</OBCollapsableHeader>}>\n          <OBSmallParagraph>\n            Ether (ETH) is the cryptocurrency that operate the Ethereum blockchain. You can purchase ETH via MetaMask\n            plus a cryptocurrency exchange like Coinbase or Gemini.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            ETH is used to also purchase Civil tokens (CVL) from an exchange or from Civil.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <OBCollapsable open={false} header={<OBCollapsableHeader>What is gas?</OBCollapsableHeader>}>\n          <OBSmallParagraph>\n            When you perform actions like buying or selling tokens, you need to pay the cost of that computing effort.\n            That payment is calculated in gas. Think about it like paying for a stamp on an envelope or paying for the\n            shipping costs of sending a package. Gas can only be paid for with ETH.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <OBCollapsable open={false} header={<OBCollapsableHeader>How do I buy ETH?</OBCollapsableHeader>}>\n          <OBSmallParagraph>\n            To purchase Civil tokens (CVL) and execute the Ethereum transactions needed to complete your application,\n            you must buy Ether (ETH). Then you will be able to exchange ETH for CVL. Unfortunately at this time, you\n            can’t use USD or local currencies to directly buy Civil tokens. You must first convert local currencies into\n            ETH using an exchange like Coinbase or Gemini. You will need to have your debit card or bank account details\n            handy, as well as your passport to verify your identity. Don't worry, both Coinbase and Gemini are regulated\n            and in compliance with all applicable laws in each jurisdiction in which they operate.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Once you fund your token wallet via Coinbase or Gemini , you can return to Civil where we will walk you\n            through how to complete your membership contribution. We know this can be confusing. For more information,\n            read this blog post or contact us at support@civil.co\n          </OBSmallParagraph>\n          <OBSmallParagraph>—</OBSmallParagraph>\n          <OBSmallParagraph>\n            Once you select <strong>Deposit</strong> in MetaMask, you can select Coinbase and purchase ETH using USD.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            You will need to verify your identity and account on Coinbase if it’s your first time. Coinbase uses a ACH\n            (Automated Clearing House, which is governed by the Federal Reserve) bank transfer system for U.S.\n            customers, and it can take 3-5 business days for funds to transfer from your bank.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Buying ETH with a debit or certain credit cards is instant, once your account is verified on Coinbase.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader>How long does it take to buy ETH?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            If you purchase Ether (ETH) in Coinbase using your bank account, Coinbase uses ACH. Automated Clearing\n            House, which is governed by the Federal Reserve, is a bank transfer system for U.S. customers, and it can\n            take 3-5 business days for funds to transfer from your bank.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            Buying ETH with a debit or certain credit cards is instant, once your account is verified on Coinbase.\n          </OBSmallParagraph>\n          <OBSmallParagraph>\n            It can sometimes take up 30 days with your first transaction for the Ether (ETH) to appear in your wallet.\n          </OBSmallParagraph>\n        </OBCollapsable>\n\n        <OBCollapsable\n          open={false}\n          header={<OBCollapsableHeader>What else will I need to use ETH for?</OBCollapsableHeader>}\n        >\n          <OBSmallParagraph>\n            You will use Ether (ETH) for transactions on Civil. You’ll also use ETH to buy Civil tokens (CVL).\n          </OBSmallParagraph>\n          <OBSmallParagraph>List of all fees:</OBSmallParagraph>\n          <OBSmallList>\n            <li>\n              {/*@TODO/tobek Get from parameterizer*/}\n              Registration deposit: <em>5,000 CVL tokens</em>\n            </li>\n            <li>\n              Gas fees for voting or applying on the registry: <em>varies based on Gas rates</em>\n            </li>\n            <li>\n              Appeal, in the event your newsroom is successfully challenged and you need to appeal:{\" \"}\n              <em>varies based on Application deposit</em>\n            </li>\n          </OBSmallList>\n        </OBCollapsable>\n\n        <GetMoreInfo>\n          Need more info before you start using ETH?{\" \"}\n          <a href=\"https://cvlconsensys.zendesk.com/hc/en-us/sections/360003849751-Funding-ETH-and-Gas\" target=\"_blank\">\n            Learn more in our support area{\" \"}\n            <ArrowWrap>\n              <NorthEastArrow />\n            </ArrowWrap>\n          </a>\n        </GetMoreInfo>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/SmartContract/index.tsx",
    "content": "import * as React from \"react\";\nimport { NewsroomInstance } from \"@joincivil/core\";\nimport { EthAddress, CharterData, TxHash } from \"@joincivil/typescript-types\";\nimport { NextBack } from \"../styledComponents\";\nimport { LetsGetStartedPage } from \"./LetsGetStartedPage\";\nimport { UnderstandingEth } from \"./UnderstandingEth\";\nimport { CreateNewsroomContract } from \"./CreateNewsroomContract\";\nimport { AddMembersToContract } from \"./AddMembersToContract\";\nimport { Mutation, MutationFunc } from \"react-apollo\";\nimport { getCharterQuery } from \"../queries\";\nimport { SaveAddressMutation, SaveTxMutation } from \"../mutations\";\nimport { CivilContext, ICivilContext } from \"@joincivil/components\";\n\nexport interface SmartContractProps {\n  currentStep: number;\n  profileWalletAddress?: EthAddress;\n  charter: Partial<CharterData>;\n  userIsOwner?: boolean;\n  newsroomAddress?: EthAddress;\n  newsroomDeployTxHash?: TxHash;\n  newsroom?: NewsroomInstance;\n  navigate(go: 1 | -1): void;\n  updateCharter(charter: Partial<CharterData>): void;\n}\n\nexport class SmartContract extends React.Component<SmartContractProps> {\n  public static contextType = CivilContext;\n  public context: ICivilContext;\n\n  public getDisabled(index: number): () => boolean {\n    const functions = [\n      () => {\n        return false;\n      },\n      () => {\n        return false;\n      },\n      () => {\n        return !this.props.newsroomAddress;\n      },\n      () => {\n        return !this.props.newsroomAddress;\n      },\n    ];\n\n    return functions[index];\n  }\n\n  public renderButtons(): JSX.Element | void {\n    return <NextBack navigate={this.props.navigate} nextDisabled={this.getDisabled(this.props.currentStep)} />;\n  }\n  public renderCurrentStep(): JSX.Element {\n    const steps = [\n      <LetsGetStartedPage walletAddress={this.props.profileWalletAddress} name={this.props.charter.name!} />,\n      <UnderstandingEth civil={this.context.civil} />,\n      <Mutation\n        mutation={SaveTxMutation}\n        refetchQueries={[\n          {\n            query: getCharterQuery,\n          },\n        ]}\n      >\n        {(saveTx: MutationFunc) => {\n          return (\n            <Mutation\n              mutation={SaveAddressMutation}\n              refetchQueries={[\n                {\n                  query: getCharterQuery,\n                },\n              ]}\n            >\n              {(saveAddress: MutationFunc) => {\n                return (\n                  <CreateNewsroomContract\n                    charter={this.props.charter!}\n                    updateCharter={this.props.updateCharter}\n                    newsroomAddress={this.props.newsroomAddress}\n                    newsroomDeployTxHash={this.props.newsroomDeployTxHash}\n                    newsroom={this.props.newsroom}\n                    saveTx={saveTx}\n                    saveAddress={saveAddress}\n                  />\n                );\n              }}\n            </Mutation>\n          );\n        }}\n      </Mutation>,\n      <AddMembersToContract\n        charter={this.props.charter!}\n        newsroom={this.props.newsroom!}\n        updateCharter={this.props.updateCharter}\n        profileWalletAddress={this.props.profileWalletAddress}\n      />,\n    ];\n    return steps[this.props.currentStep];\n  }\n  public render(): JSX.Element {\n    return (\n      <>\n        {this.renderCurrentStep()}\n        {this.renderButtons()}\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/TransactionButtonInner.tsx",
    "content": "import * as React from \"react\";\nimport { TransactionButtonInnerProps, MetaMaskLogoButton, buttonSizes, Button } from \"@joincivil/components\";\n\nexport const TransactionButtonInner: React.FunctionComponent<TransactionButtonInnerProps> = (\n  props: TransactionButtonInnerProps,\n): JSX.Element => {\n  const B = props.step === 0 ? MetaMaskLogoButton : Button;\n  return (\n    <B onClick={props.onClick} disabled={props.disabled} size={buttonSizes.MEDIUM_WIDE}>\n      {props.step === 1 && \"Waiting for confirmation...\"}\n      {props.step === 2 && \"Processing...\"}\n      {props.step === 0 && props.children}\n    </B>\n  );\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/TransactionStatusModalsHOC.tsx",
    "content": "import * as React from \"react\";\nimport {\n  Button,\n  buttonSizes,\n  MetaMaskModal,\n  Modal,\n  ModalContentInsetContainer,\n  ModalHeading,\n  ModalStepLabel,\n  ProgressModalContentError,\n  ProgressModalContentInProgress,\n} from \"@joincivil/components\";\n\nexport interface InjectedTransactionStatusModalProps {\n  setTransactions(transactions: any[]): void;\n  setHandleTransactionSuccessButtonClick(handleTransactionSuccessButtonClick: () => void): void;\n  setCancelTransaction(cancelTransaction: () => void): void;\n  setTransactionStatusModalConfig(newConfig: TransactionStatusModalsConfigProps): void;\n  updateTransactionStatusModalsState(newState: TransactionStatusModalState): void;\n  handleTransactionError(err: Error): void;\n  closeAllModals(): void;\n}\n\nexport interface TransactionStatusModalState {\n  isWaitingTransactionModalOpen?: boolean;\n  isTransactionProgressModalOpen?: boolean;\n  isTransactionSuccessModalOpen?: boolean;\n  isTransactionErrorModalOpen?: boolean;\n  isTransactionRejectionModalOpen?: boolean;\n  isIPFSUploadModalOpen?: boolean;\n  transactionType?: number | string;\n}\n\nexport type TransactionStatusModalContent = string | JSX.Element | undefined;\n\nexport interface TransactionStatusModalContentMap {\n  [index: string]: Array<string | JSX.Element | undefined>;\n}\n\nexport interface TransactionStatusModalsConfigProps {\n  transactionLabels?: { [index: string]: string };\n  multiStepTransactionLabels?: { [index: string]: string };\n  transactionSuccessContent?: TransactionStatusModalContentMap;\n  transactionRejectionContent?: TransactionStatusModalContentMap;\n  transactionErrorContent?: TransactionStatusModalContentMap;\n}\n\nexport const hasTransactionStatusModals = (transactionStatusModalConfig: TransactionStatusModalsConfigProps) => <\n  TOriginalProps extends {}\n>(\n  WrappedComponent: React.ComponentType<TOriginalProps & InjectedTransactionStatusModalProps>,\n) => {\n  return class ComponentWithTransactionStatusModals extends React.Component<\n    TOriginalProps & InjectedTransactionStatusModalProps,\n    TransactionStatusModalState\n  > {\n    public transactionStatusModalConfig: TransactionStatusModalsConfigProps;\n    public transactions: any[];\n    public cancelTransaction: () => void;\n    public handleTransactionSuccessButtonClick: () => void;\n\n    constructor(props: TOriginalProps & InjectedTransactionStatusModalProps) {\n      super(props);\n      this.transactionStatusModalConfig = transactionStatusModalConfig;\n      this.state = {\n        isWaitingTransactionModalOpen: false,\n        isTransactionProgressModalOpen: false,\n        isTransactionSuccessModalOpen: false,\n        isTransactionErrorModalOpen: false,\n        isTransactionRejectionModalOpen: false,\n        transactionType: undefined,\n      };\n    }\n\n    public render(): JSX.Element {\n      const cancelTransaction = this.cancelTransaction\n        ? this.cancelTransaction\n        : () => {\n            this.closeAllModals();\n          };\n      return (\n        <>\n          <WrappedComponent\n            setTransactions={this.setTransactions}\n            setCancelTransaction={this.setCancelTransaction}\n            setTransactionStatusModalConfig={this.setTransactionStatusModalConfig}\n            setHandleTransactionSuccessButtonClick={this.setHandleTransactionSuccessButtonClick}\n            updateTransactionStatusModalsState={(newState: TransactionStatusModalState) =>\n              this.updateTransactionStatusModalsState(newState)\n            }\n            handleTransactionError={(err: Error) => this.handleTransactionError(err)}\n            closeAllModals={this.closeAllModals}\n            {...this.props}\n          />\n          {this.renderAwaitingTransactionModal()}\n          {this.renderTransactionProgressModal()}\n          {this.renderIPFSUploadProgressModal()}\n          {this.renderTransactionSuccessModal()}\n          {this.renderTransactionErrorModal()}\n          {this.renderTransactionRejectionModal(cancelTransaction)}\n        </>\n      );\n    }\n\n    public updateTransactionStatusModalsState = (newState: TransactionStatusModalState) => {\n      this.setState(newState);\n    };\n\n    public renderTransactionSuccessModal(): JSX.Element | null {\n      if (!this.state.isTransactionSuccessModalOpen) {\n        return null;\n      }\n      const { transactionSuccessContent } = this.transactionStatusModalConfig;\n      const successContent = transactionSuccessContent![this.state.transactionType!];\n      const onClick = this.handleTransactionSuccessButtonClick || this.closeAllModals;\n\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <ModalHeading>{successContent[0]}</ModalHeading>\n          <ModalContentInsetContainer>{successContent[1]}</ModalContentInsetContainer>\n          <Button size={buttonSizes.MEDIUM} onClick={onClick}>\n            OK\n          </Button>\n        </Modal>\n      );\n    }\n\n    public renderAwaitingTransactionModal(): JSX.Element | null {\n      if (!this.state.isWaitingTransactionModalOpen) {\n        return null;\n      }\n      const { transactionLabels, multiStepTransactionLabels } = this.transactionStatusModalConfig;\n\n      const transactionLabel = transactionLabels![this.state.transactionType!];\n      const stepLabelText =\n        (multiStepTransactionLabels && multiStepTransactionLabels[this.state.transactionType!]) || \"1 of 1\";\n      const stepLabel = `Step ${stepLabelText} - ${transactionLabel}`;\n      return (\n        <MetaMaskModal waiting={true}>\n          <ModalStepLabel>{stepLabel}</ModalStepLabel>\n          <ModalHeading>Waiting for you to confirm in MetaMask</ModalHeading>\n        </MetaMaskModal>\n      );\n    }\n\n    public renderIPFSUploadProgressModal(): JSX.Element | null {\n      if (!this.state.isIPFSUploadModalOpen) {\n        return null;\n      }\n      const { transactionLabels, multiStepTransactionLabels } = this.transactionStatusModalConfig;\n      const transactionLabel = transactionLabels![this.state.transactionType!];\n      const stepLabelText =\n        (multiStepTransactionLabels && multiStepTransactionLabels[this.state.transactionType!]) || \"1 of 1\";\n      const stepLabel = `Step ${stepLabelText} - ${transactionLabel}`;\n      return (\n        <MetaMaskModal ipfsPost={true} waiting={true}>\n          <ModalStepLabel>{stepLabel}</ModalStepLabel>\n          <ModalHeading>Posting to IPFS</ModalHeading>\n        </MetaMaskModal>\n      );\n    }\n\n    public renderTransactionProgressModal(): JSX.Element | null {\n      if (!this.state.isTransactionProgressModalOpen) {\n        return null;\n      }\n      const { transactionLabels, multiStepTransactionLabels } = this.transactionStatusModalConfig;\n      const transactionLabel = transactionLabels![this.state.transactionType!];\n      const stepLabelText =\n        (multiStepTransactionLabels && multiStepTransactionLabels[this.state.transactionType!]) || \"1 of 1\";\n      const stepLabel = `Step ${stepLabelText} - ${transactionLabel}`;\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <ProgressModalContentInProgress>\n            <ModalStepLabel>{stepLabel}</ModalStepLabel>\n            <ModalHeading>{transactionLabel}</ModalHeading>\n          </ProgressModalContentInProgress>\n        </Modal>\n      );\n    }\n\n    public renderTransactionRejectionModal(cancelTransaction: (() => void) | undefined): JSX.Element | null {\n      if (!this.state.isTransactionRejectionModalOpen) {\n        return null;\n      }\n\n      const { transactionRejectionContent } = this.transactionStatusModalConfig;\n      const denialContent = transactionRejectionContent![this.state.transactionType!];\n\n      return (\n        <MetaMaskModal\n          waiting={false}\n          denied={true}\n          denialText={denialContent[1] as string}\n          cancelTransaction={cancelTransaction}\n          restartTransactions={this.transactions}\n        >\n          <ModalHeading>{denialContent[0]}</ModalHeading>\n        </MetaMaskModal>\n      );\n    }\n\n    public renderTransactionErrorModal(): JSX.Element | null {\n      if (!this.state.isTransactionErrorModalOpen) {\n        return null;\n      }\n\n      const { transactionErrorContent } = this.transactionStatusModalConfig;\n\n      const message = transactionErrorContent![this.state.transactionType!];\n\n      return (\n        <Modal width={558} textAlign=\"center\">\n          <ProgressModalContentError hideModal={() => this.closeAllModals()}>\n            <ModalHeading>{message[0]}</ModalHeading>\n            {message[1]}\n          </ProgressModalContentError>\n        </Modal>\n      );\n    }\n\n    public closeAllModals = (): void => {\n      this.setState({\n        isWaitingTransactionModalOpen: false,\n        isTransactionProgressModalOpen: false,\n        isTransactionSuccessModalOpen: false,\n        isTransactionErrorModalOpen: false,\n        isTransactionRejectionModalOpen: false,\n        isIPFSUploadModalOpen: false,\n      });\n    };\n\n    public handleTransactionError = (err: Error) => {\n      const isErrorUserRejection = err.message === \"Error: MetaMask Tx Signature: User denied transaction signature.\";\n      if (!isErrorUserRejection) {\n        console.error(`${this.state.transactionType} transaction failed:`, err);\n      }\n      this.setState(() => ({\n        isWaitingTransactionModalOpen: false,\n        isTransactionProgressModalOpen: false,\n        isTransactionSuccessModalOpen: false,\n        isIPFSUploadModalOpen: false,\n        isTransactionErrorModalOpen: !isErrorUserRejection,\n        isTransactionRejectionModalOpen: isErrorUserRejection,\n      }));\n    };\n\n    public setTransactions = (transactions: any[]): void => {\n      this.transactions = transactions;\n    };\n\n    public setCancelTransaction = (cancelTransaction: () => void): void => {\n      this.cancelTransaction = cancelTransaction;\n    };\n\n    public setHandleTransactionSuccessButtonClick = (handleTransactionSuccessButtonClick: () => void): void => {\n      this.handleTransactionSuccessButtonClick = handleTransactionSuccessButtonClick;\n    };\n\n    public setTransactionStatusModalConfig = (newConfig: TransactionStatusModalsConfigProps): void => {\n      this.transactionStatusModalConfig = {\n        ...this.transactionStatusModalConfig,\n        ...newConfig,\n      };\n    };\n  };\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/Welcome.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { ManagerHeading, MetaMaskSideIcon } from \"@joincivil/components\";\n\nexport interface WelcomeProps {\n  helpUrl: string;\n  helpUrlBase: string;\n}\n\nconst IconWrap = styled.span`\n  position: relative;\n  top: 3px;\n  padding: 5px 4px 0;\n  border-radius: 2px;\n  border: solid 1px #dddddd;\n`;\n\nconst MoreDetails = styled.p`\n  color: #72777c;\n  && {\n    font-size: 13px;\n  }\n`;\n\nexport class Welcome extends React.Component<WelcomeProps> {\n  public render(): JSX.Element {\n    return (\n      <>\n        <ManagerHeading>Welcome</ManagerHeading>\n\n        <p>\n          Before getting started setting up your newsroom and applying to the Civil Registry, you'll need to take the\n          following steps.\n        </p>\n\n        <p>\n          You'll need an Ethereum wallet-enabled browser (\n          <a href=\"https://www.google.com/chrome/\" target=\"_blank\">\n            Chrome\n          </a>\n          ,{\" \"}\n          <a href=\"https://brave.com/\" target=\"_blank\">\n            Brave\n          </a>\n          , or{\" \"}\n          <a href=\"https://www.mozilla.org/firefox/\" target=\"_blank\">\n            Firefox\n          </a>\n          ) with the{\" \"}\n          <a href=\"https://metamask.io/\" target=\"_blank\">\n            MetaMask\n          </a>{\" \"}\n          <IconWrap>\n            <MetaMaskSideIcon />\n          </IconWrap>{\" \"}\n          extension installed.{\" \"}\n          <a href={this.props.helpUrl} target=\"_blank\">\n            Read our guide\n          </a>{\" \"}\n          to learn more about browsers and wallets.{\" \"}\n        </p>\n\n        <p>Next, you'll create your newsroom smart contract. Have the following information ready before you begin:</p>\n\n        <ol>\n          <li>Your public wallet address - this will be pulled from MetaMask</li>\n          <li>\n            Funds in your wallet - you will need a small amount of Ether (ETH) to pay for{\" \"}\n            <a href={this.props.helpUrlBase + \"articles/360016788791-What-is-Gas-\"} target=\"_blank\">\n              gas\n            </a>{\" \"}\n            fees.{\" \"}\n          </li>\n          <li>Your newsroom name</li>\n          <li>The public wallet addresses for your newsroom's officers and editors that you want to include</li>\n        </ol>\n\n        <p>\n          You’ll be able to use Civil’s blockchain signing and publishing tools once your newsroom smart contract is\n          created. After that, you will complete your Newsroom Application by applying to the Civil Registry. You will\n          create your charter, sign the Civil Constitution and deposit CVL tokens.\n        </p>\n\n        <MoreDetails>\n          For full details about the Civil Newsroom Manager,{\" \"}\n          <a href={this.props.helpUrl} target=\"_blank\">\n            visit our FAQ\n          </a>\n          .{\" \"}\n        </MoreDetails>\n      </>\n    );\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/actionCreators.ts",
    "content": "import { AnyAction } from \"redux\";\nimport { EthAddress, BigNumber, CharterData, ListingWrapper } from \"@joincivil/typescript-types\";\nimport { Map } from \"immutable\";\nimport { Civil } from \"@joincivil/core\";\nimport { getInfuraUrlFromIpfs, sanitizeConstitutionHtml, is0x0Address } from \"@joincivil/utils\";\nimport { NewsroomState, StateWithNewsroom } from \"./reducers\";\nimport { CmsUserData } from \"./types\";\n\nexport enum newsroomActions {\n  ADD_NEWSROOM = \"ADD_NEWSROOM\",\n  UPDATE_NEWSROOM = \"UPDATE_NEWSROOM\",\n  CHANGE_NAME = \"CHANGE_NAME\",\n  ADD_EDITOR = \"ADD_EDITOR\",\n  ADD_OWNER = \"ADD_OWNER\",\n  REMOVE_EDITOR = \"REMOVE_EDITOR\",\n  SET_IS_OWNER = \"SET_IS_OWNER\",\n  SET_IS_EDITOR = \"SET_IS_EDITOR\",\n  SET_MULTISIG_ADDRESS = \"SET_MULTISIG_ADDRESS\",\n  SET_MULTISIG_BALANCE = \"SET_MULTISIG_BALANCE\",\n}\n\nexport enum uiActions {\n  ADD_GET_CMS_USER_DATA_FOR_ADDRESS = \"ADD_GET_CMS_USER_DATA_FOR_ADDRESS\",\n  GET_CMS_USER_DATA_FOR_ADDRESS = \"GET_CMS_USER_DATA_FOR_ADDRESS\",\n  ADD_PERSIST_CHARTER = \"ADD_PERSIST_CHARTER\",\n  PERSIST_CHARTER = \"PERSIST_CHARTER\",\n}\n\nexport enum userActions {\n  STORE_USER_DATA = \"STORE_USER_DATA\",\n}\n\nexport enum governmentActions {\n  ADD_CONSTITUTION_URI = \"ADD_CONSTITUTION_URI\",\n  ADD_CONSTITUTION_HASH = \"ADD_CONSTITUTION_HASH\",\n  ADD_CONSTITUTION_CONTENT = \"ADD_CONSTITUTION_CONTENT\",\n}\n\nexport enum grantActions {\n  SET_GRANT = \"CHOOSE_GRANT\",\n  SET_SKIP = \"CHOOSE_SKIP\",\n}\n\nexport enum listingActions {\n  GET_LISTING_FAIL = \"GET_LISTING_FAIL\",\n  ADD_OR_UPDATE_LISTING = \"ADD_OR_UPDATE_LISTING\",\n  SETUP_LISTING_APPLICATION_SUBSCRIPTION = \"SETUP_LISTING_APPLICATION_SUBSCRIPTION\",\n  LISTING_APPLICATION_SUBSCRIPTION_ALREADY_EXISTS = \"LISTING_APPLICATION_SUBSCRIPTION_ALREADY_EXISTS\",\n}\n\nexport enum analyticsActions {\n  EVENT = \"EVENT\",\n  NAVIGATE_STEP = \"NAVIGATE_STEP\",\n  REACHED_NEW_STEP = \"REACHED_NEW_STEP\",\n  APPLICATION_SUBMITTED = \"APPLICATION_SUBMITTED\",\n  APPLICATION_SKIPPED = \"APPLICATION_SKIPPED\",\n  TRACK_TX = \"TRACK_TX\",\n  PUBLISH_CHARTER = \"PUBLISH_CHARTER\",\n}\n\nexport enum TX_TYPE {\n  CREATE_NEWSROOM = \"CREATE_NEWSROOM\",\n  CHANGE_NAME = \"CHANGE_NAME\",\n  TRANSFER_TOKENS = \"TRANSFER_TOKENS\",\n  APPROVE_TOKENS = \"APPROVE_TOKENS\",\n  APPLY_TO_TCR = \"APPLY_TO_TCR\",\n}\n\nexport const getEditors = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<void> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  newsroom\n    .editors()\n    .distinct()\n    .forEach(val => {\n      dispatch(initContractMember(address, val));\n      dispatch(addEditor(address, val));\n    });\n};\n\nexport const getNewsroom = (address: EthAddress, civil: Civil, charter: Partial<CharterData>): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  const wrapper = await newsroom.getNewsroomWrapper();\n  wrapper.data.owners.forEach((userAddress: EthAddress) => {\n    dispatch(initContractMember(address, userAddress));\n  });\n  const multiSigAddr = await newsroom.getMultisigAddress();\n  dispatch(setNewsroomMultisigAddress(address, multiSigAddr || \"\"));\n  return dispatch(updateNewsroom(address, { wrapper, newsroom, charter }));\n};\n\nexport const getIsOwner = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  return dispatch(setIsOwner(address, await newsroom.isOwner()));\n};\n\nexport const getIsEditor = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const newsroom = await civil.newsroomAtUntrusted(address);\n  return dispatch(setIsEditor(address, await newsroom.isEditor()));\n};\n\nexport const getNewsroomMultisigBalance = (\n  address: EthAddress,\n  multisigAddress: EthAddress,\n  civil: Civil,\n): any => async (dispatch: any, getState: any): Promise<AnyAction> => {\n  const tcr = await civil.tcrSingletonTrusted();\n  const token = await tcr.getToken();\n  const balance = await token.getBalance(multisigAddress);\n  dispatch(setNewsroomMultisigAddress(address, multisigAddress));\n  return dispatch(setNewsroomMultisigBalance(address, balance));\n};\n\nexport const setNewsroomMultisigAddress = (address: EthAddress, multisigAddress: EthAddress): AnyAction => {\n  return {\n    type: newsroomActions.SET_MULTISIG_ADDRESS,\n    data: {\n      address,\n      multisigAddress,\n    },\n  };\n};\n\nconst setNewsroomMultisigBalance = (address: EthAddress, multisigBalance: BigNumber): AnyAction => {\n  return {\n    type: newsroomActions.SET_MULTISIG_BALANCE,\n    data: {\n      address,\n      multisigBalance,\n    },\n  };\n};\n\nexport const getListing = (address: EthAddress, civil: Civil): any => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  const tcr = await civil.tcrSingletonTrusted();\n  const listing = await tcr.getListing(address);\n\n  const listingData = await getListingData(listing);\n  if (listingData) {\n    return dispatch(addListing(listingData));\n  } else if (listing) {\n    return dispatch(setupListingApplicationsSubscription(address, listing));\n  }\n\n  return {\n    type: listingActions.GET_LISTING_FAIL,\n  };\n};\n\nconst getListingData = async (listing: any): Promise<ListingWrapper | undefined> => {\n  const listingData = await listing.getListingWrapper();\n  const owner = listingData && listingData.data && listingData.data.owner;\n  if (owner && !is0x0Address(owner)) {\n    return listingData;\n  }\n  return;\n};\n\n// @TODO(jon): This should probably go into an actual Redux store, but its a little\n// weird b/c the DApp is responsible for the reducers for the store. It may make sense\n// to abstract redux into a separate package first?\nlet listingApplicationSubscriptions: Map<EthAddress, any> = Map<EthAddress, any>();\n\nconst setupListingApplicationsSubscription = (listingAddress: EthAddress, listing: any) => async (\n  dispatch: any,\n  getState: any,\n): Promise<AnyAction> => {\n  if (!listingApplicationSubscriptions.includes(listingAddress)) {\n    const applicationEventHandler = async (event: any) => {\n      const listingData = await getListingData(listing);\n      if (listingData) {\n        dispatch(addListing(listingData));\n        listingApplicationSubscriptions.get(listingAddress).unsubscribe(applicationEventHandler);\n        listingApplicationSubscriptions = listingApplicationSubscriptions.delete(listingAddress);\n      }\n    };\n    const subscription = listing.applications().subscribe(applicationEventHandler);\n    listingApplicationSubscriptions = listingApplicationSubscriptions.set(listingAddress, subscription);\n\n    return {\n      type: listingActions.SETUP_LISTING_APPLICATION_SUBSCRIPTION,\n      data: {\n        address: listingAddress,\n      },\n    };\n  }\n\n  return {\n    type: listingActions.LISTING_APPLICATION_SUBSCRIPTION_ALREADY_EXISTS,\n    data: {\n      address: listingAddress,\n    },\n  };\n};\n\nexport const addNewsroom = (newsroom: NewsroomState): AnyAction => {\n  return {\n    type: newsroomActions.ADD_NEWSROOM,\n    data: newsroom,\n  };\n};\n\nexport const updateNewsroom = (address: EthAddress, data: any): AnyAction => {\n  return {\n    type: newsroomActions.UPDATE_NEWSROOM,\n    data: {\n      address,\n      ...data,\n    },\n  };\n};\n\nexport const addEditor = (address: EthAddress, editor: EthAddress): AnyAction => {\n  return {\n    type: newsroomActions.ADD_EDITOR,\n    data: {\n      address,\n      editor,\n    },\n  };\n};\n\nexport const addOwner = (address: EthAddress, owner: EthAddress): AnyAction => {\n  return {\n    type: newsroomActions.ADD_OWNER,\n    data: {\n      address,\n      owner,\n    },\n  };\n};\n\nexport const addListing = (listing: ListingWrapper): AnyAction => {\n  return {\n    type: listingActions.ADD_OR_UPDATE_LISTING,\n    data: listing,\n  };\n};\n\nexport const removeEditor = (address: EthAddress, editor: EthAddress) => {\n  return {\n    type: newsroomActions.REMOVE_EDITOR,\n    data: {\n      address,\n      editor,\n    },\n  };\n};\n\nexport const setIsOwner = (address: EthAddress, isOwner: boolean) => {\n  return {\n    type: newsroomActions.SET_IS_OWNER,\n    data: {\n      address,\n      isOwner,\n    },\n  };\n};\n\nexport const setIsEditor = (address: EthAddress, isEditor: boolean) => {\n  return {\n    type: newsroomActions.SET_IS_EDITOR,\n    data: {\n      address,\n      isEditor,\n    },\n  };\n};\n\nexport const changeName = (address: EthAddress, name: string): AnyAction => {\n  return {\n    type: newsroomActions.CHANGE_NAME,\n    data: { name, address },\n  };\n};\n\nexport const updateCharter = (address: EthAddress, charter: Partial<CharterData>, dontPersist?: boolean): any => (\n  dispatch: any,\n  getState: any,\n): AnyAction => {\n  const { newsrooms, newsroomUi }: StateWithNewsroom = getState();\n  const newsroom = newsrooms.get(address) || { wrapper: { data: {} } };\n  const persistCharter = newsroomUi.get(uiActions.PERSIST_CHARTER);\n  if (persistCharter && !dontPersist) {\n    persistCharter(charter);\n  }\n  return dispatch(\n    updateNewsroom(address, {\n      ...newsroom,\n      charter,\n    }),\n  );\n};\n\nexport const fetchConstitution = (ipfsAddress: string): any => async (dispatch: any) => {\n  const infuraUrl = getInfuraUrlFromIpfs(ipfsAddress);\n  const constitution = await fetch(infuraUrl).then(async body => body.json());\n  return dispatch({\n    type: governmentActions.ADD_CONSTITUTION_CONTENT,\n    data: {\n      content: sanitizeConstitutionHtml(constitution.content),\n    },\n  });\n};\n\nexport const fetchNewsroom = (address: EthAddress): any => async (dispatch: any, getState: any) => {\n  const { newsrooms }: StateWithNewsroom = getState();\n  const newsroom = newsrooms.get(address);\n  const wrapper = await newsroom.newsroom!.getNewsroomWrapper();\n  await dispatch(updateNewsroom(address, { ...newsroom, wrapper }));\n  // might have additional owners now, so:\n  wrapper.data.owners.forEach((userAddress: EthAddress) => {\n    dispatch(initContractMember(address, userAddress));\n  });\n};\n\nexport const addGetCmsUserDataForAddress = (func: (address: EthAddress) => Promise<CmsUserData>): AnyAction => {\n  return {\n    type: uiActions.ADD_GET_CMS_USER_DATA_FOR_ADDRESS,\n    data: func,\n  };\n};\n\nexport const addPersistCharter = (func: (charter: Partial<CharterData>) => void): AnyAction => {\n  return {\n    type: uiActions.ADD_PERSIST_CHARTER,\n    data: func,\n  };\n};\n\nexport const storeUserData = (newsroomAddress: EthAddress, address: EthAddress, userData: CmsUserData): AnyAction => {\n  return {\n    type: userActions.STORE_USER_DATA,\n    data: {\n      address,\n      userData,\n    },\n  };\n};\n\n/* Ensures we have fetched and stored data for this user (if possible) and added to roster. */\nexport const initContractMember = (newsroomAddress: EthAddress, userAddress: EthAddress): any => async (\n  dispatch: any,\n  getState: any,\n) => {\n  const state = getState();\n  let userData = state.newsroomUsers.get(userAddress);\n\n  const getCmsUserDataForAddress = state.newsroomUi.get(uiActions.GET_CMS_USER_DATA_FOR_ADDRESS);\n  if (!userData && getCmsUserDataForAddress) {\n    userData = await getCmsUserDataForAddress(userAddress);\n    dispatch(storeUserData(newsroomAddress, userAddress, userData));\n  }\n};\n\nexport const addAndHydrateEditor = (newsroomAddress: EthAddress, editorAddress: EthAddress): any => async (\n  dispatch: any,\n  getState: any,\n) => {\n  dispatch(addEditor(newsroomAddress, editorAddress));\n  return dispatch(initContractMember(newsroomAddress, editorAddress));\n};\n\nexport const addAndHydrateOwner = (newsroomAddress: EthAddress, ownerAddress: EthAddress): any => async (\n  dispatch: any,\n  getState: any,\n) => {\n  dispatch(addOwner(newsroomAddress, ownerAddress));\n  return dispatch(initContractMember(newsroomAddress, ownerAddress));\n};\n\nexport const addConstitutionUri = (uri: string): AnyAction => {\n  return {\n    type: governmentActions.ADD_CONSTITUTION_URI,\n    data: {\n      uri,\n    },\n  };\n};\n\nexport const addConstitutionHash = (hash: string): AnyAction => {\n  return {\n    type: governmentActions.ADD_CONSTITUTION_HASH,\n    data: {\n      hash,\n    },\n  };\n};\n\nexport const setGrant = (value: boolean): AnyAction => {\n  return {\n    type: grantActions.SET_GRANT,\n    data: value,\n  };\n};\n\nexport const setSkip = (value: boolean): AnyAction => {\n  return {\n    type: grantActions.SET_SKIP,\n    data: value,\n  };\n};\n\nexport const grantSubmitted = (): AnyAction => {\n  return {\n    type: analyticsActions.APPLICATION_SUBMITTED,\n  };\n};\nexport const grantSkipped = (): AnyAction => {\n  return {\n    type: analyticsActions.APPLICATION_SKIPPED,\n  };\n};\n\nexport const trackTx = (txType: TX_TYPE, state: \"start\" | \"complete\" | \"error\", txHash?: string): AnyAction => {\n  return {\n    type: analyticsActions.TRACK_TX,\n    data: {\n      txType,\n      state,\n      txHash,\n    },\n  };\n};\n\nexport const publishCharter = (ipfsHash: string): AnyAction => {\n  return {\n    type: analyticsActions.PUBLISH_CHARTER,\n    data: ipfsHash,\n  };\n};\n\nexport const navigateStep = (step: number, path: string = \"/apply-to-registry\"): AnyAction => {\n  return {\n    type: analyticsActions.NAVIGATE_STEP,\n    step,\n    path,\n  };\n};\nexport const reachedNewStep = (step: number): AnyAction => {\n  return {\n    type: analyticsActions.REACHED_NEW_STEP,\n    step,\n  };\n};\n\nexport const analyticsEvent = (event: {\n  category?: string;\n  action: string;\n  label?: string;\n  value?: number;\n}): AnyAction => {\n  return {\n    type: analyticsActions.EVENT,\n    event,\n  };\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/analytics.ts",
    "content": "import { trackPageView, trackEvent } from \"@redux-beacon/google-analytics\";\nimport { analyticsActions } from \"./actionCreators\";\n\nexport const newsroomSignupAnalyticsEvents = {\n  [analyticsActions.NAVIGATE_STEP]: trackPageView((action: any) => {\n    return {\n      page: `${action.path}/${action.step}`,\n    };\n  }),\n  [analyticsActions.REACHED_NEW_STEP]: trackEvent((action: any) => {\n    return {\n      category: \"Newsroom Signup\",\n      action: \"Reached Step\",\n      value: action.step,\n    };\n  }),\n\n  [analyticsActions.EVENT]: trackEvent((action: any) => {\n    return {\n      category: \"Newsroom Signup\",\n      ...action.event,\n    };\n  }),\n\n  [analyticsActions.APPLICATION_SUBMITTED]: trackEvent((action: any) => {\n    return {\n      category: \"Newsroom Signup\",\n      action: \"Grant Application\",\n      label: \"submitted\",\n    };\n  }),\n  [analyticsActions.APPLICATION_SKIPPED]: trackEvent((action: any) => {\n    return {\n      category: \"Newsroom Signup\",\n      action: \"Grant Application\",\n      label: \"skipped\",\n    };\n  }),\n\n  [analyticsActions.TRACK_TX]: trackEvent((action: any) => {\n    const { txType, state, txHash } = action.data;\n    return {\n      category: \"Newsroom Signup\",\n      action: `TX - ${txType} - ${state}`,\n      label: txHash,\n    };\n  }),\n\n  [analyticsActions.PUBLISH_CHARTER]: trackEvent((action: any) => {\n    return {\n      category: \"Newsroom Signup\",\n      action: \"Published Charter\",\n      label: action.data,\n    };\n  }),\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/constants.ts",
    "content": "export enum charterQuestions {\n  PURPOSE = \"purpose\",\n  STRUCTURE = \"structure\",\n  REVENUE = \"revenue\",\n  ENCUMBRANCES = \"encumbrances\",\n  MISCELLANEOUS = \"miscellaneous\",\n}\n\nexport const questionsCopy = {\n  [charterQuestions.PURPOSE]: \"Please describe your newsroom's mission or purpose.\",\n  [charterQuestions.STRUCTURE]:\n    \"What is your Newsroom's ownership structure? e.g. not-for-profit, privately owned commercial enterprise, etc.\",\n  [charterQuestions.REVENUE]:\n    \"What are your Newsroom's current or planned revenue sources? e.g. membership, subscriptions, advertising, sponsored content\",\n  [charterQuestions.ENCUMBRANCES]:\n    \"Do you have any conflicts of interest that may impact your editorial independence? e.g. advocacy organization, commercial interests, corporate ownership\",\n  [charterQuestions.MISCELLANEOUS]:\n    \"Is there anything else the Civil community should know about your Newsroom to support its inclusion on the Registry?\",\n};\n"
  },
  {
    "path": "packages/newsroom-signup/src/index.ts",
    "content": "export * from \"./analytics\";\nexport * from \"./Newsroom\";\nexport * from \"./NewsroomManager\";\nexport * from \"./reducers\";\nexport * from \"./actionCreators\";\nexport * from \"./utils\";\nexport * from \"./types\";\n"
  },
  {
    "path": "packages/newsroom-signup/src/mutations.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const saveCharterMutation = gql`\n  mutation($input: CharterInput!) {\n    nrsignupSaveCharter(charterData: $input)\n  }\n`;\n\nexport const SaveAddressMutation = gql`\n  mutation($input: String!) {\n    nrsignupSaveAddress(address: $input)\n  }\n`;\n\nexport const SaveTxMutation = gql`\n  mutation($input: String!) {\n    nrsignupSaveTxHash(txHash: $input)\n  }\n`;\n\nexport const requestGrantMutation = gql`\n  mutation($input: Boolean!) {\n    nrsignupRequestGrant(requested: $input)\n  }\n`;\n\nexport const saveStepsMutation = gql`\n  mutation($input: NrsignupStepsInput!) {\n    nrsignupUpdateSteps(input: $input)\n  }\n`;\n\nexport const saveApplyTxMutation = gql`\n  mutation($input: String!) {\n    nrsignupSaveNewsroomApplyTxHash(txHash: $input)\n  }\n`;\n"
  },
  {
    "path": "packages/newsroom-signup/src/queries.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const userDataQuery = gql`\n  query {\n    currentUser {\n      ethAddress\n      nrStep\n      nrFurthestStep\n    }\n  }\n`;\n// Unfortunately we can't combine this charter query with eth address query, because if no charter is saved at all yet, then the whole query errors and we won't get eth address\nexport const getCharterQuery = gql`\n  query {\n    nrsignupNewsroom {\n      grantRequested\n      grantApproved\n      newsroomDeployTx\n      tcrApplyTx\n      newsroomAddress\n      charter {\n        name\n        tagline\n        logoUrl\n        newsroomUrl\n        roster {\n          name\n          role\n          bio\n          ethAddress\n          socialUrls {\n            twitter\n            facebook\n          }\n          avatarUrl\n          signature\n        }\n        signatures {\n          signer\n          signature\n          message\n        }\n        mission {\n          purpose\n          structure\n          revenue\n          encumbrances\n          miscellaneous\n        }\n        socialUrls {\n          twitter\n          facebook\n        }\n      }\n    }\n  }\n`;\n\nexport const grantQuery = gql`\n  query {\n    nrsignupNewsroom {\n      grantRequested\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/newsroom-signup/src/reducers.ts",
    "content": "import { Map, Set } from \"immutable\";\nimport { AnyAction } from \"redux\";\nimport { BigNumber, NewsroomWrapper, EthAddress, CharterData, ListingWrapper } from \"@joincivil/typescript-types\";\nimport {\n  newsroomActions,\n  uiActions,\n  userActions,\n  governmentActions,\n  grantActions,\n  listingActions,\n} from \"./actionCreators\";\nimport { CmsUserData } from \"./types\";\n\nexport interface NewsroomState {\n  address: EthAddress;\n  wrapper: NewsroomWrapper;\n  newsroom?: any;\n  editors?: Set<EthAddress>;\n  isOwner?: boolean;\n  isEditor?: boolean;\n  charter?: Partial<CharterData>;\n  multisigAddress?: EthAddress;\n  multisigBalance?: BigNumber;\n}\n\nexport interface StateWithNewsroom {\n  newsrooms: Map<string, NewsroomState>;\n  newsroomUi: Map<string, any>;\n  newsroomUsers: Map<EthAddress, CmsUserData>;\n  newsroomGovernment: Map<string, string>;\n  grantApplication: Map<string, boolean>;\n  listings: Map<string, ListingWrapper>;\n}\n\nexport function newsrooms(\n  state: Map<string, NewsroomState> = Map<string, NewsroomState>({\n    \"\": { editors: Set(), wrapper: { data: {} } },\n  }),\n  action: AnyAction,\n): Map<string, NewsroomState> {\n  let newsroom;\n  let editors;\n  switch (action.type) {\n    case newsroomActions.ADD_NEWSROOM:\n      return state.set(action.data.address, action.data);\n    case newsroomActions.UPDATE_NEWSROOM:\n      return state.set(action.data.address, {\n        address: action.data.address,\n        ...state.get(action.data.address),\n        ...action.data,\n      });\n    case newsroomActions.CHANGE_NAME:\n      newsroom = state.get(action.data.address);\n      newsroom.wrapper.data.name = action.data.name;\n      return state.set(action.data.address, newsroom);\n    case newsroomActions.ADD_EDITOR:\n      newsroom = state.get(action.data.address);\n      editors = newsroom.editors || Set<EthAddress>();\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        editors: editors.add(action.data.editor),\n      });\n    case newsroomActions.ADD_OWNER:\n      newsroom = state.get(action.data.address);\n      newsroom.wrapper.data.owners = [...newsroom.wrapper.data.owners, action.data.owner];\n      return state.set(action.data.address, newsroom);\n    case newsroomActions.REMOVE_EDITOR:\n      newsroom = state.get(action.data.address);\n      editors = newsroom.editors || Set<EthAddress>();\n      return state.set(action.data.address, {\n        ...newsroom,\n        editors: editors.delete(action.data.editor),\n      });\n    case newsroomActions.SET_IS_OWNER:\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        isOwner: action.data.isOwner,\n      });\n    case newsroomActions.SET_IS_EDITOR:\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        isEditor: action.data.isEditor,\n      });\n    case newsroomActions.SET_MULTISIG_ADDRESS:\n      if (\n        state.get(action.data.address) &&\n        state.get(action.data.address).multisigAddress === action.data.multisigAddress\n      ) {\n        return state;\n      }\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        multisigAddress: action.data.multisigAddress,\n      });\n    case newsroomActions.SET_MULTISIG_BALANCE:\n      if (\n        state.get(action.data.address) &&\n        state.get(action.data.address).multisigBalance &&\n        state.get(action.data.address).multisigBalance!.toString() === action.data.multisigBalance.toString()\n      ) {\n        return state;\n      }\n      return state.set(action.data.address, {\n        ...state.get(action.data.address),\n        multisigBalance: action.data.multisigBalance,\n      });\n    default:\n      return state;\n  }\n}\n\nexport function newsroomUi(state: Map<string, any> = Map(), action: AnyAction): Map<string, any> {\n  switch (action.type) {\n    case uiActions.ADD_GET_CMS_USER_DATA_FOR_ADDRESS:\n      return state.set(uiActions.GET_CMS_USER_DATA_FOR_ADDRESS, action.data);\n    case uiActions.ADD_PERSIST_CHARTER:\n      return state.set(uiActions.PERSIST_CHARTER, action.data);\n    default:\n      return state;\n  }\n}\n\nexport function newsroomUsers(\n  state: Map<EthAddress, CmsUserData> = Map(),\n  action: AnyAction,\n): Map<EthAddress, CmsUserData> {\n  switch (action.type) {\n    case userActions.STORE_USER_DATA:\n      return state.set(action.data.address, action.data.userData);\n    default:\n      return state;\n  }\n}\n\nexport function newsroomGovernment(state: Map<string, string> = Map(), action: AnyAction): Map<string, string> {\n  switch (action.type) {\n    case governmentActions.ADD_CONSTITUTION_HASH:\n      return state.set(\"constitutionHash\", action.data.hash);\n    case governmentActions.ADD_CONSTITUTION_URI:\n      return state.set(\"constitutionUri\", action.data.uri);\n    case governmentActions.ADD_CONSTITUTION_CONTENT:\n      return state.set(\"constitutionContent\", action.data.content);\n    default:\n      return state;\n  }\n}\n\nexport function grantApplication(\n  state: Map<string, boolean> = Map({ chooseGrant: false, chooseSkip: false }),\n  action: AnyAction,\n): Map<string, boolean> {\n  switch (action.type) {\n    case grantActions.SET_GRANT:\n      return state.set(\"chooseGrant\", action.data);\n    case grantActions.SET_SKIP:\n      return state.set(\"chooseSkip\", action.data);\n    default:\n      return state;\n  }\n}\n\nexport function listings(\n  state: Map<string, ListingWrapper> = Map<string, ListingWrapper>(),\n  action: AnyAction,\n): Map<string, ListingWrapper> {\n  switch (action.type) {\n    case listingActions.ADD_OR_UPDATE_LISTING:\n      const { listingAddress, listing } = action.data;\n      return state.set(listingAddress, listing);\n    default:\n      return state;\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/styledComponents.tsx",
    "content": "import {\n  colors,\n  fonts,\n  DEFAULT_BUTTON_THEME,\n  DEFAULT_CHECKBOX_THEME,\n  buttonSizes,\n  Button,\n  BorderlessButton,\n  TextInput,\n  TextareaInput,\n  QuestionToolTip as _QuestionToolTip,\n  TransactionPopUpWarning as _TransactionPopUpWarning,\n  ImageFileToDataUri,\n} from \"@joincivil/components\";\n// tslint:disable-next-line:no-unused-variable\nimport * as React from \"react\"; // needed to export styled components\nimport styled, { css } from \"styled-components\";\n\nexport const DEFAULT_THEME = {\n  ...DEFAULT_BUTTON_THEME,\n  ...DEFAULT_CHECKBOX_THEME,\n  primaryButtonTextTransform: \"none\",\n  primaryButtonFontWeight: \"bold\",\n  borderlessButtonSize: \"14px\",\n};\n\nexport const Wrapper = styled.div`\n  max-width: 720px;\n  margin: auto;\n  font-size: 14px;\n`;\n\nexport const FormSection = styled.div`\n  padding-top: 10px;\n  padding-bottom: 40px;\n`;\n\nexport const FormTitle = styled.h4`\n  font-size: 20px;\n  color: #000;\n  font-family: ${fonts.SANS_SERIF};\n  line-height: 32px;\n  font-weight: bold;\n  margin-bottom: 10px;\n`;\n\nexport interface FormSubheadProps {\n  optional?: any;\n  optionalForNonAdmin?: any;\n}\nexport const FormSubhead = styled.h4<FormSubheadProps>`\n  font-size: 14px;\n  font-weight: 500;\n  color: #23282d;\n  font-family: ${fonts.SANS_SERIF};\n  margin-bottom: 5px;\n\n  ${props =>\n    props.optional &&\n    `\n    &:after {\n      content: \" (optional)\";\n      font-style: italic;\n    }\n  `};\n  ${props =>\n    props.optionalForNonAdmin &&\n    `\n    &:after {\n      content: \" (optional, but required for officers)\";\n      font-style: italic;\n    }\n  `};\n`;\n\nexport const FormRow = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin-top: 20px;\n`;\n\nexport const FormRowLeftAlign = styled(FormRow)`\n  justify-content: flex-start;\n`;\n\nexport const FormRowCenter = styled(FormRow)`\n  justify-content: center;\n`;\n\nexport interface FormRowItemProps {\n  align?: string;\n  width?: string;\n}\n\nexport const FormRowItem = styled.div<FormRowItemProps>`\n  padding-right: 15px;\n  text-align: ${(props: FormRowItemProps) => props.align || \"left\"};\n  &:last-child {\n    padding-right: 0;\n  }\n\n  // Support either specified widths or true flexible child elements\n  ${(props: FormRowItemProps) => (props.width ? \"\" : \"flex: 1;\")};\n  ${(props: FormRowItemProps) => (props.width ? `width: ${props.width};` : \"\")};\n`;\n\nexport const HelperText = styled.div`\n  margin-top: -6px;\n  padding-left: 11px;\n  font-size: 12px;\n  color: #72777c;\n`;\n\nexport const TertiaryButton = styled(Button)`\n  border-radius: 3px;\n  background-color: #f7f7f7;\n  border: solid 1px #cccccc;\n  font-size: 13px;\n  font-weight: normal;\n  color: #555555;\n  &:active,\n  &:hover {\n    border-radius: 3px;\n    background-color: #f7f7f7;\n    border: solid 1px #cccccc;\n    color: #555555;\n  }\n`;\n\nconst textInputStyles = css`\n  position: relative;\n  small {\n    position: absolute;\n    width: 100%;\n    top: 45px;\n    right: 15px;\n    text-align: right;\n  }\n`;\n\nexport const StyledTextInput = styled(TextInput)`\n  ${textInputStyles};\n`;\n\nexport const StyledImageToData = styled(ImageFileToDataUri)`\n  ${textInputStyles};\n`;\n\nexport const StyledTextareaInput = styled(TextareaInput)`\n  position: relative;\n  small {\n    position: absolute;\n    width: 100%;\n    top: 75px;\n    right: 15px;\n    text-align: right;\n  }\n`;\n\nexport const QuestionToolTip = styled(_QuestionToolTip)`\n  position: relative;\n  top: 2px;\n`;\n\nexport const MemberDisplayName = styled(FormSubhead)`\n  display: inline-block;\n  font-weight: bold;\n  margin: 0 10px 0 0;\n`;\n\nexport const StepSectionCounter = styled.p`\n  color: ${colors.primary.CIVIL_GRAY_1};\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 20px;\n  opacity: 0.87;\n  margin-bottom: 10px;\n`;\n\nexport const StyledHr = styled.div`\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  heigth: 0;\n  margin-top: 35px;\n  margin-bottom: 25px;\n`;\n\nexport const AvatarWrap = styled.div`\n  width: 50px;\n  height: 50px;\n  flex-shrink: 0;\n`;\nexport const AvatarImg = styled.img`\n  width: 100%;\n  height: 100%;\n  border-radius: 50%;\n  object-fit: cover;\n`;\n\nexport const _NoAvatar = styled.div`\n  border-radius: 50%;\n  padding: 15px 20px;\n  text-align: center;\n  font-weight: bold;\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  color: ${colors.accent.CIVIL_GRAY_2};\n`;\n\nexport const noAvatar = <_NoAvatar>?</_NoAvatar>;\n\nexport const TransactionPopUpWarning = styled(_TransactionPopUpWarning)`\n  margin-top: 12px;\n`;\n\n// Apply to Registry\nexport const TransferTextLarge = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_1};\n  font-size: 16px;\n  line-height: 24px;\n`;\n\nexport const CivilLabel = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 12px;\n  font-weight: bold;\n  letter-spacing: -0.07px;\n  line-height: 15px;\n`;\n\nexport const DepositAmountText = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 15px;\n`;\n\nexport const NextBackButtonContainer = styled.div`\n  display: flex;\n  justify-content: space-between;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding-top: 24px;\n`;\nexport interface NextBackProps {\n  backHidden?: boolean;\n  nextHidden?: boolean;\n  top?: boolean;\n  navigate(go: 1 | -1): void;\n  nextDisabled?(): boolean;\n}\nexport const NextBack: React.FunctionComponent<NextBackProps> = (props: NextBackProps) => (\n  <NextBackButtonContainer style={{ margin: props.top ? \"0 0 32px\" : \"64px 0 0\" }}>\n    {!props.backHidden ? (\n      <BorderlessButton size={buttonSizes.MEDIUM_WIDE} onClick={() => props.navigate(-1)}>\n        Back\n      </BorderlessButton>\n    ) : (\n      <div />\n    )}\n\n    {!props.nextHidden ? (\n      <Button\n        disabled={props.nextDisabled && props.nextDisabled()}\n        textTransform=\"none\"\n        width={220}\n        size={buttonSizes.MEDIUM_WIDE}\n        onClick={() => props.navigate(1)}\n      >\n        Next\n      </Button>\n    ) : (\n      <div />\n    )}\n  </NextBackButtonContainer>\n);\n"
  },
  {
    "path": "packages/newsroom-signup/src/types.ts",
    "content": "import { RosterMember } from \"@joincivil/typescript-types\";\n\n/** Data about a wallet address that we get from the CMS. */\nexport type CmsUserData =\n  | {\n      displayName?: string;\n      username?: string;\n      avatarUrl?: string;\n      bio?: string;\n    }\n  | undefined;\n\nexport interface UserData {\n  rosterData: Partial<RosterMember>;\n  isCmsUser?: boolean;\n  username?: string;\n}\n"
  },
  {
    "path": "packages/newsroom-signup/src/utils.ts",
    "content": "import { EthAddress } from \"@joincivil/typescript-types\";\nimport { StateWithNewsroom } from \"./reducers\";\nimport { uiActions } from \"./actionCreators\";\nimport { CmsUserData, UserData } from \"./types\";\n\nexport const getUserObject = (state: StateWithNewsroom, address: EthAddress): UserData => {\n  const userData = state.newsroomUi.get(uiActions.GET_CMS_USER_DATA_FOR_ADDRESS) && state.newsroomUsers.get(address);\n  return makeUserObject(address, userData);\n};\n\nexport const makeUserObject = (address: EthAddress, userData?: CmsUserData): UserData => {\n  return {\n    rosterData: {\n      ethAddress: address,\n      name: userData && userData.displayName,\n      avatarUrl: userData && userData.avatarUrl,\n      bio: userData && userData.bio,\n    },\n    isCmsUser: !!userData,\n    username: userData && userData.username,\n  };\n};\n"
  },
  {
    "path": "packages/newsroom-signup/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"baseUrl\": \"src/\",\n    \"outDir\": \"build/\",\n    \"sourceMap\": true,\n    \"jsx\": \"react\",\n    \"moduleResolution\": \"node\",\n    \"rootDir\": \"src\",\n    \"noImplicitReturns\": true,\n    \"suppressImplicitAnyIndexErrors\": true,\n    \"strictPropertyInitialization\": false\n  },\n  \"exclude\": [\"node_modules\", \"build\", \"scripts\", \"acceptance-tests\", \"webpack\", \"jest\", \"src/setupTests.ts\"],\n  \"include\": [\"./**/*.ts\", \"./**/*.tsx\"],\n  \"types\": [\"react\", \"jest\"]\n}\n"
  },
  {
    "path": "packages/newsroom-signup/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"],\n    \"no-var-requires\": false\n  }\n}\n"
  },
  {
    "path": "packages/newsroom-signup/types.d.ts",
    "content": "declare module \"react-add-to-calendar\";\n"
  },
  {
    "path": "packages/sdk/.dockerignore",
    "content": "node_modules"
  },
  {
    "path": "packages/sdk/.prettierignore",
    "content": "node_modules/\nbuild/\npackage.json\ngenerated/\ndoxity/\ncoverage/\n"
  },
  {
    "path": "packages/sdk/.prettierrc.yaml",
    "content": "printWidth: 120\nbracketSpacing: true\nsemi: true\nsingleQuote: false\ntrailingComma: all\nuseTabs: false\n"
  },
  {
    "path": "packages/sdk/.releaserc",
    "content": "{\n  \"plugins\": [\n    [\n      \"@semantic-release/commit-analyzer\",\n      {\n        \"preset\": \"angular\",\n        \"releaseRules\": [\n          { \"type\": \"docs\", \"scope\": \"README\", \"release\": \"patch\" },\n          { \"type\": \"refactor\", \"release\": \"patch\" },\n          { \"type\": \"style\", \"release\": \"patch\" }\n        ],\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\"]\n        }\n      }\n    ],\n    [\n      \"@semantic-release/release-notes-generator\",\n      {\n        \"preset\": \"angular\",\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\", \"BREAKING\"]\n        },\n        \"writerOpts\": {\n          \"commitsSort\": [\"subject\", \"scope\"]\n        }\n      }\n    ],\n    \"@semantic-release/npm\"\n  ]\n}\n"
  },
  {
    "path": "packages/sdk/.storybook/config.tsx",
    "content": "import * as React from \"react\";\nimport { configure, addDecorator } from \"@storybook/react\";\nimport { CivilProvider } from \"../src/react/CivilProvider\";\n\n// automatically import all files ending in *.stories.js\nconst req = require.context(\"../src\", true, /\\.stories\\.tsx$/);\nfunction loadStories() {\n  req.keys().forEach(filename => req(filename));\n}\n\naddDecorator(storyFn => (\n  <>\n    <CivilProvider>{storyFn()}</CivilProvider>\n  </>\n));\n\nconfigure(loadStories, module);\n"
  },
  {
    "path": "packages/sdk/.storybook/webpack.config.js",
    "content": "module.exports = ({ config, mode }) => {\n  config.module.rules.push({\n    test: /\\.tsx?$/,\n    use: [\n      {\n        loader: require.resolve(\"babel-loader\"),\n        options: {\n          presets: [require.resolve(\"babel-preset-react-app\")]\n        }\n      },\n      require.resolve(\"react-docgen-typescript-loader\")\n    ]\n  });\n\n  config.resolve.extensions.push(\".ts\", \".tsx\");\n\n  return config;\n};\n"
  },
  {
    "path": "packages/sdk/Dockerfile",
    "content": "# You should always specify a full version here to ensure all of your developers\n# are running the same version of Node.\nFROM node:10.12.0-stretch as build\nWORKDIR /app\n\nCOPY package.json /app\nCOPY yarn.lock /app\nRUN yarn install\nCOPY . .\nRUN rm -f .npmrc\n\n# Build Everything\nRUN yarn build\n\nFROM nginx:1.12-alpine\nCOPY --from=build /app/build /usr/share/nginx/html\nADD ./devops/nginx.conf /etc/nginx/conf.d/default.conf\nADD ./devops/start.sh /start.sh\nRUN chmod u+x /start.sh\nEXPOSE 3000\nENV ENVIRONMENT=\"{}\"\n\nCMD /start.sh"
  },
  {
    "path": "packages/sdk/README.md",
    "content": "# **Civil SDK**\n\nA toolkit to interact with the Civil ecosystem. This doesn't actually do anything yet ¯\\_(ツ)\\_/¯ but it will very soon.\n\n## Documenation\n\nVisit [civil.dev](https://civil.dev) for documentation.\n"
  },
  {
    "path": "packages/sdk/build.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'production';\nprocess.env.NODE_ENV = 'production';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst path = require('path');\nconst chalk = require('react-dev-utils/chalk');\nconst fs = require('fs-extra');\nconst webpack = require('webpack');\nconst bfj = require('bfj');\nconst configFactory = require('../config/webpack.config');\nconst paths = require('../config/paths');\nconst checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');\nconst formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');\nconst printHostingInstructions = require('react-dev-utils/printHostingInstructions');\nconst FileSizeReporter = require('react-dev-utils/FileSizeReporter');\nconst printBuildError = require('react-dev-utils/printBuildError');\n\nconst measureFileSizesBeforeBuild =\n  FileSizeReporter.measureFileSizesBeforeBuild;\nconst printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;\nconst useYarn = fs.existsSync(paths.yarnLockFile);\n\n// These sizes are pretty large. We'll warn for bundles exceeding them.\nconst WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;\nconst WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;\n\nconst isInteractive = process.stdout.isTTY;\n\n// Warn and crash if required files are missing\nif (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {\n  process.exit(1);\n}\n\n// Process CLI arguments\nconst argv = process.argv.slice(2);\nconst writeStatsJson = argv.indexOf('--stats') !== -1;\n\n// Generate configuration\nconst config = configFactory('production');\n\n// We require that you explicitly set browsers and do not fall back to\n// browserslist defaults.\nconst { checkBrowsers } = require('react-dev-utils/browsersHelper');\ncheckBrowsers(paths.appPath, isInteractive)\n  .then(() => {\n    // First, read the current file sizes in build directory.\n    // This lets us display how much they changed later.\n    return measureFileSizesBeforeBuild(paths.appBuild);\n  })\n  .then(previousFileSizes => {\n    // Remove all content but keep the directory so that\n    // if you're in it, you don't end up in Trash\n    fs.emptyDirSync(paths.appBuild);\n    // Merge with the public folder\n    copyPublicFolder();\n    // Start the webpack build\n    return build(previousFileSizes);\n  })\n  .then(\n    ({ stats, previousFileSizes, warnings }) => {\n      if (warnings.length) {\n        console.log(chalk.yellow('Compiled with warnings.\\n'));\n        console.log(warnings.join('\\n\\n'));\n        console.log(\n          '\\nSearch for the ' +\n            chalk.underline(chalk.yellow('keywords')) +\n            ' to learn more about each warning.'\n        );\n        console.log(\n          'To ignore, add ' +\n            chalk.cyan('// eslint-disable-next-line') +\n            ' to the line before.\\n'\n        );\n      } else {\n        console.log(chalk.green('Compiled successfully.\\n'));\n      }\n\n      console.log('File sizes after gzip:\\n');\n      printFileSizesAfterBuild(\n        stats,\n        previousFileSizes,\n        paths.appBuild,\n        WARN_AFTER_BUNDLE_GZIP_SIZE,\n        WARN_AFTER_CHUNK_GZIP_SIZE\n      );\n      console.log();\n\n      const appPackage = require(paths.appPackageJson);\n      const publicUrl = paths.publicUrl;\n      const publicPath = config.output.publicPath;\n      const buildFolder = path.relative(process.cwd(), paths.appBuild);\n      printHostingInstructions(\n        appPackage,\n        publicUrl,\n        publicPath,\n        buildFolder,\n        useYarn\n      );\n    },\n    err => {\n      console.log(chalk.red('Failed to compile.\\n'));\n      printBuildError(err);\n      process.exit(1);\n    }\n  )\n  .catch(err => {\n    if (err && err.message) {\n      console.log(err.message);\n    }\n    process.exit(1);\n  });\n\n// Create the production build and print the deployment instructions.\nfunction build(previousFileSizes) {\n  console.log('Creating an optimized production build...');\n\n  let compiler = webpack(config);\n  return new Promise((resolve, reject) => {\n    compiler.run((err, stats) => {\n      let messages;\n      if (err) {\n        if (!err.message) {\n          return reject(err);\n        }\n        messages = formatWebpackMessages({\n          errors: [err.message],\n          warnings: [],\n        });\n      } else {\n        messages = formatWebpackMessages(\n          stats.toJson({ all: false, warnings: true, errors: true })\n        );\n      }\n      if (messages.errors.length) {\n        // Only keep the first error. Others are often indicative\n        // of the same problem, but confuse the reader with noise.\n        if (messages.errors.length > 1) {\n          messages.errors.length = 1;\n        }\n        return reject(new Error(messages.errors.join('\\n\\n')));\n      }\n      if (\n        process.env.CI &&\n        (typeof process.env.CI !== 'string' ||\n          process.env.CI.toLowerCase() !== 'false') &&\n        messages.warnings.length\n      ) {\n        console.log(\n          chalk.yellow(\n            '\\nTreating warnings as errors because process.env.CI = true.\\n' +\n              'Most CI servers set it automatically.\\n'\n          )\n        );\n        return reject(new Error(messages.warnings.join('\\n\\n')));\n      }\n\n      const resolveArgs = {\n        stats,\n        previousFileSizes,\n        warnings: messages.warnings,\n      };\n      if (writeStatsJson) {\n        return bfj\n          .write(paths.appBuild + '/bundle-stats.json', stats.toJson())\n          .then(() => resolve(resolveArgs))\n          .catch(error => reject(new Error(error)));\n      }\n\n      return resolve(resolveArgs);\n    });\n  });\n}\n\nfunction copyPublicFolder() {\n  fs.copySync(paths.appPublic, paths.appBuild, {\n    dereference: true,\n    filter: file => file !== paths.appHtml,\n  });\n}\n"
  },
  {
    "path": "packages/sdk/certs.js",
    "content": "const createCert = require('create-cert');\n\ncreateCert().then(keys => console.log(keys));\n"
  },
  {
    "path": "packages/sdk/config/env.js",
    "content": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst paths = require('./paths');\n\n// Make sure that including paths.js after env.js will read .env variables.\ndelete require.cache[require.resolve('./paths')];\n\nconst NODE_ENV = process.env.NODE_ENV;\nif (!NODE_ENV) {\n  throw new Error(\n    'The NODE_ENV environment variable is required but was not specified.'\n  );\n}\n\n// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use\nvar dotenvFiles = [\n  `${paths.dotenv}.${NODE_ENV}.local`,\n  `${paths.dotenv}.${NODE_ENV}`,\n  // Don't include `.env.local` for `test` environment\n  // since normally you expect tests to produce the same\n  // results for everyone\n  NODE_ENV !== 'test' && `${paths.dotenv}.local`,\n  paths.dotenv,\n].filter(Boolean);\n\n// Load environment variables from .env* files. Suppress warnings using silent\n// if this file is missing. dotenv will never modify any environment variables\n// that have already been set.  Variable expansion is supported in .env files.\n// https://github.com/motdotla/dotenv\n// https://github.com/motdotla/dotenv-expand\ndotenvFiles.forEach(dotenvFile => {\n  if (fs.existsSync(dotenvFile)) {\n    require('dotenv-expand')(\n      require('dotenv').config({\n        path: dotenvFile,\n      })\n    );\n  }\n});\n\n// We support resolving modules according to `NODE_PATH`.\n// This lets you use absolute paths in imports inside large monorepos:\n// https://github.com/facebook/create-react-app/issues/253.\n// It works similar to `NODE_PATH` in Node itself:\n// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders\n// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.\n// Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims.\n// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421\n// We also resolve them to make sure all tools using them work consistently.\nconst appDirectory = fs.realpathSync(process.cwd());\nprocess.env.NODE_PATH = (process.env.NODE_PATH || '')\n  .split(path.delimiter)\n  .filter(folder => folder && !path.isAbsolute(folder))\n  .map(folder => path.resolve(appDirectory, folder))\n  .join(path.delimiter);\n\n// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be\n// injected into the application via DefinePlugin in Webpack configuration.\nconst REACT_APP = /^REACT_APP_/i;\n\nfunction getClientEnvironment(publicUrl) {\n  const raw = Object.keys(process.env)\n    .filter(key => REACT_APP.test(key))\n    .reduce(\n      (env, key) => {\n        env[key] = process.env[key];\n        return env;\n      },\n      {\n        // Useful for determining whether we’re running in production mode.\n        // Most importantly, it switches React into the correct mode.\n        NODE_ENV: process.env.NODE_ENV || 'development',\n        // Useful for resolving the correct path to static assets in `public`.\n        // For example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />.\n        // This should only be used as an escape hatch. Normally you would put\n        // images into the `src` and `import` them in code to get their paths.\n        PUBLIC_URL: publicUrl,\n      }\n    );\n  // Stringify all values so we can feed into Webpack DefinePlugin\n  const stringified = {\n    'process.env': Object.keys(raw).reduce((env, key) => {\n      env[key] = JSON.stringify(raw[key]);\n      return env;\n    }, {}),\n  };\n\n  return { raw, stringified };\n}\n\nmodule.exports = getClientEnvironment;\n"
  },
  {
    "path": "packages/sdk/config/jest/cssTransform.js",
    "content": "'use strict';\n\n// This is a custom Jest transformer turning style imports into empty objects.\n// http://facebook.github.io/jest/docs/en/webpack.html\n\nmodule.exports = {\n  process() {\n    return 'module.exports = {};';\n  },\n  getCacheKey() {\n    // The output is always the same.\n    return 'cssTransform';\n  },\n};\n"
  },
  {
    "path": "packages/sdk/config/jest/fileTransform.js",
    "content": "'use strict';\n\nconst path = require('path');\n\n// This is a custom Jest transformer turning file imports into filenames.\n// http://facebook.github.io/jest/docs/en/webpack.html\n\nmodule.exports = {\n  process(src, filename) {\n    const assetFilename = JSON.stringify(path.basename(filename));\n\n    if (filename.match(/\\.svg$/)) {\n      return `const React = require('react');\n      module.exports = {\n        __esModule: true,\n        default: ${assetFilename},\n        ReactComponent: React.forwardRef((props, ref) => ({\n          $$typeof: Symbol.for('react.element'),\n          type: 'svg',\n          ref: ref,\n          key: null,\n          props: Object.assign({}, props, {\n            children: ${assetFilename}\n          })\n        })),\n      };`;\n    }\n\n    return `module.exports = ${assetFilename};`;\n  },\n};\n"
  },
  {
    "path": "packages/sdk/config/paths.js",
    "content": "\"use strict\";\n\nconst path = require(\"path\");\nconst fs = require(\"fs\");\nconst url = require(\"url\");\n\n// Make sure any symlinks in the project folder are resolved:\n// https://github.com/facebook/create-react-app/issues/637\nconst appDirectory = fs.realpathSync(process.cwd());\nconst resolveApp = relativePath => path.resolve(appDirectory, relativePath);\n\nconst envPublicUrl = process.env.PUBLIC_URL;\n\nfunction ensureSlash(inputPath, needsSlash) {\n  const hasSlash = inputPath.endsWith(\"/\");\n  if (hasSlash && !needsSlash) {\n    return inputPath.substr(0, inputPath.length - 1);\n  } else if (!hasSlash && needsSlash) {\n    return `${inputPath}/`;\n  } else {\n    return inputPath;\n  }\n}\n\nconst getPublicUrl = appPackageJson =>\n  envPublicUrl || require(appPackageJson).homepage;\n\n// We use `PUBLIC_URL` environment variable or \"homepage\" field to infer\n// \"public path\" at which the app is served.\n// Webpack needs to know it to put the right <script> hrefs into HTML even in\n// single-page apps that may serve index.html for nested URLs like /todos/42.\n// We can't use a relative path in HTML because we don't want to load something\n// like /todos/42/static/js/bundle.7289d.js. We have to know the root.\nfunction getServedPath(appPackageJson) {\n  const publicUrl = getPublicUrl(appPackageJson);\n  const servedUrl =\n    envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : \"/\");\n  return ensureSlash(servedUrl, true);\n}\n\nconst moduleFileExtensions = [\n  \"web.mjs\",\n  \"mjs\",\n  \"web.js\",\n  \"js\",\n  \"web.ts\",\n  \"ts\",\n  \"web.tsx\",\n  \"tsx\",\n  \"json\",\n  \"web.jsx\",\n  \"jsx\"\n];\n\n// Resolve file paths in the same order as webpack\nconst resolveModule = (resolveFn, filePath) => {\n  const extension = moduleFileExtensions.find(extension =>\n    fs.existsSync(resolveFn(`${filePath}.${extension}`))\n  );\n\n  if (extension) {\n    return resolveFn(`${filePath}.${extension}`);\n  }\n\n  return resolveFn(`${filePath}.js`);\n};\n\n// config after eject: we're in ./config/\nmodule.exports = {\n  dotenv: resolveApp(\".env\"),\n  appPath: resolveApp(\".\"),\n  appBuild: resolveApp(\"build\"),\n  appPublic: resolveApp(\"public\"),\n  appHtml: resolveApp(\"public/index.html\"),\n  appIndexJs: resolveModule(resolveApp, \"src/iframe/index\"),\n  sdkIndexJs: resolveModule(resolveApp, \"src/sdk/index\"),\n  storyBoostEmbedJs: resolveModule(resolveApp, \"src/react/StoryBoost/embed\"),\n  storyBoostEmbedHtml: resolveApp(\"public/boost-embed.html\"),\n  appPackageJson: resolveApp(\"package.json\"),\n  appSrc: resolveApp(\"src\"),\n  appTsConfig: resolveApp(\"tsconfig.json\"),\n  yarnLockFile: resolveApp(\"yarn.lock\"),\n  testsSetup: resolveModule(resolveApp, \"src/setupTests\"),\n  proxySetup: resolveApp(\"src/setupProxy.js\"),\n  appNodeModules: resolveApp(\"node_modules\"),\n  publicUrl: getPublicUrl(resolveApp(\"package.json\")),\n  servedPath: getServedPath(resolveApp(\"package.json\")),\n  cert: resolveApp(\"cert\")\n};\n\nmodule.exports.moduleFileExtensions = moduleFileExtensions;\n"
  },
  {
    "path": "packages/sdk/config/webpack.config.js",
    "content": "\"use strict\";\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst webpack = require(\"webpack\");\nconst resolve = require(\"resolve\");\nconst PnpWebpackPlugin = require(\"pnp-webpack-plugin\");\nconst HtmlWebpackPlugin = require(\"html-webpack-plugin\");\nconst CaseSensitivePathsPlugin = require(\"case-sensitive-paths-webpack-plugin\");\nconst InlineChunkHtmlPlugin = require(\"react-dev-utils/InlineChunkHtmlPlugin\");\nconst TerserPlugin = require(\"terser-webpack-plugin\");\nconst MiniCssExtractPlugin = require(\"mini-css-extract-plugin\");\nconst OptimizeCSSAssetsPlugin = require(\"optimize-css-assets-webpack-plugin\");\nconst safePostCssParser = require(\"postcss-safe-parser\");\nconst ManifestPlugin = require(\"webpack-manifest-plugin\");\nconst InterpolateHtmlPlugin = require(\"react-dev-utils/InterpolateHtmlPlugin\");\nconst WorkboxWebpackPlugin = require(\"workbox-webpack-plugin\");\nconst WatchMissingNodeModulesPlugin = require(\"react-dev-utils/WatchMissingNodeModulesPlugin\");\nconst ModuleScopePlugin = require(\"react-dev-utils/ModuleScopePlugin\");\nconst getCSSModuleLocalIdent = require(\"react-dev-utils/getCSSModuleLocalIdent\");\nconst paths = require(\"./paths\");\nconst getClientEnvironment = require(\"./env\");\nconst ModuleNotFoundPlugin = require(\"react-dev-utils/ModuleNotFoundPlugin\");\nconst ForkTsCheckerWebpackPlugin = require(\"react-dev-utils/ForkTsCheckerWebpackPlugin\");\nconst typescriptFormatter = require(\"react-dev-utils/typescriptFormatter\");\n\n// Source maps are resource heavy and can cause out of memory issue for large source files.\nconst shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== \"false\";\n// Some apps do not need the benefits of saving a web request, so not inlining the chunk\n// makes for a smoother build process.\nconst shouldInlineRuntimeChunk = process.env.INLINE_RUNTIME_CHUNK !== \"false\";\n\n// Check if TypeScript is setup\nconst useTypeScript = fs.existsSync(paths.appTsConfig);\n\n// style files regexes\nconst cssRegex = /\\.css$/;\nconst cssModuleRegex = /\\.module\\.css$/;\nconst sassRegex = /\\.(scss|sass)$/;\nconst sassModuleRegex = /\\.module\\.(scss|sass)$/;\n\n// This is the production and development configuration.\n// It is focused on developer experience, fast rebuilds, and a minimal bundle.\nmodule.exports = function(webpackEnv) {\n  const isEnvDevelopment = webpackEnv === \"development\";\n  const isEnvProduction = webpackEnv === \"production\";\n\n  // Webpack uses `publicPath` to determine where the app is being served from.\n  // It requires a trailing slash, or the file assets will get an incorrect path.\n  // In development, we always serve from the root. This makes config easier.\n  const publicPath = isEnvProduction\n    ? paths.servedPath\n    : isEnvDevelopment && \"/\";\n  // Some apps do not use client-side routing with pushState.\n  // For these, \"homepage\" can be set to \".\" to enable relative asset paths.\n  const shouldUseRelativeAssetPaths = publicPath === \"./\";\n\n  // `publicUrl` is just like `publicPath`, but we will provide it to our app\n  // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.\n  // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.\n  const publicUrl = isEnvProduction\n    ? publicPath.slice(0, -1)\n    : isEnvDevelopment && \"\";\n  // Get environment variables to inject into our app.\n  const env = getClientEnvironment(publicUrl);\n\n  const htmlWebpackPluginConfig = isEnvProduction\n    ? {\n        minify: {\n          removeComments: true,\n          collapseWhitespace: true,\n          removeRedundantAttributes: true,\n          useShortDoctype: true,\n          removeEmptyAttributes: true,\n          removeStyleLinkTypeAttributes: true,\n          keepClosingSlash: true,\n          minifyJS: true,\n          minifyCSS: true,\n          minifyURLs: true\n        }\n      }\n    : undefined;\n\n  // common function to get style loaders\n  const getStyleLoaders = (cssOptions, preProcessor) => {\n    const loaders = [\n      isEnvDevelopment && require.resolve(\"style-loader\"),\n      isEnvProduction && {\n        loader: MiniCssExtractPlugin.loader,\n        options: Object.assign(\n          {},\n          shouldUseRelativeAssetPaths ? { publicPath: \"../../\" } : undefined\n        )\n      },\n      {\n        loader: require.resolve(\"css-loader\"),\n        options: cssOptions\n      },\n      {\n        // Options for PostCSS as we reference these options twice\n        // Adds vendor prefixing based on your specified browser support in\n        // package.json\n        loader: require.resolve(\"postcss-loader\"),\n        options: {\n          // Necessary for external CSS imports to work\n          // https://github.com/facebook/create-react-app/issues/2677\n          ident: \"postcss\",\n          plugins: () => [\n            require(\"postcss-flexbugs-fixes\"),\n            require(\"postcss-preset-env\")({\n              autoprefixer: {\n                flexbox: \"no-2009\"\n              },\n              stage: 3\n            })\n          ],\n          sourceMap: isEnvProduction && shouldUseSourceMap\n        }\n      }\n    ].filter(Boolean);\n    if (preProcessor) {\n      loaders.push({\n        loader: require.resolve(preProcessor),\n        options: {\n          sourceMap: isEnvProduction && shouldUseSourceMap\n        }\n      });\n    }\n    return loaders;\n  };\n\n  return {\n    mode: isEnvProduction ? \"production\" : isEnvDevelopment && \"development\",\n    // Stop compilation early in production\n    bail: isEnvProduction,\n    devtool: isEnvProduction\n      ? shouldUseSourceMap\n        ? \"source-map\"\n        : false\n      : isEnvDevelopment && \"cheap-module-source-map\",\n    // These are the \"entry points\" to our application.\n    // This means they will be the \"root\" imports that are included in JS bundle.\n    entry: {\n      sdk: isEnvDevelopment\n        ? [\n            require.resolve(\"react-dev-utils/webpackHotDevClient\"),\n            paths.sdkIndexJs\n          ]\n        : paths.sdkIndexJs,\n      iframe: isEnvDevelopment\n        ? [\n            require.resolve(\"react-dev-utils/webpackHotDevClient\"),\n            paths.appIndexJs\n          ]\n        : paths.appIndexJs,\n      boost: isEnvDevelopment\n        ? [\n            require.resolve(\"react-dev-utils/webpackHotDevClient\"),\n            paths.storyBoostEmbedJs\n          ]\n        : paths.storyBoostEmbedJs,\n    },\n    // entry: [\n    //   // Include an alternative client for WebpackDevServer. A client's job is to\n    //   // connect to WebpackDevServer by a socket and get notified about changes.\n    //   // When you save a file, the client will either apply hot updates (in case\n    //   // of CSS changes), or refresh the page (in case of JS changes). When you\n    //   // make a syntax error, this client will display a syntax error overlay.\n    //   // Note: instead of the default WebpackDevServer client, we use a custom one\n    //   // to bring better experience for Create React App users. You can replace\n    //   // the line below with these two lines if you prefer the stock client:\n    //   // require.resolve('webpack-dev-server/client') + '?/',\n    //   // require.resolve('webpack/hot/dev-server'),\n    //   isEnvDevelopment &&\n    //     require.resolve(\"react-dev-utils/webpackHotDevClient\"),\n    //   // Finally, this is your app's code:\n    //   paths.appIndexJs,\n    //   paths.sdkIndexJs\n    //   // We include the app code last so that if there is a runtime error during\n    //   // initialization, it doesn't blow up the WebpackDevServer client, and\n    //   // changing JS code would still trigger a refresh.\n    // ].filter(Boolean),\n    output: {\n      // The build folder.\n      path: isEnvProduction ? paths.appBuild : undefined,\n      // Add /* filename */ comments to generated require()s in the output.\n      pathinfo: isEnvDevelopment,\n      // There will be one main bundle, and one file per asynchronous chunk.\n      // In development, it does not produce real files.\n      filename: isEnvProduction\n        ? \"static/js/[name].js\"\n        : isEnvDevelopment && \"static/js/[name].js\",\n      // There are also additional JS chunk files if you use code splitting.\n      chunkFilename: isEnvProduction\n        ? \"static/js/[name].[contenthash:8].chunk.js\"\n        : isEnvDevelopment && \"static/js/[name].chunk.js\",\n      // We inferred the \"public path\" (such as / or /my-project) from homepage.\n      // We use \"/\" in development.\n      publicPath: publicPath,\n      // Point sourcemap entries to original disk location (format as URL on Windows)\n      devtoolModuleFilenameTemplate: isEnvProduction\n        ? info =>\n            path\n              .relative(paths.appSrc, info.absoluteResourcePath)\n              .replace(/\\\\/g, \"/\")\n        : isEnvDevelopment &&\n          (info => path.resolve(info.absoluteResourcePath).replace(/\\\\/g, \"/\"))\n    },\n    optimization: {\n      minimize: isEnvProduction,\n      minimizer: [\n        // This is only used in production mode\n        new TerserPlugin({\n          terserOptions: {\n            parse: {\n              // we want terser to parse ecma 8 code. However, we don't want it\n              // to apply any minfication steps that turns valid ecma 5 code\n              // into invalid ecma 5 code. This is why the 'compress' and 'output'\n              // sections only apply transformations that are ecma 5 safe\n              // https://github.com/facebook/create-react-app/pull/4234\n              ecma: 8\n            },\n            compress: {\n              ecma: 5,\n              warnings: false,\n              // Disabled because of an issue with Uglify breaking seemingly valid code:\n              // https://github.com/facebook/create-react-app/issues/2376\n              // Pending further investigation:\n              // https://github.com/mishoo/UglifyJS2/issues/2011\n              comparisons: false,\n              // Disabled because of an issue with Terser breaking valid code:\n              // https://github.com/facebook/create-react-app/issues/5250\n              // Pending futher investigation:\n              // https://github.com/terser-js/terser/issues/120\n              inline: 2\n            },\n            mangle: {\n              safari10: true\n            },\n            output: {\n              ecma: 5,\n              comments: false,\n              // Turned on because emoji and regex is not minified properly using default\n              // https://github.com/facebook/create-react-app/issues/2488\n              ascii_only: true\n            }\n          },\n          // Use multi-process parallel running to improve the build speed\n          // Default number of concurrent runs: os.cpus().length - 1\n          parallel: true,\n          // Enable file caching\n          cache: true,\n          sourceMap: shouldUseSourceMap\n        }),\n        // This is only used in production mode\n        new OptimizeCSSAssetsPlugin({\n          cssProcessorOptions: {\n            parser: safePostCssParser,\n            map: shouldUseSourceMap\n              ? {\n                  // `inline: false` forces the sourcemap to be output into a\n                  // separate file\n                  inline: false,\n                  // `annotation: true` appends the sourceMappingURL to the end of\n                  // the css file, helping the browser find the sourcemap\n                  annotation: true\n                }\n              : false\n          }\n        })\n      ],\n      // Automatically split vendor and commons\n      // https://twitter.com/wSokra/status/969633336732905474\n      // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366\n      // splitChunks: {\n      //   chunks: \"all\",\n      //   name: false\n      // },\n      splitChunks: false,\n      // Keep the runtime chunk separated to enable long term caching\n      // https://twitter.com/wSokra/status/969679223278505985\n      runtimeChunk: false\n    },\n    resolve: {\n      // This allows you to set a fallback for where Webpack should look for modules.\n      // We placed these paths second because we want `node_modules` to \"win\"\n      // if there are any conflicts. This matches Node resolution mechanism.\n      // https://github.com/facebook/create-react-app/issues/253\n      modules: [\"node_modules\"].concat(\n        // It is guaranteed to exist because we tweak it in `env.js`\n        process.env.NODE_PATH.split(path.delimiter).filter(Boolean)\n      ),\n      // These are the reasonable defaults supported by the Node ecosystem.\n      // We also include JSX as a common component filename extension to support\n      // some tools, although we do not recommend using it, see:\n      // https://github.com/facebook/create-react-app/issues/290\n      // `web` extension prefixes have been added for better support\n      // for React Native Web.\n      extensions: paths.moduleFileExtensions\n        .map(ext => `.${ext}`)\n        .filter(ext => useTypeScript || !ext.includes(\"ts\")),\n      alias: {\n        // Support React Native Web\n        // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/\n        \"react-native\": \"react-native-web\"\n      },\n      plugins: [\n        // Adds support for installing with Plug'n'Play, leading to faster installs and adding\n        // guards against forgotten dependencies and such.\n        PnpWebpackPlugin,\n        // Prevents users from importing files from outside of src/ (or node_modules/).\n        // This often causes confusion because we only process files within src/ with babel.\n        // To fix this, we prevent you from importing files out of src/ -- if you'd like to,\n        // please link the files into your node_modules/ and let module-resolution kick in.\n        // Make sure your source files are compiled, as they will not be processed in any way.\n        new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson])\n      ]\n    },\n    resolveLoader: {\n      plugins: [\n        // Also related to Plug'n'Play, but this time it tells Webpack to load its loaders\n        // from the current package.\n        PnpWebpackPlugin.moduleLoader(module)\n      ]\n    },\n    module: {\n      strictExportPresence: true,\n      rules: [\n        // Disable require.ensure as it's not a standard language feature.\n        { parser: { requireEnsure: false } },\n\n        // First, run the linter.\n        // It's important to do this before Babel processes the JS.\n        {\n          test: /\\.(js|mjs|jsx)$/,\n          enforce: \"pre\",\n          use: [\n            {\n              options: {\n                formatter: require.resolve(\"react-dev-utils/eslintFormatter\"),\n                eslintPath: require.resolve(\"eslint\")\n              },\n              loader: require.resolve(\"eslint-loader\")\n            }\n          ],\n          include: paths.appSrc\n        },\n        {\n          // \"oneOf\" will traverse all following loaders until one will\n          // match the requirements. When no loader matches it will fall\n          // back to the \"file\" loader at the end of the loader list.\n          oneOf: [\n            // \"url\" loader works like \"file\" loader except that it embeds assets\n            // smaller than specified limit in bytes as data URLs to avoid requests.\n            // A missing `test` is equivalent to a match.\n            {\n              test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/],\n              loader: require.resolve(\"url-loader\"),\n              options: {\n                limit: 10000,\n                name: \"static/media/[name].[hash:8].[ext]\"\n              }\n            },\n            // Process application JS with Babel.\n            // The preset includes JSX, Flow, TypeScript, and some ESnext features.\n            {\n              test: /\\.(js|mjs|jsx|ts|tsx)$/,\n              include: paths.appSrc,\n              loader: require.resolve(\"babel-loader\"),\n              options: {\n                customize: require.resolve(\n                  \"babel-preset-react-app/webpack-overrides\"\n                ),\n\n                plugins: [\n                  [\n                    require.resolve(\"babel-plugin-named-asset-import\"),\n                    {\n                      loaderMap: {\n                        svg: {\n                          ReactComponent: \"@svgr/webpack?-svgo,+ref![path]\"\n                        }\n                      }\n                    }\n                  ]\n                ],\n                // This is a feature of `babel-loader` for webpack (not Babel itself).\n                // It enables caching results in ./node_modules/.cache/babel-loader/\n                // directory for faster rebuilds.\n                cacheDirectory: true,\n                cacheCompression: isEnvProduction,\n                compact: isEnvProduction\n              }\n            },\n            // Process any JS outside of the app with Babel.\n            // Unlike the application JS, we only compile the standard ES features.\n            {\n              test: /\\.(js|mjs)$/,\n              exclude: /@babel(?:\\/|\\\\{1,2})runtime/,\n              loader: require.resolve(\"babel-loader\"),\n              options: {\n                babelrc: false,\n                configFile: false,\n                compact: false,\n                presets: [\n                  [\n                    require.resolve(\"babel-preset-react-app/dependencies\"),\n                    { helpers: true }\n                  ]\n                ],\n                cacheDirectory: true,\n                cacheCompression: isEnvProduction,\n\n                // If an error happens in a package, it's possible to be\n                // because it was compiled. Thus, we don't want the browser\n                // debugger to show the original code. Instead, the code\n                // being evaluated would be much more helpful.\n                sourceMaps: false\n              }\n            },\n            // \"postcss\" loader applies autoprefixer to our CSS.\n            // \"css\" loader resolves paths in CSS and adds assets as dependencies.\n            // \"style\" loader turns CSS into JS modules that inject <style> tags.\n            // In production, we use MiniCSSExtractPlugin to extract that CSS\n            // to a file, but in development \"style\" loader enables hot editing\n            // of CSS.\n            // By default we support CSS Modules with the extension .module.css\n            {\n              test: cssRegex,\n              exclude: cssModuleRegex,\n              use: getStyleLoaders({\n                importLoaders: 1,\n                sourceMap: isEnvProduction && shouldUseSourceMap\n              }),\n              // Don't consider CSS imports dead code even if the\n              // containing package claims to have no side effects.\n              // Remove this when webpack adds a warning or an error for this.\n              // See https://github.com/webpack/webpack/issues/6571\n              sideEffects: true\n            },\n            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)\n            // using the extension .module.css\n            {\n              test: cssModuleRegex,\n              use: getStyleLoaders({\n                importLoaders: 1,\n                sourceMap: isEnvProduction && shouldUseSourceMap,\n                modules: true,\n                getLocalIdent: getCSSModuleLocalIdent\n              })\n            },\n            // Opt-in support for SASS (using .scss or .sass extensions).\n            // By default we support SASS Modules with the\n            // extensions .module.scss or .module.sass\n            {\n              test: sassRegex,\n              exclude: sassModuleRegex,\n              use: getStyleLoaders(\n                {\n                  importLoaders: 2,\n                  sourceMap: isEnvProduction && shouldUseSourceMap\n                },\n                \"sass-loader\"\n              ),\n              // Don't consider CSS imports dead code even if the\n              // containing package claims to have no side effects.\n              // Remove this when webpack adds a warning or an error for this.\n              // See https://github.com/webpack/webpack/issues/6571\n              sideEffects: true\n            },\n            // Adds support for CSS Modules, but using SASS\n            // using the extension .module.scss or .module.sass\n            {\n              test: sassModuleRegex,\n              use: getStyleLoaders(\n                {\n                  importLoaders: 2,\n                  sourceMap: isEnvProduction && shouldUseSourceMap,\n                  modules: true,\n                  getLocalIdent: getCSSModuleLocalIdent\n                },\n                \"sass-loader\"\n              )\n            },\n            // \"file\" loader makes sure those assets get served by WebpackDevServer.\n            // When you `import` an asset, you get its (virtual) filename.\n            // In production, they would get copied to the `build` folder.\n            // This loader doesn't use a \"test\" so it will catch all modules\n            // that fall through the other loaders.\n            {\n              loader: require.resolve(\"file-loader\"),\n              // Exclude `js` files to keep \"css\" loader working as it injects\n              // its runtime that would otherwise be processed through \"file\" loader.\n              // Also exclude `html` and `json` extensions so they get processed\n              // by webpacks internal loaders.\n              exclude: [/\\.(js|mjs|jsx|ts|tsx)$/, /\\.html$/, /\\.json$/],\n              options: {\n                name: \"static/media/[name].[hash:8].[ext]\"\n              }\n            }\n            // ** STOP ** Are you adding a new loader?\n            // Make sure to add the new loader(s) before the \"file\" loader.\n          ]\n        }\n      ]\n    },\n    plugins: [\n      // Generates an `index.html` file with the <script> injected.\n      new HtmlWebpackPlugin(\n        Object.assign(\n          {},\n          {\n            inject: true,\n            template: paths.appHtml,\n            chunks: [\"iframe\"]\n          },\n          htmlWebpackPluginConfig,\n        )\n      ),\n      new HtmlWebpackPlugin(\n        Object.assign(\n          {},\n          {\n            inject: true,\n            template: paths.storyBoostEmbedHtml,\n            filename: \"boost-embed.html\",\n            chunks: [\"boost\"],\n          },\n          htmlWebpackPluginConfig,\n        )\n      ),\n      // Inlines the webpack runtime script. This script is too small to warrant\n      // a network request.\n      isEnvProduction &&\n        shouldInlineRuntimeChunk &&\n        new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime~.+[.]js/]),\n      // Makes some environment variables available in index.html.\n      // The public URL is available as %PUBLIC_URL% in index.html, e.g.:\n      // <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/favicon.ico\">\n      // In production, it will be an empty string unless you specify \"homepage\"\n      // in `package.json`, in which case it will be the pathname of that URL.\n      // In development, this will be an empty string.\n      new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),\n      // This gives some necessary context to module not found errors, such as\n      // the requesting resource.\n      new ModuleNotFoundPlugin(paths.appPath),\n      // Makes some environment variables available to the JS code, for example:\n      // if (process.env.NODE_ENV === 'production') { ... }. See `./env.js`.\n      // It is absolutely essential that NODE_ENV is set to production\n      // during a production build.\n      // Otherwise React will be compiled in the very slow development mode.\n      new webpack.DefinePlugin(env.stringified),\n      // This is necessary to emit hot updates (currently CSS only):\n      isEnvDevelopment && new webpack.HotModuleReplacementPlugin(),\n      // Watcher doesn't work well if you mistype casing in a path so we use\n      // a plugin that prints an error when you attempt to do this.\n      // See https://github.com/facebook/create-react-app/issues/240\n      isEnvDevelopment && new CaseSensitivePathsPlugin(),\n      // If you require a missing module and then `npm install` it, you still have\n      // to restart the development server for Webpack to discover it. This plugin\n      // makes the discovery automatic so you don't have to restart.\n      // See https://github.com/facebook/create-react-app/issues/186\n      isEnvDevelopment &&\n        new WatchMissingNodeModulesPlugin(paths.appNodeModules),\n      isEnvProduction &&\n        new MiniCssExtractPlugin({\n          // Options similar to the same options in webpackOptions.output\n          // both options are optional\n          filename: \"static/css/[name].[contenthash:8].css\",\n          chunkFilename: \"static/css/[name].[contenthash:8].chunk.css\"\n        }),\n      // Generate a manifest file which contains a mapping of all asset filenames\n      // to their corresponding output file so that tools can pick it up without\n      // having to parse `index.html`.\n      new ManifestPlugin({\n        fileName: \"asset-manifest.json\",\n        publicPath: publicPath\n      }),\n      // Moment.js is an extremely popular library that bundles large locale files\n      // by default due to how Webpack interprets its code. This is a practical\n      // solution that requires the user to opt into importing specific locales.\n      // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack\n      // You can remove this if you don't use Moment.js:\n      new webpack.IgnorePlugin(/^\\.\\/locale$/, /moment$/),\n      // Generate a service worker script that will precache, and keep up to date,\n      // the HTML & assets that are part of the Webpack build.\n      isEnvProduction &&\n        new WorkboxWebpackPlugin.GenerateSW({\n          clientsClaim: true,\n          exclude: [/\\.map$/, /asset-manifest\\.json$/],\n          importWorkboxFrom: \"cdn\",\n          navigateFallback: publicUrl + \"/index.html\",\n          navigateFallbackBlacklist: [\n            // Exclude URLs starting with /_, as they're likely an API call\n            new RegExp(\"^/_\"),\n            // Exclude URLs containing a dot, as they're likely a resource in\n            // public/ and not a SPA route\n            new RegExp(\"/[^/]+\\\\.[^/]+$\")\n          ]\n        }),\n      // TypeScript type checking\n      useTypeScript &&\n        new ForkTsCheckerWebpackPlugin({\n          typescript: resolve.sync(\"typescript\", {\n            basedir: paths.appNodeModules\n          }),\n          async: isEnvDevelopment,\n          useTypescriptIncrementalApi: true,\n          checkSyntacticErrors: true,\n          tsconfig: paths.appTsConfig,\n          reportFiles: [\n            \"**\",\n            \"!**/*.json\",\n            \"!**/__tests__/**\",\n            \"!**/?(*.)(spec|test).*\",\n            \"!**/src/setupProxy.*\",\n            \"!**/src/setupTests.*\"\n          ],\n          watch: paths.appSrc,\n          silent: true,\n          // The formatter is invoked directly in WebpackDevServerUtils during development\n          formatter: isEnvProduction ? typescriptFormatter : undefined\n        })\n    ].filter(Boolean),\n    // Some libraries import Node modules but don't use them in the browser.\n    // Tell Webpack to provide empty mocks for them so importing them works.\n    node: {\n      module: \"empty\",\n      dgram: \"empty\",\n      dns: \"mock\",\n      fs: \"empty\",\n      net: \"empty\",\n      tls: \"empty\",\n      child_process: \"empty\"\n    },\n    // Turn off performance processing because we utilize\n    // our own hints via the FileSizeReporter\n    performance: false\n  };\n};\n"
  },
  {
    "path": "packages/sdk/config/webpackDevServer.config.js",
    "content": "\"use strict\";\n\nconst errorOverlayMiddleware = require(\"react-dev-utils/errorOverlayMiddleware\");\nconst evalSourceMapMiddleware = require(\"react-dev-utils/evalSourceMapMiddleware\");\nconst noopServiceWorkerMiddleware = require(\"react-dev-utils/noopServiceWorkerMiddleware\");\nconst ignoredFiles = require(\"react-dev-utils/ignoredFiles\");\nconst paths = require(\"./paths\");\nconst fs = require(\"fs\");\n\nconst protocol = process.env.HTTPS === \"true\" ? \"https\" : \"http\";\nconst host = process.env.HOST || \"0.0.0.0\";\n\nmodule.exports = function(proxy, allowedHost) {\n  return {\n    // WebpackDevServer 2.4.3 introduced a security fix that prevents remote\n    // websites from potentially accessing local content through DNS rebinding:\n    // https://github.com/webpack/webpack-dev-server/issues/887\n    // https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a\n    // However, it made several existing use cases such as development in cloud\n    // environment or subdomains in development significantly more complicated:\n    // https://github.com/facebook/create-react-app/issues/2271\n    // https://github.com/facebook/create-react-app/issues/2233\n    // While we're investigating better solutions, for now we will take a\n    // compromise. Since our WDS configuration only serves files in the `public`\n    // folder we won't consider accessing them a vulnerability. However, if you\n    // use the `proxy` feature, it gets more dangerous because it can expose\n    // remote code execution vulnerabilities in backends like Django and Rails.\n    // So we will disable the host check normally, but enable it if you have\n    // specified the `proxy` setting. Finally, we let you override it if you\n    // really know what you're doing with a special environment variable.\n    disableHostCheck:\n      !proxy || process.env.DANGEROUSLY_DISABLE_HOST_CHECK === \"true\",\n    // Enable gzip compression of generated files.\n    compress: true,\n    // Silence WebpackDevServer's own logs since they're generally not useful.\n    // It will still show compile warnings and errors with this setting.\n    clientLogLevel: \"none\",\n    // By default WebpackDevServer serves physical files from current directory\n    // in addition to all the virtual build products that it serves from memory.\n    // This is confusing because those files won’t automatically be available in\n    // production build folder unless we copy them. However, copying the whole\n    // project directory is dangerous because we may expose sensitive files.\n    // Instead, we establish a convention that only files in `public` directory\n    // get served. Our build script will copy `public` into the `build` folder.\n    // In `index.html`, you can get URL of `public` folder with %PUBLIC_URL%:\n    // <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/favicon.ico\">\n    // In JavaScript code, you can access it with `process.env.PUBLIC_URL`.\n    // Note that we only recommend to use `public` folder as an escape hatch\n    // for files like `favicon.ico`, `manifest.json`, and libraries that are\n    // for some reason broken when imported through Webpack. If you just want to\n    // use an image, put it in `src` and `import` it from JavaScript instead.\n    contentBase: paths.appPublic,\n    // By default files from `contentBase` will not trigger a page reload.\n    watchContentBase: true,\n    // Enable hot reloading server. It will provide /sockjs-node/ endpoint\n    // for the WebpackDevServer client so it can learn when the files were\n    // updated. The WebpackDevServer client is included as an entry point\n    // in the Webpack development configuration. Note that only changes\n    // to CSS are currently hot reloaded. JS changes will refresh the browser.\n    hot: true,\n    // It is important to tell WebpackDevServer to use the same \"root\" path\n    // as we specified in the config. In development, we always serve from /.\n    publicPath: \"/\",\n    // WebpackDevServer is noisy by default so we emit custom message instead\n    // by listening to the compiler events with `compiler.hooks[...].tap` calls above.\n    quiet: true,\n    // Reportedly, this avoids CPU overload on some systems.\n    // https://github.com/facebook/create-react-app/issues/293\n    // src/node_modules is not ignored to support absolute imports\n    // https://github.com/facebook/create-react-app/issues/1065\n    watchOptions: {\n      ignored: ignoredFiles(paths.appSrc)\n    },\n    // Enable HTTPS if the HTTPS environment variable is set to 'true'\n    // https: {\n    //   key: fs.readFileSync(`${paths.cert}/server.key`),\n    //   cert: fs.readFileSync(`${paths.cert}/server.crt`),\n    //   ca: fs.readFileSync(`${paths.cert}/server.csr`)\n    // },\n    host,\n    overlay: false,\n    historyApiFallback: {\n      // Paths with dots should still use the history fallback.\n      // See https://github.com/facebook/create-react-app/issues/387.\n      disableDotRule: true\n    },\n    public: allowedHost,\n    proxy,\n    before(app, server) {\n      if (fs.existsSync(paths.proxySetup)) {\n        // This registers user provided middleware for proxy reasons\n        require(paths.proxySetup)(app);\n      }\n\n      // This lets us fetch source contents from webpack for the error overlay\n      app.use(evalSourceMapMiddleware(server));\n      // This lets us open files from the runtime error overlay.\n      app.use(errorOverlayMiddleware());\n\n      // This service worker file is effectively a 'no-op' that will reset any\n      // previous service worker registered for the same host:port combination.\n      // We do this in development to avoid hitting the production cache if\n      // it used the same host and port.\n      // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432\n      app.use(noopServiceWorkerMiddleware());\n    }\n  };\n};\n"
  },
  {
    "path": "packages/sdk/docs/Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nSOURCEDIR     = source\nBUILDDIR      = build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)"
  },
  {
    "path": "packages/sdk/docs/README.md",
    "content": "https://docs.readthedocs.io/en/latest/intro/getting-started-with-sphinx.html\nhttps://github.com/mozilla/sphinx-js\n\nInstall\n\n```\n# http://www.sphinx-doc.org/en/master/usage/installation.html\n\n# linux\nsudo apt-get install python3-sphinx\n\n\n# mac\nbrew install sphinx-doc\n```\n\n```\npip3 install -r source/requirements.txt\n```\n\nRun\n\n```\nmake html\n```\n"
  },
  {
    "path": "packages/sdk/docs/make.bat",
    "content": "@ECHO OFF\n\npushd %~dp0\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-build\n)\nset SOURCEDIR=source\nset BUILDDIR=build\n\nif \"%1\" == \"\" goto help\n\n%SPHINXBUILD% >NUL 2>NUL\nif errorlevel 9009 (\n\techo.\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\n\techo.installed, then set the SPHINXBUILD environment variable to point\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\n\techo.may add the Sphinx directory to PATH.\n\techo.\n\techo.If you don't have Sphinx installed, grab it from\n\techo.http://sphinx-doc.org/\n\texit /b 1\n)\n\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\ngoto end\n\n:help\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\n\n:end\npopd\n"
  },
  {
    "path": "packages/sdk/docs/source/civil_sdk_package.rst",
    "content": "Working with the ``@joincivil/sdk`` package\n=================================================\n\nThe ``sdk:build`` and ``sdk:start`` package.json scripts create standalone build files for sdk integrations. To work with these tools and components as a JS package for import elsewhere, e.g. the dapp, use ``build`` and ``build:watch``.\n"
  },
  {
    "path": "packages/sdk/docs/source/conf.py",
    "content": "# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a selection of the most common options. For a full\n# list see the documentation:\n# http://www.sphinx-doc.org/en/master/config\n\n# -- Path setup --------------------------------------------------------------\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#\n# import os\n# import sys\n# sys.path.insert(0, os.path.abspath('.'))\n\n\n# -- Project information -----------------------------------------------------\n\nproject = 'Civil SDK'\ncopyright = '2019, The Civil Media Company'\nauthor = 'The Civil Media Company'\nmaster_doc = 'index'\n\n\n# -- General configuration ---------------------------------------------------\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = []\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This pattern also affects html_static_path and html_extra_path.\nexclude_patterns = []\n\n\n# -- Options for HTML output -------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = 'sphinx_rtd_theme'\n\nhtml_theme_options = {\n    'collapse_navigation': False\n}\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\n"
  },
  {
    "path": "packages/sdk/docs/source/index.rst",
    "content": "#################\n  Civil SDK\n#################\n\nGetting Started\n===============\n.. toctree::\n   :maxdepth: 2\n\n   install/getting_started\n   civil_sdk_package\n\nLockbox\n==================\n.. toctree::\n   :maxdepth: 2\n\n   lockbox/index\n\nRegistry\n==================\n.. toctree::\n   :maxdepth: 2\n\n   registry/index\n\n"
  },
  {
    "path": "packages/sdk/docs/source/install/getting_started.rst",
    "content": "================\n Getting Started\n================\ninstallation instructions"
  },
  {
    "path": "packages/sdk/docs/source/lockbox/index.rst",
    "content": "=====================\n Lockbox\n=====================\n.. toctree::\n   :maxdepth: 2\n\n   intro\n"
  },
  {
    "path": "packages/sdk/docs/source/lockbox/intro.rst",
    "content": "=====================\n Introduction\n=====================\nhello"
  },
  {
    "path": "packages/sdk/docs/source/registry/index.rst",
    "content": "=====================\n Registry\n=====================\n.. toctree::\n   :maxdepth: 2\n\n   intro\n"
  },
  {
    "path": "packages/sdk/docs/source/registry/intro.rst",
    "content": "=====================\n Introduction\n=====================\nhello"
  },
  {
    "path": "packages/sdk/docs/source/requirements.txt",
    "content": "sphinx-rtd-theme"
  },
  {
    "path": "packages/sdk/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"\n    />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <title>Civil SDK IFrame</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/sdk/index.js",
    "content": "console.log(\"hello world\");\n"
  },
  {
    "path": "packages/sdk/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "packages/sdk/nginx.conf",
    "content": "server {\n  listen 3000 default_server;\n  root /usr/share/nginx/html;\n  index index.html index.htm;\n\n  gzip on;\n  gzip_disable \"msie6\";\n\n  gzip_vary on;\n  gzip_proxied any;\n  gzip_comp_level 6;\n  gzip_buffers 16 8k;\n  gzip_http_version 1.1;\n  gzip_min_length 256;\n  gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;\n\n  location / {\n    try_files $uri /index.html;\n  }\n\n  location /static/ { \n    autoindex off;\n    alias /usr/share/nginx/html/static/;\n  }\n\n}"
  },
  {
    "path": "packages/sdk/package.json",
    "content": "{\n  \"name\": \"@joincivil/sdk\",\n  \"version\": \"2.0.0\",\n  \"private\": false,\n  \"main\": \"build/package/index.js\",\n  \"types\": \"build/package/index.d.ts\",\n  \"dependencies\": {\n    \"@babel/core\": \"7.2.2\",\n    \"@commitlint/cli\": \"^7.5.2\",\n    \"@commitlint/config-conventional\": \"^7.5.0\",\n    \"@joincivil/components\": \"^1.9.10\",\n    \"@joincivil/core\": \"^4.8.11\",\n    \"@joincivil/elements\": \"^0.0.1\",\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"@joincivil/utils\": \"^1.9.8\",\n    \"@sentry/browser\": \"^5.0.5\",\n    \"@svgr/webpack\": \"4.1.0\",\n    \"apollo-cache-inmemory\": \"^1.3.12\",\n    \"apollo-client\": \"^2.4.8\",\n    \"apollo-link-http\": \"^1.5.9\",\n    \"babel-core\": \"7.0.0-bridge.0\",\n    \"babel-eslint\": \"9.0.0\",\n    \"babel-jest\": \"23.6.0\",\n    \"babel-loader\": \"8.0.5\",\n    \"babel-plugin-named-asset-import\": \"^0.3.1\",\n    \"babel-preset-react-app\": \"^8.0.0\",\n    \"bfj\": \"6.1.1\",\n    \"case-sensitive-paths-webpack-plugin\": \"2.2.0\",\n    \"css-loader\": \"1.0.0\",\n    \"detect-browser\": \"^4.7.0\",\n    \"dotenv\": \"6.0.0\",\n    \"dotenv-expand\": \"4.2.0\",\n    \"eslint\": \"5.12.0\",\n    \"eslint-config-react-app\": \"^3.0.8\",\n    \"eslint-loader\": \"2.1.1\",\n    \"eslint-plugin-flowtype\": \"2.50.1\",\n    \"eslint-plugin-import\": \"2.14.0\",\n    \"eslint-plugin-jsx-a11y\": \"6.1.2\",\n    \"eslint-plugin-react\": \"7.12.4\",\n    \"eth-crypto\": \"^1.3.3\",\n    \"ethers\": \"^4.0.27\",\n    \"file-loader\": \"2.0.0\",\n    \"fs-extra\": \"7.0.1\",\n    \"graphql-tag\": \"^2.9.2\",\n    \"html-webpack-plugin\": \"4.0.0-alpha.2\",\n    \"identity-obj-proxy\": \"3.0.0\",\n    \"iframe-resizer\": \"^4.2.6\",\n    \"ipfs-http-client\": \"^29.1.1\",\n    \"jest\": \"23.6.0\",\n    \"jest-pnp-resolver\": \"1.0.2\",\n    \"jest-resolve\": \"23.6.0\",\n    \"jest-watch-typeahead\": \"^0.2.1\",\n    \"js-cookie\": \"^2.2.0\",\n    \"lodash\": \"^4.17.15\",\n    \"mini-css-extract-plugin\": \"0.5.0\",\n    \"optimize-css-assets-webpack-plugin\": \"5.0.1\",\n    \"pnp-webpack-plugin\": \"1.2.1\",\n    \"postcss-flexbugs-fixes\": \"4.1.0\",\n    \"postcss-loader\": \"3.0.0\",\n    \"postcss-preset-env\": \"6.5.0\",\n    \"postcss-safe-parser\": \"4.0.1\",\n    \"react\": \"^16.11.0\",\n    \"react-apollo\": \"^2.3.3\",\n    \"react-app-polyfill\": \"^0.2.2\",\n    \"react-async-script\": \"^1.1.1\",\n    \"react-dev-utils\": \"^8.0.0\",\n    \"react-dom\": \"^16.11.0\",\n    \"react-router\": \"^5.1.2\",\n    \"react-router-dom\": \"^5.1.2\",\n    \"react-stripe-elements\": \"^4.0.0\",\n    \"resolve\": \"1.10.0\",\n    \"rxjs-compat\": \"^6.5.2\",\n    \"sass-loader\": \"7.1.0\",\n    \"source-map-explorer\": \"^1.8.0\",\n    \"style-loader\": \"0.23.1\",\n    \"terser-webpack-plugin\": \"1.2.2\",\n    \"url-loader\": \"1.1.2\",\n    \"uuid\": \"^3.3.2\",\n    \"webpack\": \"4.28.3\",\n    \"webpack-dev-server\": \"3.1.14\",\n    \"webpack-manifest-plugin\": \"2.0.4\",\n    \"workbox-webpack-plugin\": \"3.6.3\"\n  },\n  \"scripts\": {\n    \"build\": \"yarn clean && yarn sdk:build && yarn package:build\",\n    \"build:watch\": \"yarn package:build:watch\",\n    \"sdk:start\": \"node scripts/start.js\",\n    \"sdk:start:boost-embed\": \"OPEN_PATH=boost-embed.html node scripts/start.js\",\n    \"sdk:build\": \"node scripts/build.js\",\n    \"package:build\": \"yarn package:clean && yarn copy:images && tsc\",\n    \"package:build:watch\": \"yarn copy:images && tsc -w\",\n    \"package:clean\": \"rimraf build/package\",\n    \"clean\": \"rimraf build\",\n    \"test\": \"node scripts/test.js\",\n    \"lint\": \"tslint --project ./\",\n    \"copy:images\": \"mkdir -p build/package/images && cp -a src/images/. build/package/images\",\n    \"prepublishOnly\": \"yarn build\",\n    \"prettier\": \"prettier --config .prettierrc.yaml --write --list-different './**/*.{ts,tsx,json,md}'\",\n    \"prettier:lint\": \"prettier --config .prettierrc.yaml --list-different './**/*.{ts,tsx,json,md}'\",\n    \"analyze\": \"source-map-explorer 'build/static/js/*.js'\",\n    \"release\": \"semantic-release\",\n    \"commit\": \"commit\",\n    \"storybook\": \"start-storybook -p 6006\",\n    \"build-storybook\": \"build-storybook\"\n  },\n  \"eslintConfig\": {\n    \"extends\": \"react-app\"\n  },\n  \"browserslist\": [\n    \">0.2%\",\n    \"not dead\",\n    \"not ie <= 11\",\n    \"not op_mini all\"\n  ],\n  \"devDependencies\": {\n    \"@babel/plugin-transform-member-expression-literals\": \"^7.2.0\",\n    \"@commitlint/prompt-cli\": \"^7.5.0\",\n    \"@joincivil/tslint-rules\": \"^2.7.1\",\n    \"@semantic-release/npm\": \"^5.1.7\",\n    \"@storybook/addon-actions\": \"^5.0.10\",\n    \"@storybook/addon-links\": \"^5.0.10\",\n    \"@storybook/addons\": \"^5.0.10\",\n    \"@storybook/react\": \"^5.0.10\",\n    \"@storybook/theming\": \"^5.0.10\",\n    \"@types/iframe-resizer\": \"^3.5.8\",\n    \"@types/jest\": \"24.0.11\",\n    \"@types/js-cookie\": \"^2.2.1\",\n    \"@types/lodash\": \"^4.14.136\",\n    \"@types/node\": \"11.11.4\",\n    \"@types/react\": \"16.8.8\",\n    \"@types/react-dom\": \"16.8.3\",\n    \"@types/react-router\": \"^5.1.1\",\n    \"@types/react-stripe-elements\": \"^1.2.0\",\n    \"@types/storybook__react\": \"^4.0.1\",\n    \"@types/uuid\": \"^3.4.4\",\n    \"apollo-storybook-react\": \"^0.2.1\",\n    \"create-cert\": \"^1.0.6\",\n    \"husky\": \"^2.1.0\",\n    \"jest-fetch-mock\": \"^2.1.2\",\n    \"mock-socket\": \"^8.0.5\",\n    \"node-webcrypto-ossl\": \"^1.0.42\",\n    \"prettier\": \"^1.18.2\",\n    \"react-docgen-typescript-loader\": \"^3.1.0\",\n    \"react-docgen-typescript-webpack-plugin\": \"^1.1.0\",\n    \"rimraf\": \"^2.6.2\",\n    \"semantic-release\": \"^15.13.3\",\n    \"tslint\": \"^5.17.0\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"peerDependencies\": {\n    \"styled-components\": \">= 3\"\n  },\n  \"jest\": {\n    \"collectCoverageFrom\": [\n      \"src/**/*.{js,jsx,ts,tsx}\",\n      \"!src/**/*.d.ts\"\n    ],\n    \"resolver\": \"jest-pnp-resolver\",\n    \"setupFiles\": [\n      \"react-app-polyfill/jsdom\"\n    ],\n    \"setupTestFrameworkScriptFile\": \"<rootDir>/src/setupTests.ts\",\n    \"testMatch\": [\n      \"<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}\",\n      \"<rootDir>/src/**/?(*.)(spec|test).{js,jsx,ts,tsx}\"\n    ],\n    \"testEnvironment\": \"jsdom\",\n    \"testURL\": \"http://localhost\",\n    \"transform\": {\n      \"^.+\\\\.(js|jsx|ts|tsx)$\": \"<rootDir>/../../node_modules/babel-jest\",\n      \"^.+\\\\.css$\": \"<rootDir>/config/jest/cssTransform.js\",\n      \"^(?!.*\\\\.(js|jsx|ts|tsx|css|json)$)\": \"<rootDir>/config/jest/fileTransform.js\"\n    },\n    \"transformIgnorePatterns\": [\n      \"[/\\\\\\\\]node_modules[/\\\\\\\\].+\\\\.(js|jsx|ts|tsx)$\",\n      \"^.+\\\\.module\\\\.(css|sass|scss)$\"\n    ],\n    \"moduleNameMapper\": {\n      \"^react-native$\": \"react-native-web\",\n      \"^.+\\\\.module\\\\.(css|sass|scss)$\": \"identity-obj-proxy\"\n    },\n    \"moduleFileExtensions\": [\n      \"web.js\",\n      \"js\",\n      \"web.ts\",\n      \"ts\",\n      \"web.tsx\",\n      \"tsx\",\n      \"json\",\n      \"web.jsx\",\n      \"jsx\",\n      \"node\"\n    ],\n    \"watchPlugins\": [\n      \"jest-watch-typeahead/filename.js\",\n      \"jest-watch-typeahead/testname.js\"\n    ]\n  },\n  \"babel\": {\n    \"presets\": [\n      \"react-app\"\n    ]\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"husky\": {\n    \"hooks\": {\n      \"commit-msg\": \"commitlint -E HUSKY_GIT_PARAMS\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/sdk/public/boost-embed.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"\n    />\n    <title>Civil Story Boost test</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <p>Uralic languages are proven to form a genealogical unit, a language family. Not all speakers of these languages live in Siberia or have shamanistic religions. The largest populations, the Hungarians and Finns, live outside Siberia and are mostly Christian. Saami people had kept shamanic practices alive for a long time. They live in Europe, but practiced shamanism until the 18th century. Most others have only remnant elements of shamanism.</p>\n    <p>And now, a story boost:</p>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/sdk/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"shortcut icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"\n    />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <title>Civil SDK IFrame</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/sdk/public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "packages/sdk/scripts/build.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'production';\nprocess.env.NODE_ENV = 'production';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst path = require('path');\nconst chalk = require('react-dev-utils/chalk');\nconst fs = require('fs-extra');\nconst webpack = require('webpack');\nconst bfj = require('bfj');\nconst configFactory = require('../config/webpack.config');\nconst paths = require('../config/paths');\nconst checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');\nconst formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');\nconst printHostingInstructions = require('react-dev-utils/printHostingInstructions');\nconst FileSizeReporter = require('react-dev-utils/FileSizeReporter');\nconst printBuildError = require('react-dev-utils/printBuildError');\n\nconst measureFileSizesBeforeBuild =\n  FileSizeReporter.measureFileSizesBeforeBuild;\nconst printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;\nconst useYarn = fs.existsSync(paths.yarnLockFile);\n\n// These sizes are pretty large. We'll warn for bundles exceeding them.\nconst WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;\nconst WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;\n\nconst isInteractive = process.stdout.isTTY;\n\n// Warn and crash if required files are missing\nif (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {\n  process.exit(1);\n}\n\n// Process CLI arguments\nconst argv = process.argv.slice(2);\nconst writeStatsJson = argv.indexOf('--stats') !== -1;\n\n// Generate configuration\nconst config = configFactory('production');\n\n// We require that you explicitly set browsers and do not fall back to\n// browserslist defaults.\nconst { checkBrowsers } = require('react-dev-utils/browsersHelper');\ncheckBrowsers(paths.appPath, isInteractive)\n  .then(() => {\n    // First, read the current file sizes in build directory.\n    // This lets us display how much they changed later.\n    return measureFileSizesBeforeBuild(paths.appBuild);\n  })\n  .then(previousFileSizes => {\n    // Remove all content but keep the directory so that\n    // if you're in it, you don't end up in Trash\n    fs.emptyDirSync(paths.appBuild);\n    // Merge with the public folder\n    copyPublicFolder();\n    // Start the webpack build\n    return build(previousFileSizes);\n  })\n  .then(\n    ({ stats, previousFileSizes, warnings }) => {\n      if (warnings.length) {\n        console.log(chalk.yellow('Compiled with warnings.\\n'));\n        console.log(warnings.join('\\n\\n'));\n        console.log(\n          '\\nSearch for the ' +\n            chalk.underline(chalk.yellow('keywords')) +\n            ' to learn more about each warning.'\n        );\n        console.log(\n          'To ignore, add ' +\n            chalk.cyan('// eslint-disable-next-line') +\n            ' to the line before.\\n'\n        );\n      } else {\n        console.log(chalk.green('Compiled successfully.\\n'));\n      }\n\n      console.log('File sizes after gzip:\\n');\n      printFileSizesAfterBuild(\n        stats,\n        previousFileSizes,\n        paths.appBuild,\n        WARN_AFTER_BUNDLE_GZIP_SIZE,\n        WARN_AFTER_CHUNK_GZIP_SIZE\n      );\n      console.log();\n\n      const appPackage = require(paths.appPackageJson);\n      const publicUrl = paths.publicUrl;\n      const publicPath = config.output.publicPath;\n      const buildFolder = path.relative(process.cwd(), paths.appBuild);\n      printHostingInstructions(\n        appPackage,\n        publicUrl,\n        publicPath,\n        buildFolder,\n        useYarn\n      );\n    },\n    err => {\n      console.log(chalk.red('Failed to compile.\\n'));\n      printBuildError(err);\n      process.exit(1);\n    }\n  )\n  .catch(err => {\n    if (err && err.message) {\n      console.log(err.message);\n    }\n    process.exit(1);\n  });\n\n// Create the production build and print the deployment instructions.\nfunction build(previousFileSizes) {\n  console.log('Creating an optimized production build...');\n\n  let compiler = webpack(config);\n  return new Promise((resolve, reject) => {\n    compiler.run((err, stats) => {\n      let messages;\n      if (err) {\n        if (!err.message) {\n          return reject(err);\n        }\n        messages = formatWebpackMessages({\n          errors: [err.message],\n          warnings: [],\n        });\n      } else {\n        messages = formatWebpackMessages(\n          stats.toJson({ all: false, warnings: true, errors: true })\n        );\n      }\n      if (messages.errors.length) {\n        // Only keep the first error. Others are often indicative\n        // of the same problem, but confuse the reader with noise.\n        if (messages.errors.length > 1) {\n          messages.errors.length = 1;\n        }\n        return reject(new Error(messages.errors.join('\\n\\n')));\n      }\n      if (\n        process.env.CI &&\n        (typeof process.env.CI !== 'string' ||\n          process.env.CI.toLowerCase() !== 'false') &&\n        messages.warnings.length\n      ) {\n        console.log(\n          chalk.yellow(\n            '\\nTreating warnings as errors because process.env.CI = true.\\n' +\n              'Most CI servers set it automatically.\\n'\n          )\n        );\n        return reject(new Error(messages.warnings.join('\\n\\n')));\n      }\n\n      const resolveArgs = {\n        stats,\n        previousFileSizes,\n        warnings: messages.warnings,\n      };\n      if (writeStatsJson) {\n        return bfj\n          .write(paths.appBuild + '/bundle-stats.json', stats.toJson())\n          .then(() => resolve(resolveArgs))\n          .catch(error => reject(new Error(error)));\n      }\n\n      return resolve(resolveArgs);\n    });\n  });\n}\n\nfunction copyPublicFolder() {\n  fs.copySync(paths.appPublic, paths.appBuild, {\n    dereference: true,\n    filter: file => file !== paths.appHtml,\n  });\n}\n"
  },
  {
    "path": "packages/sdk/scripts/start.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'development';\nprocess.env.NODE_ENV = 'development';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst fs = require('fs');\nconst chalk = require('react-dev-utils/chalk');\nconst webpack = require('webpack');\nconst WebpackDevServer = require('webpack-dev-server');\nconst clearConsole = require('react-dev-utils/clearConsole');\nconst checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');\nconst {\n  choosePort,\n  createCompiler,\n  prepareProxy,\n  prepareUrls,\n} = require('react-dev-utils/WebpackDevServerUtils');\nconst openBrowser = require('react-dev-utils/openBrowser');\nconst paths = require('../config/paths');\nconst configFactory = require('../config/webpack.config');\nconst createDevServerConfig = require('../config/webpackDevServer.config');\n\nconst useYarn = fs.existsSync(paths.yarnLockFile);\nconst isInteractive = process.stdout.isTTY;\n\n// Warn and crash if required files are missing\nif (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {\n  process.exit(1);\n}\n\n// Tools like Cloud9 rely on this.\nconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;\nconst HOST = process.env.HOST || '0.0.0.0';\n\nif (process.env.HOST) {\n  console.log(\n    chalk.cyan(\n      `Attempting to bind to HOST environment variable: ${chalk.yellow(\n        chalk.bold(process.env.HOST)\n      )}`\n    )\n  );\n  console.log(\n    `If this was unintentional, check that you haven't mistakenly set it in your shell.`\n  );\n  console.log(\n    `Learn more here: ${chalk.yellow('https://bit.ly/CRA-advanced-config')}`\n  );\n  console.log();\n}\n\n// We require that you explictly set browsers and do not fall back to\n// browserslist defaults.\nconst { checkBrowsers } = require('react-dev-utils/browsersHelper');\ncheckBrowsers(paths.appPath, isInteractive)\n  .then(() => {\n    // We attempt to use the default port but if it is busy, we offer the user to\n    // run on a different port. `choosePort()` Promise resolves to the next free port.\n    return choosePort(HOST, DEFAULT_PORT);\n  })\n  .then(port => {\n    if (port == null) {\n      // We have not found a port.\n      return;\n    }\n    const config = configFactory('development');\n    const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';\n    const appName = require(paths.appPackageJson).name;\n    const useTypeScript = fs.existsSync(paths.appTsConfig);\n    const urls = prepareUrls(protocol, HOST, port);\n    const devSocket = {\n      warnings: warnings =>\n        devServer.sockWrite(devServer.sockets, 'warnings', warnings),\n      errors: errors =>\n        devServer.sockWrite(devServer.sockets, 'errors', errors),\n    };\n    // Create a webpack compiler that is configured with custom messages.\n    const compiler = createCompiler({\n      appName,\n      config,\n      devSocket,\n      urls,\n      useYarn,\n      useTypeScript,\n      webpack,\n    });\n    // Load proxy config\n    const proxySetting = require(paths.appPackageJson).proxy;\n    const proxyConfig = prepareProxy(proxySetting, paths.appPublic);\n    // Serve webpack assets generated by the compiler over a web server.\n    const serverConfig = createDevServerConfig(\n      proxyConfig,\n      urls.lanUrlForConfig\n    );\n    const devServer = new WebpackDevServer(compiler, serverConfig);\n    // Launch WebpackDevServer.\n    devServer.listen(port, HOST, err => {\n      if (err) {\n        return console.log(err);\n      }\n      if (isInteractive) {\n        clearConsole();\n      }\n      console.log(chalk.cyan('Starting the development server...\\n'));\n      openBrowser(urls.localUrlForBrowser + (process.env.OPEN_PATH || ''));\n    });\n\n    ['SIGINT', 'SIGTERM'].forEach(function(sig) {\n      process.on(sig, function() {\n        devServer.close();\n        process.exit();\n      });\n    });\n  })\n  .catch(err => {\n    if (err && err.message) {\n      console.log(err.message);\n    }\n    process.exit(1);\n  });\n"
  },
  {
    "path": "packages/sdk/scripts/test.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'test';\nprocess.env.NODE_ENV = 'test';\nprocess.env.PUBLIC_URL = '';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst jest = require('jest');\nconst execSync = require('child_process').execSync;\nlet argv = process.argv.slice(2);\n\nfunction isInGitRepository() {\n  try {\n    execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction isInMercurialRepository() {\n  try {\n    execSync('hg --cwd . root', { stdio: 'ignore' });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// Watch unless on CI, in coverage mode, explicitly adding `--no-watch`,\n// or explicitly running all tests\nif (\n  !process.env.CI &&\n  argv.indexOf('--coverage') === -1 &&\n  argv.indexOf('--no-watch') === -1 &&\n  argv.indexOf('--watchAll') === -1\n) {\n  // https://github.com/facebook/create-react-app/issues/5210\n  const hasSourceControl = isInGitRepository() || isInMercurialRepository();\n  argv.push(hasSourceControl ? '--watch' : '--watchAll');\n}\n\n// Jest doesn't have this option so we'll remove it\nif (argv.indexOf('--no-watch') !== -1) {\n  argv = argv.filter(arg => arg !== '--no-watch');\n}\n\n\njest.run(argv);\n"
  },
  {
    "path": "packages/sdk/server.js",
    "content": "var path = require(\"path\");\nvar fs = require(\"fs\");\nvar express = require(\"express\");\nvar https = require(\"https\");\n\nvar certOptions = {\n  key: fs.readFileSync(path.resolve(\"cert/server.key\")),\n  cert: fs.readFileSync(path.resolve(\"cert/server.crt\"))\n};\n\nvar app = express();\napp.use(express.static(\"build\"));\n\nvar server = https.createServer(certOptions, app).listen(3000);\n"
  },
  {
    "path": "packages/sdk/site-maker.sh",
    "content": "#!/bin/bash\n\n# https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/\n\necho \"building $1\"\ncp -r ../../civil-sdk-example ../../civil-sdk-example-$1\nHOST=$1.local\nCERT_DIR=../../civil-sdk-example-$1/cert\nrm $CERT_DIR/*\nCERT_PREFIX=$CERT_DIR/server\n\necho \"HEY $HOST || $CERT_DIR || $CERT_PREFIX\"\nls $CERT_PREFIX\nopenssl genrsa -out $CERT_PREFIX.key 2048\nopenssl req -new -key $CERT_PREFIX.key -out $CERT_PREFIX.csr\n\nprintf \"authorityKeyIdentifier=keyid,issuer\\nbasicConstraints=CA:FALSE\\nkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\\nsubjectAltName = @alt_names\\n[alt_names]\\nDNS.1 = $HOST\\n\" >> $CERT_PREFIX.ext\n\nopenssl x509 -req -in $CERT_PREFIX.csr -CA ~/.ssh/myCA.pem -CAkey ~/.ssh/myCA.key -CAcreateserial \\\n -out $CERT_PREFIX.crt -days 1825 -sha256 -extfile $CERT_PREFIX.ext\n\n\nCMD=\"echo \\\"127.0.0.1       $HOST\\\" >> /etc/hosts\"\nsudo sh -c \"$CMD\""
  },
  {
    "path": "packages/sdk/src/constants.ts",
    "content": "// @TODO/tobek Not great to have this data duplicated here. Ideally the embed loader script should be so minimal that there's no logic that we need to collect errors from. We should move React and Apollo stuff into the iframe so that we can remove Sentry stuff from here.\nexport const SENTRY_DSN = \"https://4659311eb5cb472982a5f7d392f3e2b4@sentry.io/1430767\";\n"
  },
  {
    "path": "packages/sdk/src/examples/registry.stories.tsx",
    "content": "import * as React from \"react\";\n\nimport { storiesOf } from \"@storybook/react\";\nimport { CivilContext, ICivilContext } from \"../react/CivilProvider\";\n\nexport const RegistryExample = () => {\n  const civilContext = React.useContext<ICivilContext>(CivilContext);\n  const [status, setStatus] = React.useState<string | null>(null);\n\n  React.useEffect(() => {\n    if (!civilContext.loading) {\n      civilContext.civil.registry\n        .getRegistryStatus()\n        .then(res => {\n          setStatus(res);\n        })\n        .catch(e => {\n          throw e;\n        });\n      console.log(\"called getRegistryStatus\", civilContext.loading);\n      civilContext.civil.lockbox.getKey(\"test\").catch(e => {\n        throw e;\n      });\n    }\n  }, [civilContext.loading]);\n\n  if (civilContext.loading) {\n    return <div>loading...</div>;\n  }\n\n  return <div>status returned: {status}</div>;\n};\n\nstoriesOf(\"Registry\", module).add(\"hello world\", () => <RegistryExample />);\n"
  },
  {
    "path": "packages/sdk/src/iframe/index.tsx",
    "content": "import { WindowMessageHandler } from \"./services/MessageHandler\";\nimport { KeyManager } from \"./services/keys/KeyManager\";\nimport { LockboxService } from \"./services/civil-node/LockboxService\";\nimport { CivilPersistence } from \"./services/civil-node/CivilPersistence\";\nimport { CivilWebsocket } from \"./services/communication/CivilWebsocket\";\n\nconst CIVIL_WEBSOCKET_URL = \"ws://localhost:8080/ws\";\nconst CIVIL_REST_URL = \"http://localhost:8080\";\n\nconst handler = new WindowMessageHandler(document.referrer);\n\nlet parentDomain: string;\nconst parentUrl = window.location !== window.parent.location ? document.referrer : document.location.href;\nif (parentUrl) {\n  const match = parentUrl.match(/(.*):\\/\\/(.[^/]+)/);\n  if (match) {\n    parentDomain = match[0];\n  }\n}\nconsole.log(\"Initializing iframe from parentUrl: \", parentUrl);\n\nhandler\n  .initialize(async () => {\n    const persistence = new CivilPersistence(CIVIL_REST_URL);\n    const lockbox = new LockboxService(persistence);\n    const websockets = new CivilWebsocket(CIVIL_WEBSOCKET_URL);\n    const keyManager = await KeyManager.initialize(lockbox, websockets);\n    return {\n      keyManager,\n    };\n  })\n  .catch(err => {\n    console.error(\"Error initializing civil-sdk\", err);\n  });\n\nif (window.addEventListener) {\n  window.addEventListener(\"message\", handleMessage);\n} else {\n  (window as any).attachEvent(\"onmessage\", handleMessage);\n}\n\nasync function handleMessage(message: any): Promise<void> {\n  if (message.origin === parentDomain) {\n    await handler.receive(message.data);\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/MessageHandler.test.ts",
    "content": "import { MessageHandler } from \"./MessageHandler\";\nimport { KeyManager } from \"./keys/KeyManager\";\nimport { InMemoryPersistence, Persistence } from \"./civil-node/Persistence\";\nimport { LockboxService } from \"./civil-node/LockboxService\";\nimport { randomString } from \"../../test-utils/helpers\";\nimport { CivilWebsocket } from \"./communication/CivilWebsocket\";\nimport { Key } from \"./keys/Key\";\nimport { SDKMessageTypes } from \"../../sdk/SDKMessage\";\n\njest.mock(\"./communication/CivilWebsocket\");\n\nexport class SpyMessageHandler extends MessageHandler {\n  public replies: IMessage[] = [];\n  public reply(type: any, data: any) {\n    this.replies.push({ type, data });\n  }\n}\n\ndescribe(\"MessageHandler\", () => {\n  let handler: any;\n  let data: Persistence;\n  let lockbox: LockboxService;\n  let deviceKey: Key;\n  let userID: string;\n  beforeEach(async () => {\n    userID = randomString();\n    data = new InMemoryPersistence();\n    lockbox = new LockboxService(data);\n    deviceKey = await Key.generate();\n\n    handler = new SpyMessageHandler();\n    handler.initialize(() => {\n      return {\n        keyManager: new KeyManager(lockbox, new CivilWebsocket(\"xx\"), deviceKey),\n      };\n    });\n  });\n\n  it(\"should handle REGISTRY_GET_STATUS\", async () => {\n    const message = {\n      type: SDKMessageTypes.REGISTRY_GET_STATUS,\n      data: {},\n    };\n    await handler.receive(message);\n\n    expect(handler.replies).toEqual([{ type: \"REGISTRY_GET_STATUS\", data: { alive: true } }]);\n  });\n\n  it(\"should handle LOCKBOX_CREATE_KEY\", async () => {\n    const message = {\n      type: SDKMessageTypes.LOCKBOX_CREATE_KEY,\n      data: {},\n    };\n    await handler.receive(message);\n\n    expect(handler.replies.length).toBe(1);\n    const reply = handler.replies[0];\n    expect(reply.type).toBe(\"LOCKBOX_CREATE_KEY\");\n  });\n});\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/MessageHandler.ts",
    "content": "import { KeyManager } from \"./keys/KeyManager\";\nimport * as responses from \"./MessageHandlerTypes\";\nimport { PartnerRequest } from \"./communication/PrivateChannel\";\nimport { SDKMessage, SDKMessageTypes } from \"../../sdk/SDKMessage\";\n\nexport interface MessageHandlerDependencies {\n  keyManager: KeyManager;\n}\n\nexport abstract class MessageHandler {\n  private ready: boolean = false;\n  private waitingMessages: SDKMessage[] = [];\n  private depenencies?: MessageHandlerDependencies;\n\n  public async initialize(initializer: () => Promise<MessageHandlerDependencies>): Promise<void> {\n    const deps = await initializer();\n    this.depenencies = deps;\n    await Promise.all(this.waitingMessages.map(m => this.receive(m)));\n    this.waitingMessages = [];\n    this.ready = true;\n  }\n\n  public abstract reply(type: SDKMessageTypes, data: any): void;\n\n  public async receive(message: SDKMessage): Promise<void> {\n    if (!this.ready) {\n      this.waitingMessages.push(message);\n      return;\n    }\n    let response;\n    switch (message.type) {\n      case SDKMessageTypes.REGISTRY_GET_STATUS:\n        response = this.handleGetStatus();\n        break;\n      case SDKMessageTypes.LOCKBOX_CREATE_KEY:\n        response = await this.handleCreateKey(message.data.keyName);\n        break;\n      case SDKMessageTypes.LOCKBOX_GET_KEY:\n        response = await this.handleGetKey(message.data.keyName);\n        break;\n      case SDKMessageTypes.LOCKBOX_SEND_DEVICE_ACTIVATION_REQUEST:\n        response = await this.handleSendDeviceActivationRequest(message.data);\n      case SDKMessageTypes.LOCKBOX_CONFIRM_DEVICE_ACTIVATION_REQUEST:\n        response = await this.handleConfirmDeviceActivationRequest(message.data);\n      default:\n        console.error(\"unrecognized event type from parent\", message.type);\n    }\n\n    this.reply(message.type, response);\n  }\n\n  private handleGetStatus(): any {\n    return { alive: true };\n  }\n\n  private async handleCreateKey(keyName: string): Promise<responses.CreateOrGetAccountResponse> {\n    const { keyManager } = this.depenencies!;\n    const key = await keyManager.createPersistentKey(keyName);\n    const response = { publicKey: key.getPublicKey() };\n\n    return response;\n  }\n\n  private async handleGetKey(keyName: string): Promise<responses.CreateOrGetAccountResponse> {\n    const { keyManager } = this.depenencies!;\n    const key = await keyManager.getPersistentKey(keyName);\n    const response = { publicKey: key.getPublicKey() };\n\n    return response;\n  }\n\n  private async handleSendDeviceActivationRequest(data: any): Promise<responses.DeviceActivationResponse> {\n    const { keyManager } = this.depenencies!;\n    const response = await keyManager.sendDeviceActivationRequest(\n      data.userID,\n      data.keyName,\n      data.message,\n      data.userAgent,\n    );\n    return response;\n  }\n\n  private async handleConfirmDeviceActivationRequest(data: any): Promise<responses.DeviceActivationResponse> {\n    const { keyManager } = this.depenencies!;\n    const onJoinRequest = async (request: PartnerRequest) => {\n      alert(JSON.stringify(request));\n      return true;\n    };\n    const onKeyRequest = async (request: any) => {\n      alert(JSON.stringify(request));\n      return true;\n    };\n    const response = await keyManager.confirmDeviceActivationRequest(\n      data.userID,\n      data.keyName,\n      data.message,\n      data.userAgent,\n      onJoinRequest,\n      onKeyRequest,\n    );\n    return response;\n  }\n}\n\nexport class WindowMessageHandler extends MessageHandler {\n  private parentURL: string;\n  public constructor(parentURL: string) {\n    super();\n    this.parentURL = parentURL;\n    parent.postMessage({ type: \"ALIVE\", data: {} }, this.parentURL);\n  }\n  public reply(type: SDKMessageTypes, data: any): void {\n    parent.postMessage({ type: \"REPLY_\" + type, data }, this.parentURL);\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/MessageHandlerTypes.ts",
    "content": "export interface CreateOrGetAccountResponse {\n  publicKey: string;\n}\n\nexport interface DeviceActivationResponse {\n  foo: \"bar\";\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/civil-node/CivilPersistence.test.ts",
    "content": "import { CivilPersistence } from \"./CivilPersistence\";\nimport { Key } from \"../keys/Key\";\ndescribe(\"CivilPersistence\", () => {\n  let civil: CivilPersistence;\n  let key: Key;\n  beforeEach(async () => {\n    fetchMock.resetMocks();\n    civil = new CivilPersistence(\"http://localhost:8080\");\n    key = await Key.generate();\n  });\n  it(\"should store and retrieve using HTTP\", async () => {\n    const retrieveResponse = { data: \"12345\" };\n    fetchMock.mockResponse(JSON.stringify(retrieveResponse));\n    const objectID = \"test\";\n    const data = { iv: \"foo\", ciphertext: \"bar\" };\n    const pub = key.getPublicKey();\n    const signature = await key.sign(objectID);\n\n    await civil.store(pub, signature, objectID, data);\n    const retrieve = await civil.retrieve(pub, signature, objectID);\n\n    expect(retrieve).toEqual(retrieveResponse);\n  });\n});\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/civil-node/CivilPersistence.ts",
    "content": "import { Persistence } from \"./Persistence\";\nimport { EncryptedData } from \"../crypto/crypto\";\n\nexport class CivilPersistence implements Persistence {\n  private url: string;\n  public constructor(url: string) {\n    this.url = url;\n  }\n  public async store(publicKey: string, signature: string, objectID: string, data: EncryptedData): Promise<any> {\n    const request = {\n      publicKey,\n      signature,\n      objectID,\n      data,\n    };\n\n    return fetch(`${this.url}/lockbox/store`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify(request),\n    });\n  }\n  public async retrieve(publicKey: string, signature: string, objectID: string): Promise<EncryptedData> {\n    const result = await fetch(`${this.url}/lockbox/retrieve`, {\n      headers: { \"Content-Type\": \"application/json\" },\n      method: \"POST\",\n      body: JSON.stringify({\n        publicKey,\n        signature,\n        objectID,\n      }),\n    });\n\n    if (result.status === 404) {\n      throw new Error(\"key not found\");\n    }\n\n    const json = await result.json();\n    return (json as any) as EncryptedData;\n  }\n  public async delete(publicKey: string, signature: string, objectID: string): Promise<any> {\n    // delete this.database[publicKey][objectID];\n  }\n\n  public async selfDestruct(publicKey: string, signature: string): Promise<any> {\n    // delete this.database[publicKey];\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/civil-node/LockboxService.ts",
    "content": "import { Persistence } from \"./Persistence\";\nimport { EncryptedData } from \"../crypto/crypto\";\nimport { Key } from \"../keys/Key\";\nexport class LockboxService {\n  private data: Persistence;\n\n  constructor(data: Persistence) {\n    this.data = data;\n  }\n\n  public async store(key: Key, objectID: string, object: any): Promise<any> {\n    const jsonString = JSON.stringify(object);\n    return this.storeJson(key, objectID, jsonString);\n  }\n\n  public async storeJson(key: Key, objectID: string, jsonString: string): Promise<any> {\n    const publicKey = key.getPublicKey();\n    const signature = await key.sign(objectID);\n    const ciphertext = await key.encrypt(jsonString);\n    return this.data.store(publicKey, signature, objectID, ciphertext);\n  }\n\n  public async retrieve(key: Key, objectID: string): Promise<any> {\n    const plaintext = await this.retrieveString(key, objectID);\n    return JSON.parse(plaintext);\n  }\n\n  public async retrieveString(key: Key, objectID: string): Promise<any> {\n    const publicKey = key.getPublicKey();\n    const signature = await key.sign(objectID);\n    const ciphertext: EncryptedData = await this.data.retrieve(publicKey, signature, objectID);\n    return key.decrypt(ciphertext);\n  }\n\n  public async delete(key: Key, objectID: string): Promise<string> {\n    const publicKey = key.getPublicKey();\n    const signature = await key.sign(objectID);\n    return this.data.delete(publicKey, signature, objectID);\n  }\n\n  public async selfDestruct(key: Key): Promise<string> {\n    const publicKey = key.getPublicKey();\n    const signature = await key.sign(\"self-destruct\");\n    return this.data.selfDestruct(publicKey, signature);\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/civil-node/Persistence.ts",
    "content": "export interface Persistence {\n  retrieve(publicKey: string, signature: string, objectID: string): Promise<any>;\n  store(publicKey: string, signature: string, objectID: string, data: any): Promise<any>;\n  delete(publicKey: string, signature: string, objectID: string): Promise<any>;\n  // deletes all data for user;\n  selfDestruct(publicKey: string, signature: string): Promise<any>;\n}\n\nexport class InMemoryPersistence implements Persistence {\n  private database: { [publicKey: string]: { [key: string]: any } } = {};\n  public async store(publicKey: string, signature: string, objectID: string, data: any): Promise<any> {\n    if (!this.database[publicKey]) {\n      this.database[publicKey] = {};\n    }\n\n    this.database[publicKey][objectID] = data;\n  }\n  public async retrieve(publicKey: string, signature: string, objectID: string): Promise<any> {\n    return this.database[publicKey][objectID];\n  }\n  public async delete(publicKey: string, signature: string, objectID: string): Promise<any> {\n    delete this.database[publicKey][objectID];\n  }\n\n  public async selfDestruct(publicKey: string, signature: string): Promise<any> {\n    delete this.database[publicKey];\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/CivilWebsocket.ts",
    "content": "import { PrivateChannel, PartnerRequest } from \"./PrivateChannel\";\nimport { SendTypes, SendEvent } from \"./SendTypes\";\nimport { RealtimeCommunication } from \"./RealtimeCommunication\";\nimport { ReceiveEvent } from \"./ReceiveTypes\";\nimport { Key } from \"../keys/Key\";\n\nexport class CivilWebsocket implements RealtimeCommunication {\n  private url: string;\n  private connection?: WebSocket;\n  private subscribers: Array<(event: ReceiveEvent) => void> = [];\n\n  private privateChannels: { [key: string]: PrivateChannel } = {};\n\n  public constructor(url: string) {\n    this.url = url;\n  }\n  public async openSecurePrivateChannelRaw(\n    channelName: string,\n    key: Key,\n    message: string,\n    userAgent: string,\n  ): Promise<PrivateChannel> {\n    if (!this.connection) {\n      await this.initialize();\n    }\n    const chan = await PrivateChannel.NewPrivateChannel(this, channelName, key);\n    const publicKeyString = await chan.getPublicKey();\n    this.privateChannels[channelName] = chan;\n\n    const fn = (event: any) => {\n      if (event.type === SendTypes.PRIVATE_CHANNEL_MESSAGE) {\n        chan.receiveEvent(event).catch(err => {\n          console.log(\"error receiving event\", err);\n        });\n      }\n    };\n\n    // TODO(dankins): this is a memory leak - make sure this get cleaned up when the channel is closed\n    this.subscribers.push(fn);\n\n    this.send({\n      type: SendTypes.OPEN_SECURE_CHANNEL,\n      data: {\n        channelName,\n        deviceID: key.getPublicKey(),\n        publicKeyString,\n        message,\n        userAgent,\n      },\n    }).catch(err => {\n      console.log(\"error sending event\", err);\n    });\n\n    return this.privateChannels[channelName];\n  }\n\n  public async openSecurePrivateChannel(\n    channelName: string,\n    key: Key,\n    message: string,\n    userAgent: string,\n    onJoinRequest: (request: PartnerRequest) => Promise<boolean>,\n  ): Promise<PrivateChannel> {\n    const channel = await this.openSecurePrivateChannelRaw(channelName, key, message, userAgent);\n\n    // this will wait until the other party arrives\n    const request = await channel.waitForPartner();\n    const confirmationPromise = channel.waitForConfirmation();\n\n    const shouldConfirm = await onJoinRequest(request);\n\n    if (shouldConfirm) {\n      await channel.confirmPartner(request.deviceID, request.publicKeyString);\n    } else {\n      throw new Error(\"rejected partner\");\n    }\n\n    // wait for channel confirmation before\n    await confirmationPromise;\n\n    return channel;\n  }\n\n  public async waitForEvent(\n    eventType: string,\n    timeout: number,\n    filter?: (event: ReceiveEvent) => Promise<boolean>,\n  ): Promise<ReceiveEvent> {\n    return new Promise((resolve, reject) => {\n      const ts = setTimeout(() => reject(`wait for ${eventType} timed out after ${timeout} seconds`), timeout * 1000);\n      const fn = (event: any) => {\n        if (event.type === eventType) {\n          if (filter) {\n            if (filter(event)) {\n              resolve(event);\n            }\n          }\n          clearTimeout(ts);\n          const subIdx = this.subscribers.indexOf(fn);\n          this.subscribers.splice(subIdx, 1);\n          resolve(event);\n        }\n      };\n      this.subscribers.push(fn);\n    });\n  }\n\n  public async send(event: SendEvent): Promise<any> {\n    if (!this.connection) {\n      await this.initialize();\n    }\n    this.connection!.send(JSON.stringify(event));\n  }\n\n  public async closeSecureChannel(channelName: string, deviceID: string): Promise<any> {\n    return this.send({\n      type: SendTypes.CLOSE_SECURE_CHANNEL,\n      data: { channelName, deviceID },\n    });\n  }\n\n  private async initialize(): Promise<void> {\n    return new Promise(resolve => {\n      this.connection = new WebSocket(this.url);\n\n      this.connection.onmessage = event => {\n        const data = JSON.parse(event.data);\n        this.subscribers.map(sub => sub(data));\n      };\n      this.connection.onopen = (value: any) => resolve();\n    });\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/PrivateChannel.test.ts",
    "content": "import { buildMockWebsocketServer } from \"../../../test-utils/MockWebsocketServer\";\nimport { CivilWebsocket } from \"./CivilWebsocket\";\nimport { PrivateChannel } from \"./PrivateChannel\";\nimport { SecurePrivateMessageTypes, SecureMessage } from \"./SecureTypes\";\nimport { Key } from \"../keys/Key\";\n\ndescribe(\"PrivateChannel\", () => {\n  const mockURL = \"ws://localhost:8080\";\n  let mobileKey: Key;\n  let desktopKey: Key;\n  const channelName = \"alice-channel\";\n  let mobileComms: CivilWebsocket;\n  let desktopComms: CivilWebsocket;\n  let mockWebsocketServer: any;\n  beforeEach(async () => {\n    mobileKey = await Key.generate();\n    desktopKey = await Key.generate();\n    mockWebsocketServer = buildMockWebsocketServer(mockURL);\n    mobileComms = new CivilWebsocket(mockURL);\n    desktopComms = new CivilWebsocket(mockURL);\n  });\n\n  async function openChannel(): Promise<[PrivateChannel, PrivateChannel]> {\n    const mobile = mobileComms.openSecurePrivateChannel(\n      channelName,\n      mobileKey,\n      \"mobile join message\",\n      \"mobile user Agent\",\n      async () => true,\n    );\n    const desktop = desktopComms.openSecurePrivateChannel(\n      channelName,\n      desktopKey,\n      \"mobile join message\",\n      \"mobile user Agent\",\n      async () => true,\n    );\n\n    return [await mobile, await desktop];\n  }\n\n  afterEach(async () => {\n    mockWebsocketServer.stop();\n  });\n\n  it(\"should wait for secure events\", async () => {\n    const [mobile, desktop] = await openChannel();\n\n    const waitPromise = desktop.waitForSecureMessage(SecurePrivateMessageTypes.TEXT_MESSAGE);\n    await mobile.sendSecureMessage({\n      type: SecurePrivateMessageTypes.TEXT_MESSAGE,\n      data: {\n        message: \"hello, world\",\n      },\n    });\n\n    const result = await waitPromise;\n\n    expect(result.type).toBe(SecurePrivateMessageTypes.TEXT_MESSAGE);\n    expect(result.data.message).toBe(\"hello, world\");\n  });\n\n  it(\"should use private communication\", async () => {\n    // open secure channel for mobile device\n    const mobile = await mobileComms.openSecurePrivateChannelRaw(\n      channelName,\n      mobileKey,\n      \"mobile join message\",\n      \"mobile user Agent\",\n    );\n    // start promise for partner to arrive\n    const waitForMobilePartnerPromise = mobile.waitForPartner();\n\n    // open secure channel on desktop\n    const desktop = await desktopComms.openSecurePrivateChannelRaw(\n      channelName,\n      desktopKey,\n      \"desktop join message\",\n      \"desktop user Agent\",\n    );\n    const waitForDesktopPartnerPromise = desktop.waitForPartner();\n\n    // wait for devices to acknowledge each other\n    const mobilePartner = await waitForMobilePartnerPromise;\n    const desktopPartner = await waitForDesktopPartnerPromise;\n\n    await mobile.confirmPartner(mobilePartner.deviceID, mobilePartner.publicKeyString);\n    await desktop.confirmPartner(desktopPartner.deviceID, desktopPartner.publicKeyString);\n\n    const desktopWaitForConfirmation = desktop.waitForConfirmation();\n    const mobileWaitForConfirmation = mobile.waitForConfirmation();\n\n    await Promise.all([desktopWaitForConfirmation, mobileWaitForConfirmation]);\n\n    const messageEventPromise = desktop.waitForSecureMessage(SecurePrivateMessageTypes.TEXT_MESSAGE);\n    await mobile.sendSecureMessage({\n      type: SecurePrivateMessageTypes.TEXT_MESSAGE,\n      data: {\n        message: \"hello, world\",\n      },\n    });\n\n    const result = await messageEventPromise;\n    expect(result.type).toBe(SecurePrivateMessageTypes.TEXT_MESSAGE);\n    expect(result.data.message).toBe(\"hello, world\");\n  });\n});\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/PrivateChannel.ts",
    "content": "import { CivilWebsocket } from \"./CivilWebsocket\";\nimport { SendTypes } from \"./SendTypes\";\nimport { ReceiveTypes } from \"./ReceiveTypes\";\nimport { SecurePrivateMessageTypes, SecureMessage } from \"./SecureTypes\";\nimport {\n  generateECDHKey,\n  derivePartnerKey,\n  publicKeyFromString,\n  encrypt,\n  decrypt,\n  publicKeyToString,\n} from \"../crypto/crypto\";\nimport { Key } from \"../keys/Key\";\n\nexport interface PartnerRequest {\n  deviceID: string;\n  publicKeyString: string;\n  message: string;\n  userAgent: string;\n}\n\nexport enum PrivateMessageTypes {\n  CONFIRM_PARTNER = \"CONFIRM_PARTNER\",\n  SECURE_MESSAGE = \"SECURE_MESSAGE\",\n}\n\nexport class PrivateChannel {\n  public static async NewPrivateChannel(\n    websocket: CivilWebsocket,\n    channelName: string,\n    deviceKey: Key,\n  ): Promise<PrivateChannel> {\n    const secretKey = await generateECDHKey();\n\n    return new PrivateChannel(websocket, channelName, deviceKey, secretKey);\n  }\n\n  private websocket: CivilWebsocket;\n  private channelName: string;\n  private deviceKey: Key;\n  private secretKey: CryptoKeyPair;\n  private sharedKey?: CryptoKey;\n  private partnerDeviceID?: string;\n  private ready: boolean = false;\n\n  constructor(websocket: CivilWebsocket, channelName: string, deviceKey: Key, secretKey: CryptoKeyPair) {\n    this.websocket = websocket;\n    this.channelName = channelName;\n    this.deviceKey = deviceKey;\n    this.secretKey = secretKey;\n    this.ready = false;\n  }\n\n  public async waitForPartner(): Promise<PartnerRequest> {\n    const response = await this.websocket.waitForEvent(ReceiveTypes.REQUEST_TO_JOIN_CHANNEL, 100);\n\n    return {\n      deviceID: response.data.deviceID,\n      publicKeyString: response.data.publicKeyString,\n      message: response.data.message,\n      userAgent: response.data.userAgent,\n    };\n  }\n\n  public async waitForEvent(\n    type: PrivateMessageTypes,\n    timeoutSeconds?: number,\n    filter?: (e: any) => Promise<boolean>,\n  ): Promise<any> {\n    const eventFilter = filter ? filter : () => Promise.resolve(true);\n    return this.websocket.waitForEvent(\n      ReceiveTypes.PRIVATE_CHANNEL_MESSAGE,\n      timeoutSeconds || 120,\n      async e => (e.data as any).channelName === this.channelName && e.data.type === type && eventFilter(e.data),\n    );\n  }\n\n  public async waitForSecureMessage(type: SecurePrivateMessageTypes, timeoutSeconds?: number): Promise<any> {\n    const filter = async (e: any) => {\n      const enc = e.data;\n      const decrypted = await this.decryptMessage(enc.iv, enc.ciphertext);\n      return decrypted.type === type;\n    };\n    const event = await this.waitForEvent(PrivateMessageTypes.SECURE_MESSAGE, timeoutSeconds || 120, filter);\n\n    const encrypted = event.data.data;\n    return this.decryptMessage(encrypted.iv, encrypted.ciphertext);\n  }\n\n  public async receiveEvent(data: any): Promise<any> {\n    // console.log(\"receiveEvent\", this.deviceID, data);\n  }\n\n  public async confirmPartner(partnerDeviceID: string, parterPublicKeyString: string): Promise<any> {\n    this.partnerDeviceID = partnerDeviceID;\n    await this.setSharedKey(parterPublicKeyString);\n    const publicKeyString = await this.getPublicKey();\n    await this.send(PrivateMessageTypes.CONFIRM_PARTNER, {\n      deviceID: this.deviceKey.getPublicKey(),\n      publicKeyString,\n    });\n    return true;\n  }\n\n  public async waitForConfirmation(): Promise<any> {\n    const event = await this.waitForEvent(PrivateMessageTypes.CONFIRM_PARTNER);\n    await this.setSharedKey(event.data.data.publicKeyString);\n  }\n\n  public async sendSecureMessage(message: SecureMessage): Promise<any> {\n    if (!this.ready) {\n      throw new Error(\"secure channel not yet established\");\n    }\n    const jsonString = JSON.stringify(message);\n    const encrypted = await encrypt(jsonString, this.sharedKey!);\n    return this.send(PrivateMessageTypes.SECURE_MESSAGE, encrypted);\n  }\n\n  public async getPublicKey(): Promise<string> {\n    return publicKeyToString(this.secretKey);\n  }\n\n  private async decryptMessage(iv: string, ciphertext: string): Promise<SecureMessage> {\n    const jsonString = await decrypt({ iv, ciphertext }, this.sharedKey!);\n    return JSON.parse(jsonString);\n  }\n\n  private async setSharedKey(parterPublicKeyString: string): Promise<void> {\n    const partnerPublicKey = await publicKeyFromString(parterPublicKeyString, true);\n    this.sharedKey = await derivePartnerKey(this.secretKey.privateKey, partnerPublicKey);\n    this.ready = true;\n  }\n\n  private async send(type: PrivateMessageTypes, data: any): Promise<any> {\n    if (!this.partnerDeviceID) {\n      throw new Error(\"partner has not joined yet\");\n    }\n    await this.websocket.send({\n      type: SendTypes.PRIVATE_CHANNEL_MESSAGE,\n      data: {\n        channelName: this.channelName,\n        toDeviceID: this.partnerDeviceID,\n        type,\n        data,\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/RealtimeCommunication.ts",
    "content": "import { PrivateChannel, PartnerRequest } from \"./PrivateChannel\";\nimport { ReceiveEvent } from \"./ReceiveTypes\";\nimport { SendEvent } from \"./SendTypes\";\nimport { Key } from \"../keys/Key\";\n\nexport interface RealtimeCommunication {\n  openSecurePrivateChannel(\n    channelName: string,\n    deviceKey: Key,\n    message: string,\n    userAgent: string,\n    onJoinRequest: (request: PartnerRequest) => Promise<boolean>,\n  ): Promise<PrivateChannel>;\n  closeSecureChannel(channelName: string, deviceID: string): Promise<any>;\n  waitForEvent(eventType: string, timeout: number): Promise<ReceiveEvent>;\n  send(event: SendEvent): Promise<any>;\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/ReceiveTypes.ts",
    "content": "export enum ReceiveTypes {\n  OPEN_SECURE_CHANNEL_RESPONSE = \"OPEN_SECURE_CHANNEL_RESPONSE\",\n  REQUEST_TO_JOIN_CHANNEL = \"REQUEST_TO_JOIN_CHANNEL\",\n  PRIVATE_CHANNEL_MESSAGE = \"PRIVATE_CHANNEL_MESSAGE\",\n}\n\nexport interface ReceiveEvent {\n  type: ReceiveTypes;\n  data: ReceiveEventData;\n}\n\ntype ReceiveEventData = any;\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/SecureTypes.ts",
    "content": "export enum SecurePrivateMessageTypes {\n  TEXT_MESSAGE = \"TEXT_MESSAGE\",\n  ACTIVATE_DEVICE_REQUEST = \"ACTIVATE_DEVICE_REQUEST\",\n  ACTIVATE_DEVICE_RESPONSE = \"ACTIVATE_DEVICE_RESPONSE\",\n  ACTIVATE_DEVICE_DENIED = \"ACTIVATE_DEVICE_DENIED\",\n}\n\nexport type SecureMessageData = ActivateDeviceRequest | TextMessage | ActivateDeviceResponse | ActivateDeviceDenied;\n\nexport interface SecureMessage {\n  type: SecurePrivateMessageTypes;\n  data: SecureMessageData;\n}\n\nexport interface ActivateDeviceRequest {\n  keyName: string;\n}\n\nexport interface ActivateDeviceResponse {\n  keyName: string;\n  keyJson: string;\n}\nexport interface ActivateDeviceDenied {\n  reason: string;\n}\n\nexport interface TextMessage {\n  message: string;\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/communication/SendTypes.ts",
    "content": "export interface SendEvent {\n  type: SendTypes;\n  data: SendEventData;\n}\n\nexport type SendEventData = OpenSecureChannelEvent | PrivateChannelMessageType | CloseSecureChannelEvent;\n\nexport enum SendTypes {\n  OPEN_SECURE_CHANNEL = \"OPEN_SECURE_CHANNEL\",\n  CLOSE_SECURE_CHANNEL = \"CLOSE_SECURE_CHANNEL\",\n  PRIVATE_CHANNEL_MESSAGE = \"PRIVATE_CHANNEL_MESSAGE\",\n  CONFIRM_PARTNER = \"CONFIRM_PARTNER\",\n}\n\nexport interface PrivateChannelMessageType {\n  channelName: string;\n  toDeviceID: string;\n  type: string;\n  data: any;\n}\n\nexport interface OpenSecureChannelEvent {\n  channelName: string;\n  deviceID: string;\n  publicKeyString: string;\n  message: string;\n  userAgent: string;\n}\n\nexport interface CloseSecureChannelEvent {\n  channelName: string;\n  deviceID: string;\n}\n\nexport interface PrivateChannelMessage {\n  data: any;\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/crypto/crypto.test.ts",
    "content": "import { publicKeyToString, publicKeyFromString, sign, verify, generateAuthKey } from \"./crypto\";\n\ndescribe(\"crypto\", () => {\n  it(\"should rehydrate a public key\", async () => {\n    const key = await generateAuthKey();\n    const string = await publicKeyToString(key);\n    const pubKey = await publicKeyFromString(string, false);\n\n    const message = \"hello world\";\n    const signature = await sign(message, key.privateKey);\n\n    const verified = await verify(message, signature, pubKey);\n\n    expect(verified).toBeTruthy();\n  });\n});\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/crypto/crypto.ts",
    "content": "export const alg = { name: \"AES-CBC\", length: 256 };\nexport const authAlg = {\n  name: \"ECDSA\",\n  hash: { name: \"SHA-256\" },\n  namedCurve: \"P-256\",\n};\n\nexport interface EncryptedData {\n  iv: string; // initialization vector\n  ciphertext: string; // encrypted data\n}\n\nexport async function encrypt(plaintext: string, key: CryptoKey): Promise<EncryptedData> {\n  const encoder = new TextEncoder();\n  const encoded = encoder.encode(plaintext);\n  const iv = window.crypto.getRandomValues(new Uint8Array(16));\n  const ciphertext = await crypto.subtle.encrypt({ ...alg, iv }, key, encoded);\n\n  return {\n    iv: arrayBufferToBase64(iv),\n    ciphertext: arrayBufferToBase64(ciphertext),\n  };\n}\n\nexport async function decrypt(data: EncryptedData, key: CryptoKey): Promise<string> {\n  const ciphertextBuffer = base64ToArrayBuffer(data.ciphertext);\n  const iv = base64ToArrayBuffer(data.iv);\n\n  const plaintextBuffer = await crypto.subtle.decrypt({ ...alg, iv }, key, ciphertextBuffer);\n\n  const decoder = new TextDecoder();\n  return decoder.decode(plaintextBuffer);\n}\n\nexport async function sign(message: string, key: CryptoKey): Promise<string> {\n  const encoder = new TextEncoder();\n  const encoded = encoder.encode(message);\n  const signatureBuffer = await crypto.subtle.sign(authAlg, key, encoded);\n\n  return arrayBufferToBase64(signatureBuffer);\n}\n\nexport async function verify(message: string, signature: string, key: CryptoKey): Promise<boolean> {\n  const encoder = new TextEncoder();\n  const messageEncoded = encoder.encode(message);\n\n  const signatureBuffer = base64ToArrayBuffer(signature);\n  return crypto.subtle.verify(authAlg, key, signatureBuffer, messageEncoded);\n}\n\nexport async function generateEncryptionKey(): Promise<CryptoKey> {\n  return crypto.subtle.generateKey(alg, true, [\"encrypt\", \"decrypt\"]);\n}\n\nexport async function generateAuthKey(): Promise<CryptoKeyPair> {\n  return crypto.subtle.generateKey(authAlg, true, [\"sign\", \"verify\"]);\n}\n\nexport async function generateECDHKey(): Promise<CryptoKeyPair> {\n  return crypto.subtle.generateKey({ name: \"ECDH\", namedCurve: \"P-256\" }, true, [\"deriveKey\"]);\n}\n\nexport async function derivePartnerKey(privateKey: CryptoKey, publicKey: CryptoKey): Promise<any> {\n  return crypto.subtle.deriveKey(\n    { name: \"ECDH\", public: publicKey },\n    privateKey,\n    { name: \"AES-CBC\", length: 256 },\n    true,\n    [\"encrypt\", \"decrypt\"],\n  );\n}\n\nexport async function publicKeyToString(keyPair: CryptoKeyPair): Promise<string> {\n  const data = await window.crypto.subtle.exportKey(\"spki\", keyPair.publicKey);\n  return arrayBufferToBase64(data);\n}\n\nexport async function publicKeyFromString(pub: string, isECDH: boolean): Promise<CryptoKey> {\n  const arr = base64ToArrayBuffer(pub);\n\n  const pubAlg = isECDH ? { name: \"ECDH\", namedCurve: \"P-256\", hash: { name: \"SHA-256\" } } : authAlg;\n  try {\n    const res = await crypto.subtle.importKey(\"spki\", arr, pubAlg, true, isECDH ? [] : [\"verify\"]);\n\n    return res;\n  } catch (err) {\n    console.error(\"error publicKeyFromString\", err);\n    throw err;\n  }\n}\nexport function base64ToArrayBuffer(base64: string): ArrayBuffer {\n  const binary_string = window.atob(base64);\n  const len = binary_string.length;\n  const bytes = new Uint8Array(len);\n  for (let i = 0; i < len; i++) {\n    bytes[i] = binary_string.charCodeAt(i);\n  }\n  return bytes.buffer;\n}\n\nexport function arrayBufferToBase64(buffer: ArrayBuffer): string {\n  // @ts-ignore\n  return btoa(String.fromCharCode(...new Uint8Array(buffer)));\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/keys/Key.ts",
    "content": "import {\n  EncryptedData,\n  encrypt,\n  decrypt,\n  alg,\n  authAlg,\n  generateEncryptionKey,\n  generateAuthKey,\n  arrayBufferToBase64,\n  base64ToArrayBuffer,\n  sign,\n} from \"../crypto/crypto\";\nconst crypto = window.crypto;\n\nexport class Key {\n  public static async generate(): Promise<Key> {\n    const encryptKey = await generateEncryptionKey();\n\n    const authKey = await generateAuthKey();\n\n    const authPublicKey = arrayBufferToBase64(await crypto.subtle.exportKey(\"spki\", authKey.publicKey));\n\n    return new Key(encryptKey, authKey.privateKey, authKey.publicKey, authPublicKey);\n  }\n\n  public static async fromJson(json: string): Promise<Key> {\n    const data = JSON.parse(json);\n\n    const encryptKey = crypto.subtle.importKey(\"jwk\", data.encryptJwk, alg, true, [\"encrypt\", \"decrypt\"]);\n    const authPrivateKey = crypto.subtle.importKey(\"pkcs8\", base64ToArrayBuffer(data.authPrivateKey), authAlg, true, [\n      \"sign\",\n    ]);\n\n    const authPublicKey = crypto.subtle.importKey(\"spki\", base64ToArrayBuffer(data.authPublicKey), authAlg, true, [\n      \"verify\",\n    ]);\n\n    return new Key(await encryptKey, await authPrivateKey, await authPublicKey, data.authPublicKey);\n  }\n\n  private encryptKey: CryptoKey;\n  private authPrivateKey: CryptoKey;\n  private authPublicKey: CryptoKey;\n  private publicKeyString: string;\n\n  public constructor(\n    encryptKey: CryptoKey,\n    authPrivateKey: CryptoKey,\n    authPublicKey: CryptoKey,\n    publicKeyString: string,\n  ) {\n    this.encryptKey = encryptKey;\n    this.authPrivateKey = authPrivateKey;\n    this.authPublicKey = authPublicKey;\n    this.publicKeyString = publicKeyString;\n  }\n\n  public async toJson(): Promise<string> {\n    const encryptJwk = await crypto.subtle.exportKey(\"jwk\", this.encryptKey);\n    const authPrivateBuffer = await crypto.subtle.exportKey(\"pkcs8\", this.authPrivateKey);\n    const authPublicKey = await crypto.subtle.exportKey(\"spki\", this.authPublicKey);\n\n    return JSON.stringify({\n      encryptJwk,\n      authPrivateKey: arrayBufferToBase64(authPrivateBuffer),\n      authPublicKey: arrayBufferToBase64(authPublicKey),\n    });\n  }\n\n  public getPublicKey(): string {\n    return this.publicKeyString;\n  }\n\n  public async encrypt(plaintext: string): Promise<EncryptedData> {\n    return encrypt(plaintext, this.encryptKey);\n  }\n  public async sign(message: string): Promise<string> {\n    return sign(message, this.authPrivateKey);\n  }\n\n  public async decrypt(data: EncryptedData): Promise<string> {\n    return decrypt(data, this.encryptKey);\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/keys/KeyManager.test.ts",
    "content": "import Cookies from \"js-cookie\";\nimport { randomString } from \"../../../test-utils/helpers\";\n\nimport { KeyManager } from \"./KeyManager\";\nimport { InMemoryPersistence, Persistence } from \"../civil-node/Persistence\";\nimport { LockboxService } from \"../civil-node/LockboxService\";\nimport { RealtimeCommunication } from \"../communication/RealtimeCommunication\";\nimport { PrivateChannel } from \"../communication/PrivateChannel\";\nimport { SecurePrivateMessageTypes } from \"../communication/SecureTypes\";\nimport { Key } from \"./Key\";\nimport { DEVICE_ID_COOKIE_NAME } from \"./KeyUtils\";\n\njest.mock(\"../communication/PrivateChannel\");\n\ndescribe(\"KeyManager\", () => {\n  let persistence: Persistence;\n  let lockbox: LockboxService;\n  let keyManager: KeyManager;\n  let keyName: string;\n  let RealtimeCommunicationMock: any;\n  let deviceKey: Key;\n  let userID: string;\n  let sendSecureMessageMock: jest.Mock;\n  let waitForSecureMessageMock: jest.Mock;\n  beforeEach(async () => {\n    keyName = randomString();\n    persistence = new InMemoryPersistence();\n    deviceKey = await Key.generate();\n    userID = randomString();\n    sendSecureMessageMock = jest.fn();\n    waitForSecureMessageMock = jest.fn();\n\n    // @ts-ignore\n    PrivateChannel.mockImplementation(() => {\n      return {\n        sendSecureMessage: sendSecureMessageMock,\n        waitForSecureMessage: waitForSecureMessageMock,\n      };\n    });\n\n    RealtimeCommunicationMock = jest.fn<RealtimeCommunication, any[]>(() => ({\n      // @ts-ignore\n      openSecurePrivateChannel: jest.fn().mockReturnValue(new PrivateChannel()),\n      closeSecureChannel: jest.fn(),\n      waitForEvent: jest.fn(),\n      send: jest.fn(),\n    }));\n    lockbox = new LockboxService(persistence);\n    expect(Cookies.get(DEVICE_ID_COOKIE_NAME)).not.toBeDefined();\n    keyManager = await new KeyManager(lockbox, new RealtimeCommunicationMock(), deviceKey);\n  });\n\n  afterEach(() => {\n    Cookies.remove(DEVICE_ID_COOKIE_NAME);\n  });\n\n  it(\"should save the device key into `key|device`\", async () => {\n    expect(Cookies.get(DEVICE_ID_COOKIE_NAME)).not.toBeDefined();\n    await KeyManager.initialize(lockbox, new RealtimeCommunicationMock());\n    expect(Cookies.get(DEVICE_ID_COOKIE_NAME)).toBeDefined();\n  });\n\n  it(\"should delete burner key\", async () => {\n    const k1Name = randomString();\n    await keyManager.createPersistentKey(k1Name);\n\n    keyManager.selfDestruct();\n    expect(Cookies.get(DEVICE_ID_COOKIE_NAME)).not.toBeDefined();\n  });\n\n  it(\"should list available persistent keys on the device\", async () => {});\n  it(\"should create a new persistent key\", async () => {\n    const text = randomString();\n    const key = await keyManager.createPersistentKey(keyName);\n    const encrypted = await key.encrypt(text);\n    const plaintext = await key.decrypt(encrypted);\n    expect(plaintext).toEqual(text);\n  });\n\n  it(\"should request a persistent key from another device\", async () => {\n    const k1 = await Key.generate();\n    const k1Json = await k1.toJson();\n    const randomKeyName = randomString();\n    waitForSecureMessageMock.mockReturnValue({\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_RESPONSE,\n      data: { keyName: randomKeyName, keyJson: k1Json },\n    });\n    const result = await keyManager.sendDeviceActivationRequest(\n      userID,\n      randomKeyName,\n      \"test message\",\n      \"test user agent\",\n    );\n\n    expect(result).toEqual(k1);\n\n    const loaded = await keyManager.getPersistentKey(randomKeyName);\n    expect(loaded).toStrictEqual(result);\n  });\n  it(\"should approve a persistent key request\", async () => {\n    const randomKeyName = randomString();\n    const k1 = await keyManager.createPersistentKey(randomKeyName);\n    const k1Json = await k1.toJson();\n\n    waitForSecureMessageMock.mockReturnValue({\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_REQUEST,\n      data: { keyName: randomKeyName },\n    });\n\n    const onKeyRequest = jest.fn().mockReturnValue(true);\n\n    await keyManager.confirmDeviceActivationRequest(\n      userID,\n      randomKeyName,\n      \"test\",\n      \"test user agent\",\n      jest.fn(),\n      onKeyRequest,\n    );\n\n    expect(onKeyRequest).toHaveBeenCalledWith({\n      data: { keyName: randomKeyName },\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_REQUEST,\n    });\n\n    await expect(sendSecureMessageMock).toHaveBeenCalledWith({\n      data: {\n        keyJson: k1Json,\n        keyName: randomKeyName,\n      },\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_RESPONSE,\n    });\n  });\n  it(\"should reject a persistent key request\", async () => {\n    const randomKeyName = randomString();\n    const k1 = await keyManager.createPersistentKey(randomKeyName);\n    const k1Json = await k1.toJson();\n\n    waitForSecureMessageMock.mockReturnValue({\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_REQUEST,\n      data: { keyName: randomKeyName },\n    });\n\n    const onKeyRequest = jest.fn().mockReturnValue(false);\n\n    await keyManager.confirmDeviceActivationRequest(\n      userID,\n      randomKeyName,\n      \"test\",\n      \"test user agent\",\n      jest.fn(),\n      onKeyRequest,\n    );\n\n    expect(onKeyRequest).toHaveBeenCalledWith({\n      data: { keyName: randomKeyName },\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_REQUEST,\n    });\n\n    await expect(sendSecureMessageMock).toHaveBeenCalledWith({\n      data: {\n        reason: \"owner denied request\",\n      },\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_DENIED,\n    });\n  });\n\n  it(\"should retrieve a persistent key from the lockbox\", async () => {\n    const k1 = await keyManager.createPersistentKey(keyName);\n    const spy = jest.spyOn(lockbox, \"retrieveString\");\n    const newKeyManager = await new KeyManager(lockbox, new RealtimeCommunicationMock(), deviceKey);\n\n    const k1RetrieveA = await keyManager.getPersistentKey(keyName);\n    expect(spy).not.toHaveBeenCalled();\n    const k1RetrieveB = await newKeyManager.getPersistentKey(keyName);\n    expect(k1).toEqual(k1RetrieveA);\n    expect(k1).toEqual(k1RetrieveB);\n    expect(spy).toHaveBeenCalledWith(deviceKey, `key|${keyName}`);\n  });\n});\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/keys/KeyManager.ts",
    "content": "import { Key } from \"./Key\";\nimport * as KeyUtils from \"./KeyUtils\";\nimport { LockboxService } from \"../civil-node/LockboxService\";\nimport { SecurePrivateMessageTypes, ActivateDeviceRequest } from \"../communication/SecureTypes\";\nimport { RealtimeCommunication } from \"../communication/RealtimeCommunication\";\nimport { PartnerRequest } from \"../communication/PrivateChannel\";\n\nexport class KeyManager {\n  public static async initialize(lockbox: LockboxService, comms: RealtimeCommunication): Promise<KeyManager> {\n    const deviceKey = await KeyUtils.getOrCreateDeviceKey();\n    return new KeyManager(lockbox, comms, deviceKey);\n  }\n\n  private lockbox: LockboxService;\n  private comms: RealtimeCommunication;\n  private deviceKey: Key;\n  private loadedKeys: { [keyName: string]: Key } = {};\n  public constructor(lockbox: LockboxService, comms: RealtimeCommunication, deviceKey: Key) {\n    this.lockbox = lockbox;\n    this.comms = comms;\n    this.deviceKey = deviceKey;\n  }\n\n  public async createPersistentKey(keyName: string): Promise<Key> {\n    // generate a new persistence key\n    const key = await Key.generate();\n    const objectID = `key|${keyName}`;\n    const jsonString = await key.toJson();\n\n    await this.lockbox.storeJson(this.deviceKey, objectID, jsonString);\n    this.loadedKeys[keyName] = key;\n\n    return key;\n  }\n\n  public async getPersistentKey(keyName: string): Promise<Key> {\n    if (this.loadedKeys[keyName]) {\n      return this.loadedKeys[keyName];\n    }\n    const objectID = `key|${keyName}`;\n    const keyJson = await this.lockbox.retrieveString(this.deviceKey, objectID);\n    return Key.fromJson(keyJson);\n  }\n\n  public async sendDeviceActivationRequest(\n    userID: string,\n    keyName: string,\n    message: string,\n    userAgent: string,\n  ): Promise<any> {\n    const channel = await this.comms.openSecurePrivateChannel(\n      userID,\n      this.deviceKey,\n      message,\n      userAgent,\n      async () => true,\n    );\n\n    console.log(\"sending ACTIVATE_DEVICE_REQUEST\");\n    await channel.sendSecureMessage({\n      type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_REQUEST,\n      data: { keyName },\n    });\n\n    console.log(\"waiting for ACTIVATE_DEVICE_RESPONSE\");\n    const response = await channel.waitForSecureMessage(SecurePrivateMessageTypes.ACTIVATE_DEVICE_RESPONSE);\n    const { keyJson } = response.data;\n    const storageKey = `key|${keyName}`;\n    await this.lockbox.store(this.deviceKey, storageKey, keyJson);\n    this.loadedKeys[keyName] = await Key.fromJson(keyJson);\n\n    return this.loadedKeys[keyName];\n  }\n\n  public async confirmDeviceActivationRequest(\n    userID: string,\n    keyName: string,\n    message: string,\n    userAgent: string,\n    onJoinRequest: (request: PartnerRequest) => Promise<boolean>,\n    onKeyRequest: (request: ActivateDeviceRequest) => Promise<boolean>,\n  ): Promise<any> {\n    const channel = await this.comms.openSecurePrivateChannel(\n      userID,\n      this.deviceKey,\n      message,\n      userAgent,\n      onJoinRequest,\n    );\n\n    const event: ActivateDeviceRequest = await channel.waitForSecureMessage(\n      SecurePrivateMessageTypes.ACTIVATE_DEVICE_REQUEST,\n    );\n    try {\n      const approve = await onKeyRequest(event);\n      if (approve) {\n        const key = await this.getPersistentKey(keyName);\n\n        await channel.sendSecureMessage({\n          type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_RESPONSE,\n          data: {\n            keyName,\n            keyJson: await key.toJson(),\n          },\n        });\n      } else {\n        await channel.sendSecureMessage({\n          type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_DENIED,\n          data: {\n            reason: \"owner denied request\",\n          },\n        });\n      }\n    } catch (err) {\n      console.log(\"error\", err);\n      await channel.sendSecureMessage({\n        type: SecurePrivateMessageTypes.ACTIVATE_DEVICE_DENIED,\n        data: {\n          reason: \"key does not exist on device\",\n        },\n      });\n    }\n  }\n\n  public async selfDestruct(): Promise<boolean> {\n    KeyUtils.deleteDeviceCookie();\n    await this.lockbox.selfDestruct(this.deviceKey);\n\n    return true;\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/keys/KeyUtils.ts",
    "content": "import Cookies from \"js-cookie\";\nimport { Key } from \"./Key\";\n\nexport const DEVICE_KEYNAME = \"device\";\nexport const DEVICE_ID_COOKIE_NAME = `key|${DEVICE_KEYNAME}`;\n\nexport async function getOrCreateDeviceKey(): Promise<Key> {\n  let json = Cookies.get(`key|device`);\n  if (json) {\n    return Key.fromJson(json);\n  }\n\n  const deviceKey = await Key.generate();\n  json = await deviceKey.toJson();\n  Cookies.set(`key|device`, json);\n  return deviceKey;\n}\n\nexport function deleteDeviceCookie(): void {\n  Cookies.remove(`key|device`);\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/keys/PersistentKey.ts",
    "content": "import * as ethers from \"ethers\";\n\nexport class PersistentKey {\n  public static createRandom(): PersistentKey {\n    const wallet = ethers.Wallet.createRandom();\n    return PersistentKey.restore(wallet.privateKey);\n  }\n  public static restore(privateKey: string): PersistentKey {\n    return new PersistentKey(privateKey);\n  }\n\n  private wallet: ethers.Wallet;\n\n  public constructor(privateKey: string) {\n    this.wallet = new ethers.Wallet(privateKey);\n  }\n\n  public getEthAddress(): string {\n    return this.wallet.address;\n  }\n\n  public getPrivateKey(): string {\n    return this.wallet.privateKey;\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/iframe/services/messageTypes.ts",
    "content": "export enum IncomingMessageType {\n  GET_STATUS = \"GET_STATUS\",\n  CREATE_KEY = \"CREATE_KEY\",\n  GET_KEY = \"GET_KEY\",\n  GENERATE_KEY = \"GENERATE_KEY\",\n  SEND_DEVICE_ACTIVATION_REQUEST = \"SEND_DEVICE_ACTIVATION_REQUEST\",\n  CONFIRM_DEVICE_ACTIVATION_REQUEST = \"CONFIRM_DEVICE_ACTIVATION_REQUEST\",\n}\n"
  },
  {
    "path": "packages/sdk/src/index.ts",
    "content": "/** Publicly accessible modules that can be imported from this package. */\nexport * from \"./react\";\n"
  },
  {
    "path": "packages/sdk/src/react/CivilProvider.tsx",
    "content": "import * as React from \"react\";\nimport { Civil } from \"../sdk\";\n\nexport interface ICivilContext {\n  loading: boolean;\n  civil: Civil;\n}\n\nconst defaultContext: ICivilContext = {\n  loading: true,\n  civil: new Civil(),\n};\n\nexport const CivilContext = React.createContext(defaultContext);\n\nexport const CivilProvider: React.FunctionComponent = ({ children }) => {\n  const [context, setContext] = React.useState<ICivilContext>(defaultContext);\n\n  React.useMemo(() => {\n    context.civil.onLoad(() => {\n      setContext({\n        loading: false,\n        civil: context.civil,\n      });\n    });\n  }, []);\n\n  return (\n    <>\n      <CivilContext.Provider value={context}>{children}</CivilContext.Provider>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/sdk/src/react/NewsroomWithdraw.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport gql from \"graphql-tag\";\nimport { Query } from \"react-apollo\";\nimport { EthAddress, NewsroomInstance, TwoStepEthTransaction } from \"@joincivil/core\";\nimport {\n  LoadingIndicator,\n  CivilContext,\n  ICivilContext,\n  colors,\n  fonts,\n  mediaQueries,\n  Button,\n  TransactionButton,\n  ChevronAnchor,\n} from \"@joincivil/components\";\nimport { BoostButton, CurrencyLabel } from \"./boosts/BoostStyledComponents\";\nimport { BoostProceeds } from \"./boosts/BoostProceeds\";\nimport { urlConstants } from \"./urlConstants\";\n\nconst ethPriceQuery = gql`\n  query {\n    storefrontEthPrice\n  }\n`;\n\nconst Wrapper = styled.div`\n  padding: 0 0 16px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 0 0 8px;\n  }\n\n  p {\n    color: ${colors.accent.CIVIL_GRAY_0};\n    font-size: 14px;\n    line-height: 20px;\n    margin: 0 0 16px;\n  }\n`;\nconst Heading = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 17px;\n  font-weight: bold;\n  line-height: 23px;\n  margin-bottom: 18px;\n`;\n\nconst WithdrawWrapper = styled.div`\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\nconst Copy = styled.div`\n  max-width: 500px;\n\n  ${mediaQueries.MOBILE} {\n    margin-bottom: 24px;\n  }\n`;\nconst BalanceAndButton = styled.div`\n  text-align: right;\n\n  p {\n    font-size: 16px;\n  }\n\n  ${Button} {\n    margin-top: 8px;\n  }\n\n  svg {\n    vertical-align: middle;\n  }\n`;\n\nexport interface NewsroomWithdrawProps {\n  newsroomAddress: EthAddress;\n  isStripeConnected?: boolean;\n}\n\nexport interface NewsroomWithdrawState {\n  newsroom?: NewsroomInstance;\n  userAccount?: EthAddress;\n  multisigBalance?: number;\n}\n\nexport class NewsroomWithdraw extends React.Component<NewsroomWithdrawProps, NewsroomWithdrawState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  public constructor(props: NewsroomWithdrawProps) {\n    super(props);\n    this.state = {};\n  }\n\n  public async componentDidMount(): Promise<void> {\n    const userAccount = await this.context.civil!.accountStream.first().toPromise();\n    const newsroom = await this.context.civil!.newsroomAtUntrusted(this.props.newsroomAddress);\n\n    const multisigAddress = await newsroom!.getMultisigAddress();\n    if (!multisigAddress) {\n      // This can only happen if user created contract manually.\n      alert(\n        `This newsroom is owned by ${multisigAddress}, which is not a multisig wallet. You'll have to withdraw using another method.`,\n      );\n      return;\n    }\n\n    this.setState({\n      // @TODO Would be nice if this auto updated\n      multisigBalance: await this.context.civil!.accountBalance(multisigAddress),\n      userAccount,\n      newsroom,\n    });\n  }\n\n  public render(): JSX.Element {\n    return (\n      <Wrapper>\n        <BoostProceeds newsroomAddress={this.props.newsroomAddress} />\n        <WithdrawWrapper>\n          <Copy>\n            <Heading>Withdraw funds</Heading>\n            <p>\n              Transfer or withdraw funds from your Newsroom Wallet to collect proceeds from Boosts. You’ll be able to\n              exchange ETH for fiat currency. Reminder: only Newsroom Officers can access the Newsroom Wallet.\n            </p>\n            {(this.props.isStripeConnected === true || typeof this.props.isStripeConnected === \"undefined\") && (\n              <p>\n                {this.props.isStripeConnected === true ? \"Y\" : \"If you have connected Stripe to your newsroom, y\"}ou may\n                have additional funds from credit card proceeds in your{\" \"}\n                <a href=\"https://dashboard.stripe.com\" target=\"_blank\">\n                  Stripe account\n                </a>\n                .\n              </p>\n            )}\n            <p>\n              <ChevronAnchor target=\"_blank\" href={urlConstants.FAQ_BOOST_WITHDRAWL}>\n                Learn&nbsp;More\n              </ChevronAnchor>\n            </p>\n          </Copy>\n          <BalanceAndButton>\n            <p>\n              Newsroom balance:{\" \"}\n              <b>\n                {typeof this.state.multisigBalance !== \"undefined\" && (\n                  <>\n                    {this.state.multisigBalance.toFixed(4)} <CurrencyLabel>ETH</CurrencyLabel>\n                  </>\n                )}\n              </b>\n              <br />\n              <Query query={ethPriceQuery}>\n                {({ loading, error, data }) => {\n                  if (loading || typeof this.state.multisigBalance === \"undefined\") {\n                    return <LoadingIndicator />;\n                  }\n                  return (\n                    <>\n                      (${(data.storefrontEthPrice * this.state.multisigBalance).toFixed(2)}{\" \"}\n                      <CurrencyLabel secondary={true}>USD</CurrencyLabel>)\n                    </>\n                  );\n                }}\n              </Query>\n            </p>\n            {this.renderButton()}\n          </BalanceAndButton>\n        </WithdrawWrapper>\n      </Wrapper>\n    );\n  }\n\n  private renderButton = (): JSX.Element => {\n    if (!this.state.newsroom) {\n      return <LoadingIndicator />;\n    }\n    return (\n      <TransactionButton\n        Button={props => (\n          <BoostButton disabled={props.disabled} onClick={props.onClick}>\n            Withdraw\n          </BoostButton>\n        )}\n        disabled={!this.state.multisigBalance || !this.state.userAccount}\n        transactions={[\n          {\n            transaction: this.withdrawTx,\n            postTransaction: this.postTransaction,\n          },\n        ]}\n      >\n        Withdraw\n      </TransactionButton>\n    );\n  };\n\n  private withdrawTx = async (): Promise<TwoStepEthTransaction<any> | void> => {\n    if (\n      !this.state.multisigBalance ||\n      !this.state.userAccount ||\n      !this.context.civil ||\n      !(window as any).ethereum ||\n      !this.state.newsroom\n    ) {\n      // @TODO/loginV2 migrate away from window.ethereum\n      // Currently, everywhere we might use this component already checks and prompts user to connect web3, so we don't need any special handling in this case at the moment.\n      return;\n    }\n\n    return this.state.newsroom.transferEthFromMultisig(this.state.multisigBalance.toString(), this.state.userAccount);\n  };\n\n  private postTransaction = (): void => {\n    // @TODO If this updated automatically that would be better.\n    this.setState({ multisigBalance: 0 });\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/StoryBoost/StoryBoost.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport styled from \"styled-components\";\nimport {\n  CivilContext,\n  ICivilContext,\n  LoadingMessage,\n  ErrorNotFound,\n  Contributors,\n  ContributorCount,\n  Payments,\n  PaymentsModal,\n  StoryNewsroomStatus,\n} from \"@joincivil/components\";\nimport { StoryBoostData } from \"./types\";\nimport { storyBoostQuery } from \"./queries\";\nimport { fonts, colors, PaymentButton } from \"@joincivil/elements\";\n\nconst StoryBoostLoading = styled(LoadingMessage)`\n  padding: 48px 0;\n`;\nconst StoryBoostError = styled(ErrorNotFound)`\n  padding: 32px 16px 16px;\n  text-align: center;\n`;\n\nconst StoryBoostHeader = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  font-family: ${fonts.SANS_SERIF};\n  padding: 15px 15px 12px;\n\n  h2 {\n    font-size: 18px;\n    font-weight: 600;\n    line-height: 26px;\n    margin: 0;\n  }\n`;\n\nconst StoryBoostStatus = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 4px;\n\n  svg {\n    vertical-align: bottom;\n  }\n`;\n\nconst StoryBoostContent = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 15px;\n`;\n\nconst StoryBoostFooter = styled.div`\n  align-items: center;\n  display: flex;\n  font-family: ${fonts.SANS_SERIF};\n  justify-content: space-between;\n  padding: 12px 15px;\n\n  span {\n    font-size: 16px;\n    font-weight: 600;\n  }\n`;\n\nconst SupportText = styled.span`\n  cursor: pointer;\n  &:hover {\n    color: ${colors.accent.CIVIL_BLUE};\n  }\n`;\n\nconst StyledPaymentButton = styled(PaymentButton)`\n  background: ${colors.accent.CIVIL_BLUE};\n  width: 130px;\n  padding: 6px;\n  font-size: 16px;\n  font-weight: bold;\n  border-radius: 4px;\n  &,\n  &:hover {\n    color: ${colors.basic.WHITE};\n    svg path {\n      fill: ${colors.basic.WHITE};\n    }\n  }\n`;\n\nexport interface StoryBoostProps {\n  boostId: string;\n}\n\nexport interface StoryBoostState {\n  paymentsOpen: boolean;\n}\n\nexport class StoryBoost extends React.Component<StoryBoostProps, StoryBoostState> {\n  public static contextType = CivilContext;\n  public static context: ICivilContext;\n\n  public constructor(props: any) {\n    super(props);\n    this.state = {\n      paymentsOpen: false,\n    };\n  }\n\n  public render(): JSX.Element {\n    const id = this.props.boostId;\n\n    return (\n      <Query query={storyBoostQuery} variables={{ id }}>\n        {({ loading, error, data }) => {\n          if (loading) {\n            return <StoryBoostLoading>Loading Story Boost</StoryBoostLoading>;\n          } else if (error || !data || !data.postsGet) {\n            console.error(\"error loading Story Feed data. error: \", error);\n            return (\n              <StoryBoostError>\n                There was an error loading this Story Boost:\n                <br />\n                <code>{error ? error.toString() : \"no data returned\"}</code>\n              </StoryBoostError>\n            );\n          }\n\n          const storyBoostData = data.postsGet as StoryBoostData;\n          const activeChallenge =\n            storyBoostData.channel.listing.challenge && storyBoostData.channel.listing.challenge.challengeID\n              ? true\n              : false;\n\n          return (\n            <>\n              <StoryBoostHeader>\n                <StoryBoostStatus>\n                  <StoryNewsroomStatus\n                    newsroomName={storyBoostData.channel.newsroom.name}\n                    activeChallenge={activeChallenge}\n                  />\n                </StoryBoostStatus>\n                <h2>{storyBoostData.openGraphData.title}</h2>\n              </StoryBoostHeader>\n              <StoryBoostContent>\n                <Contributors sortedContributors={storyBoostData.groupedSanitizedPayments} />\n                {storyBoostData.groupedSanitizedPayments && storyBoostData.groupedSanitizedPayments.length !== 0 ? (\n                  <ContributorCount\n                    totalContributors={storyBoostData.groupedSanitizedPayments.length}\n                    displayedContributors={storyBoostData.groupedSanitizedPayments}\n                  />\n                ) : (\n                  <></>\n                )}\n              </StoryBoostContent>\n              <StoryBoostFooter>\n                <SupportText onClick={() => this.handleStartPayment(\"Support this newsroom\")}>\n                  Support this newsroom\n                </SupportText>\n                <StyledPaymentButton onClick={() => this.handleStartPayment(\"Boost\")} />\n              </StoryBoostFooter>\n              <PaymentsModal open={this.state.paymentsOpen}>\n                <Payments\n                  postId={this.props.boostId}\n                  newsroomName={storyBoostData.channel.newsroom.name}\n                  activeChallenge={activeChallenge}\n                  paymentAddress={storyBoostData.channel.newsroom.multisigAddress}\n                  isStripeConnected={storyBoostData.channel.isStripeConnected}\n                  stripeAccountID={storyBoostData.channel.stripeAccountID}\n                  handleClose={this.handleClose}\n                />\n              </PaymentsModal>\n            </>\n          );\n        }}\n      </Query>\n    );\n  }\n\n  private handleStartPayment = (trackingLabel: string) => {\n    this.context.fireAnalyticsEvent(\n      \"embedded story boost\",\n      \"boost payment clicked: \" + trackingLabel,\n      this.props.boostId,\n    );\n    this.setState({ paymentsOpen: true });\n  };\n  private handleClose = () => {\n    this.setState({ paymentsOpen: false });\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/StoryBoost/embed.tsx",
    "content": "import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport gql from \"graphql-tag\";\nimport { ApolloProvider, Mutation, Query } from \"react-apollo\";\nimport { ApolloClient } from \"apollo-client\";\nimport { InMemoryCache } from \"apollo-cache-inmemory\";\nimport { HttpLink } from \"apollo-link-http\";\nimport * as Sentry from \"@sentry/browser\";\nimport { SENTRY_DSN } from \"../../constants\";\nimport { BoostEmbedIframe } from \"../boosts/BoostEmbedIframe\";\n\nconst GET_LINK_QUERY = gql`\n  query($reference: String!) {\n    postsGetByReference(reference: $reference) {\n      id\n    }\n  }\n`;\nconst CREATE_LINK_MUTATION = gql`\n  mutation($input: PostCreateExternalLinkInput!) {\n    postsCreateExternalLinkEmbedded(input: $input) {\n      id\n    }\n  }\n`;\n\n// Need to declare this out here because this `document.currentScript` reference is lost during callbacks\nconst currentScript: HTMLScriptElement | null = document.currentScript as any;\nif (!currentScript) {\n  throw Error(\"Civil Boost Embed: Failed to get document.currentScript\");\n}\nif (currentScript.closest && !currentScript.closest(\"body\")) {\n  throw Error(\n    \"Civil Boost Embed: Boost script is not placed in <body> and so cannot be displayed. Script must be placed within <body> at the location where you want the embed to show up.\",\n  );\n}\n\nconst ENVIRONMENT = currentScript.src && currentScript.src.indexOf(\"civil.co\") !== -1 ? \"production\" : \"staging\";\n\nSentry.init({\n  dsn: SENTRY_DSN,\n  environment: ENVIRONMENT,\n  // We don't want to capture errors by default since we are being loaded on a newsroom page.\n  defaultIntegrations: false,\n});\nSentry.configureScope(scope => {\n  scope.setTag(\"embed-loader-origin\", document.location.origin);\n});\n\nlet dappOrigin = ENVIRONMENT === \"production\" ? \"https://civil.co\" : \"https://staging.civil.app\";\nif (currentScript.src.indexOf(\"localhost:3001\") !== -1) {\n  dappOrigin = \"http://localhost:3000\";\n}\nconst fallbackFallbackUrl = dappOrigin + \"/storyfeed\"; // if embed doesn't load, suggest they go here\n\nconst apolloClient = new ApolloClient({\n  cache: new InMemoryCache(),\n  link: new HttpLink({\n    uri:\n      ENVIRONMENT === \"production\" ? \"https://graphql.civil.co/v1/query\" : \"https://graphql.staging.civil.app/v1/query\",\n  }),\n});\n\nfunction getPostUrl(): string {\n  let url = ((document.querySelector(\"link[rel=canonical]\") as HTMLLinkElement) || {}).href;\n  if (!url) {\n    url = ((document.querySelector(\"meta[property='og:url'\") as HTMLMetaElement) || {}).content;\n  }\n  if (!url) {\n    url = document.location.href;\n  }\n\n  // @TODO/tobek dev/temp testing - we don't want to post a localhost dev page to civil, so pick another URL\n  if (document.location.origin.indexOf(\"localhost\") !== -1) {\n    const FALLBACK_STORY =\n      \"https://blockclubchicago.org/2019/11/04/south-sides-own-sweet-potato-patch-will-deliver-healthy-food-to-homes-in-food-deserts/\";\n    url = window.prompt(\"enter a URL to get/create\", FALLBACK_STORY) || FALLBACK_STORY;\n  }\n\n  return url;\n}\n\nfunction init(): void {\n  const url = getPostUrl();\n\n  const renderContainer = document.createElement(\"div\");\n  renderContainer.classList.add(\"civil-story-boost-wrapper\");\n  renderContainer.style.maxWidth = \"500px\";\n  renderContainer.style.margin = \"0 auto\";\n  currentScript!.parentNode!.insertBefore(renderContainer, currentScript);\n\n  ReactDOM.render(\n    // @ts-ignore: bugs with apollo types e.g. https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/166\n    <ApolloProvider client={apolloClient}>\n      <Query<any> query={GET_LINK_QUERY} variables={{ reference: \"externallink+\" + url }}>\n        {({ loading: getLoading, error: getError, data: getData }) => {\n          if (getLoading) {\n            return <BoostEmbedIframe noIframe={true} fallbackUrl={fallbackFallbackUrl} />;\n          }\n          if (getError) {\n            // If \"could not find post\" that's fine, we'll create it with mutation, but if it's a different error then bomb:\n            if (getError.message.indexOf(\"could not find post\") === -1) {\n              console.error(\"Error getting boost ID via postsGetByReference for url\", url, \"error:\", getError);\n              Sentry.addBreadcrumb(getError);\n              Sentry.captureMessage(\n                \"Error getting boost ID via postsGetByReference for url \" + url,\n                Sentry.Severity.Error,\n              );\n\n              return (\n                <BoostEmbedIframe\n                  noIframe={true}\n                  fallbackUrl={fallbackFallbackUrl}\n                  error={\"Error getting boost ID: \" + getError.message || getError.toString()}\n                />\n              );\n            }\n          }\n          if (!getData || !getData.postsGetByReference || !getData.postsGetByReference.id) {\n            return (\n              <Mutation<any>\n                mutation={CREATE_LINK_MUTATION}\n                variables={{ input: { url, channelID: \"@TODO/tobek remove when API updated\" } }}\n              >\n                {(mutation, { loading: createLoading, data: createData, error: createError, called: createCalled }) => {\n                  if (!createCalled && !createError) {\n                    console.warn(\"Attempting to post external link to Civil:\", url);\n                    Sentry.captureMessage(\"Attempting to post external link to Civil: \" + url, Sentry.Severity.Log);\n                    window.setTimeout(mutation, 0);\n                    return <BoostEmbedIframe noIframe={true} fallbackUrl={fallbackFallbackUrl} />;\n                  }\n                  if (createLoading) {\n                    return <BoostEmbedIframe noIframe={true} fallbackUrl={fallbackFallbackUrl} />;\n                  }\n                  if (createError || !createData || !createData.postsCreateExternalLinkEmbedded) {\n                    console.error(\n                      \"Error posting link via postsCreateExternalLinkEmbedded\",\n                      url,\n                      createError,\n                      createData,\n                    );\n                    if (createError) {\n                      Sentry.addBreadcrumb(createError);\n                    }\n                    Sentry.captureMessage(\n                      \"Error posting link via postsCreateExternalLinkEmbedded \" + url,\n                      Sentry.Severity.Error,\n                    );\n\n                    return (\n                      <BoostEmbedIframe\n                        noIframe={true}\n                        fallbackUrl={fallbackFallbackUrl}\n                        error={\n                          \"Error posting link to Civil: \" +\n                          (createError ? createError.message || createError.toString() : \"no data returned\")\n                        }\n                      />\n                    );\n                  }\n\n                  const newBoostId = createData.postsCreateExternalLinkEmbedded.id;\n                  const newLinkEmbedUrl = `${dappOrigin}/embed/boost/story/${newBoostId}`;\n                  return (\n                    <BoostEmbedIframe iframeSrc={newLinkEmbedUrl} fallbackUrl={newLinkEmbedUrl} iframeId={newBoostId} />\n                  );\n                }}\n              </Mutation>\n            );\n          }\n\n          const boostId = getData.postsGetByReference.id;\n          const embedUrl = `${dappOrigin}/embed/boost/story/${boostId}`;\n          return (\n            // @TODO/tobek Since we don't have a permalink for story boost on dapp, for now the fallback URL can go directly to same embed URL, which should work outside iframe even if privacy badger or something is blocking in iframe.\n            <BoostEmbedIframe iframeSrc={embedUrl} fallbackUrl={embedUrl} iframeId={boostId} />\n          );\n        }}\n      </Query>\n    </ApolloProvider>,\n    renderContainer,\n  );\n}\n\nfunction wrappedInit(): void {\n  try {\n    init();\n  } catch (err) {\n    Sentry.captureException(err);\n    throw err;\n  }\n}\n\nif (document.readyState === \"complete\") {\n  wrappedInit();\n} else {\n  window.addEventListener(\"load\", wrappedInit);\n}\n"
  },
  {
    "path": "packages/sdk/src/react/StoryBoost/index.ts",
    "content": "export * from \"./StoryBoost\";\n"
  },
  {
    "path": "packages/sdk/src/react/StoryBoost/queries.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const storyBoostQuery = gql`\n  query StoryBoost($id: String!) {\n    postsGet(id: $id) {\n      ... on PostExternalLink {\n        openGraphData {\n          title\n        }\n        channel {\n          id\n          isStripeConnected\n          stripeAccountID\n          newsroom {\n            name\n            multisigAddress\n          }\n          listing {\n            challenge {\n              challengeID\n            }\n          }\n        }\n        groupedSanitizedPayments {\n          usdEquivalent\n          payerChannel {\n            handle\n            tiny72AvatarDataUrl\n          }\n        }\n      }\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/sdk/src/react/StoryBoost/types.ts",
    "content": "export interface StoryBoostData {\n  openGraphData: {\n    title: string;\n  };\n  channel: {\n    isStripeConnected: boolean;\n    stripeAccountID: string;\n    newsroom: {\n      name: string;\n      multisigAddress: string;\n    };\n    listing: {\n      challenge: {\n        challengeID: string;\n      };\n    };\n  };\n  groupedSanitizedPayments: StoryBoostPaymentsData[];\n}\n\nexport interface StoryBoostPaymentsData {\n  usdEquivalent: number;\n  payerChannel: {\n    handle: string;\n    tiny72AvatarDataUrl: string;\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/Boost.stories.tsx",
    "content": "import * as React from \"react\";\nimport { storiesOf } from \"@storybook/react\";\nimport apolloStorybookDecorator from \"apollo-storybook-react\";\nimport { BoostCard } from \"./BoostCard\";\n\nconst boost = {\n  id: \"87d0fe80-505f-4c1c-8a09-db7e20cb1045\",\n  address: \"0x...\",\n  title: \"Help The Colorado Sun stage a panel discussion about the impact of the opioid crisis on Colorado\",\n  dateEnd: \"2019-07-25T12:00:00Z\",\n  why:\n    \"The opioid crisis is breaking hearts in Colorado — and that’s forcing doctors to make tough choices. The Colorado Sun is creating a panel discussion with doctors, residents, and families to dive deeper and learn more about the impact of the opioid crisis. With your help, we can bring new resources and help victims by having people discuss their experieences and plan on better ways to help this issue.\",\n  what:\n    \"We’ll be setting up a free panel discussion for the community. We’ll invite families, people, and anyone who would like to join in this panel discussion. The event will be open to all on a first come basis with invites being sent out. This panel will be a 1 to 2 hour discussion in our local theater.\",\n  about:\n    \"The Colorado Sun is a journalist-owned, ad-free news outlet based in Denver but which strives to cover all of Colorado so that our state — our community — can better understand itself.\",\n  items: [\n    { item: \"Venue deposit\", cost: 100 },\n    { item: \"Flyers and materials\", cost: 100 },\n    { item: \"Stage equipment\", cost: 25 },\n  ],\n  channelID: \"0xabc123\",\n  goalAmount: 325,\n  paymentsTotal: 25,\n  channel: {\n    id: \"\",\n    channelType: \"\",\n    handle: \"fake\",\n    isStripeConnected: true,\n    stripeAccountID: \"acct_id_00000\",\n    newsroom: {\n      contractAddress: \"0xabc123\",\n    },\n  },\n  groupedSanitizedPayments: [\n    {\n      usdEquivalent: 20,\n      payerChannel: {\n        handle: \"Sarah\",\n        tiny72AvatarDataUrl: \"https://placehold.it/100\",\n      },\n    },\n  ],\n};\n\nconst typeDefs = `\n  type Query {\n    name: String!\n    url: String!\n  }\n  schema {\n    query: Query\n  }\n`;\n\nconst mocks = {\n  Query: () => {\n    return {\n      name: \"Block Club Chicago\",\n      url: \"https://blockclubchicago.org/\",\n    };\n  },\n};\n\nconst newsroomData = {\n  name: \"Block Club Chicago\",\n  url: \"https://blockclubchicago.org/\",\n  charter: {},\n} as any;\n\nconst onClickFunc = () => {\n  console.log(\"clicked!\");\n};\n\nstoriesOf(\"Boosts\", module)\n  .addDecorator(\n    apolloStorybookDecorator({\n      typeDefs,\n      mocks,\n    }),\n  )\n  .add(\"Card List View\", () => {\n    return (\n      <BoostCard\n        boostOwner={true}\n        newsroomData={newsroomData}\n        handle={\"fake\"}\n        boostData={boost}\n        open={false}\n        boostId={boost.id}\n        handlePayments={onClickFunc}\n        paymentSuccess={false}\n      />\n    );\n  })\n  .add(\"Card Full View\", () => {\n    return (\n      <BoostCard\n        boostData={boost}\n        newsroomData={newsroomData}\n        handle={\"fake\"}\n        boostOwner={true}\n        open={true}\n        boostId={boost.id}\n        handlePayments={onClickFunc}\n        paymentSuccess={false}\n      />\n    );\n  });\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/Boost.tsx",
    "content": "import * as React from \"react\";\nimport { Query } from \"react-apollo\";\nimport { withRouter, RouteComponentProps } from \"react-router\";\nimport styled from \"styled-components\";\nimport { boostQuery, boostNewsroomQuery } from \"./queries\";\nimport { BoostData, BoostNewsroomData } from \"./types\";\nimport { BoostCard } from \"./BoostCard\";\nimport { BoostForm } from \"./BoostForm\";\nimport { BoostPayments } from \"./BoostPayments\";\nimport { BoostWrapper } from \"./BoostStyledComponents\";\nimport { NewsroomWithdraw } from \"../NewsroomWithdraw\";\nimport { BoostEmbedNoScroll } from \"./BoostEmbedNoScroll\";\nimport { withBoostPermissions, BoostPermissionsInjectedProps } from \"./BoostPermissionsHOC\";\nimport {\n  LoadingMessage,\n  CivilContext,\n  ICivilContext,\n  colors,\n  mediaQueries,\n  RENDER_CONTEXT,\n} from \"@joincivil/components\";\n\nconst WithdrawWrapper = styled.div`\n  border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  padding: 0 0 16px;\n  margin: 36px 0;\n\n  ${mediaQueries.MOBILE} {\n    margin: 18px 0;\n  }\n`;\n\nexport interface BoostExternalProps {\n  boostId: string;\n  open: boolean;\n  disableOwnerCheck?: boolean;\n  disableHelmet?: boolean;\n  editMode?: boolean;\n  payment?: boolean;\n}\n\nexport type BoostProps = BoostExternalProps & BoostPermissionsInjectedProps & RouteComponentProps;\n\nexport interface BoostStates {\n  paymentSuccess: boolean;\n}\n\nclass BoostComponent extends React.Component<BoostProps, BoostStates> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  public constructor(props: BoostProps) {\n    super(props);\n    this.state = {\n      paymentSuccess: false,\n    };\n  }\n\n  public componentDidMount(): void {\n    const { history } = this.props;\n    if (history && history.location && history.location.state && history.location.state.paymentSuccess) {\n      this.setState({ paymentSuccess: history.location.state.paymentSuccess });\n    }\n  }\n\n  public render(): JSX.Element {\n    const id = this.props.boostId;\n\n    return (\n      <Query query={boostQuery} variables={{ id }}>\n        {({ loading, error, data, refetch }) => {\n          if (loading) {\n            return (\n              <BoostWrapper open={this.props.open}>\n                <LoadingMessage>Loading Project Boost</LoadingMessage>\n              </BoostWrapper>\n            );\n          } else if (error) {\n            console.error(\"error loading boost data. error:\", error, \"data:\", data);\n            return (\n              <BoostWrapper open={this.props.open}>\n                Error loading Project Boost: {error ? JSON.stringify(error) : \"No Boost data found\"}\n              </BoostWrapper>\n            );\n          }\n\n          const boostData = data.postsGet as BoostData;\n          const newsroomContractAddress = boostData.channel.newsroom.contractAddress;\n          const handle = boostData.channel.handle;\n\n          // Set up boost permissions checks HOC:\n          this.props.setNewsroomContractAddress(newsroomContractAddress);\n\n          return (\n            <Query query={boostNewsroomQuery} variables={{ addr: newsroomContractAddress }}>\n              {({ loading: newsroomQueryLoading, error: newsroomQueryError, data: newsroomQueryData }) => {\n                if (newsroomQueryLoading) {\n                  return (\n                    <BoostWrapper open={this.props.open}>\n                      <LoadingMessage>Loading Newsroom</LoadingMessage>\n                    </BoostWrapper>\n                  );\n                } else if (newsroomQueryError || !newsroomQueryData || !newsroomQueryData.listing) {\n                  console.error(\"error loading newsroom data. error:\", newsroomQueryError, \"data:\", newsroomQueryData);\n                  return (\n                    <BoostWrapper open={this.props.open}>\n                      Error loading Project Boost newsroom data:{\" \"}\n                      {newsroomQueryError\n                        ? JSON.stringify(newsroomQueryError)\n                        : `No newsroom listing found at ${newsroomContractAddress}`}\n                    </BoostWrapper>\n                  );\n                }\n                const newsroomData = newsroomQueryData.listing as BoostNewsroomData;\n\n                if (this.props.editMode) {\n                  return this.renderEditMode(boostData, newsroomData);\n                }\n\n                if (this.props.payment) {\n                  const activeChallenge = newsroomData.challenge && newsroomData.challenge.challengeID ? true : false;\n                  return (\n                    <BoostPayments\n                      boostId={id}\n                      title={boostData.title}\n                      newsroomName={newsroomData.name}\n                      activeChallenge={activeChallenge}\n                      paymentAddr={newsroomData.owner}\n                      handleBackToListing={this.handleBackToListing}\n                      handlePaymentSuccess={async () => {\n                        await refetch();\n                        this.handlePaymentSuccess();\n                      }}\n                      isStripeConnected={boostData.channel.isStripeConnected}\n                      stripeAccountID={boostData.channel.stripeAccountID}\n                      history={this.props.history}\n                    />\n                  );\n                }\n\n                return (\n                  <>\n                    {this.props.open && this.context.renderContext === RENDER_CONTEXT.EMBED && (\n                      <BoostEmbedNoScroll boostId={id} />\n                    )}\n\n                    {/*@TODO/tobek Move to Newsroom Boosts page when we have that.*/}\n                    {this.props.open && this.props.boostOwner && (\n                      <WithdrawWrapper>\n                        <NewsroomWithdraw\n                          newsroomAddress={boostData.channel.newsroom.contractAddress}\n                          isStripeConnected={boostData.channel.isStripeConnected}\n                        />\n                      </WithdrawWrapper>\n                    )}\n                    <BoostCard\n                      boostData={boostData}\n                      newsroomData={newsroomData}\n                      handle={handle}\n                      boostOwner={this.props.boostOwner}\n                      open={this.props.open}\n                      boostId={id}\n                      disableHelmet={this.props.disableHelmet}\n                      handlePayments={this.startPayment}\n                      paymentSuccess={this.state.paymentSuccess}\n                    />\n                  </>\n                );\n              }}\n            </Query>\n          );\n        }}\n      </Query>\n    );\n  }\n\n  private renderEditMode(boostData: BoostData, newsroomData: BoostNewsroomData): JSX.Element {\n    const listingUrl = `${document.location.origin}/listing/${boostData.channel.newsroom.contractAddress}`;\n    return (\n      <BoostForm\n        channelID={boostData.channel.id}\n        editMode={true}\n        boostId={this.props.boostId}\n        initialBoostData={boostData}\n        newsroomData={newsroomData}\n        newsroomContractAddress={boostData.channel.newsroom.contractAddress}\n        newsroomListingUrl={listingUrl}\n      />\n    );\n  }\n\n  private startPayment = (usdToSpend: number) => {\n    this.props.history.push({\n      // Current pathname shouldn't have trailing slash, but could happen if someone copied the payment route and deleted \"payment\" instead of \"/payment\", as I keep doing when testing, so, get rid of it\n      pathname: this.props.location.pathname.replace(/\\/$/, \"\") + \"/payment\",\n      state: { usdToSpend },\n    });\n    this.context.fireAnalyticsEvent(\"boosts\", \"start support\", this.props.boostId, usdToSpend);\n  };\n\n  private handlePaymentSuccess = () => {\n    this.props.history.push({\n      pathname: this.props.location.pathname.replace(\"/payment\", \"\"),\n      state: { paymentSuccess: true },\n    });\n  };\n\n  private handleBackToListing = () => {\n    this.props.history.push(this.props.location.pathname.replace(\"/payment\", \"\"));\n  };\n}\n\n// @WORKAROUND/tobek In order to avoid spurious \"Function components do not support contextType\" runtime error when using the component output by `withRouter` HOC as input into a HOC that uses context, you need to wrap it in a dummy component (https://github.com/facebook/react/issues/14061). Ideally we could use a generalizable `withRouterWorkaround` (https://github.com/facebook/react/issues/14061#issuecomment-471959332) instead of declaring the dummy component here, but that crashes typescript because of a typescript bug (https://github.com/microsoft/TypeScript/issues/33133).\nconst WrappedBoostWorkaround = (props: BoostProps) => <BoostComponent {...props} />;\nexport const Boost = withBoostPermissions(withRouter(WrappedBoostWorkaround));\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostCard.tsx",
    "content": "import * as React from \"react\";\nimport { debounce } from \"lodash\";\n\nimport { QuestionToolTip, HelmetHelper, CurrencyInput, Contributors, ContributorCount } from \"@joincivil/components\";\nimport { renderPTagsFromLineBreaks } from \"@joincivil/utils\";\n\nimport { BoostProgress } from \"./BoostProgress\";\nimport { BoostData, BoostNewsroomData } from \"./types\";\nimport {\n  BoostButton,\n  BoostFlexCenter,\n  BoostWrapper,\n  BoostTitle,\n  BoostDescription,\n  BoostDescriptionWhy,\n  BoostDescriptionTable,\n  BoostProgressCol,\n  BoostNotice,\n  BoostNotificationContain,\n  BoostAmountInputWrap,\n  BoostAmountInput,\n  BoostDescShareFlex,\n  BoostDescShareFlexRight,\n  BoostCardShare,\n} from \"./BoostStyledComponents\";\nimport { BoostPaymentSuccess } from \"./BoostTextComponents\";\nimport { BoostNewsroom } from \"./BoostNewsroom\";\nimport { BoostCompleted } from \"./BoostCompleted\";\nimport * as boostCardImage from \"../../images/boost-card.png\";\nimport { urlConstants } from \"../urlConstants\";\nimport { BoostCardListView } from \"./BoostCardListView\";\n\nexport interface BoostCardProps {\n  boostData: BoostData;\n  newsroomData: BoostNewsroomData;\n  handle?: string;\n  open: boolean;\n  boostId: string;\n  paymentSuccess: boolean;\n  boostOwner?: boolean;\n  disableHelmet?: boolean;\n  handlePayments(amount: number): void;\n}\n\nexport interface BoostCardStates {\n  amount: number;\n}\n\nexport class BoostCard extends React.Component<BoostCardProps, BoostCardStates> {\n  public amountInputEl?: HTMLElement | null;\n\n  public constructor(props: any) {\n    super(props);\n    this.state = {\n      amount: 0,\n    };\n\n    this.handleAmount = debounce(this.handleAmount.bind(this), 300);\n  }\n  public render(): JSX.Element {\n    const { open, boostData, newsroomData, boostId, paymentSuccess, boostOwner, disableHelmet, handle } = this.props;\n    const timeRemaining = this.timeRemaining(boostData.dateEnd);\n    const timeEnded = timeRemaining === \"Boost Ended\";\n    const goalReached = boostData.paymentsTotal >= boostData.goalAmount;\n    const newsroomContractAddress = boostData.channel.newsroom.contractAddress;\n    let btnText = \"Support\";\n    if (timeEnded) {\n      btnText = \"Boost Ended\";\n    }\n    const inputDisabled = timeEnded || !newsroomData.whitelisted;\n    const totalContributors = boostData.groupedSanitizedPayments ? boostData.groupedSanitizedPayments.length : 0;\n\n    if (!open) {\n      return (\n        <BoostCardListView\n          open={open}\n          boostData={boostData}\n          newsroomData={newsroomData}\n          handle={handle}\n          boostId={boostId}\n          boostOwner={boostOwner}\n          disableHelmet={disableHelmet}\n          timeRemaining={timeRemaining}\n          newsroomContractAddress={newsroomContractAddress}\n        />\n      );\n    }\n\n    return (\n      <>\n        {!disableHelmet && (\n          <HelmetHelper\n            title={`${boostData.title} - ${newsroomData.name} - The Civil Registry`}\n            description={boostData.about}\n            image={boostCardImage}\n            meta={{\n              \"og:site_name\": \"Civil Registry\",\n              \"og:type\": \"website\",\n              \"twitter:card\": \"summary\",\n            }}\n          />\n        )}\n\n        {boostOwner && timeEnded && (\n          <BoostNotificationContain>\n            <BoostCompleted goalReached={goalReached} />\n          </BoostNotificationContain>\n        )}\n        {paymentSuccess && (\n          <BoostNotificationContain>\n            <BoostPaymentSuccess />\n          </BoostNotificationContain>\n        )}\n\n        <BoostWrapper open={open}>\n          <BoostTitle>{boostData.title}</BoostTitle>\n\n          <BoostNewsroom\n            open={open}\n            boostOwner={boostOwner}\n            boostId={boostId}\n            newsroomContractAddress={newsroomContractAddress}\n            charterUri={newsroomData.charter && newsroomData.charter.uri}\n            newsroomData={newsroomData}\n            handle={handle}\n            disableHelmet={disableHelmet}\n          />\n\n          <BoostFlexCenter>\n            <BoostProgressCol open={open}>\n              <BoostProgress\n                open={open}\n                goalAmount={boostData.goalAmount}\n                paymentsTotal={boostData.paymentsTotal}\n                timeRemaining={timeRemaining}\n              />\n            </BoostProgressCol>\n            <BoostAmountInputWrap>\n              <BoostAmountInput>\n                <CurrencyInput\n                  label={\"\"}\n                  placeholder={\"0\"}\n                  name={\"BoostAmount\"}\n                  onChange={this.handleAmount}\n                  disabled={inputDisabled}\n                  inputRef={el => {\n                    this.amountInputEl = el;\n                  }}\n                />\n              </BoostAmountInput>\n              <BoostButton disabled={inputDisabled} onClick={this.handleBoostButton}>\n                {btnText}\n              </BoostButton>\n            </BoostAmountInputWrap>\n          </BoostFlexCenter>\n          {!newsroomData.whitelisted && (\n            <>\n              <BoostNotice>\n                The newsroom that created this Project Boost has been removed from the registry, so users can no longer\n                support it via this Project Boost.\n              </BoostNotice>\n            </>\n          )}\n          <BoostNotice>\n            All funds raised will go directly to the newsroom even if this goal is not met.\n            <QuestionToolTip\n              explainerText={\n                \"Any money you give goes directly to the newsroom. Civil does not take a cut of any funds raised.\"\n              }\n            />\n          </BoostNotice>\n          <BoostDescShareFlex>\n            <BoostDescriptionWhy>{renderPTagsFromLineBreaks(boostData.why)}</BoostDescriptionWhy>\n            <BoostDescShareFlexRight>\n              <BoostCardShare\n                boostId={this.props.boostId}\n                newsroom={this.props.newsroomData.name}\n                title={boostData.title}\n              />\n              <Contributors sortedContributors={boostData.groupedSanitizedPayments} />\n              {totalContributors !== 0 ? (\n                <ContributorCount\n                  totalContributors={totalContributors}\n                  displayedContributors={boostData.groupedSanitizedPayments}\n                />\n              ) : (\n                <></>\n              )}\n            </BoostDescShareFlexRight>\n          </BoostDescShareFlex>\n          <BoostDescription>\n            <h3>What the outcome will be</h3>\n            {renderPTagsFromLineBreaks(boostData.what)}\n          </BoostDescription>\n          <BoostDescription>\n            <h3>About the newsroom</h3>\n            {renderPTagsFromLineBreaks(boostData.about)}\n          </BoostDescription>\n          <BoostDescriptionTable>\n            <h3>Where your support goes</h3>\n            <table>\n              <thead>\n                <tr>\n                  <th>Item</th>\n                  <th>Cost</th>\n                </tr>\n              </thead>\n              <tbody>\n                {boostData.items.map((item: any, i: number) => (\n                  <tr key={i}>\n                    <td>{item.item}</td>\n                    <td>{\"$\" + item.cost}</td>\n                  </tr>\n                ))}\n              </tbody>\n            </table>\n          </BoostDescriptionTable>\n          <BoostDescription>\n            <h3>Questions about Project Boosts?</h3>\n            <p>\n              <a target=\"_blank\" href={urlConstants.FAQ_BOOSTS}>\n                Learn more in our FAQ\n              </a>\n            </p>\n          </BoostDescription>\n        </BoostWrapper>\n      </>\n    );\n  }\n\n  private handleBoostButton = () => {\n    if (!this.state.amount) {\n      if (this.amountInputEl) {\n        this.amountInputEl.focus();\n      }\n      return;\n    }\n    this.props.handlePayments(this.state.amount);\n  };\n\n  private handleAmount = (name: string, value: any) => {\n    let amount = Number.parseFloat(value);\n    if (isNaN(amount)) {\n      amount = 0;\n    }\n    this.setState({ amount });\n  };\n\n  // TODO(sruddy) add to util\n  private timeRemaining = (dateEnd: string) => {\n    const endDate = Date.parse(dateEnd);\n    const currentDate = Date.now();\n    let timeRemainingSeconds = (endDate - currentDate) / 1000;\n    let timeRemaining;\n\n    if (timeRemainingSeconds <= 0) {\n      return (timeRemaining = \"Boost Ended\");\n    }\n\n    const days = Math.floor(timeRemainingSeconds / (3600 * 24));\n    timeRemainingSeconds -= days * 3600 * 24;\n    const hours = Math.floor(timeRemainingSeconds / 3600);\n    timeRemainingSeconds -= hours * 3600;\n    const mins = Math.floor(timeRemainingSeconds / 60);\n\n    if (days >= 1) {\n      timeRemaining = days === 1 ? \"1 day left\" : days + \" days left\";\n    } else if (days < 1 && hours >= 1) {\n      timeRemaining = hours === 1 ? \"1 hour left\" : hours + \" hours left\";\n    } else if (hours < 1 && mins > 1) {\n      timeRemaining = mins + \" minutes left\";\n    } else if (mins <= 1 && mins > 0) {\n      timeRemaining = \"1 minute left\";\n    } else {\n      timeRemaining = \"Boost Ended\";\n    }\n\n    return timeRemaining;\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostCardListView.tsx",
    "content": "import * as React from \"react\";\nimport { renderPTagsFromLineBreaks } from \"@joincivil/utils\";\nimport { ContributorCount } from \"@joincivil/components\";\nimport { BoostData, BoostNewsroomData } from \"./types\";\nimport {\n  BoostWrapperLink,\n  BoostTitle,\n  BoostFlexCenter,\n  BoostProgressCol,\n  BoostDescriptionWhy,\n} from \"./BoostStyledComponents\";\nimport { BoostNewsroom } from \"./BoostNewsroom\";\nimport { BoostProgress } from \"./BoostProgress\";\n\nexport interface BoostCardListViewProps {\n  open: boolean;\n  boostData: BoostData;\n  newsroomData: BoostNewsroomData;\n  boostId: string;\n  boostOwner?: boolean;\n  disableHelmet?: boolean;\n  timeRemaining: string;\n  newsroomContractAddress: string;\n  handle?: string;\n}\n\nexport class BoostCardListView extends React.Component<BoostCardListViewProps> {\n  public render(): JSX.Element {\n    const {\n      open,\n      boostData,\n      newsroomData,\n      boostId,\n      boostOwner,\n      disableHelmet,\n      timeRemaining,\n      newsroomContractAddress,\n      handle,\n    } = this.props;\n\n    return (\n      <BoostWrapperLink to={\"/boosts/\" + boostId}>\n        <BoostTitle>{boostData.title}</BoostTitle>\n\n        <BoostNewsroom\n          open={open}\n          boostOwner={boostOwner}\n          boostId={boostId}\n          newsroomContractAddress={newsroomContractAddress}\n          charterUri={newsroomData.charter && newsroomData.charter.uri}\n          newsroomData={newsroomData}\n          disableHelmet={disableHelmet}\n          handle={handle}\n        />\n        <BoostFlexCenter>\n          <BoostProgressCol open={open}>\n            <BoostProgress\n              open={open}\n              goalAmount={boostData.goalAmount}\n              paymentsTotal={boostData.paymentsTotal}\n              timeRemaining={timeRemaining}\n            />\n          </BoostProgressCol>\n        </BoostFlexCenter>\n        <BoostDescriptionWhy>{this.truncateDescription(boostData.why)}</BoostDescriptionWhy>\n        <ContributorCount\n          totalContributors={boostData.groupedSanitizedPayments ? boostData.groupedSanitizedPayments.length : 0}\n          displayedContributors={boostData.groupedSanitizedPayments}\n        />\n      </BoostWrapperLink>\n    );\n  }\n\n  private truncateDescription = (description: string) => {\n    const descriptionLength = description.length;\n    const truncateDescription = descriptionLength >= 140 ? description.substr(0, 140) + \"\\u2026\" : description;\n    return renderPTagsFromLineBreaks(truncateDescription);\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostCompleted.tsx",
    "content": "import * as React from \"react\";\nimport { BoostCompeletedWrapper } from \"./BoostStyledComponents\";\nimport { urlConstants } from \"../urlConstants\";\n\nexport interface BoostCompletedProps {\n  goalReached: boolean;\n}\n\nexport const BoostCompleted: React.FunctionComponent<BoostCompletedProps> = props => {\n  return (\n    <BoostCompeletedWrapper>\n      {props.goalReached ? (\n        <>\n          <h3>Congratulations!</h3>\n          <p>Your Project Boost reached its goal. Here are some next steps for you to take:</p>\n          <p>\n            <a target=\"_blank\" href={urlConstants.FAQ_BOOST_WITHDRAWL}>\n              Learn how to withdraw money from your newsroom wallet and exchange ETH for fiat\n            </a>\n          </p>\n        </>\n      ) : (\n        <>\n          <h3>Your Project Boost has ended.</h3>\n          <p>\n            Your Project Boost did not reach its raised goal within the time frame. You are still able to access the\n            proceeds from your contributors. Here are some next steps for you to take:\n          </p>\n          <p>\n            <a target=\"_blank\" href={urlConstants.FAQ_BOOST_WITHDRAWL}>\n              Learn how to withdraw money from your newsroom wallet and exchange ETH for fiat\n            </a>\n          </p>\n        </>\n      )}\n    </BoostCompeletedWrapper>\n  );\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostEmbedIframe.tsx",
    "content": "import * as React from \"react\";\nimport { iframeResizer } from \"iframe-resizer\";\nimport { urlConstants } from \"../urlConstants\";\n\n// This can be gotten from `loadingImgUrl` from `@joincivil/components`, but it's not worth bringing in entire package for that. The hash is from the contents of the svg so it's stable unless we change the image or its name or location. It's too big to inline into copy-paste-able embed code. @TODO/tobek Should we just host this image somewhere else?\nconst LOADING_IMAGE_URL = \"https://civil.co/static/media/loading.ba73811a.svg\";\n\n// Not using styled-components so that we can get the actual styles in `renderToStaticMarkup`.\nconst INTRO_STYLES: React.CSSProperties = {\n  textAlign: \"center\",\n  maxWidth: 400,\n  margin: \"0 auto -18px auto\",\n  padding: \"0 16px\",\n};\nconst FOOTER_WRAP: React.CSSProperties = {\n  margin: \"-24px 0 32px\",\n  padding: \"0 4px\",\n};\nconst FOOTER_LINK_STYLES: React.CSSProperties = {\n  float: \"right\",\n  fontSize: \"smaller\",\n  color: \"inherit\",\n  textDecoration: \"none\",\n  marginLeft: 16,\n};\nlet EMBED_WRAPPER_STYLES: React.CSSProperties = {\n  position: \"relative\",\n  display: \"block\",\n  width: \"100%\",\n  margin: \"32px 0\",\n  border: \"1px solid #E9E9EA\", // colors.accent.CIVIL_GRAY_4 but not worth importing entire package just for that\n  borderRadius: \"4px\",\n  textAlign: \"center\",\n  lineHeight: 1.1,\n};\nlet EMBED_IFRAME_STYLES: React.CSSProperties = {\n  position: \"absolute\",\n  minWidth: \"100%\", // workaround for iOS bug that prevents iframe resizing\n  width: \"100%\",\n  border: 0,\n  outline: 0,\n  borderRadius: \"4px\",\n  top: 0,\n  left: 0,\n  zIndex: 1,\n};\nconst EMBED_LOADING_IMG_STYLES: React.CSSProperties = {\n  display: \"block\",\n  margin: \"36px auto\",\n  height: 32,\n};\nconst EMBED_NOT_LOADED_STYLES: React.CSSProperties = {\n  position: \"absolute\",\n  color: \"#9B9B9B\",\n  fontSize: 12,\n  bottom: 0,\n  padding: 16,\n  margin: 0,\n};\nconst EMBED_ERROR_STYLES: React.CSSProperties = {\n  whiteSpace: \"pre-wrap\",\n  padding: \"0 10px\",\n  fontSize: 12,\n  lineHeight: 1.2,\n};\n\nexport interface BoostEmbedIframeProps {\n  fallbackUrl: string;\n  iframeSrc?: string;\n  noIframe?: boolean;\n  error?: string;\n  iframeId?: string;\n  boostType?: \"project\" | \"story\";\n  initialHeight?: number;\n}\nexport interface BoostEmbedIframeDefaultProps {\n  boostType: \"project\" | \"story\";\n  initialHeight: number;\n}\n\n// When using `ReactDOMServer.renderToStaticMarkup`, the inlined important styles are included, but using `ReactDOM.render`, they are not. In the latter case, we can fix with this:\nconst setHeightImportant = (node: HTMLElement | null, height: number) => {\n  if (node) {\n    node.style.setProperty(\"height\", height + \"px\", \"important\");\n  }\n};\n\nexport const BoostEmbedIframe = (props: BoostEmbedIframeProps & BoostEmbedIframeDefaultProps) => {\n  const [isIframeSetUp, setIsIframeSetUp] = React.useState(false);\n  const [isLoaded, setIsLoaded] = React.useState(false);\n  const [iframeHeight, setIframeHeight] = React.useState(props.initialHeight);\n\n  const boostTypeLabel = props.boostType === \"project\" ? \"Project\" : \"Story\";\n  EMBED_WRAPPER_STYLES = {\n    ...EMBED_WRAPPER_STYLES,\n    height: iframeHeight + \"px !important\",\n  };\n  EMBED_IFRAME_STYLES = {\n    ...EMBED_IFRAME_STYLES,\n    // -2 to make room for 1px border\n    height: iframeHeight - 2 + \"px !important\",\n  };\n\n  const setUpIframeResizer = (el: HTMLIFrameElement | null, initialHeight: number) => {\n    if (el) {\n      setHeightImportant(el, initialHeight - 2);\n      if (isIframeSetUp) {\n        return;\n      }\n      iframeResizer(\n        {\n          heightCalculationMethod: \"taggedElement\", // looks for elements with `data-iframe-height` attribute and resizes to fit them\n          tolerance: 16,\n\n          // @ts-ignore iframe-resizer types are missing the event handlers and some other options\n          warningTimeout: 20000,\n          // @ts-ignore\n          onResized: ({ iframe, height }: { iframe: HTMLIFrameElement; height: string }) => {\n            setIframeHeight(parseInt(height, 10));\n          },\n          // @ts-ignore\n          onInit: () => {\n            setIsLoaded(true);\n          },\n        },\n        el,\n      );\n      setIsIframeSetUp(true);\n    }\n  };\n\n  return (\n    <>\n      {props.boostType === \"story\" && (\n        <p style={INTRO_STYLES}>Good journalism costs money. Support this newsroom by giving it a Boost.</p>\n      )}\n      <div style={EMBED_WRAPPER_STYLES} ref={node => setHeightImportant(node, iframeHeight)}>\n        {!props.noIframe && (\n          <iframe\n            ref={node => setUpIframeResizer(node, iframeHeight)}\n            style={EMBED_IFRAME_STYLES}\n            key={props.iframeId}\n            id={props.iframeId}\n            src={props.iframeSrc}\n            sandbox=\"allow-forms allow-popups allow-scripts allow-same-origin\"\n          ></iframe>\n        )}\n\n        {!isLoaded && (\n          <>\n            {props.error ? (\n              <>\n                <p style={{ margin: \"2rem 1rem\" }}>\n                  Sorry, there was an error loading this {boostTypeLabel} Boost. Try viewing it{\" \"}\n                  <a href={props.fallbackUrl} target=\"_blank\">\n                    on Civil\n                  </a>\n                  . If the problem persists, please contact <a href=\"mailto:support@civil.co\">support@civil.co</a>.\n                </p>\n                <pre style={EMBED_ERROR_STYLES}>{props.error}</pre>\n              </>\n            ) : (\n              <>\n                {/*Use `object` instead of `img` because if this domain is blocked or image otherwise fails to load, `img` will show a broken image icon, but `object` will show nothing.*/}\n                <object style={EMBED_LOADING_IMG_STYLES} data={LOADING_IMAGE_URL} type=\"image/svg+xml\"></object>\n                <p>Loading {boostTypeLabel} Boost&hellip;</p>\n              </>\n            )}\n\n            <p style={EMBED_NOT_LOADED_STYLES}>\n              Boost not loading? You may have blockers such as the Privacy Badger extension or Brave Shields enabled.\n              Please check that all \"civil.co\" domains are whitelisted, or try viewing this Boost{\" \"}\n              <a href={props.fallbackUrl} target=\"_blank\">\n                on Civil\n              </a>\n              .\n            </p>\n          </>\n        )}\n      </div>\n      {props.boostType === \"story\" && (\n        <p className=\"civil-embed-footer\" style={FOOTER_WRAP}>\n          <a href={urlConstants.HOME} target=\"_blank\">\n            <svg viewBox=\"0 0 72 21\" width=\"47\" height=\"13\" xmlns=\"http://www.w3.org/2000/svg\">\n              <g fill=\"#000\" fillRule=\"evenodd\" transform=\"translate(0 .457)\">\n                <path d=\"M.5 10c0-5.76 4.357-10 9.856-10 3.58 0 6.069 1.414 7.729 3.77L15.75 5.445c-1.297-1.728-2.905-2.67-5.499-2.67-3.838 0-6.64 3.089-6.64 7.225 0 4.24 2.853 7.225 6.744 7.225 2.49 0 4.357-.942 5.81-2.827L18.5 16.02C16.529 18.691 13.987 20 10.252 20 4.805 20 .5 15.76.5 10M22.5 20h3V1h-3zM29 1h3.382l5.782 13.228L43.782 1H47l-8.782 20h-.163zM50.5 20h3V1h-3zM59.5 1h3.175v16.344H71.5V20h-12z\" />\n              </g>\n            </svg>\n          </a>\n          <a href={urlConstants.PRIVACY_POLICY} target=\"_blank\" style={FOOTER_LINK_STYLES}>\n            Privacy Policy\n          </a>\n          <a href={urlConstants.HELP} target=\"_blank\" style={FOOTER_LINK_STYLES}>\n            Help\n          </a>\n          {/*There's no way to target pseudo classes in inline styles and we're avoiding loading styled-components so this is the only option:*/}\n          <style>\n            {`.civil-embed-footer a:hover {\n              text-decoration: underline !important;\n            }`}\n          </style>\n        </p>\n      )}\n    </>\n  );\n};\n\nBoostEmbedIframe.defaultProps = {\n  boostType: \"story\",\n  initialHeight: 300,\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostEmbedNoScroll.tsx",
    "content": "import * as React from \"react\";\nimport styled, { createGlobalStyle } from \"styled-components\";\nimport { ChevronAnchor } from \"@joincivil/components\";\nimport { colors } from \"@joincivil/elements\";\n\nconst GlobalStyleNoScroll = createGlobalStyle`\n  html, body {\n    height: 100%;\n    overflow: hidden;\n    margin: 0;\n  }\n`;\nconst OverflowLinkContainer = styled.div`\n  position: absolute;\n  z-index: 1;\n  width: 100%;\n  height: 100px;\n  bottom: 0;\n  left: 0;\n  background: rgb(255, 255, 255);\n  background: linear-gradient(\n    180deg,\n    rgba(255, 255, 255, 0) 0%,\n    rgba(255, 255, 255, 0.85) 25%,\n    rgba(255, 255, 255, 1) 100%\n  );\n`;\nconst OverflowLink = styled(ChevronAnchor)`\n  position: absolute;\n  display: block;\n  width: 100%;\n  bottom: 0;\n  padding: 16px 0;\n  background: white;\n  border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  text-align: center;\n  &:hover {\n    text-decoration: underline;\n  }\n`;\n\nexport interface BoostEmbedNoScrollProps {\n  boostId: string;\n}\n\nexport const BoostEmbedNoScroll: React.FunctionComponent<BoostEmbedNoScrollProps> = props => (\n  <>\n    <GlobalStyleNoScroll />\n    <OverflowLinkContainer>\n      <OverflowLink href={`${document.location.origin}/boosts/${props.boostId}`} target=\"_blank\">\n        View More\n      </OverflowLink>\n    </OverflowLinkContainer>\n  </>\n);\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostForm.tsx",
    "content": "import * as React from \"react\";\nimport { Prompt } from \"react-router\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport {\n  colors,\n  mediaQueries,\n  Button,\n  buttonSizes,\n  CurrencyInput,\n  InputIcon,\n  TextInput,\n  TextareaInput,\n  QuestionToolTip,\n  defaultNewsroomImgUrl,\n  LoadingMessage,\n  HelmetHelper,\n  LoadUser,\n  withNewsroomChannel,\n  NewsroomChannelInjectedProps,\n} from \"@joincivil/components\";\nimport { Query, Mutation, MutationFunc } from \"react-apollo\";\nimport { boostNewsroomQuery, createBoostMutation, editBoostMutation } from \"./queries\";\nimport { BoostData, BoostNewsroomData } from \"./types\";\nimport {\n  BoostWrapper,\n  BoostWrapperFullWidthHr,\n  BoostFormTitle,\n  BoostDescriptionTable,\n  BoostPayFormTitle,\n  BoostSmallPrint,\n  BoostImgDiv,\n} from \"./BoostStyledComponents\";\nimport { BoostImg } from \"./BoostImg\";\nimport { urlConstants } from \"../urlConstants\";\nimport * as boostCardImage from \"../../images/boost-card.png\";\nimport { withBoostPermissions, BoostPermissionsInjectedProps } from \"./BoostPermissionsHOC\";\n\nconst PageWrapper = styled.div`\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 14px;\n  font-weight: normal;\n  margin: auto;\n  max-width: 880px;\n\n  p {\n    margin-top: 15px;\n  }\n\n  input[disabled] {\n    background: white;\n    color: ${colors.primary.CIVIL_GRAY_2};\n  }\n\n  &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n`;\n\nconst Title = styled.div`\n  font-size: 24px;\n  font-weight: 900;\n  line-height: 33px;\n  margin-bottom: 15px;\n`;\nconst Error = styled.span`\n  color: red;\n`;\n\nconst NewsroomDetailRow = styled.div`\n  display: flex;\n  justify-content: space-between;\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\nconst NewsroomDetailCell = styled.div`\n  flex-grow: 1;\n  margin-right: 24px;\n  &:last-child {\n    margin-right: 0;\n  }\n  ${mediaQueries.MOBILE} {\n    margin-right: 0;\n  }\n`;\n\nconst ItemsTableWrapper = styled(BoostDescriptionTable)`\n  table td {\n    padding-top: 0;\n    padding-bottom: 0;\n    &:last-child {\n      padding-right: 0;\n    }\n  }\n  tfoot tr:first-child td {\n    padding-top: 36px;\n  }\n`;\nconst ItemLink = styled.a`\n  font-size: 16px;\n  font-weight: 500;\n`;\nconst ItemNameInput = styled(TextInput)`\n  max-width: 420px;\n`;\nconst ItemCostHeader = styled.th`\n  && {\n    padding-right: 0;\n  }\n`;\nconst ItemCostHeaderText = styled.div`\n  margin-left: auto;\n  text-align: left;\n  width: 100px;\n`;\nconst ItemCostCell = styled.td`\n  text-align: right;\n`;\nconst StyledCurrencyInput = styled(CurrencyInput)`\n  position: relative;\n  margin-left: auto;\n  width: 100px;\n\n  ${InputIcon as any} {\n    top: 15px;\n    left: 12px;\n    pointer-events: none;\n    position: absolute;\n    z-index: 2;\n  }\n  input {\n    padding-left: 22px;\n  }\n`;\nconst TotalGoal = styled(StyledCurrencyInput)`\n  & input[disabled] {\n    color: ${colors.primary.CIVIL_GRAY_0};\n  }\n`;\nconst ItemsAmountNote = styled.div`\n  font-style: italic;\n  margin-top: 15px;\n  white-space: nowrap;\n`;\n\nconst EndDateInput = styled.input`\n  margin-right: 32px;\n  padding: 10px;\n`;\nconst EndDateNotice = styled.p`\n  display: inline-block;\n`;\n\nconst LaunchDisclaimer = styled(BoostSmallPrint)`\n  display: inline-block;\n  float: left;\n`;\nconst LaunchButton = styled(Button)`\n  height: 48px;\n  float: right;\n  text-transform: none;\n  width: 190px;\n`;\nconst ErrorContainer = styled.div`\n  clear: both;\n  float: right;\n  margin-top: 10px;\n`;\n\nconst ConnectStripeNotice = styled.div`\n  background-color: rgb(208, 237, 237);\n  display: block;\n  font-size: 14px;\n  margin: 30px 0 10px;\n  padding: 20px;\n\n  span {\n    display: block;\n    font-weight: 700;\n    margin-bottom: 5px;\n  }\n`;\n\nexport interface BoostFormInnerProps {\n  channelID: string;\n  newsroomData: BoostNewsroomData;\n  newsroomContractAddress: string;\n  newsroomListingUrl: string;\n  newsroomLogoUrl?: string;\n  newsroomTagline?: string;\n  initialBoostData?: BoostData;\n  editMode?: boolean;\n  boostId?: string;\n  removeHeader?: boolean;\n}\nexport type BoostFormProps = BoostFormInnerProps & BoostPermissionsInjectedProps & NewsroomChannelInjectedProps;\n\nexport interface BoostFormState {\n  boost: Partial<BoostData>;\n  changesMade?: boolean;\n  createdBoostId?: string;\n  loading?: boolean;\n  success?: boolean;\n  error?: string;\n}\n\nclass BoostFormComponent extends React.Component<BoostFormProps, BoostFormState> {\n  constructor(props: BoostFormProps) {\n    super(props);\n    this.state = {\n      boost: props.initialBoostData\n        ? { ...props.initialBoostData }\n        : {\n            about: props.newsroomTagline,\n            items: [{ item: \"\", cost: undefined }],\n          },\n    };\n  }\n\n  public async componentDidMount(): Promise<void> {\n    // Set up boost permissions checks HOC:\n    this.props.setNewsroomContractAddress(this.props.newsroomContractAddress);\n\n    // If changes have been made, and boost create/update is not complete, show \"are you sure you want to leave?\" prompt. See also <Prompt> component with same check for react router below.\n    window.addEventListener(\"beforeunload\", this.beforeUnloadHandler);\n  }\n\n  public componentWillUnmount(): void {\n    // Remove \"are you sure you want to leave?\" prompt.\n    window.removeEventListener(\"beforeunload\", this.beforeUnloadHandler);\n  }\n\n  public render(): JSX.Element {\n    if (this.state.success) {\n      const boostId = this.props.boostId || this.state.createdBoostId;\n      const successUrl = \"/boosts/\" + boostId + \"/success\";\n      return <Redirect to={successUrl} />;\n    }\n    return (\n      <PageWrapper>\n        <HelmetHelper\n          title={\"Create Project Boost - The Civil Registry\"}\n          description={\n            \"Connect with the Civil community eager to fund your projects. Project Boosts are mini-fundraisers that build community around your work. Your Newsroom can use Project Boosts to let your audience know about what you’d like to do and engage supporters in making the project a reality.\"\n          }\n          image={boostCardImage}\n          meta={{\n            \"og:site_name\": \"Civil Registry\",\n            \"og:type\": \"website\",\n            \"twitter:card\": \"summary\",\n          }}\n        />\n\n        {!this.props.removeHeader && this.renderHeader()}\n\n        <LoadUser>\n          {({ loading: userLoading, user }) => {\n            if (!userLoading && !user) {\n              return (\n                <BoostWrapper>\n                  You must log in to edit a Project Boost. Please use the \"Log In\" link in the header to do so.\n                </BoostWrapper>\n              );\n            }\n\n            return (\n              <Query query={boostNewsroomQuery} variables={{ addr: this.props.newsroomContractAddress }}>\n                {({ loading, error, data }) => {\n                  if (loading) {\n                    return (\n                      <BoostWrapper>\n                        <LoadingMessage />\n                      </BoostWrapper>\n                    );\n                  } else if (error || !data) {\n                    console.error(\n                      `error querying newsroom data for ${this.props.newsroomContractAddress}:`,\n                      error,\n                      data,\n                    );\n                    return (\n                      <Error>\n                        Error retrieving newsroom data: {error ? JSON.stringify(error) : \"no listing data found\"}\n                      </Error>\n                    );\n                  }\n\n                  if (!data.listing) {\n                    return (\n                      <BoostWrapper>\n                        Your newsroom <b>{this.props.newsroomData.name}</b> has not yet applied to the Civil Registry.\n                        Please <Link to=\"/apply-to-registry\">continue your newsroom application</Link> and then, once\n                        you have applied and your newsroom has been approved, you can return to create a Project Boost.\n                      </BoostWrapper>\n                    );\n                  }\n\n                  if (!data.listing.whitelisted) {\n                    return (\n                      <BoostWrapper>\n                        Your newsroom <b>{this.props.newsroomData.name}</b> is not currently approved on the Civil\n                        Registry. Please <Link to=\"/dashboard/newsrooms\">visit your newsroom dashboard</Link> to check\n                        on the status of your application. Once your newsroom is approved, you can return to create a\n                        Project Boost.\n                      </BoostWrapper>\n                    );\n                  }\n\n                  return this.renderForm();\n                }}\n              </Query>\n            );\n          }}\n        </LoadUser>\n      </PageWrapper>\n    );\n  }\n\n  private renderHeader(): JSX.Element {\n    if (this.props.editMode) {\n      return (\n        <>\n          <Title>Edit Project Boost</Title>\n          <p>\n            Note that after a boost has been launched, only text copy can be changed. Goal amounts and end date cannot\n            be edited.\n          </p>\n        </>\n      );\n    }\n\n    return (\n      <>\n        <Title>Let's get you started</Title>\n        <p>\n          Create and launch your Project Boost. Project Boosts will be displayed on the Project Boost directory in\n          addition to your Registry listing.\n        </p>\n      </>\n    );\n  }\n\n  private renderForm(): JSX.Element {\n    return (\n      <Mutation mutation={this.props.editMode ? editBoostMutation : createBoostMutation}>\n        {mutation => {\n          return (\n            <form onSubmit={async event => this.handleSubmit(event, mutation)}>\n              <Prompt\n                when={!!this.beforeUnloadHandler()}\n                message={\"Are you sure you want to leave this page? Your Boost will not be saved.\"}\n              />\n              <BoostWrapper>\n                <BoostImgDiv>\n                  {this.props.newsroomLogoUrl ? (\n                    <img\n                      src={this.props.newsroomLogoUrl}\n                      onError={e => {\n                        (e.target as any).src = defaultNewsroomImgUrl;\n                      }}\n                    />\n                  ) : (\n                    <BoostImg charterUri={this.props.newsroomData.charter && this.props.newsroomData.charter.uri} />\n                  )}\n                </BoostImgDiv>\n                <NewsroomDetailRow>\n                  <NewsroomDetailCell>\n                    <BoostFormTitle>\n                      Newsroom Name\n                      <QuestionToolTip explainerText=\"You can create a Project Boost for your newsroom only.\" />\n                    </BoostFormTitle>\n                    <TextInput name=\"newsroomName\" value={this.props.newsroomData.name} disabled />\n                  </NewsroomDetailCell>\n                  <NewsroomDetailCell>\n                    <BoostFormTitle>Newsroom URL</BoostFormTitle>\n                    <TextInput name=\"newsroomUrl\" value={this.props.newsroomData.url} disabled />\n                  </NewsroomDetailCell>\n                  <NewsroomDetailCell>\n                    <BoostFormTitle>Registry Listing URL</BoostFormTitle>\n                    <TextInput name=\"newsroomListingUrl\" value={this.props.newsroomListingUrl} disabled />\n                  </NewsroomDetailCell>\n                </NewsroomDetailRow>\n                <BoostFormTitle>\n                  Newsroom Wallet\n                  <QuestionToolTip explainerText=\"This is your newsroom wallet address where you will receive the funds from your Project Boost.\" />\n                </BoostFormTitle>\n                <TextInput name=\"newsroomWallet\" value={this.props.newsroomData.owner} disabled />\n                <p>\n                  Funds from your Project Boost will be deposited into the Newsroom Wallet. A Newsroom Officer will be\n                  able to widthdraw from the newsroom wallet and either deposit or exchange them into other currencies.{\" \"}\n                  <a target=\"_blank\" href={urlConstants.FAQ_BOOST_WITHDRAWL}>\n                    Learn&nbsp;more\n                  </a>\n                </p>\n                <BoostWrapperFullWidthHr />\n                <BoostFormTitle>Give your Project Boost a title</BoostFormTitle>\n                <p>\n                  What do you need? Start with an action verb to tell people how they can help. For example: “Help\n                  [newsroom] do [thing].”\n                </p>\n                <TextareaInput name=\"title\" value={this.state.boost.title} onChange={this.onInputChange} />\n                <BoostFormTitle>Describe your Project Boost</BoostFormTitle>\n                <p>\n                  What are you raising funds to do, and why you need help. Tell people why they should be excited to\n                  support your Project Boost.\n                </p>\n                <TextareaInput name=\"why\" value={this.state.boost.why} onChange={this.onInputChange} />\n                <BoostFormTitle>Describe what the outcome will be</BoostFormTitle>\n                <p>\n                  Tell the community what to expect at the end of the fundraising time. You can be specific, but be\n                  clear and brief.\n                </p>\n                <TextareaInput name=\"what\" value={this.state.boost.what} onChange={this.onInputChange} />\n                <BoostFormTitle>Describe your Newsroom</BoostFormTitle>\n                <p>What is your Newsroom’s mission? Tell the community who you are.</p>\n                <TextareaInput name=\"about\" value={this.state.boost.about} onChange={this.onInputChange} />\n                {this.renderItems()}\n                <BoostFormTitle>\n                  End date\n                  <QuestionToolTip explainerText=\"All proceeds go directly to the Newsroom. There are small fees charged by the Ethereum network.\" />\n                </BoostFormTitle>\n                {this.renderEndDate()}\n                <EndDateNotice>Your Project Boost will end at 11:59PM on the date selected.</EndDateNotice>\n                {!this.props.channelData.isStripeConnected && (\n                  <ConnectStripeNotice>\n                    <span>No Stripe account connected</span> Your Project Boost will be able to accept contributions in\n                    ETH, but if you connect a Stripe account you will also be able to accept credit card payments. If\n                    you'd like to connect Stripe you can do so from{\" \"}\n                    <a href=\"/dashboard/newsrooms\" target=\"_blank\">\n                      your newsroom dashboard\n                    </a>\n                    . You will be prompted to create a new account if you don't have one already.\n                  </ConnectStripeNotice>\n                )}\n              </BoostWrapper>\n\n              <LaunchDisclaimer>\n                By {this.props.editMode ? \"using Boosts\" : \"creating a Boost\"}, you agree to Civil’s{\" \"}\n                <a href={urlConstants.TERMS}>Terms of Use</a> and{\" \"}\n                <a href={urlConstants.PRIVACY_POLICY}>Privacy Policy</a>.\n              </LaunchDisclaimer>\n              <LaunchButton\n                size={buttonSizes.MEDIUM}\n                type=\"submit\"\n                disabled={this.state.loading || this.state.success}\n                loading={this.state.loading}\n              >\n                {this.props.editMode ? \"Update Boost\" : \"Launch Boost\"}\n              </LaunchButton>\n\n              {this.state.error && (\n                <ErrorContainer>\n                  <Error>{this.state.error}</Error>\n                </ErrorContainer>\n              )}\n            </form>\n          );\n        }}\n      </Mutation>\n    );\n  }\n\n  private renderEndDate(): JSX.Element {\n    const date = new Date();\n    date.setDate(date.getDate() + 1);\n\n    return (\n      <EndDateInput\n        type=\"date\"\n        name=\"dateEnd\"\n        min={date.toISOString().split(\"T\")[0]}\n        value={this.state.boost.dateEnd && this.state.boost.dateEnd.substr(0, 10)}\n        onChange={this.onDateEndInputChange}\n        disabled={this.props.editMode}\n      />\n    );\n  }\n\n  private renderItems(): JSX.Element {\n    return (\n      <ItemsTableWrapper>\n        <BoostFormTitle>\n          List the expenses this Project Boost can help cover\n          <QuestionToolTip explainerText=\"Itemizing your costs helps educate your audience about the costs of journalism and running of your newsroom.\" />\n        </BoostFormTitle>\n        <table>\n          <thead>\n            <tr>\n              <th>Item</th>\n              <ItemCostHeader>\n                <ItemCostHeaderText>Cost</ItemCostHeaderText>\n              </ItemCostHeader>\n              {!this.props.editMode && <th />}\n            </tr>\n          </thead>\n          <tbody>\n            {this.state.boost.items &&\n              this.state.boost.items.map((item: any, i: number) => (\n                <tr key={i}>\n                  <td>\n                    <ItemNameInput\n                      name=\"item\"\n                      value={this.state.boost.items![i].item}\n                      onChange={this.onItemInputChange.bind(this, i)}\n                    />\n                  </td>\n                  <ItemCostCell>\n                    <StyledCurrencyInput\n                      icon={<>$</>}\n                      name=\"cost\"\n                      type=\"number\"\n                      value={\n                        typeof this.state.boost.items![i].cost === \"undefined\"\n                          ? \"\"\n                          : \"\" + this.state.boost.items![i].cost\n                      }\n                      onChange={this.onItemInputChange.bind(this, i)}\n                      disabled={this.props.editMode}\n                    />\n                  </ItemCostCell>\n                  {!this.props.editMode && (\n                    <td>\n                      {i > 0 && (\n                        <ItemLink href=\"#\" onClick={(e: any) => this.removeItem(e, i)}>\n                          x\n                        </ItemLink>\n                      )}\n                    </td>\n                  )}\n                </tr>\n              ))}\n            {!this.props.editMode && (\n              <tr>\n                <td>\n                  <ItemLink href=\"#\" onClick={this.addItem}>\n                    Add item\n                  </ItemLink>\n                </td>\n              </tr>\n            )}\n          </tbody>\n          <tfoot>\n            <tr>\n              <td>\n                <BoostFormTitle>Project Boost Goal</BoostFormTitle>\n                <p>\n                  Your Project Boost goal is the amount you would like to raise. If your Project Boost does not reach\n                  its amount goal by the end date, the proceeds sent by supporters will still be collected into your\n                  Newsroom’s wallet. Once the Project Boost ends, you’ll be able to withdraw and either dispense or\n                  exchange the funds to your wallet, or exchange to another currency.\n                </p>\n              </td>\n              <ItemCostCell>\n                <BoostPayFormTitle>Total amount</BoostPayFormTitle>\n                <TotalGoal icon={<>$</>} name=\"goalAmount\" value={\"\" + (this.state.boost.goalAmount || \"\")} disabled />\n                <ItemsAmountNote>\n                  Proceeds will be in ETH\n                  <QuestionToolTip explainerText=\"We recommend periods between 14 and 60 days.\" />\n                </ItemsAmountNote>\n                <ItemsAmountNote>Civil does not collect any fees.</ItemsAmountNote>\n              </ItemCostCell>\n              {!this.props.editMode && <td />}\n            </tr>\n          </tfoot>\n        </table>\n      </ItemsTableWrapper>\n    );\n  }\n\n  private onInputChange = (name: string, val: string) => {\n    this.setState({\n      boost: {\n        ...this.state.boost,\n        [name]: val,\n      },\n      changesMade: true,\n    });\n  };\n\n  private onDateEndInputChange = (event: any) => {\n    event.preventDefault();\n    this.setState({\n      boost: {\n        ...this.state.boost,\n        dateEnd: new Date(event.target.value).toISOString(),\n      },\n    });\n  };\n\n  private onItemInputChange = (i: number, name: \"cost\" | \"item\", val: string) => {\n    const items = this.state.boost.items!;\n\n    let goalAmount = this.state.boost.goalAmount || 0;\n    if (name === \"cost\") {\n      const oldCost = items[i][name] || 0;\n      const newCost = parseFloat(val || \"0\");\n      items[i][name] = newCost;\n      goalAmount = goalAmount - oldCost + newCost;\n    } else {\n      items[i][name] = val;\n    }\n\n    this.setState({\n      boost: {\n        ...this.state.boost,\n        goalAmount,\n        items,\n      },\n      changesMade: true,\n    });\n  };\n\n  private addItem = (event: React.MouseEvent) => {\n    event.preventDefault();\n    this.setState({\n      boost: {\n        ...this.state.boost,\n        items: this.state.boost.items!.concat({} as any),\n      },\n    });\n  };\n\n  private removeItem = (event: React.MouseEvent, i: number) => {\n    event.preventDefault();\n    this.setState({\n      boost: {\n        ...this.state.boost,\n        goalAmount: (this.state.boost.goalAmount || 0) - (this.state.boost.items![i].cost || 0),\n        items: this.state.boost.items!.slice(0, i).concat(this.state.boost.items!.slice(i + 1)),\n      },\n    });\n  };\n\n  private async handleSubmit(event: React.FormEvent, mutation: MutationFunc): Promise<void> {\n    event.preventDefault();\n    // @TODO/toby Implement success modal from designs.\n\n    const boost = this.state.boost;\n    this.setState({ loading: true, error: undefined });\n    try {\n      const response = await mutation({\n        variables: {\n          input: {\n            channelID: this.props.channelID,\n            currencyCode: \"usd\", // @TODO/tobek Is this right? Why is it required, should endpoint default to usd?\n            title: boost.title,\n            why: boost.why,\n            what: boost.what,\n            about: boost.about,\n            goalAmount: boost.goalAmount,\n            items: boost.items,\n            dateEnd: boost.dateEnd,\n          },\n          postID: this.props.editMode && this.props.boostId,\n        },\n      });\n      if (response && response.data && response.data.postsCreateBoost) {\n        this.setState({\n          success: true,\n          createdBoostId: response.data.postsCreateBoost.id,\n        });\n      } else if (response && response.data && response.data.postsUpdateBoost) {\n        this.setState({\n          success: true,\n        });\n      } else {\n        this.setState({ error: \"Error: Unexpected or missing response data\" });\n      }\n    } catch (error) {\n      this.setState({ error: error.toString() });\n    }\n\n    this.setState({ loading: false });\n  }\n\n  private beforeUnloadHandler = (event?: BeforeUnloadEvent): boolean | undefined => {\n    if (this.state.changesMade && !this.state.success) {\n      if (event) {\n        event.preventDefault(); // specification\n        event.returnValue = \"\"; // some Chrome\n      }\n      return true; // what most browsers actually use\n    }\n  };\n}\n\nexport const BoostForm = withBoostPermissions(withNewsroomChannel(BoostFormComponent), true);\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostImg.tsx",
    "content": "import * as React from \"react\";\nimport { defaultNewsroomImgUrl } from \"@joincivil/components\";\nimport * as IPFS from \"ipfs-http-client\";\nimport { promisify } from \"@joincivil/utils\";\n\nconst ipfs = new IPFS({\n  host: \"ipfs.infura.io\",\n  port: 5001,\n  protocol: \"https\",\n});\n\nconst ipfsAsync = {\n  get: promisify<[{ path: string; content: Buffer }]>(ipfs.get),\n  add: promisify<[{ path: string; hash: string; size: number }]>(ipfs.add),\n  pin: promisify<[{ hash: string }]>(ipfs.pin.add),\n};\n\nexport interface BoostImgProps {\n  charterUri?: string;\n}\n\nexport interface BoostImgState {\n  fetchInProgress: boolean;\n  charter?: any;\n}\n\nexport class BoostImg extends React.Component<BoostImgProps, BoostImgState> {\n  constructor(props: BoostImgProps) {\n    super(props);\n    this.state = {\n      fetchInProgress: false,\n    };\n  }\n  public async componentDidMount(): Promise<void> {\n    if (!this.props.charterUri) {\n      return;\n    }\n    const uri = this.props.charterUri.replace(\"ipfs://\", \"/ipfs/\");\n    const content = await ipfsAsync.get(uri);\n    const ipfsFile = content.reduce((acc, file) => acc + file.content.toString(\"utf8\"), \"\");\n    const charter = JSON.parse(ipfsFile.toString());\n    this.setState({ charter });\n  }\n\n  public render(): JSX.Element {\n    if (this.state.charter) {\n      return (\n        <>\n          <img\n            src={this.state.charter.logoUrl || ((defaultNewsroomImgUrl as any) as string)}\n            onError={e => {\n              (e.target as any).src = defaultNewsroomImgUrl;\n            }}\n          />\n        </>\n      );\n    } else {\n      return <></>;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostModal.tsx",
    "content": "import * as React from \"react\";\nimport { BoostModalContain, BoostModalCloseBtn } from \"./BoostStyledComponents\";\nimport { colors, FullScreenModal, CloseXIcon } from \"@joincivil/components\";\n\nexport interface BoostModalProps {\n  open: boolean;\n  children: any;\n  className?: string;\n  handleClose?(): void;\n}\n\nexport const BoostModal: React.FunctionComponent<BoostModalProps> = props => {\n  return (\n    <>\n      <FullScreenModal open={props.open}>\n        <BoostModalContain className={props.className}>\n          {props.handleClose && (\n            <BoostModalCloseBtn onClick={() => props.handleClose && props.handleClose()}>\n              <CloseXIcon color={colors.accent.CIVIL_GRAY_2} />\n            </BoostModalCloseBtn>\n          )}\n          {props.children}\n        </BoostModalContain>\n      </FullScreenModal>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostNewsroom.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n  defaultNewsroomImgUrl,\n  HelmetHelper,\n  CivilContext,\n  ICivilContext,\n  RENDER_CONTEXT,\n  ChevronAnchor,\n} from \"@joincivil/components\";\nimport { CharterData } from \"@joincivil/typescript-types\";\nimport * as IPFS from \"ipfs-http-client\";\nimport { promisify } from \"@joincivil/utils\";\nimport { BoostNewsroomData } from \"./types\";\nimport {\n  BoostImgDiv,\n  BoostImgDivMobile,\n  BoostNewsroomInfo,\n  BoostNewsroomName,\n  BoostFlexStartMobile,\n} from \"./BoostStyledComponents\";\n\nconst ipfs = new IPFS({\n  host: \"ipfs.infura.io\",\n  port: 5001,\n  protocol: \"https\",\n});\n\nconst ipfsAsync = {\n  get: promisify<[{ path: string; content: Buffer }]>(ipfs.get),\n  add: promisify<[{ path: string; hash: string; size: number }]>(ipfs.add),\n  pin: promisify<[{ hash: string }]>(ipfs.pin.add),\n};\n\nexport interface BoostNewsroomProps {\n  open: boolean;\n  boostOwner?: boolean;\n  boostId: string;\n  charterUri?: string;\n  newsroomContractAddress: string;\n  newsroomData: BoostNewsroomData;\n  disableHelmet?: boolean;\n  handle?: string;\n}\n\nexport interface BoostNewsroomState {\n  fetchInProgress: boolean;\n  charter?: CharterData;\n}\n\nexport class BoostNewsroom extends React.Component<BoostNewsroomProps, BoostNewsroomState> {\n  public static contextType = CivilContext;\n  public context!: ICivilContext;\n\n  constructor(props: BoostNewsroomProps) {\n    super(props);\n    this.state = {\n      fetchInProgress: false,\n    };\n  }\n  public async componentDidMount(): Promise<void> {\n    if (!this.props.charterUri) {\n      return;\n    }\n    const uri = this.props.charterUri.replace(\"ipfs://\", \"/ipfs/\");\n    const content = await ipfsAsync.get(uri);\n    const ipfsFile = content.reduce((acc, file) => acc + file.content.toString(\"utf8\"), \"\");\n    const charter = JSON.parse(ipfsFile.toString());\n    this.setState({ charter });\n  }\n\n  public render(): JSX.Element {\n    return (\n      <>\n        {/*data URIs are invalid for fb/twitter cards, so only put image in there if http URL:*/}\n        {!this.props.disableHelmet &&\n          this.state.charter &&\n          this.state.charter.logoUrl &&\n          this.state.charter.logoUrl.indexOf(\"http\") === 0 && <HelmetHelper image={this.state.charter.logoUrl} />}\n\n        <BoostImgDiv>{this.renderImage()}</BoostImgDiv>\n        <BoostFlexStartMobile>\n          <BoostImgDivMobile>{this.renderImage()}</BoostImgDivMobile>\n          <BoostNewsroomInfo>\n            <BoostNewsroomName href={this.state.charter && this.state.charter.newsroomUrl} target=\"_blank\">\n              {this.props.newsroomData.name}\n            </BoostNewsroomName>\n            {this.props.open && (\n              <>\n                {this.props.boostOwner && (\n                  <ChevronAnchor component={Link} to={`/boosts/${this.props.boostId}/edit`}>\n                    <b>Edit Boost</b>\n                  </ChevronAnchor>\n                )}\n                {this.renderNewsroomURL()}\n                <ChevronAnchor\n                  href={`${document.location.origin}/listing/${\n                    this.props.handle ? this.props.handle : this.props.newsroomContractAddress\n                  }`}\n                  target=\"_blank\"\n                >\n                  View on Civil Registry\n                </ChevronAnchor>\n              </>\n            )}\n          </BoostNewsroomInfo>\n        </BoostFlexStartMobile>\n      </>\n    );\n  }\n\n  private renderImage(): JSX.Element {\n    if (this.state.charter) {\n      return (\n        <>\n          <img\n            src={this.state.charter.logoUrl || ((defaultNewsroomImgUrl as any) as string)}\n            onError={e => {\n              (e.target as any).src = defaultNewsroomImgUrl;\n            }}\n          />\n        </>\n      );\n    } else {\n      return <></>;\n    }\n  }\n\n  private renderNewsroomURL(): JSX.Element {\n    if (this.state.charter && this.context.renderContext !== RENDER_CONTEXT.EMBED) {\n      return (\n        <ChevronAnchor href={this.state.charter.newsroomUrl} target=\"_blank\">\n          Visit Newsroom\n        </ChevronAnchor>\n      );\n    } else {\n      return <></>;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostPayments.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Payments, colors, fonts, mediaQueries, ChevronAnchorLeft, RENDER_CONTEXT } from \"@joincivil/components\";\nimport { BoostTitle, BoostTextButton, BoostBack } from \"./BoostStyledComponents\";\nimport { PaymentFAQText } from \"./BoostTextComponents\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\n\nconst BoostPaymentsWrapper = styled.div`\n  margin: 0 auto 45px;\n  max-width: 400px;\n  padding: 45px 0 0;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 auto 30px;\n    padding: 20px 15px;\n  }\n\n  ${props =>\n    props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n    `\n    && {\n      margin-bottom: 0\n    }\n  `}\n`;\n\nconst BoostHeaderWrap = styled.div`\n  margin: 0 0 20px;\n`;\n\nconst BoostHeader = styled.h2`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 24px;\n  line-height: 33px;\n  font-weight: bold;\n  margin: 0 0 25px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 16px;\n    line-height: 26px;\n    font-weight: normal;\n    margin-bottom: 12px;\n  }\n`;\n\nconst BoostPayFooterSection = styled.div`\n  margin: 20px 0 40px;\n\n  ${mediaQueries.MOBILE} {\n    margin-bottom: 16px;\n  }\n\n  h3 {\n    font-size: 14px;\n    line-height: 22px;\n    font-weight: 700;\n    margin: 0 0 10px;\n  }\n\n  a {\n    display: block;\n    font-size: 14px;\n    line-height: 22px;\n    margin: 0 0 10px;\n    text-decoration: none;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport interface BoostPaymentsProps {\n  isStripeConnected: boolean;\n  stripeAccountID: string;\n  paymentAddr: EthAddress;\n  boostId: string;\n  title: string;\n  newsroomName: string;\n  activeChallenge: boolean;\n  history: any;\n  handleBackToListing(): void;\n  handlePaymentSuccess(): void;\n}\n\nexport const BoostPayments: React.FunctionComponent<BoostPaymentsProps> = props => {\n  const { history } = props;\n  let usdToSpend = 0;\n  if (history && history.location && history.location.state && history.location.state.usdToSpend) {\n    usdToSpend = history.location.state.usdToSpend;\n  }\n\n  return (\n    <BoostPaymentsWrapper>\n      <BoostHeaderWrap>\n        <BoostBack>\n          <ChevronAnchorLeft component={BoostTextButton} onClick={() => props.handleBackToListing()}>\n            Back to Boost info\n          </ChevronAnchorLeft>\n        </BoostBack>\n        <BoostHeader>Complete your Boost payment</BoostHeader>\n        <BoostTitle>{props.title}</BoostTitle>\n      </BoostHeaderWrap>\n      <Payments\n        postId={props.boostId}\n        usdToSpend={usdToSpend}\n        newsroomName={props.newsroomName}\n        activeChallenge={props.activeChallenge}\n        paymentAddress={props.paymentAddr}\n        isStripeConnected={props.isStripeConnected}\n        stripeAccountID={props.stripeAccountID}\n        handleClose={props.handlePaymentSuccess}\n        boostType={\"project\"}\n      />\n      <BoostPayFooterSection>\n        <PaymentFAQText />\n      </BoostPayFooterSection>\n    </BoostPaymentsWrapper>\n  );\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostPermissionsHOC.tsx",
    "content": "import * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Query } from \"react-apollo\";\nimport gql from \"graphql-tag\";\nimport { EthAddress } from \"@joincivil/typescript-types\";\nimport { LoadingMessage, CivilContext, ICivilContext, ErrorIcon } from \"@joincivil/components\";\nimport { BoostWrapper } from \"./BoostStyledComponents\";\n\nexport const IS_NEWSROOM_ADMIN_QUERY = gql`\n  query($contractAddress: String!) {\n    channelsGetByNewsroomAddress(contractAddress: $contractAddress) {\n      currentUserIsAdmin\n      newsroom {\n        charter {\n          name\n        }\n      }\n    }\n  }\n`;\n\nexport interface BoostPermissionsOuterProps {\n  disableOwnerCheck?: boolean;\n  editMode?: boolean;\n}\n\nexport interface BoostPermissionsInjectedProps {\n  boostOwner?: boolean;\n  setNewsroomContractAddress(address: EthAddress): void;\n}\n\nexport interface BoostPermissionsState {\n  userEthAddress?: EthAddress;\n  newsroomContractAddress?: EthAddress;\n}\n\n/** Usage: Wrap component with this HOC and make sure to call the injected prop `setNewsroomContractAddress` with the newsroom address once that is loaded. */\nexport const withBoostPermissions = <TProps extends BoostPermissionsInjectedProps>(\n  WrappedComponent: React.ComponentType<TProps>,\n  requirePermissions?: boolean,\n) => {\n  type TOriginalProps = Omit<TProps, keyof BoostPermissionsInjectedProps>;\n  return class ComponentWithBoostPermissions extends React.Component<\n    BoostPermissionsOuterProps & TOriginalProps,\n    BoostPermissionsState\n  > {\n    public static contextType = CivilContext;\n    public context!: ICivilContext;\n\n    constructor(props: BoostPermissionsOuterProps & TOriginalProps) {\n      super(props);\n      this.state = {};\n    }\n\n    public async componentDidMount(): Promise<void> {\n      await this.getUserEthAddress();\n    }\n\n    public render(): JSX.Element {\n      if (!this.state.newsroomContractAddress || this.props.disableOwnerCheck) {\n        return (\n          <WrappedComponent {...(this.props as TProps)} setNewsroomContractAddress={this.setNewsroomContractAddress} />\n        );\n      }\n\n      return (\n        <Query query={IS_NEWSROOM_ADMIN_QUERY} variables={{ contractAddress: this.state.newsroomContractAddress }}>\n          {this.renderWithQuery}\n        </Query>\n      );\n    }\n\n    public renderWithQuery = ({ error, loading, data }: { error?: any; loading?: any; data?: any }): JSX.Element => {\n      const isBoostOwner =\n        data && data.channelsGetByNewsroomAddress && data.channelsGetByNewsroomAddress.currentUserIsAdmin;\n\n      // If editMode/requirePermissions then entire view depends on if user is owner, so block everything and show loading or permissions messages:\n      if ((this.props.editMode || requirePermissions) && this.state.newsroomContractAddress) {\n        if (loading) {\n          return this.renderLoading();\n        } else if (error || !data || !data.channelsGetByNewsroomAddress) {\n          console.error(\n            \"error loading channel data for\",\n            this.state.newsroomContractAddress,\n            \" error:\",\n            error,\n            \"data:\",\n            data,\n          );\n          return this.renderError(\n            \"Sorry, there was an error loading your newsroom information. Please try again later.\",\n          );\n        } else if (!isBoostOwner) {\n          if (!this.state.userEthAddress) {\n            return this.renderNotConnected();\n          }\n          return this.renderNotChannelAdmin(data.channelsGetByNewsroomAddress.newsroom.charter.name);\n        }\n      }\n\n      return (\n        <WrappedComponent\n          {...(this.props as TProps)}\n          boostOwner={isBoostOwner}\n          setNewsroomContractAddress={this.setNewsroomContractAddress}\n        />\n      );\n    };\n\n    public renderLoading(): JSX.Element {\n      return (\n        <BoostWrapper open={true}>\n          <LoadingMessage>Loading Permissions</LoadingMessage>\n        </BoostWrapper>\n      );\n    }\n\n    public renderError(message: string): JSX.Element {\n      return (\n        <BoostWrapper open={true}>\n          <ErrorIcon width={16} height={16} /> {message}\n        </BoostWrapper>\n      );\n    }\n\n    public renderNotConnected(): JSX.Element {\n      return (\n        <BoostWrapper open={true}>\n          <p>\n            Please ensure that you are logged in to Civil and have connected your Ethereum account via a browser wallet\n            such as MetaMask so that we can verify your ability to create and edit Project Boosts for this newsroom.\n          </p>\n        </BoostWrapper>\n      );\n    }\n\n    public renderNotChannelAdmin(newsroomName: string): JSX.Element {\n      return (\n        <BoostWrapper open={true}>\n          <p>\n            Your account and ETH address <code>{this.state.userEthAddress}</code> don't have permissions to create and\n            edit Project Boosts for \"{newsroomName}\". You can view the newsrooms you have access to at your{\" \"}\n            <Link to=\"/dashboard/newsrooms\">Newsroom Dashboard</Link>. Please verify that you are logged in to the\n            correct Civil account and ethereum wallet.\n          </p>\n          <p>Alternately, please contact the newsroom and request that an officer add your account.</p>\n          <p>\n            <Link to={`/listing/${this.state.newsroomContractAddress}`}>View newsroom information.</Link>\n          </p>\n        </BoostWrapper>\n      );\n    }\n\n    public async getUserEthAddress(): Promise<void> {\n      if (this.props.disableOwnerCheck || !this.context.civil) {\n        return;\n      }\n\n      this.context.civil.currentProviderEnable();\n      this.setState({\n        userEthAddress: await this.context.civil.accountStream.first().toPromise(),\n      });\n    }\n\n    public setNewsroomContractAddress = (newsroomContractAddress: EthAddress) => {\n      // @HACK/tobek: This gets called from `render()` function of wrapped component because we pick it up from apollo `<Query>` component. Bad form to call setState from render (putting in setImmediate to remove React warning) but the conditional prevents an infinite loop, and the only alternative is to use `withApollo` and get apollo client as prop and call this query on `componentDidMount` in wrapped component or something, which is an annoying refactor right now.\n      if (this.state.newsroomContractAddress !== newsroomContractAddress) {\n        setImmediate(() => {\n          this.setState({\n            newsroomContractAddress,\n          });\n        });\n      }\n    };\n  };\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostProceeds.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { Query } from \"react-apollo\";\nimport {\n  LoadingIndicator,\n  colors,\n  fonts,\n  mediaQueries,\n  withNewsroomChannel,\n  NewsroomChannelInjectedProps,\n} from \"@joincivil/components\";\nimport { boostProceedsQuery } from \"./queries\";\nimport { CurrencyLabel } from \"./BoostStyledComponents\";\n\nconst Wrapper = styled.div`\n  display: flex;\n  justify-content: space-between;\n  margin: 32px 0;\n  font-size: 14px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\nconst Proceed = styled.div`\n  padding: 20px;\n  flex: 1;\n`;\nconst TotalProceeds = styled(Proceed)`\n  font-family: ${fonts.SANS_SERIF};\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n`;\n\nconst Amount = styled.span`\n  color: ${colors.primary.BLACK};\n  font-size: 16px;\n`;\nconst TotalAmount = styled(Amount)`\n  font-size: 20px;\n`;\n\nexport interface BoostProceedsProps {\n  newsroomAddress: string;\n}\n\nclass BoostProceedsComponent extends React.Component<BoostProceedsProps & NewsroomChannelInjectedProps> {\n  public constructor(props: BoostProceedsProps & NewsroomChannelInjectedProps) {\n    super(props);\n  }\n  public render(): JSX.Element {\n    return (\n      <Query query={boostProceedsQuery} variables={{ channelID: this.props.channelData.id }}>\n        {({ loading, error, data }) => {\n          if (loading) {\n            return <LoadingIndicator />;\n          } else if (error || !data || !data.getChannelTotalProceeds) {\n            console.error(\"Error loading boost proceeds query:\", error || \"no data returned\");\n            return (\n              <span style={{ color: \"red\" }}>\n                Error loading Project Boost proceed amounts: {JSON.stringify(error || \"no data returned\")}\n              </span>\n            );\n          }\n\n          let { totalAmount, ether, ethUsdAmount, usd } = data.getChannelTotalProceeds;\n          totalAmount = parseFloat(totalAmount || 0).toFixed(2);\n          ether = parseFloat(ether || 0).toFixed(5);\n          ethUsdAmount = parseFloat(ethUsdAmount || 0).toFixed(2);\n          usd = parseFloat(usd || 0).toFixed(2);\n\n          return (\n            <Wrapper>\n              <TotalProceeds>\n                <div>\n                  <TotalAmount>${totalAmount}</TotalAmount> <CurrencyLabel>USD</CurrencyLabel>\n                </div>\n                <div>Total Collected</div>\n              </TotalProceeds>\n              <Proceed>\n                <div>\n                  <Amount>{ether}</Amount> <CurrencyLabel>ETH</CurrencyLabel> ≈ ${ethUsdAmount}{\" \"}\n                  <CurrencyLabel secondary={true}>USD</CurrencyLabel>\n                </div>\n                <div>ETH Proceeds</div>\n              </Proceed>\n              <Proceed>\n                <div>\n                  <Amount>${usd}</Amount> <CurrencyLabel secondary={true}>USD</CurrencyLabel>\n                </div>\n                <div>Credit Card Proceeds</div>\n              </Proceed>\n            </Wrapper>\n          );\n        }}\n      </Query>\n    );\n  }\n}\n\nexport const BoostProceeds: React.ComponentType<BoostProceedsProps> = withNewsroomChannel(\n  BoostProceedsComponent,\n) as any;\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostProgress.tsx",
    "content": "import * as React from \"react\";\nimport styled from \"styled-components\";\nimport { colors, mediaQueries } from \"@joincivil/components\";\n\nexport interface BoostProgressWidthProps {\n  paymentsTotal: number;\n  goalAmount: number;\n}\n\nexport interface BoostProgressProps {\n  open: boolean;\n  paymentsTotal: number;\n  goalAmount: number;\n  timeRemaining: string;\n}\n\nconst BoostProgressWrapper = styled.div`\n  margin-bottom: 20px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    padding-top: 20px;\n  }\n`;\n\nconst BoostProgressBar = styled.div`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  border-radius: 5px;\n  height: 10px;\n  margin: 8px 0;\n  overflow: hidden;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    border-radius: 4px;\n    height: 8px;\n  }\n`;\n\nconst BoostProgressPercent = styled.div`\n  background-color: ${colors.accent.CIVIL_TEAL_DARK};\n  border-radius: 5px;\n  height: 10px;\n  width: ${(props: BoostProgressWidthProps) => ((props.paymentsTotal / props.goalAmount) * 100).toString()}%;\n\n  ${mediaQueries.MOBILE} {\n    border-radius: 4px;\n    height: 8px;\n  }\n`;\n\nconst BoostProgressFlex = styled.div`\n  align-items: flex-start;\n  display: flex;\n  justify-content: space-between;\n`;\n\nconst AlignRight = styled.div`\n  text-align: right;\n`;\n\nconst TextSecondary = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 14px;\n  font-weight: 600;\n  line-height: 14px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 12px;\n    line-height: 12px;\n  }\n`;\n\nconst TextPrimary = styled.span`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 18px;\n  font-weight: 500;\n  line-height: 18px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 15px;\n    line-height: 15px;\n  }\n`;\n\nexport const BoostProgress: React.FunctionComponent<BoostProgressProps> = props => {\n  const percentRaised = Math.round((props.paymentsTotal / props.goalAmount) * 100);\n\n  return (\n    <BoostProgressWrapper>\n      <BoostProgressFlex>\n        <TextPrimary>{\"$\" + props.paymentsTotal.toFixed(2)} raised</TextPrimary>\n        <AlignRight>\n          <TextPrimary>\n            <b>${props.goalAmount}</b> goal\n          </TextPrimary>\n        </AlignRight>\n      </BoostProgressFlex>\n      <BoostProgressBar>\n        <BoostProgressPercent paymentsTotal={props.paymentsTotal} goalAmount={props.goalAmount} />\n      </BoostProgressBar>\n      <BoostProgressFlex>\n        <TextSecondary>{percentRaised}%</TextSecondary>\n        <AlignRight>\n          <TextSecondary>{props.timeRemaining}</TextSecondary>\n        </AlignRight>\n      </BoostProgressFlex>\n    </BoostProgressWrapper>\n  );\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostShare.tsx",
    "content": "import * as React from \"react\";\nimport { colors, ShareEmailIcon, ShareTwitterIcon } from \"@joincivil/components\";\nimport { mediaQueries } from \"@joincivil/elements\";\nimport styled from \"styled-components\";\nimport { BoostShareEmbed } from \"./BoostShareEmbed\";\nimport { BoostShareHeading } from \"./BoostStyledComponents\";\n\nconst Wrapper = styled.div`\n  position: relative;\n  text-align: center;\n  width: 170px;\n  z-index: 10;\n`;\n\nconst IconsWrapper = styled.span`\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    justify-content: space-around;\n    flex-grow: 1;\n    padding-left: 16px;\n  }\n\n  a {\n    cursor: pointer;\n\n    svg path {\n      fill: ${colors.accent.CIVIL_GRAY_0};\n      transition: fill 0.2s;\n    }\n\n    &:hover {\n      svg path {\n        fill: ${colors.accent.CIVIL_BLUE};\n      }\n    }\n  }\n`;\n\nexport interface BoostShareProps {\n  newsroom: string;\n  title: string;\n  boostId: string;\n  className?: string;\n}\n\nexport class BoostShare extends React.Component<BoostShareProps> {\n  public render(): JSX.Element {\n    const boostUrl = `${document.location.origin}/boosts/${this.props.boostId}`;\n    const twitterShare = this.getTweetURL(boostUrl);\n    const emailShare = this.getEmailURL(boostUrl);\n\n    return (\n      <Wrapper className={this.props.className}>\n        <BoostShareHeading>Share this Project Boost</BoostShareHeading>\n        <IconsWrapper>\n          <a href={twitterShare} target=\"_blank\">\n            <ShareTwitterIcon />\n          </a>\n          <a href={emailShare} target=\"_blank\">\n            <ShareEmailIcon />\n          </a>\n          <BoostShareEmbed boostId={this.props.boostId} />\n        </IconsWrapper>\n      </Wrapper>\n    );\n  }\n\n  private getEmailURL = (url: string) => {\n    const subjectText = \"You can support \" + this.props.newsroom + \" with a Boost\";\n    const bodyText =\n      \"I just gave \" +\n      this.props.newsroom +\n      \" a Boost on the Civil Registry. \" +\n      this.props.newsroom +\n      \" also needs your support to make their journalism project a success! \" +\n      \"\\n\\n\" +\n      url +\n      \"\\n\\n\" +\n      \"Boosts is a peer-to-peer fundraising tool that allows Civil newsrooms to raise funds for specific journalism initiatives. Feel free to pass this email on to anyone you know who may also want to support their project!\" +\n      \"\\n\\n\" +\n      \"Thank you!\";\n    const emailShare = \"mailto:?subject=\" + encodeURI(subjectText) + \"&body=\" + encodeURI(bodyText);\n    return emailShare;\n  };\n\n  private getTweetURL = (url: string) => {\n    const shareText =\n      \"Help give \" + this.props.newsroom + \" a Boost on @Civil by donating to their project: \" + this.props.title;\n    const twitterShare = \"https://twitter.com/intent/tweet?text=\" + encodeURI(shareText) + \"&url=\" + url;\n    return twitterShare;\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostShareEmbed.tsx",
    "content": "import * as React from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { copyToClipboard } from \"@joincivil/utils\";\nimport { EmbedIcon, ModalHeading, colors, Modal, CloseXIcon } from \"@joincivil/components\";\nimport styled from \"styled-components\";\nimport { BoostButton, BoostModalContent, BoostModalCloseBtn } from \"./BoostStyledComponents\";\nimport { BoostEmbedIframe } from \"./BoostEmbedIframe\";\n\nconst EmbedCode = styled.pre`\n  white-space: pre-wrap;\n  word-break: break-word;\n  background: ${colors.accent.CIVIL_GRAY_5};\n  padding: 8px;\n`;\n\nconst ModalContain = styled.div`\n  position: relative;\n`;\n\nexport interface BoostShareEmbedProps {\n  boostId: string;\n}\n\nexport const BoostShareEmbed = (props: BoostShareEmbedProps) => {\n  const [modalOpen, setModalOpen] = React.useState(false);\n  const [copied, setCopied] = React.useState(false);\n\n  let embedCode = \"\";\n  if (modalOpen) {\n    embedCode = ReactDOMServer.renderToStaticMarkup(\n      <BoostEmbedIframe\n        iframeSrc={`${document.location.origin}/embed/boost/${props.boostId}`}\n        fallbackUrl={`${document.location.origin}/boosts/${props.boostId}`}\n        boostType=\"project\"\n        initialHeight={525}\n      />,\n    );\n  }\n\n  return (\n    <>\n      <a onClick={() => setModalOpen(true)}>\n        <EmbedIcon />\n      </a>\n      {modalOpen && (\n        <Modal width={600}>\n          <ModalContain>\n            <BoostModalCloseBtn onClick={() => setModalOpen(false)}>\n              <CloseXIcon color={colors.accent.CIVIL_GRAY_2} />\n            </BoostModalCloseBtn>\n            <ModalHeading>Embed Project Boost</ModalHeading>\n            <BoostModalContent>\n              Copy and paste this HTML code into your website where you would like this Project Boost to be embedded:\n            </BoostModalContent>\n            <EmbedCode>{embedCode}</EmbedCode>\n            <BoostButton onClick={() => setCopied(copyToClipboard(embedCode))}>Copy</BoostButton> {copied && \"Copied!\"}\n          </ModalContain>\n        </Modal>\n      )}\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostStyledComponents.tsx",
    "content": "import styled from \"styled-components\";\nimport { Link } from \"react-router-dom\";\nimport {\n  colors,\n  fonts,\n  mediaQueries,\n  Button,\n  InvertedButton,\n  RENDER_CONTEXT,\n  ContributorsTitle,\n} from \"@joincivil/components\";\nimport { BoostShare } from \"./BoostShare\";\n\nexport interface BoostStyleProps {\n  open?: boolean;\n  margin?: string;\n  textAlign?: string;\n}\n\nexport const MobileStyle = styled.span`\n  display: none;\n\n  ${mediaQueries.MOBILE} {\n    display: inline;\n  }\n`;\n\nexport const BoostWrapper = styled.div`\n  border: ${(props: BoostStyleProps) => (props.open ? \"none\" : \"1px solid \" + colors.accent.CIVIL_GRAY_4)};\n  font-family: ${fonts.SANS_SERIF};\n  margin: 0 auto 45px;\n  padding: 30px 30px 30px 110px;\n  position: relative;\n\n  ${mediaQueries.MOBILE} {\n    border-color: transparent;\n    border-bottom: ${(props: BoostStyleProps) => (props.open ? \"none\" : \"1px solid \" + colors.accent.CIVIL_GRAY_4)};\n    border-top: ${(props: BoostStyleProps) => (props.open ? \"none\" : \"1px solid \" + colors.accent.CIVIL_GRAY_3)};\n    margin: 0 auto 30px;\n    padding: 20px 15px;\n  }\n`;\n\nexport const BoostTitle = styled.h2`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  font-size: 20px;\n  font-family: ${fonts.SANS_SERIF};\n  line-height: 27px;\n  font-weight: bold;\n  margin: 0 0 8px;\n  transition: color 0.25s ease;\n\n  ${props =>\n    props.theme.renderContext === RENDER_CONTEXT.EMBED &&\n    \"white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\"}\n\n  ${mediaQueries.MOBILE} {\n    margin: 0 0 12px;\n  }\n  ${mediaQueries.MOBILE_SMALL} {\n    font-size: 16px;\n    line-height: 22px;\n  }\n`;\n// Suppress unncessary styled-components console.error from https://github.com/styled-components/styled-components/commit/f1f62440668af2e9ad9b9376f052cac8416672dd:\nBoostTitle.defaultProps = {\n  theme: {},\n};\n\nexport const BoostWrapperLink = styled(Link)`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  display: block;\n  font-family: ${fonts.SANS_SERIF};\n  margin: 0 auto 45px;\n  padding: 30px 30px 30px 110px;\n  position: relative;\n  transition: border 0.25s ease;\n\n  &:hover {\n    ${BoostTitle} {\n      color: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n\n  ${mediaQueries.MOBILE} {\n    border-color: transparent;\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    border-top: 1px solid ${colors.accent.CIVIL_GRAY_3};\n    margin: 0 auto 30px;\n    padding: 20px 15px;\n  }\n`;\n\nexport const BoostWrapperFullWidthHr = styled.hr`\n  background-color: ${colors.accent.CIVIL_GRAY_4};\n  border: none;\n  height: 1px;\n  margin: 28px 0 28px -110px;\n  width: calc(100% + 140px);\n\n  ${mediaQueries.MOBILE} {\n    margin-left: -20px;\n    width: calc(100% + 40px);\n  }\n`;\n\nexport const BoostButton = styled(Button)`\n  position: relative;\n  z-index: 1;\n  cursor: pointer;\n  font-size: 14px;\n  font-weight: bold;\n  letter-spacing: 0;\n  line-height: 19px;\n  padding: 10px 40px;\n  text-transform: none;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n    margin-bottom: 20px;\n    width: 100%;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    margin-bottom: 10px;\n  }\n`;\n\nexport const BoostTextButton = styled(InvertedButton)`\n  border: none;\n  cursor: pointer;\n  font-size: 14px;\n  letter-spacing: 0;\n  line-height: 19px;\n  padding: 0;\n  text-transform: none;\n\n  &:hover {\n    background-color: transparent;\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: underline;\n  }\n`;\n\nexport const BoostLinkBtn = styled.a`\n  background-color: ${colors.accent.CIVIL_BLUE};\n  border-radius: 2px;\n  color: ${colors.basic.WHITE};\n  cursor: pointer;\n  font-size: 14px;\n  font-weight: bold;\n  line-height: 19px;\n  min-width: 220px;\n  padding: 10px;\n  text-align: center;\n  text-decoration: none;\n\n  &:hover {\n    color: ${colors.basic.WHITE};\n  }\n`;\n\nexport const BoostBack = styled.div`\n  margin: 0 0 30px;\n\n  ${mediaQueries.MOBILE} {\n    margin: 16px 0;\n    ${props => props.theme.renderContext === RENDER_CONTEXT.EMBED && `margin-top: 0;`};\n  }\n`;\n\nexport const BoostImgDiv = styled.div`\n  left: 30px;\n  position: absolute;\n  top: 30px;\n\n  img {\n    height: 64px;\n    object-fit: contain;\n    width: 64px;\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: none;\n  }\n`;\n\nexport const BoostImgDivMobile = styled.div`\n  display: none;\n\n  img {\n    height: ${(props: BoostStyleProps) => (props.open ? \"64px\" : \"48px\")};\n    margin-right: 10px;\n    object-fit: contain;\n    width: ${(props: BoostStyleProps) => (props.open ? \"64px\" : \"48px\")};\n  }\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nexport const BoostNewsroomInfo = styled.div`\n  align-items: center;\n  display: flex;\n  margin-bottom: 30px;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    font-size: 14px;\n    line-height: 20px;\n    margin-right: 20px;\n    text-decoration: none;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: underline;\n    }\n\n    ${mediaQueries.MOBILE} {\n      display: block;\n      margin-bottom: 5px;\n    }\n  }\n`;\n\nexport const BoostNewsroomName = styled.a`\n  // override <a> specificity\n  && {\n    color: ${colors.accent.CIVIL_GRAY_0} !important;\n    font-family: ${fonts.SANS_SERIF};\n    font-size: 18px;\n    line-height: 26px;\n    font-weight: 200;\n    margin-right: 20px;\n\n    &:hover {\n      color: ${colors.primary.CIVIL_BLUE_1};\n    }\n  }\n\n  ${mediaQueries.MOBILE} {\n    font-size: 14px;\n  }\n`;\n\nexport const BoostDescShareFlex = styled.div`\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: block;\n  }\n`;\n\nexport const BoostDescShareFlexRight = styled.div`\n  padding: 0 30px;\n\n  ${ContributorsTitle} {\n    font-size: 14px;\n    letter-spacing: 0;\n    line-height: 19px;\n    text-transform: none;\n  }\n\n  ${mediaQueries.MOBILE} {\n    padding: 0 20px;\n  }\n\n  ${mediaQueries.MOBILE_SMALL} {\n    margin-bottom: 30px;\n    padding: 0;\n  }\n`;\n\nexport const BoostShareHeading = styled.h3`\n  font-size: 14px;\n  font-weight: bold;\n  line-height: 19px;\n  margin: 5px 0 10px;\n  white-space: nowrap;\n\n  ${mediaQueries.MOBILE} {\n    color: ${colors.primary.BLACK};\n    font-size: 16px;\n    line-height: 28px;\n    margin-top: 1px;\n  }\n`;\n\nexport const BoostCardShare = styled(BoostShare)`\n  margin-bottom: 20px;\n  width: auto;\n\n  ${mediaQueries.MOBILE_SMALL} {\n    display: flex;\n    margin-bottom: 8px;\n  }\n`;\n\nexport const BoostPaymentShare = styled.span`\n  display: flex;\n  justify-content: center;\n  margin: 10px auto 8px;\n`;\n\nexport const BoostDescription = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin-bottom: 30px;\n\n  ${mediaQueries.MOBILE} {\n    margin-bottom: 10px;\n  }\n\n  h3 {\n    font-size: 14px;\n    font-weight: bold;\n    line-height: 19px;\n    margin: 0 0 10px;\n\n    ${mediaQueries.MOBILE} {\n      color: ${colors.primary.BLACK};\n      font-size: 16px;\n      line-height: 28px;\n    }\n  }\n\n  p {\n    font-size: 14px;\n    line-height: 20px;\n    margin: 0 0 15px;\n\n    ${mediaQueries.MOBILE} {\n      font-size: 16px;\n      line-height: 28px;\n    }\n\n    a {\n      color: ${colors.accent.CIVIL_BLUE};\n\n      &:hover {\n        color: ${colors.accent.CIVIL_BLUE};\n        text-decoration: underline;\n      }\n    }\n  }\n`;\n\nexport const BoostDescriptionWhy = styled.div`\n  color: ${colors.accent.CIVIL_GRAY_0};\n  margin-bottom: 30px;\n\n  p {\n    font-size: 18px;\n    line-height: 32px;\n    margin: 0 0 15px;\n  }\n`;\n\nexport const BoostDescriptionTable = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_4};\n  margin-bottom: 30px;\n  padding: 20px;\n\n  ${mediaQueries.MOBILE} {\n    border: none;\n    padding: 0;\n  }\n\n  h3 {\n    font-size: 14px;\n    font-weight: bold;\n    margin: 0 0 10px;\n\n    ${mediaQueries.MOBILE} {\n      font-size: 16px;\n      line-height: 28px;\n    }\n  }\n\n  table {\n    border-collapse: collapse;\n    border-spacing: 0;\n    width: 100%;\n\n    th {\n      font-size: 12px;\n      letter-spacing: 1px;\n      padding: 8px 15px 8px 0;\n      text-align: left;\n      text-transform: uppercase;\n\n      ${mediaQueries.MOBILE} {\n        color: ${colors.accent.CIVIL_GRAY_2};\n        padding: 8px;\n      }\n    }\n\n    td {\n      padding: 8px 15px 8px 0;\n\n      ${mediaQueries.MOBILE} {\n        color: ${colors.accent.CIVIL_GRAY_2};\n        padding: 8px;\n      }\n    }\n\n    ${mediaQueries.MOBILE} {\n      tbody {\n        tr:nth-child(odd) {\n          background-color: ${colors.accent.CIVIL_GRAY_4};\n        }\n      }\n    }\n  }\n`;\n\nexport const BoostProgressCol = styled.div`\n  width: ${(props: BoostStyleProps) => (props.open ? \"calc(100% - 200px)\" : \"100%\")};\n\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const BoostFormTitle = styled.div`\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 22px;\n`;\n\nexport const BoostPayFormTitle = styled.div`\n  font-size: 16px;\n  font-weight: 500;\n  line-height: 22px;\n`;\n\nexport const BoostFlexStartMobile = styled.div`\n  ${mediaQueries.MOBILE} {\n    align-items: flex-start;\n    display: flex;\n  }\n`;\n\nexport const BoostFlexCenter = styled.div`\n  align-items: center;\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n\n    button {\n      margin: 0;\n    }\n  }\n`;\n\nexport const BoostFlexEnd = styled.div`\n  align-items: flex-end;\n  display: flex;\n  justify-content: space-between;\n\n  ${mediaQueries.MOBILE} {\n    display: block;\n  }\n`;\n\nexport const BoostModalContain = styled.div`\n  font-family: ${fonts.SANS_SERIF};\n  overflow: auto;\n  padding: 10px 30px 20px 30px;\n  position: relative;\n  text-align: ${(props: BoostStyleProps) => (props.textAlign ? props.textAlign : \"left\")};\n  width: 500px;\n\n  ${mediaQueries.MOBILE} {\n    width: 100%;\n  }\n`;\n\nexport const BoostModalHeader = styled.div`\n  color: ${colors.primary.BLACK};\n  font-size: 18px;\n  font-weight: 600;\n  line-height: 24px;\n  margin-bottom: 15px;\n  text-align: center;\n\n  svg {\n    display: block;\n    margin: 15px auto 20px;\n  }\n`;\n\nexport const BoostModalContent = styled.p`\n  color: ${colors.primary.BLACK};\n  font-size: 14px;\n  line-height: 24px;\n  text-align: ${(props: BoostStyleProps) => (props.textAlign ? props.textAlign : \"left\")};\n`;\n\nexport const BoostModalCloseBtn = styled(InvertedButton)`\n  border: none;\n  padding: 0;\n  height: 40px;\n  position: absolute;\n  right: 5px;\n  top: 5px;\n  width: 40px;\n\n  svg path {\n    transition: fill 0.2s ease;\n  }\n\n  &:focus,\n  &:hover {\n    background-color: transparent;\n\n    svg path {\n      fill: ${colors.accent.CIVIL_BLUE};\n    }\n  }\n`;\n\nexport const BoostSmallPrint = styled.div`\n  font-size: 12px;\n  margin: ${(props: BoostStyleProps) => props.margin || \"0\"};\n`;\n\nexport const BoostAmount = styled.div`\n  span {\n    margin-right: 10px;\n  }\n`;\n\nexport const BoostNotice = styled.div`\n  font-size: 14px;\n  line-height: 22px;\n  margin-bottom: 25px;\n\n  ${mediaQueries.MOBILE} {\n    font-size: 12px;\n    line-height: 18px;\n    margin-bottom: 12px;\n  }\n`;\n\nexport const BoostCompeletedWrapper = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_2};\n  font-family: ${fonts.SANS_SERIF};\n  font-size: 14px;\n  line-height: 20px;\n  padding: 20px 25px 12px;\n  margin: 30px 50px;\n\n  ${mediaQueries.MOBILE} {\n    padding: 10px 15px 2px;\n    margin: 15px 10px;\n  }\n\n  h3,\n  p {\n    font-size: 14px;\n    line-height: 20px;\n    margin: 0 0 10px;\n\n    ${mediaQueries.MOBILE} {\n      margin: 0 0 15px;\n    }\n  }\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: none;\n\n    &:hover {\n      color: ${colors.accent.CIVIL_BLUE};\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport const BoostNotificationContain = styled.div`\n  padding: 20px;\n`;\n\nexport const BoostNotification = styled.div`\n  border: 1px solid ${colors.accent.CIVIL_GRAY_3};\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 22px;\n  padding: 20px;\n\n  svg {\n    margin-right: 5px;\n    vertical-align: sub;\n  }\n`;\n\nexport const NoBoostsTextStyled = styled.p`\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 33px;\n  text-align: center;\n`;\n\nexport const SubmitInstructions = styled.p`\n  font-size: 16px;\n  font-weight: 500;\n  line-height: 22px;\n  margin: 0 30px 0 0;\n\n  ${mediaQueries.MOBILE} {\n    border-bottom: 1px solid ${colors.accent.CIVIL_GRAY_4};\n    font-size: 14px;\n    line-height: 24px;\n    margin: 0 0 30px;\n    padding: 0 0 30px;\n  }\n`;\n\nexport const SubmitWarning = styled.p`\n  font-size: 12px;\n  font-weight: 500;\n  line-height: 16px;\n  text-decoration: none;\n\n  a {\n    color: ${colors.accent.CIVIL_BLUE};\n    text-decoration: underline;\n  }\n\n  ${mediaQueries.MOBILE} {\n    font-size: 12px;\n    line-height: 22px;\n  }\n`;\n\nexport const CheckboxLabel = styled.span`\n  margin-left: 10px;\n`;\n\nexport const BoostAmountInputWrap = styled.div`\n  align-items: center;\n  display: flex;\n  margin-bottom: 22px;\n  padding-left: 20px;\n\n  ${mediaQueries.MOBILE} {\n    padding-left: 0;\n  }\n`;\n\nexport const BoostAmountInput = styled.div`\n  margin-right: 10px;\n  position: relative;\n  width: 100px;\n\n  &::before {\n    content: \"$\";\n    left: 10px;\n    position: absolute;\n    top: 10px;\n  }\n\n  > div {\n    margin: 0;\n  }\n\n  input {\n    margin: 0;\n    padding: 10px 10px 10px 20px;\n  }\n\n  label,\n  span {\n    display: none;\n  }\n\n  ${mediaQueries.MOBILE} {\n    width: 150px;\n  }\n`;\n\nexport const BoostUserInfoForm = styled.div`\n  margin-bottom: 50px;\n  max-width: 500px;\n  width: 100%;\n\n  ${mediaQueries.MOBILE} {\n    margin-bottom: 8px;\n  }\n\n  label {\n    display: block;\n    font-size: 16px;\n    font-weight: 500;\n    line-height: 22px;\n    margin-bottom: 5px;\n\n    ${mediaQueries.MOBILE} {\n      margin-bottom: 8px;\n    }\n  }\n\n  input {\n    width: 100%;\n  }\n`;\n\nexport interface CurrencyLabelProps {\n  secondary?: boolean;\n}\nexport const CurrencyLabel = styled.span`\n  color: ${colors.primary.CIVIL_GRAY_0};\n  font-size: 12px;\n  font-weight: ${(props: CurrencyLabelProps) => (props.secondary ? 500 : 600)};\n`;\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/BoostTextComponents.tsx",
    "content": "import * as React from \"react\";\nimport { HollowGreenCheck } from \"@joincivil/components\";\nimport { BoostNotification, NoBoostsTextStyled, BoostPaymentShare } from \"./BoostStyledComponents\";\nimport { urlConstants } from \"../urlConstants\";\nimport { BoostShare } from \"./BoostShare\";\n\nexport const NoBoostsText: React.FunctionComponent = props => (\n  <NoBoostsTextStyled>There are no Project Boosts at this time.</NoBoostsTextStyled>\n);\n\nexport const PaymentInfoText: React.FunctionComponent = props => (\n  <>\n    <h3>Payment Information</h3>\n    <p>\n      If the project does not meet its goals, your payment method will be still charged when the Project Boost ends. All\n      procceds of the Project Boost go directly to the newsroom.\n    </p>\n  </>\n);\n\nexport const PaymentFAQText: React.FunctionComponent = props => (\n  <>\n    <h3>Frequently Asked Questions</h3>\n    <a target=\"_blank\" href={urlConstants.FAQ_BOOST_HOW_TO_SUPPORT}>\n      How do I support a Project Boost?\n    </a>\n    <a target=\"_blank\" href={urlConstants.FAQ_BOOST_WHEN_CHARGED}>\n      When is my payment charged?\n    </a>\n    <a target=\"_blank\" href={urlConstants.FAQ_BOOST_CHARGED_IF_BOOST_FAILS}>\n      Am I still charged even if the Project Boost does not hit its target date?\n    </a>\n    <a target=\"_blank\" href={urlConstants.FAQ_BOOST_WHAT_PAYMENT_DATA}>\n      What information can others see about my payment?\n    </a>\n  </>\n);\n\nexport interface BoostShareTextProps {\n  newsroom: string;\n  boostId: string;\n  title: string;\n}\n\nexport const PaymentShareText: React.FunctionComponent<BoostShareTextProps> = props => (\n  <>\n    <p>Tell your friends about your Boost!</p>\n    <BoostPaymentShare>\n      <BoostShare boostId={props.boostId} newsroom={props.newsroom} title={props.title} />\n    </BoostPaymentShare>\n  </>\n);\n\nexport const BoostPaymentSuccess: React.FunctionComponent = props => (\n  <BoostNotification>\n    <HollowGreenCheck /> You supported this Project Boost\n  </BoostNotification>\n);\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/index.ts",
    "content": "export * from \"./Boost\";\nexport * from \"./BoostEmbedIframe\";\nexport * from \"./BoostForm\";\nexport * from \"./types\";\nexport * from \"./BoostCard\";\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/queries.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const boostFeedQuery = gql`\n  query Post($search: PostSearchInput!) {\n    postsSearch(search: $search) {\n      posts {\n        ... on PostBoost {\n          id\n          channel {\n            id\n            channelType\n            newsroom {\n              contractAddress\n            }\n          }\n          channelID\n          currencyCode\n          goalAmount\n          paymentsTotal(currencyCode: \"USD\")\n          title\n          dateEnd\n          why\n        }\n      }\n      beforeCursor\n      afterCursor\n    }\n  }\n`;\n\nexport const boostQuery = gql`\n  query Boost($id: String!) {\n    postsGet(id: $id) {\n      channelID\n      ... on PostBoost {\n        channel {\n          id\n          channelType\n          isStripeConnected\n          stripeAccountID\n          handle\n          newsroom {\n            contractAddress\n          }\n        }\n        currencyCode\n        goalAmount\n        paymentsTotal(currencyCode: \"USD\")\n        title\n        why\n        what\n        about\n        dateEnd\n        items {\n          item\n          cost\n        }\n        groupedSanitizedPayments {\n          usdEquivalent\n          payerChannel {\n            handle\n            tiny72AvatarDataUrl\n          }\n        }\n      }\n    }\n  }\n`;\n\nexport const boostNewsroomQuery = gql`\n  query listing($addr: String!) {\n    listing(addr: $addr) {\n      name\n      url\n      contractAddress\n      owner\n      whitelisted\n      charter {\n        uri\n      }\n      challenge {\n        challengeID\n      }\n    }\n  }\n`;\n\nexport const boostProceedsQuery = gql`\n  query proceeds($channelID: String!) {\n    getChannelTotalProceeds(channelID: $channelID) {\n      totalAmount\n      usd\n      ethUsdAmount\n      ether\n    }\n  }\n`;\n\nexport const createBoostMutation = gql`\n  mutation($input: PostCreateBoostInput!) {\n    postsCreateBoost(input: $input) {\n      id\n    }\n  }\n`;\n\nexport const editBoostMutation = gql`\n  mutation($postID: String!, $input: PostCreateBoostInput!) {\n    postsUpdateBoost(postID: $postID, input: $input) {\n      id\n    }\n  }\n`;\n\nexport const boostPayEthMutation = gql`\n  mutation($postID: String!, $input: PaymentsCreateEtherPaymentInput!) {\n    paymentsCreateEtherPayment(postID: $postID, input: $input) {\n      reaction\n      comment\n      transactionID\n    }\n  }\n`;\n\nexport const boostPayStripeMutation = gql`\n  mutation($postID: String!, $input: PaymentsCreateStripePaymentInput!) {\n    paymentsCreateStripePayment(postID: $postID, input: $input) {\n      amount\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/sdk/src/react/boosts/types.ts",
    "content": "export interface BoostData {\n  title: string;\n  goalAmount: number;\n  paymentsTotal: number;\n  dateEnd: string;\n  why: string;\n  what: string;\n  about: string;\n  channelID: string;\n  channel: {\n    id: string;\n    channelType: string;\n    isStripeConnected: boolean;\n    stripeAccountID: string;\n    newsroom: {\n      contractAddress: string;\n    };\n    handle: string;\n  };\n  items: BoostCostItem[];\n  groupedSanitizedPayments: BoostSanitizedPaymentData[];\n}\n\nexport interface BoostCostItem {\n  item: string;\n  cost?: number;\n}\n\nexport interface BoostNewsroomData {\n  name: string;\n  url: string;\n  owner: string;\n  whitelisted: boolean;\n  charter?: {\n    uri: string;\n  };\n  challenge?: {\n    challengeID: string;\n  };\n}\n\nexport interface BoostSanitizedPaymentData {\n  usdEquivalent: number;\n  payerChannel: {\n    handle: string;\n    tiny72AvatarDataUrl: string;\n  };\n}\n"
  },
  {
    "path": "packages/sdk/src/react/index.ts",
    "content": "export * from \"./boosts\";\nexport * from \"./NewsroomWithdraw\";\nexport * from \"./StoryBoost\";\n"
  },
  {
    "path": "packages/sdk/src/react/urlConstants.ts",
    "content": "// @TODO(sruddy) these will be added to @joincivil/utils adding here temporarily till we get that bumped\n\nconst FAQ_BASE_URL = \"https://help.civil.co\";\n\nexport const urlConstants = {\n  HOME: \"https://civil.co\",\n  HELP: \"https://help.civil.co\",\n  TERMS: \"https://learn.civil.co/terms\",\n  PRIVACY_POLICY: \"https://learn.civil.co/privacy-policy\",\n\n  // FAQ Boosts\n  FAQ_BOOSTS: FAQ_BASE_URL + \"/hc/en-us/categories/360001939731-Boosts\",\n  FAQ_BOOST_WITHDRAWL:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030195272-How-do-I-withdraw-my-ETH-proceeds-once-a-Boost-has-ended-\",\n  FAQ_BOOST_SUPPORTERS: FAQ_BASE_URL + \"/hc/en-us/sections/360005752331-Supporters\",\n  FAQ_WALLETS: FAQ_BASE_URL + \"/hc/en-us/sections/360003838452-Wallets\",\n  FAQ_CVL_TOKENS: FAQ_BASE_URL + \"/hc/en-us/articles/360016409251-What-are-Civil-tokens-CVL-\",\n  FAQ_BOOST_HOW_TO_SUPPORT: FAQ_BASE_URL + \"/hc/en-us/articles/360030520791-How-do-I-support-a-Boost-\",\n  FAQ_BOOST_WHEN_CHARGED: FAQ_BASE_URL + \"/hc/en-us/articles/360030521331-When-will-my-payment-be-charged-\",\n  FAQ_BOOST_CHARGED_IF_BOOST_FAILS:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030521471-Will-I-be-charged-if-the-Boost-does-not-hit-its-target-goal-date-\",\n  FAQ_BOOST_WHAT_PAYMENT_DATA:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030521711-What-information-can-others-see-about-my-payment-\",\n};\n"
  },
  {
    "path": "packages/sdk/src/react-app-env.d.ts",
    "content": "/// <reference types=\"node\" />\n/// <reference types=\"react\" />\n/// <reference types=\"react-dom\" />\n\ndeclare namespace NodeJS {\n  interface ProcessEnv {\n    NODE_ENV: \"development\" | \"production\" | \"test\";\n    PUBLIC_URL: string;\n  }\n}\n\ndeclare module \"*.bmp\" {\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.gif\" {\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.jpg\" {\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.jpeg\" {\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.png\" {\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.webp\" {\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.svg\" {\n  import * as React from \"react\";\n\n  export const ReactComponent: React.SFC<React.SVGProps<SVGSVGElement>>;\n\n  const src: string;\n  export default src;\n}\n\ndeclare module \"*.module.css\" {\n  const classes: { [key: string]: string };\n  export default classes;\n}\n\ndeclare module \"*.module.scss\" {\n  const classes: { [key: string]: string };\n  export default classes;\n}\n\ndeclare module \"*.module.sass\" {\n  const classes: { [key: string]: string };\n  export default classes;\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/SDKMessage.ts",
    "content": "import { LockboxMessage } from \"./lockbox/LockboxMessage\";\nimport { RegistryMessage } from \"./registry/RegistryMessage\";\nexport type SDKMessage = LockboxMessage | RegistryMessage;\n\nexport enum SDKMessageTypes {\n  LOCKBOX_CONFIRM_DEVICE_ACTIVATION_REQUEST = \"LOCKBOX_CONFIRM_DEVICE_ACTIVATION_REQUEST\",\n  LOCKBOX_SEND_DEVICE_ACTIVATION_REQUEST = \"LOCKBOX_SEND_DEVICE_ACTIVATION_REQUEST\",\n  LOCKBOX_CREATE_KEY = \"LOCKBOX_CREATE_KEY\",\n  LOCKBOX_GET_KEY = \"LOCKBOX_GET_KEY\",\n  REGISTRY_GET_STATUS = \"REGISTRY_GET_STATUS\",\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/dmz/DMZ.ts",
    "content": "import { SDKMessage } from \"../SDKMessage\";\n\ninterface Subscribers {\n  [key: string]: Array<(data?: any) => void>;\n}\n\nexport class DMZ {\n  private sdkOrigin: string;\n  private iframe?: Window;\n  private subscribers: Subscribers = { READY: [] };\n\n  public constructor(sdkOrigin: string) {\n    this.sdkOrigin = sdkOrigin;\n  }\n\n  public initialize(): void {\n    const body = document.getElementsByTagName(\"BODY\")[0];\n    const iframe = document.createElement(\"iframe\");\n    iframe.src = \"http://localhost:3000/iframe.html\";\n    iframe.setAttribute(\"style\", \"display: none\");\n    iframe.onload = () => {\n      const contentWindow = (iframe as HTMLIFrameElement).contentWindow;\n      this.iframe = contentWindow!;\n    };\n\n    iframe.onerror = () => {\n      // pretty sure this will never fire do to cross site origin restrictions\n      console.error(\"FAILED TO LOAD CIVIL IFRAME!\");\n    };\n\n    if (window.addEventListener) {\n      const subs = this.subscribers;\n      const sdkOrigin = this.sdkOrigin;\n      window.addEventListener(\"message\", function waitForAlive(message: any): void {\n        if (message.origin === sdkOrigin && message.data.type && message.data.type === \"ALIVE\") {\n          subs.READY.map(cb => cb());\n          window.addEventListener(\"message\", waitForAlive);\n        }\n      });\n\n      window.addEventListener(\"message\", this.handleMessage.bind(this));\n    } else {\n      (window as any).attachEvent(\"onmessage\", this.handleMessage.bind(this));\n    }\n\n    body.appendChild(iframe);\n  }\n  public async send(message: SDKMessage): Promise<void> {\n    if (!this.iframe) {\n      console.log(\"not ready to send\");\n      return Promise.reject(\"not ready to send - iframe not available yet\");\n    }\n    return new Promise((resolve, reject) => {\n      console.log(`SEND ${message.type}`);\n      this.iframe!.postMessage(message, this.sdkOrigin);\n      this.listen(\"REPLY_\" + message.type, response => {\n        resolve(response);\n        console.log(`REPONSE ${message.type}`, response);\n      });\n    });\n  }\n\n  public addOnloadHandler(f: () => void): void {\n    this.subscribers.READY.push(f);\n  }\n\n  public listen(event: string, callback: (data?: any) => void): void {\n    if (!this.subscribers[event]) {\n      this.subscribers[event] = [];\n    }\n\n    this.subscribers[event].push(callback);\n  }\n\n  private handleMessage(message: any): void {\n    if (message.origin === this.sdkOrigin) {\n      if (this.subscribers[message.data.type]) {\n        this.subscribers[message.data.type].forEach(cb => cb(message.data));\n      }\n      this.subscribers[message.data.type] = [];\n    }\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/index.ts",
    "content": "import { DMZ } from \"./dmz/DMZ\";\nimport { Lockbox } from \"./lockbox/Lockbox\";\nimport { Registry } from \"./registry/Registry\";\nimport { Telemetry } from \"./telemetry/Telemetry\";\nconst SDK_ORIGIN = \"http://localhost:3000\";\n\nconst ts = new Date().getTime();\nconst dmz = new DMZ(SDK_ORIGIN);\n\nexport class Civil {\n  public lockbox: Lockbox;\n  public registry: Registry;\n  public telemetry: Telemetry;\n  constructor() {\n    this.lockbox = new Lockbox(dmz);\n    this.registry = new Registry(dmz);\n    this.telemetry = new Telemetry();\n  }\n\n  public onLoad(f: () => void): void {\n    dmz.addOnloadHandler(f);\n  }\n}\n\nwindow.onload = () => {\n  dmz.initialize();\n  const ts2 = new Date().getTime();\n  console.log(`Civil SDK initialized in ${ts2 - ts}ms`);\n};\n(window as any).Civil = Civil;\n"
  },
  {
    "path": "packages/sdk/src/sdk/lockbox/Lockbox.ts",
    "content": "import { DMZ } from \"../dmz/DMZ\";\nimport { SDKMessageTypes } from \"../SDKMessage\";\n\nexport class Lockbox {\n  private dmz: DMZ;\n  constructor(dmz: DMZ) {\n    this.dmz = dmz;\n  }\n\n  public async confirmDeviceActivationRequest(): Promise<void> {\n    return this.dmz.send({\n      type: SDKMessageTypes.LOCKBOX_CONFIRM_DEVICE_ACTIVATION_REQUEST,\n      data: {\n        userID: \"dan\",\n        keyName: \"civil\",\n        message: \"please gimme the loot\",\n        userAgent: navigator.userAgent,\n      },\n    });\n  }\n  public async createKey(keyName: string): Promise<void> {\n    return this.dmz.send({\n      type: SDKMessageTypes.LOCKBOX_CREATE_KEY,\n      data: {\n        keyName,\n      },\n    });\n  }\n\n  public async getKey(keyName: string): Promise<void> {\n    return this.dmz.send({\n      type: SDKMessageTypes.LOCKBOX_GET_KEY,\n      data: {\n        keyName,\n      },\n    });\n  }\n\n  public async sendDeviceActivationRequest(): Promise<void> {\n    return this.dmz.send({\n      type: SDKMessageTypes.LOCKBOX_SEND_DEVICE_ACTIVATION_REQUEST,\n      data: {\n        userID: \"dan\",\n        keyName: \"civil\",\n        message: \"please gimme the loot\",\n        userAgent: navigator.userAgent,\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/lockbox/LockboxMessage.ts",
    "content": "import { SDKMessageTypes } from \"../SDKMessage\";\n\nexport type LockboxMessage =\n  | LockboxCreateKey\n  | LockboxGetKey\n  | ConfirmDeviceActivationRequest\n  | SendDeviceActivationRequest;\n\nexport interface LockboxCreateKey {\n  type: SDKMessageTypes.LOCKBOX_CREATE_KEY;\n  data: {\n    keyName: string;\n  };\n}\n\nexport interface LockboxGetKey {\n  type: SDKMessageTypes.LOCKBOX_GET_KEY;\n  data: {\n    keyName: string;\n  };\n}\n\nexport interface ConfirmDeviceActivationRequest {\n  type: SDKMessageTypes.LOCKBOX_CONFIRM_DEVICE_ACTIVATION_REQUEST;\n  data: {\n    userID: string;\n    keyName: string;\n    message: string;\n    userAgent: string;\n  };\n}\n\nexport interface SendDeviceActivationRequest {\n  type: SDKMessageTypes.LOCKBOX_SEND_DEVICE_ACTIVATION_REQUEST;\n  data: {};\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/registry/Registry.ts",
    "content": "import { DMZ } from \"../dmz/DMZ\";\nimport { SDKMessageTypes } from \"../SDKMessage\";\n\nexport class Registry {\n  private dmz: DMZ;\n  constructor(dmz: DMZ) {\n    this.dmz = dmz;\n  }\n\n  public async getRegistryStatus(): Promise<any> {\n    await this.dmz.send({ type: SDKMessageTypes.REGISTRY_GET_STATUS, data: {} });\n\n    return \"ok\";\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/registry/RegistryMessage.ts",
    "content": "import { SDKMessageTypes } from \"../SDKMessage\";\n\nexport type RegistryMessage = RegistryGetStatus;\n\nexport interface RegistryGetStatus {\n  type: SDKMessageTypes.REGISTRY_GET_STATUS;\n  data: {};\n}\n"
  },
  {
    "path": "packages/sdk/src/sdk/telemetry/Telemetry.ts",
    "content": "// tslint:disable-next-line\nexport class Telemetry {}\n"
  },
  {
    "path": "packages/sdk/src/serviceWorker.ts",
    "content": "// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === \"localhost\" ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === \"[::1]\" ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\ninterface Config {\n  onSuccess?(registration: ServiceWorkerRegistration): void;\n  onUpdate?(registration: ServiceWorkerRegistration): void;\n}\n\nexport function register(config?: Config): void {\n  if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL((process as { env: { [key: string]: string } }).env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener(\"load\", () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready\n          .then(() => {\n            console.log(\n              \"This web app is being served cache-first by a service \" +\n                \"worker. To learn more, visit https://bit.ly/CRA-PWA\",\n            );\n          })\n          .catch(e => {\n            throw e;\n          });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config): void {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (!installingWorker) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === \"installed\") {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                \"New content is available and will be used when all \" +\n                  \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\",\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log(\"Content is cached for offline use.\");\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error(\"Error during service worker registration:\", error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config): void {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get(\"content-type\");\n      if (response.status === 404 || (contentType && contentType.indexOf(\"javascript\") === -1)) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready\n          .then(registration => {\n            registration\n              .unregister()\n              .then(() => {\n                window.location.reload();\n              })\n              .catch(e => {\n                throw e;\n              });\n          })\n          .catch(e => {\n            throw e;\n          });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\"No internet connection found. App is running in offline mode.\");\n    });\n}\n\nexport async function unregister(): Promise<void> {\n  if (\"serviceWorker\" in navigator) {\n    const registration = await navigator.serviceWorker.ready;\n    await registration.unregister();\n  }\n}\n"
  },
  {
    "path": "packages/sdk/src/setupTests.ts",
    "content": "const WebCrypto = require(\"node-webcrypto-ossl\");\nconst webcrypto = new WebCrypto();\nwindow.webcrypto = webcrypto;\nwindow.crypto = webcrypto;\n\nconst util = require(\"util\");\nwindow.TextDecoder = util.TextDecoder;\nwindow.TextEncoder = util.TextEncoder;\n\nimport { GlobalWithFetchMock } from \"jest-fetch-mock\";\n\nconst customGlobal: GlobalWithFetchMock = global as GlobalWithFetchMock;\ncustomGlobal.fetch = require(\"jest-fetch-mock\");\ncustomGlobal.fetchMock = customGlobal.fetch;\n"
  },
  {
    "path": "packages/sdk/src/test-utils/MockWebsocketServer.ts",
    "content": "import { Server } from \"mock-socket\";\nimport { ReceiveTypes } from \"../iframe/services/communication/ReceiveTypes\";\nimport { SendTypes, PrivateChannelMessageType } from \"../iframe/services/communication/SendTypes\";\n\nfunction send(socket: WebSocket, type: ReceiveTypes, data: any): void {\n  socket.send(JSON.stringify({ type, data }));\n}\n\ninterface Channels {\n  [key: string]: {\n    [deviceID: string]: {\n      socket: WebSocket;\n      publicKeyString: string;\n      deviceID: string;\n      message: string;\n      userAgent: string;\n    };\n  };\n}\n\nexport function buildMockWebsocketServer(mockURL: string): Server {\n  const mockServer = new Server(mockURL);\n\n  const channels: Channels = {};\n\n  mockServer.on(\"connection\", socket => {\n    // @ts-ignore\n    socket.on(\"message\", (data: any) => {\n      let request;\n      try {\n        request = JSON.parse(data);\n        if (!request.type || !request.data) {\n          throw new Error(\"no event type or no data\");\n        }\n      } catch (err) {\n        console.log(\"failed to parse event\", err);\n      }\n\n      switch (request.type) {\n        case SendTypes.OPEN_SECURE_CHANNEL:\n          const sender = {\n            socket,\n            publicKeyString: request.data.publicKeyString,\n            deviceID: request.data.deviceID,\n            message: request.data.message,\n            userAgent: request.data.userAgent,\n          };\n          if (channels[request.data.channelName]) {\n            const channel = channels[request.data.channelName];\n\n            const creator = channel[Object.keys(channel)[0]];\n            channel[request.data.deviceID] = sender;\n\n            send(creator.socket, ReceiveTypes.REQUEST_TO_JOIN_CHANNEL, {\n              deviceID: request.data.deviceID,\n              publicKeyString: request.data.publicKeyString,\n              message: request.data.message,\n              userAgent: request.data.userAgent,\n            });\n            send(sender.socket, ReceiveTypes.REQUEST_TO_JOIN_CHANNEL, {\n              deviceID: creator.deviceID,\n              publicKeyString: creator.publicKeyString,\n              message: creator.message,\n              userAgent: creator.userAgent,\n            });\n          } else {\n            channels[request.data.channelName] = {\n              [request.data.deviceID]: sender,\n            };\n          }\n          break;\n        case SendTypes.PRIVATE_CHANNEL_MESSAGE:\n          handlePrivateChannelMessage(request.data).catch(e => {\n            throw e;\n          });\n          break;\n        default:\n          throw new Error(\"don't know how to handle \" + request.type);\n      }\n    });\n\n    async function handlePrivateChannelMessage(request: PrivateChannelMessageType): Promise<void> {\n      send(channels[request.channelName][request.toDeviceID].socket, ReceiveTypes.PRIVATE_CHANNEL_MESSAGE, request);\n    }\n  });\n\n  return mockServer;\n}\n"
  },
  {
    "path": "packages/sdk/src/test-utils/helpers.ts",
    "content": "export function randomString(): string {\n  return Math.random()\n    .toString(36)\n    .substring(7);\n}\n"
  },
  {
    "path": "packages/sdk/src/types.d.ts",
    "content": "declare module \"apollo-storybook-react\";\ndeclare module \"ipfs-http-client\";\ndeclare module \"react-async-script\";\ndeclare module \"iframe-resizer-react\";\n\n// So that when importing png image as URL it gets correctly typed as string:\ndeclare module \"*.png\" {\n  const value: string;\n  export = value;\n}\n"
  },
  {
    "path": "packages/sdk/start.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'development';\nprocess.env.NODE_ENV = 'development';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst fs = require('fs');\nconst chalk = require('react-dev-utils/chalk');\nconst webpack = require('webpack');\nconst WebpackDevServer = require('webpack-dev-server');\nconst clearConsole = require('react-dev-utils/clearConsole');\nconst checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');\nconst {\n  choosePort,\n  createCompiler,\n  prepareProxy,\n  prepareUrls,\n} = require('react-dev-utils/WebpackDevServerUtils');\nconst openBrowser = require('react-dev-utils/openBrowser');\nconst paths = require('../config/paths');\nconst configFactory = require('../config/webpack.config');\nconst createDevServerConfig = require('../config/webpackDevServer.config');\n\nconst useYarn = fs.existsSync(paths.yarnLockFile);\nconst isInteractive = process.stdout.isTTY;\n\n// Warn and crash if required files are missing\nif (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {\n  process.exit(1);\n}\n\n// Tools like Cloud9 rely on this.\nconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;\nconst HOST = process.env.HOST || '0.0.0.0';\n\nif (process.env.HOST) {\n  console.log(\n    chalk.cyan(\n      `Attempting to bind to HOST environment variable: ${chalk.yellow(\n        chalk.bold(process.env.HOST)\n      )}`\n    )\n  );\n  console.log(\n    `If this was unintentional, check that you haven't mistakenly set it in your shell.`\n  );\n  console.log(\n    `Learn more here: ${chalk.yellow('https://bit.ly/CRA-advanced-config')}`\n  );\n  console.log();\n}\n\n// We require that you explictly set browsers and do not fall back to\n// browserslist defaults.\nconst { checkBrowsers } = require('react-dev-utils/browsersHelper');\ncheckBrowsers(paths.appPath, isInteractive)\n  .then(() => {\n    // We attempt to use the default port but if it is busy, we offer the user to\n    // run on a different port. `choosePort()` Promise resolves to the next free port.\n    return choosePort(HOST, DEFAULT_PORT);\n  })\n  .then(port => {\n    if (port == null) {\n      // We have not found a port.\n      return;\n    }\n    const config = configFactory('development');\n    const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';\n    const appName = require(paths.appPackageJson).name;\n    const useTypeScript = fs.existsSync(paths.appTsConfig);\n    const urls = prepareUrls(protocol, HOST, port);\n    const devSocket = {\n      warnings: warnings =>\n        devServer.sockWrite(devServer.sockets, 'warnings', warnings),\n      errors: errors =>\n        devServer.sockWrite(devServer.sockets, 'errors', errors),\n    };\n    // Create a webpack compiler that is configured with custom messages.\n    const compiler = createCompiler({\n      appName,\n      config,\n      devSocket,\n      urls,\n      useYarn,\n      useTypeScript,\n      webpack,\n    });\n    // Load proxy config\n    const proxySetting = require(paths.appPackageJson).proxy;\n    const proxyConfig = prepareProxy(proxySetting, paths.appPublic);\n    // Serve webpack assets generated by the compiler over a web server.\n    const serverConfig = createDevServerConfig(\n      proxyConfig,\n      urls.lanUrlForConfig\n    );\n    const devServer = new WebpackDevServer(compiler, serverConfig);\n    // Launch WebpackDevServer.\n    devServer.listen(port, HOST, err => {\n      if (err) {\n        return console.log(err);\n      }\n      if (isInteractive) {\n        clearConsole();\n      }\n      console.log(chalk.cyan('Starting the development server...\\n'));\n      openBrowser(urls.localUrlForBrowser + (process.env.OPEN_PATH || ''));\n    });\n\n    ['SIGINT', 'SIGTERM'].forEach(function(sig) {\n      process.on(sig, function() {\n        devServer.close();\n        process.exit();\n      });\n    });\n  })\n  .catch(err => {\n    if (err && err.message) {\n      console.log(err.message);\n    }\n    process.exit(1);\n  });\n"
  },
  {
    "path": "packages/sdk/start.sh",
    "content": "#!/bin/sh\necho \"ENVIRONMENT: $ENVIRONMENT\"\necho \"GA: $GA_ID\"\nenvsubst '\\$ENVIRONMENT:\\$GA_ID' < /usr/share/nginx/html/index.html > /usr/share/nginx/html/index.html.tmp\nmv  /usr/share/nginx/html/index.html.tmp  /usr/share/nginx/html/index.html\nexec nginx -g 'daemon off;'\n"
  },
  {
    "path": "packages/sdk/test.js",
    "content": "'use strict';\n\n// Do this as the first thing so that any code reading it knows the right env.\nprocess.env.BABEL_ENV = 'test';\nprocess.env.NODE_ENV = 'test';\nprocess.env.PUBLIC_URL = '';\n\n// Makes the script crash on unhandled rejections instead of silently\n// ignoring them. In the future, promise rejections that are not handled will\n// terminate the Node.js process with a non-zero exit code.\nprocess.on('unhandledRejection', err => {\n  throw err;\n});\n\n// Ensure environment variables are read.\nrequire('../config/env');\n\n\nconst jest = require('jest');\nconst execSync = require('child_process').execSync;\nlet argv = process.argv.slice(2);\n\nfunction isInGitRepository() {\n  try {\n    execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction isInMercurialRepository() {\n  try {\n    execSync('hg --cwd . root', { stdio: 'ignore' });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n// Watch unless on CI, in coverage mode, explicitly adding `--no-watch`,\n// or explicitly running all tests\nif (\n  !process.env.CI &&\n  argv.indexOf('--coverage') === -1 &&\n  argv.indexOf('--no-watch') === -1 &&\n  argv.indexOf('--watchAll') === -1\n) {\n  // https://github.com/facebook/create-react-app/issues/5210\n  const hasSourceControl = isInGitRepository() || isInMercurialRepository();\n  argv.push(hasSourceControl ? '--watch' : '--watchAll');\n}\n\n// Jest doesn't have this option so we'll remove it\nif (argv.indexOf('--no-watch') !== -1) {\n  argv = argv.filter(arg => arg !== '--no-watch');\n}\n\n\njest.run(argv);\n"
  },
  {
    "path": "packages/sdk/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"outDir\": \"build/package/\",\n    \"declaration\": true,\n    \"declarationDir\": \"build/package/\",\n    \"jsx\": \"react\",\n    \"typeRoots\": [\"node_modules/@types\"]\n  },\n  \"include\": [\"./src/**/*.ts\", \"./src/**/*.tsx\"],\n  \"exclude\": [\"./src/setupTests.ts\", \"./src/**/*.test.ts\", \"./src/**/*.test.tsx\"]\n}\n"
  },
  {
    "path": "packages/sdk/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"],\n  \"linterOptions\": {},\n  \"rules\": {\n    \"variable-name\": [true, \"ban-keywords\", \"allow-leading-underscore\"]\n  }\n}\n"
  },
  {
    "path": "packages/tslint-rules/.releaserc",
    "content": "{\n  \"plugins\": [\n    [\n      \"@semantic-release/commit-analyzer\",\n      {\n        \"preset\": \"angular\",\n        \"releaseRules\": [\n          { \"type\": \"docs\", \"scope\": \"README\", \"release\": \"patch\" },\n          { \"type\": \"refactor\", \"release\": \"patch\" },\n          { \"type\": \"style\", \"release\": \"patch\" }\n        ],\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\"]\n        }\n      }\n    ],\n    [\n      \"@semantic-release/release-notes-generator\",\n      {\n        \"preset\": \"angular\",\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\", \"BREAKING\"]\n        },\n        \"writerOpts\": {\n          \"commitsSort\": [\"subject\", \"scope\"]\n        }\n      }\n    ]\n  ]\n}\n"
  },
  {
    "path": "packages/tslint-rules/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/tslint-rules/README.md",
    "content": "# @joincivil/tslint-rules\n\nShared rules for Typescript linter\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n\n## Installation\n\nYour tslint needs to be `>=5.9` for the yaml support\n\n```bash\nyarn add --dev @joincivil/tslint-rules\n```\n\n## Usage\n\nInstall tslint:\n\n```bash\nyarn add --dev tslint\n```\n\nIn your `tslint.json` or `tslint.yaml` extend the rules:\n\n```yaml\n---\nextends: \"@joincivil/tslint-rules\"\nrules:\n  # Your additional / overridinng rules here\n  max-line-length:\n    options: [7272]\n```\n\nRun linter with the `--project` option for all the rules to work:\n\n```bash\ntslint --project ./\n```\n\n## Contributing\n\nCivil's ecosystem is free and open-source, we're all part of it and you're encouraged to be a part of it with us.\nBest place to start hacking would be to use the [`@joincivil/core`](/packages/core) and build some application on top of the protocol.\n\nIf you're itching to dwelve deeper inside, [**help wanted**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\nand [**good first issue**](https://github.com/joincivil/Civil/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) labels are good places to get started and learn the architecture.\n"
  },
  {
    "path": "packages/tslint-rules/package.json",
    "content": "{\n  \"name\": \"@joincivil/tslint-rules\",\n  \"version\": \"2.7.1\",\n  \"description\": \"Shared Typescript linter rules for all Civil packages\",\n  \"main\": \"tslint.yaml\",\n  \"license\": \"Apache-2.0\",\n  \"author\": \"The Civil Media Company\",\n  \"bugs\": {\n    \"url\": \"https://github.com/joincivil/Civil/issues\"\n  },\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/tslint-rules/tslint.yaml",
    "content": "---\ndefaultSeverity: error\nextends:\n    - tslint:recommended\njsRules: {}\nrules:\n    adjacent-overload-signatures: true\n    member-ordering:\n        - true\n        - order: statics-first\n    no-empty-interface: true\n    no-parameter-reassignment: true\n    no-reference: true\n    no-var-requires: true\n    prefer-for-of: true\n    promise-function-async: true\n    typedef:\n        - true\n        - call-signature\n        - parameter\n        - property-declaration\n    typedef-whitespace:\n        - true\n        - call-signature: nospace\n          index-signature: nospace\n          parameter: nospace\n          property-declaration: nospace\n          variable-declaration: nospace\n        - call-signature: onespace\n          index-signature: onespace\n          parameter: onespace\n          property-declaration: onespace\n          variable-declaration: onespace\n    curly: true\n    label-position: true\n    no-arg: true\n    no-construct: true\n    no-duplicate-super: true\n    no-duplicate-switch-case: true\n    no-duplicate-variable: true\n    no-eval: true\n    no-floating-promises: true\n    no-for-in-array: true\n    no-implicit-dependencies:\n        - true\n        - dev\n    no-misused-new: true\n    no-object-literal-type-assertion: true\n    no-return-await: true\n    no-shadowed-variable: true\n    no-sparse-arrays: true\n    no-string-throw: true\n    no-unnecessary-class: true\n    no-unsafe-finally: true\n    no-unused-expression: true\n    no-unused-variable: true\n    no-var-keyword: true\n    triple-equals: true\n    use-default-type-parameter: true\n    use-isnan: true\n    eofline: true\n    no-duplicate-imports: true\n    prefer-const: true\n    indent:\n        - true\n        - spaces\n        - 2\n    arrow-return-shorthand: true\n    binary-expression-operand-order: true\n    callable-types: true\n    class-name: true\n    encoding: true\n    import-spacing: true\n    no-irregular-whitespace: true\n    no-unnecessary-callback-wrapper: true\n    number-literal-format: true\n    one-line:\n        - true\n        - check-catch\n        - check-finally\n        - check-else\n        - check-open-brace\n        - check-whitespace\n    prefer-method-signature: true\n    variable-name:\n        - true\n        - ban-keywords\n        - check-format\n\n    # Not exactly errors, but most of the time the usage\n    # might not produce expected output, warn the developer\n    # so that they can disable the warn if they know what they're doing\n    # or done their research\n    deprecation:\n        severity: warn\n    no-unbound-method:\n        severity: warn\n        options:\n            - ignore-static\n    unified-signatures:\n        severity: warn\n    ban-comma-operator:\n        severity: warn\n    forin:\n        severity: warn\n    no-conditional-assignment:\n        severity: warn\n    no-debugger:\n        severity: warn\n    no-empty:\n        severity: warn\n    no-invalid-template-strings:\n        severity: warn\n    no-invalid-this:\n        severity: warn\n    prefer-object-spread:\n        severity: warn\n\n    # Some recommended rules are annoying and as a team decided\n    # to not use them due to not providing good enough value\n    # Or are checked by prettier\n    semicolon: false\n    max-line-length: false\n    trailing-comma: false\n    arrow-parens: false\n    ordered-imports: false\n    no-non-null-assertion: false\n    interface-name: false\n    object-literal-sort-keys: false\n    no-console: false\n    max-classes-per-file: false\nrulesDirectory: []\n\n"
  },
  {
    "path": "packages/typescript-types/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/typescript-types/README.md",
    "content": "# @joincivil/typescript-types\n\nTypescript custom types used in multiple Civil packages that are Civil-specific\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n"
  },
  {
    "path": "packages/typescript-types/package.json",
    "content": "{\n  \"name\": \"@joincivil/typescript-types\",\n  \"version\": \"1.4.9\",\n  \"description\": \"Types used in multiple Civil packages\",\n  \"main\": \"build/index.js\",\n  \"types\": \"build/index.d.ts\",\n  \"license\": \"Apache-2.0\",\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"author\": \"The Civil Media Company\",\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"clean\": \"rimraf build/\",\n    \"lint\": \"tslint --project ./\"\n  },\n  \"devDependencies\": {\n    \"@joincivil/tslint-rules\": \"^2.7.1\",\n    \"@joincivil/typescript-typings\": \"^1.3.1\",\n    \"rimraf\": \"^2.6.2\",\n    \"tslint\": \"^5.17.0\",\n    \"typescript\": \"^3.6.2\",\n    \"web3\": \"^1.2.4\"\n  },\n  \"dependencies\": {\n    \"ethers\": \"^4.0.27\",\n    \"web3-core\": \"^1.2.4\",\n    \"web3-utils\": \"^1.2.4\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/typescript-types/src/index.ts",
    "content": "import { AbiItem } from \"web3-utils\";\nimport { TransactionReceipt, Log } from \"web3-core\";\n\n// make sure that typescript-types/ethers is using the same version as web3's abi-encoder ether\nimport { utils } from \"ethers\";\n\nexport type BigNumber = utils.BigNumber;\nexport const { BigNumber, bigNumberify, parseEther, formatEther, parseUnits, commify } = utils;\n\n// this isn't exported: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/web3/eth/contract.d.ts#L6\nexport interface ContractOptions {\n  address?: string;\n  jsonInterface?: AbiItem[];\n  data?: string;\n  from?: string;\n  gasPrice?: string;\n  gas?: number;\n}\n\nexport interface DecodedLogBase<A, E extends string> {\n  event: E;\n  returnValues: A;\n  args: A;\n}\n\nexport interface DecodedLogEntry<A = any, E extends string = string> extends Log, DecodedLogBase<A, E> {}\n\nexport interface DecodedLogEntryEvent<A = any, E extends string = string> extends DecodedLogBase<A, E>, Log {}\n\nexport interface DecodedTransactionReceipt<L extends Log = Log> extends TransactionReceipt {\n  logs: L[];\n}\n\nexport type EthAddress = string;\nexport type Hex = string;\n\n/**\n * Minimal amount of information needed to recover the public address of signer\n */\nexport interface EthSignedMessageRecovery {\n  messageHash: Hex;\n  // RLP Encoded\n  signature: Hex;\n}\n\nexport interface EthSignedMessage extends EthSignedMessageRecovery {\n  message: string;\n  /**\n   * To avoid bad actors signing transactions on your behalf, Ethereum nodes prepend\n   * additional string on top of your message before signing, according to the spec.\n   *\n   * This property contains the actual raw string that was hashed and signed.\n   */\n  rawMessage: string;\n  // Coordinates of the signature (32 bytes first and 32 bytes second)\n  r: Hex;\n  s: Hex;\n  // Recovery value + 27\n  v: Hex;\n  signer: EthAddress;\n}\n\nexport type Bytes32 = string;\nexport type TxHash = string;\nexport type Uri = string;\n\nexport enum SolidityTypes {\n  Address = \"address\",\n  Uint256 = \"uint256\",\n  Uint8 = \"uint8\",\n  Uint = \"uint\",\n}\n\n// There is one in web3 typing, but it's not existent during runtimes\n// we force it to exist by creating one with the same name\nexport enum AbiType {\n  Function = \"function\",\n  Constructor = \"constructor\",\n  Event = \"event\",\n  Fallback = \"fallback\",\n}\n\nexport interface EthContentHeader extends BaseContentHeader, SignedContentHeader {\n  blockNumber?: number | null;\n  transactionHash?: TxHash | null;\n}\n\nexport type ContentData = string | object;\nexport type ContentId = number;\nexport type RevisionId = ContentId;\n\nexport interface StorageHeader {\n  uri: string;\n  /**\n   * Normalized content schema hashed using keccak256 algorithm\n   */\n  contentHash?: Hex;\n}\n\nexport interface SignedContentHeader {\n  author: EthAddress;\n  signature: Hex;\n  verifySignature(): boolean;\n}\n\nexport interface BaseContentHeader extends StorageHeader {\n  contentId?: ContentId;\n  revisionId?: RevisionId;\n  timestamp?: Date;\n}\n\n/** Any piece of newsroom content, e.g. an article or the charter. */\nexport interface NewsroomContent extends EthContentHeader {\n  content: ContentData;\n}\n\n/** The first article: the charter. */\nexport interface CharterContent extends NewsroomContent {\n  content: CharterData;\n}\n\nexport interface ConstitutionSignature {\n  signer: EthAddress;\n  signature: Hex;\n  message: string;\n}\n\nexport interface CharterData {\n  name: string;\n  logoUrl: string;\n  newsroomUrl: string;\n  tagline: string;\n  roster: RosterMember[];\n  signatures: ConstitutionSignature[];\n  mission: {\n    purpose: string;\n    structure: string;\n    revenue: string;\n    encumbrances: string;\n    miscellaneous: string;\n  };\n  socialUrls?: { [type: string]: string };\n}\n\nexport interface RosterMember {\n  name: string;\n  role: string;\n  bio: string;\n  ethAddress?: EthAddress;\n  socialUrls?: { [type: string]: string };\n  avatarUrl?: string;\n  signature?: string;\n}\n\nexport interface ApprovedRevision {\n  author: EthAddress;\n  contentHash: Hex;\n  signature: Hex;\n  newsroomAddress: EthAddress;\n  date: string;\n}\n\nexport interface NewsroomListing {\n  newsroom: NewsroomWrapper;\n  listing: ListingWrapper;\n}\n\nexport interface NewsroomWrapper {\n  address: EthAddress;\n  data: NewsroomData;\n}\n\nexport interface NewsroomData {\n  name: string;\n  owner: EthAddress;\n  owners: EthAddress[];\n  charterHeader?: EthContentHeader;\n}\n\nexport interface ListingWrapper {\n  address: EthAddress;\n  data: ListingData;\n}\n\n/**\n * This represents the Listing data\n */\nexport interface ListingData {\n  appExpiry: BigNumber;\n  isWhitelisted: boolean;\n  owner: EthAddress;\n  unstakedDeposit: BigNumber;\n  challengeID: BigNumber;\n  challenge?: ChallengeData;\n  prevChallengeID?: BigNumber;\n  prevChallenge?: ChallengeData;\n  approvalDate?: BigNumber;\n  lastGovState?: string;\n  lastUpdatedDate?: BigNumber;\n}\n\nexport interface PollData {\n  commitEndDate: BigNumber;\n  revealEndDate: BigNumber;\n  voteQuorum: BigNumber;\n  votesFor: BigNumber;\n  votesAgainst: BigNumber;\n}\n\nexport interface WrappedChallengeData {\n  listingAddress: EthAddress;\n  challengeID: BigNumber;\n  challenge: ChallengeData;\n}\n\n/**\n * The data associated with a Challenge\n */\nexport interface ChallengeData {\n  challengeStatementURI?: string;\n  rewardPool: BigNumber;\n  challenger: EthAddress;\n  resolved: boolean;\n  stake: BigNumber;\n  totalTokens: BigNumber;\n  poll: PollData;\n  requestAppealExpiry: BigNumber;\n  appeal?: AppealData;\n}\n\nexport interface UserChallengeData {\n  didUserCommit?: boolean;\n  didUserReveal?: boolean;\n  canUserReveal?: boolean;\n  didUserCollect?: boolean;\n  canUserCollect?: boolean;\n  didUserRescue?: boolean;\n  canUserRescue?: boolean;\n  didCollectAmount?: BigNumber;\n  isVoterWinner?: boolean;\n  salt?: BigNumber;\n  numTokens?: BigNumber;\n  choice?: BigNumber;\n  voterReward?: BigNumber;\n}\n\n/**\n * This represents the Appeal data for a Listing\n */\nexport interface AppealData {\n  requester: EthAddress;\n  appealFeePaid: BigNumber;\n  appealPhaseExpiry: BigNumber;\n  appealGranted: boolean;\n  appealOpenToChallengeExpiry: BigNumber;\n  appealChallengeID: BigNumber;\n  appealChallenge?: AppealChallengeData;\n  appealStatementURI?: string;\n  appealGrantedStatementURI?: string;\n}\n\n/**\n * The data associated with a Challenge\n */\nexport interface AppealChallengeData {\n  rewardPool: BigNumber;\n  challenger: EthAddress;\n  resolved: boolean;\n  stake: BigNumber;\n  totalTokens: BigNumber;\n  poll: PollData;\n  appealChallengeStatementURI?: string;\n}\n\nexport type PollID = BigNumber;\n\n/**\n * This enum represents the various states a Parameterizer Proposal can be in.\n */\nexport enum ParamProposalState {\n  NOT_FOUND,\n  APPLYING,\n  READY_TO_PROCESS,\n  CHALLENGED_IN_COMMIT_VOTE_PHASE,\n  CHALLENGED_IN_REVEAL_VOTE_PHASE,\n  READY_TO_RESOLVE_CHALLENGE,\n}\n\n/**\n * Interface describing the data associated with Parameterizer Proposals\n */\nexport interface ParamProp {\n  propID: Bytes32;\n  paramName: string;\n  proposedValue: BigNumber;\n  pollID?: BigNumber;\n}\n\nexport interface Param {\n  paramName: string;\n  value: BigNumber;\n}\n\nexport interface ParamPropChallengeData {\n  rewardPool: BigNumber;\n  challenger: EthAddress;\n  resolved: boolean;\n  stake: BigNumber;\n  totalTokens: BigNumber;\n  poll: PollData;\n}\n\nexport interface PollIDWithBlockNum {\n  pollID: BigNumber;\n  blockNum: number;\n}\n\nexport interface AppealChallengeChallengeID {\n  appealChallengeID: BigNumber;\n  challengeID: BigNumber;\n}\n\nexport interface WrappedChallengeID {\n  listingAddress: EthAddress;\n  challengeID: BigNumber;\n}\n\nexport interface WrappedAppealChallengeID {\n  listingAddress: EthAddress;\n  appealChallengeToChallengeID: AppealChallengeChallengeID;\n}\n\nexport interface WrappedPropID {\n  propID: string;\n  challengeID: BigNumber;\n}\n\nexport interface MapObject<T = any> {\n  [index: string]: T;\n}\n"
  },
  {
    "path": "packages/typescript-types/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declarationDir\": \"build/\"\n  },\n  \"include\": [\"./src/**/*.ts\"]\n}\n"
  },
  {
    "path": "packages/typescript-types/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"]\n}\n"
  },
  {
    "path": "packages/typescript-typings/.releaserc",
    "content": "{\n  \"plugins\": [\n    [\n      \"@semantic-release/commit-analyzer\",\n      {\n        \"preset\": \"angular\",\n        \"releaseRules\": [\n          { \"type\": \"docs\", \"scope\": \"README\", \"release\": \"patch\" },\n          { \"type\": \"refactor\", \"release\": \"patch\" },\n          { \"type\": \"style\", \"release\": \"patch\" }\n        ],\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\"]\n        }\n      }\n    ],\n    [\n      \"@semantic-release/release-notes-generator\",\n      {\n        \"preset\": \"angular\",\n        \"parserOpts\": {\n          \"noteKeywords\": [\"BREAKING CHANGE\", \"BREAKING CHANGES\", \"BREAKING\"]\n        },\n        \"writerOpts\": {\n          \"commitsSort\": [\"subject\", \"scope\"]\n        }\n      }\n    ]\n  ]\n}\n"
  },
  {
    "path": "packages/typescript-typings/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/typescript-typings/README.md",
    "content": "# @joincivil/typescript-typings\n\nThis package is a Typescript typeRoot of all typings of external packages that otherwise have no types of their own.\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n\n## Reasoning\n\nSome of the types are not in the main DefintelyTyped repository, while others are written by us.\nWe're using this package to increase velocity of updating types. Getting stuff into the main repo takes a week,\nwhich is too slow for us at the current stage.\n\nAll of the types here are designed to not add any functionallity except the one existing in the packages themselves\n\n## Usage\n\nInstall this package.\n\n```bash\nyarn add --dev @joincivil/typescript-typings\n```\n\nUpdate your `tsconfig.json` to include additional type root.\n\n```\n{\n  {\n  \"compilerOptions\": {\n    \"typeRoots\": [\"node_modules/@joincivil/typescript-typings/types\", \"node_modules/@types\"]\n  }\n}\n```\n\nProceed as normal, happier.\n"
  },
  {
    "path": "packages/typescript-typings/package.json",
    "content": "{\n  \"name\": \"@joincivil/typescript-typings\",\n  \"version\": \"1.3.1\",\n  \"description\": \"Typescript type roots for external projects and internal modifications\",\n  \"license\": \"Apache-2.0\",\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"author\": \"The Civil Media Company\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/@ledgerhq/LICENSE",
    "content": "Copyright 2017 ZeroEx Inc.\nCopyright 2018 The Civil Media Company\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "packages/typescript-typings/types/@ledgerhq/index.d.ts",
    "content": "// Ledgerco declarations\ninterface ECSignatureString {\n  v: string;\n  r: string;\n  s: string;\n}\ninterface ECSignature {\n  v: number;\n  r: string;\n  s: string;\n}\n\ninterface LedgerTransport {\n  close(): Promise<void>;\n}\n\ndeclare module \"@ledgerhq/hw-app-eth\" {\n  class Eth {\n    public transport: LedgerTransport;\n    constructor(transport: LedgerTransport);\n    public getAddress(\n      path: string,\n      boolDisplay?: boolean,\n      boolChaincode?: boolean,\n    ): Promise<{ publicKey: string; address: string; chainCode: string }>;\n    public signTransaction(path: string, rawTxHex: string): Promise<ECSignatureString>;\n    public getAppConfiguration(): Promise<{ arbitraryDataEnabled: number; version: string }>;\n    public signPersonalMessage(path: string, messageHex: string): Promise<ECSignature>;\n  }\n  export default Eth;\n}\n\ndeclare module \"@ledgerhq/hw-transport-u2f\" {\n  export default class TransportU2F implements LedgerTransport {\n    public static create(): Promise<LedgerTransport>;\n    public close(): Promise<void>;\n  }\n}\n\ndeclare module \"@ledgerhq/hw-transport-node-hid\" {\n  export default class TransportNodeHid implements LedgerTransport {\n    public static create(): Promise<LedgerTransport>;\n    public close(): Promise<void>;\n  }\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/ethereumjs-abi/index.d.ts",
    "content": "declare module \"ethereumjs-abi\" {\n  import BN from \"bn.js\";\n\n  export type PrimitiveEncodable = string | number | boolean | BN;\n  export type Encodable = PrimitiveEncodable | PrimitiveEncodable[];\n\n  export type PrimitiveDecodable = string | boolean | BN;\n  export type Decodable = PrimitiveDecodable | PrimitiveDecodable[];\n\n  // TODO(ritave): Make a type of all possible type strings\n  export function rawEncode(types: string[], args: Encodable[]): Buffer;\n  export function rawDecode(types: string[], data: Buffer): Decodable[];\n\n  export function simpleEncode(signature: string, ...args: Encodable[]): Buffer;\n  export function simpleDecode(signature: string, data: Buffer): Decodable[];\n\n  export function soliditySHA3(types: string[], args: Encodable[]): Buffer;\n  export function soliditySHA256(types: string[], args: Encodable[]): Buffer;\n  export function solidityRIPEMD160(types: string[], args: Encodable[]): Buffer;\n\n  export function eventID(name: string, types: string[]): Buffer;\n  export function methodID(name: string, types: string[]): Buffer;\n  export function stringify(types: string[], args: Encodable[]): string[];\n\n  export function fromSerpent(type: string): string[];\n  export function toSerpent(types: string[]): string;\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/ethereumjs-util/LICENSE",
    "content": "Copyright 2017 ZeroEx Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "packages/typescript-typings/types/ethereumjs-util/index.d.ts",
    "content": "declare module \"ethereumjs-util\" {\n  export { isHexPrefixed, fromUtf8 } from \"ethjs-util\";\n\n  import BN = require(\"bn.js\");\n\n  interface Signature {\n    v: number;\n    r: Buffer;\n    s: Buffer;\n  }\n\n  export const MAX_INTEGER: BN;\n\n  export const TWO_POW256: BN;\n\n  export const SHA3_NULL_S: string;\n\n  export const SHA3_NULL: Buffer;\n\n  export const SHA3_RLP_ARRAY_S: string;\n\n  export const SHA3_RLP_ARRAY: Buffer;\n\n  export const SHA3_RLP_S: string;\n\n  export const SHA3_RLP: Buffer;\n\n  export function zeros(bytes: number): Buffer;\n\n  export function setLength(msg: Buffer, length: number, right: boolean): Buffer;\n  export function setLength(msg: number[], length: number, right: boolean): number[];\n\n  export function setLengthLeft(msg: Buffer, length: number, right?: boolean): Buffer;\n  export function setLengthLeft(msg: number[], length: number, right?: boolean): number[];\n\n  export function setLengthRight(msg: Buffer, length: number): Buffer;\n  export function setLengthRight(msg: number[], length: number): number[];\n\n  export function unpad(a: Buffer): Buffer;\n  export function unpad(a: number[]): number[];\n  export function unpad(a: string): string;\n\n  export function toBuffer(v: any): Buffer;\n\n  export function bufferToInt(buf: Buffer): number;\n\n  export function bufferToHex(buf: Buffer): string;\n\n  export function fromSigned(num: Buffer): BN;\n\n  export function toUnsigned(num: BN): Buffer;\n\n  export function sha3(a: Buffer | string | number | number[], bits?: number): Buffer;\n\n  export function sha256(a: Buffer | string | number | number[]): Buffer;\n\n  export function ripemd160(a: Buffer | string | number | number[], padded?: boolean): Buffer;\n\n  export function rlphash(a: Buffer | string | number | number[]): Buffer;\n\n  export function isValidPrivate(privateKey: Buffer): boolean;\n\n  export function isValidPublic(publicKey: Buffer, sanitize?: boolean): boolean;\n\n  export function pubToAddress(publicKey: Buffer, sanitize?: boolean): Buffer;\n  export function publicToAddress(publicKey: Buffer, sanitize?: boolean): Buffer;\n\n  export function privateToPublic(privateKey: Buffer): Buffer;\n\n  export function importPublic(publicKey: Buffer): Buffer;\n\n  export function ecsign(message: Buffer, privateKey: Buffer): Signature;\n\n  export function hashPersonalMessage(message: Buffer | string): Buffer;\n\n  export function ecrecover(msgHash: Buffer, v: number, r: Buffer, s: Buffer): Buffer;\n\n  export function toRpcSig(v: number, r: Buffer, s: Buffer): string;\n\n  export function fromRpcSig(sig: string): Signature;\n\n  export function privateToAddress(privateKey: Buffer): Buffer;\n\n  export function isValidAddress(address: string): boolean;\n\n  export function toChecksumAddress(address: string): string;\n\n  export function isValidChecksumAddress(address: string): boolean;\n\n  export function generateAddress(from: Buffer | string, nonce: number | string | number[] | Buffer): Buffer;\n\n  export function isPrecompiled(address: Buffer | string): boolean;\n\n  export function addHexPrefix(str: string): string;\n\n  export function stripHexPrefix(str: string): string;\n\n  export function isValidSignature(v: number, r: Buffer | string, s: Buffer | string, homestead?: boolean): boolean;\n\n  export function baToJSON(ba: Buffer): string;\n  export function baToJSON(ba: any[]): string[];\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/ethjs-util/index.d.ts",
    "content": "import * as isHexPrefixedImport from \"is-hex-prefixed\";\nimport * as stripHexPrefixImport from \"strip-hex-prefix\";\n\ndeclare module \"ethjs-util\" {\n  export function addHexPrefix(str: string): string;\n  export function padToEven(value: string): string;\n  export function intToHex(i: number): string;\n  export function intToBuffer(i: number): Buffer;\n  export function getBinarySize(str: string): number;\n  export function arrayContainsArray<T = any>(superset: T[], subset: T[], some?: true): boolean;\n\n  export function toUtf8(hex: string): string;\n  export function toAscii(hex: string): string;\n\n  export function fromUtf8(string: string, padding?: number): string;\n  export function fromAscii(hex: string, padding?: number): string;\n\n  /**\n   * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n   */\n  export function getKeys(params: object[], key: string, allowEmpty?: true): any[];\n\n  export function isHexString(value: string, length: number): boolean;\n  export const isHexPrefixed = isHexPrefixedImport;\n  export const stripHexPrefix = stripHexPrefixImport;\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/is-hex-prefixed/index.d.ts",
    "content": "declare module \"is-hex-prefixed\" {\n  declare function isHexPrefixed(str: string): boolean;\n  export = isHexPrefixed;\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/strip-hex-prefix/index.d.ts",
    "content": "declare module \"strip-hex-prefix\" {\n  declare function stripHexPrefix(str: string): string;\n  export = stripHexPrefix;\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/to-snake-case/index.d.ts",
    "content": "declare module \"to-snake-case\" {\n  declare function toSnakeCase(str: string): string;\n  export = toSnakeCase;\n}\n"
  },
  {
    "path": "packages/typescript-typings/types/web3-provider-engine/LICENSE",
    "content": "Copyright 2017 ZeroEx Inc.\nCopyright 2018 The Civil Media Company\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "packages/typescript-typings/types/web3-provider-engine/index.d.ts",
    "content": "declare module \"web3-provider-engine\" {\n  import { JSONRPCRequestPayload, JSONRPCResponsePayload, Provider } from \"ethereum-types\";\n  interface Web3ProviderEngineOptions {\n    pollingInterval?: number;\n    blockTracker?: any;\n    blockTrackerProvider?: any;\n  }\n  class Web3ProviderEngine implements Provider {\n    constructor(options?: Web3ProviderEngineOptions);\n    public on(event: string, handler: () => void): void;\n    public send(payload: JSONRPCRequestPayload): void;\n    public sendAsync(\n      payload: JSONRPCRequestPayload,\n      callback: (error: null | Error, response: JSONRPCResponsePayload) => void,\n    ): void;\n    public addProvider(provider: any): void;\n    // start block polling\n    public start(callback?: () => void): void;\n    // stop block polling\n    public stop(): void;\n  }\n  export = Web3ProviderEngine;\n}\n\ndeclare module \"web3-provider-engine/subproviders/nonce-tracker\";\ndeclare module \"web3-provider-engine/subproviders/hooked-wallet\";\ndeclare module \"web3-provider-engine/subproviders/filters\";\n// web3-provider-engine declarations\ndeclare module \"web3-provider-engine/subproviders/subprovider\" {\n  class Subprovider {\n    setEngine(engine: Web3ProviderEngine): void;\n  }\n  export = Subprovider;\n}\ndeclare module \"web3-provider-engine/subproviders/rpc\" {\n  import { JSONRPCRequestPayload, JSONRPCResponsePayload } from \"ethereum-types\";\n  import Subprovider = require(\"web3-provider-engine/subproviders/subprovider\");\n  class RpcSubprovider extends Subprovider {\n    constructor(options: { rpcUrl: string });\n    public handleRequest(\n      payload: JSONRPCRequestPayload,\n      next: () => void,\n      end: (err: Error | null, data?: JSONRPCResponsePayload) => void,\n    ): void;\n  }\n  export = RpcSubprovider;\n}\ndeclare module \"web3-provider-engine/util/rpc-cache-utils\" {\n  class ProviderEngineRpcUtils {\n    public static blockTagForPayload(payload: any): string | null;\n  }\n  export = ProviderEngineRpcUtils;\n}\ndeclare module \"web3-provider-engine/subproviders/fixture\" {\n  import { JSONRPCRequestPayload, JSONRPCResponsePayload } from \"ethereum-types\";\n  import Subprovider = require(\"web3-provider-engine/subproviders/subprovider\");\n  class FixtureSubprovider extends Subprovider {\n    constructor(staticResponses: any);\n    public handleRequest(\n      payload: JSONRPCRequestPayload,\n      next: () => void,\n      end: (err: Error | null, data?: JSONRPCResponsePayload) => void,\n    ): void;\n  }\n  export = FixtureSubprovider;\n}\n"
  },
  {
    "path": "packages/utils/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "packages/utils/README.md",
    "content": "# @joincivi/utils\n\nUtilities shared between multiple JoinCivil packages\n\n[![license](https://img.shields.io/badge/license-Apache%20v2.0-green.svg)](./LICENSE)\n"
  },
  {
    "path": "packages/utils/package.json",
    "content": "{\n  \"name\": \"@joincivil/utils\",\n  \"version\": \"1.9.9\",\n  \"description\": \"Utils shared between multiple Civil packages\",\n  \"main\": \"build/src/index.js\",\n  \"types\": \"build/src/index.d.ts\",\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"build:watch\": \"tsc -w\",\n    \"lint\": \"tslint --project ./\",\n    \"test\": \"mocha build/test\",\n    \"clean\": \"rimraf build/\"\n  },\n  \"author\": \"The Civil Media Company\",\n  \"license\": \"Apache-2.0\",\n  \"devDependencies\": {\n    \"@joincivil/dev-utils\": \"^1.6.9\",\n    \"@types/chai\": \"^4.1.2\",\n    \"@types/mocha\": \"^5.2.5\",\n    \"@types/react\": \"^16.0.39\",\n    \"chai\": \"^4.1.2\",\n    \"mocha\": \"^5.0.1\",\n    \"react\": \"^16.11.0\",\n    \"typescript\": \"^3.6.2\"\n  },\n  \"peerDependencies\": {\n    \"react\": \"^16.11.0\"\n  },\n  \"dependencies\": {\n    \"@joincivil/typescript-types\": \"^1.4.9\",\n    \"apollo-boost\": \"^0.1.16\",\n    \"apollo-cache-inmemory\": \"^1.3.12\",\n    \"apollo-client\": \"^2.4.8\",\n    \"apollo-link\": \"^1.2.6\",\n    \"apollo-link-context\": \"^1.0.12\",\n    \"apollo-link-error\": \"^1.1.5\",\n    \"apollo-link-http\": \"^1.5.9\",\n    \"bn.js\": \"4.11.6\",\n    \"detect-browser\": \"^4.1.0\",\n    \"eth-sig-util\": \"^1.4.2\",\n    \"ethereumjs-abi\": \"^0.6.5\",\n    \"ethereumjs-util\": \"^5.2.0\",\n    \"graphql\": \"^14.0.2\",\n    \"graphql-tag\": \"^2.9.2\",\n    \"immutable\": \"^4.0.0-rc.12\",\n    \"rxjs\": \"^5.5.6\",\n    \"sanitize-html\": \"^1.20.0\",\n    \"web3-utils\": \"^1.2.4\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/joincivil/Civil/issues\"\n  },\n  \"homepage\": \"https://github.com/joincivil/Civil\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n"
  },
  {
    "path": "packages/utils/src/airswap.ts",
    "content": "export const airswapScript = \"https://cdn.airswap.io/gallery/airswap-trader.js\";\n\nexport function getAirswapCvlAddress(network: string | number): string | undefined {\n  let networkKey = network;\n  if (typeof networkKey === \"string\") {\n    networkKey = parseInt(networkKey, 10);\n  }\n\n  const airswapCvlAddress: { [index: number]: string } = {\n    1: \"0x01FA555c97D7958Fa6f771f3BbD5CCD508f81e22\",\n    4: \"0x3e39fa983abcd349d95aed608e798817397cf0d1\",\n  };\n\n  return airswapCvlAddress[networkKey];\n}\n\nexport function getAirswapEnv(network: string | number): string | undefined {\n  let networkKey = network;\n  if (typeof networkKey === \"string\") {\n    networkKey = parseInt(networkKey, 10);\n  }\n\n  const airswapEnv: { [index: number]: string } = {\n    1: \"production\",\n    4: \"sandbox\",\n  };\n\n  return airswapEnv[networkKey];\n}\n"
  },
  {
    "path": "packages/utils/src/apolloClient.ts",
    "content": "import gql from \"graphql-tag\";\nimport { ApolloClient } from \"apollo-client\";\nimport { ApolloLink } from \"apollo-link\";\nimport { createHttpLink, HttpLink } from \"apollo-link-http\";\nimport { setContext } from \"apollo-link-context\";\nimport { onError } from \"apollo-link-error\";\nimport { InMemoryCache, NormalizedCacheObject, IntrospectionFragmentMatcher } from \"apollo-cache-inmemory\";\nimport { fetchItem, setItem, removeItem } from \"./localStorage\";\n\nexport interface AuthLoginResponse {\n  token: string;\n  refreshToken: string;\n  uid: string;\n}\n\nlet client: ApolloClient<NormalizedCacheObject>;\n\nconst SESSION_KEY = \"apollo_session\";\nconst NETWORK_KEY = \"network\";\n\nexport function getApolloSessionKey(): string {\n  const network = getNetwork();\n  return `${SESSION_KEY}-${network}`;\n}\n\nexport function getApolloSession(): AuthLoginResponse | null {\n  const sessionKey = getApolloSessionKey();\n  return fetchItem(sessionKey);\n}\n\nexport function setApolloSession(session: AuthLoginResponse): void {\n  const sessionKey = getApolloSessionKey();\n  setItem(sessionKey, session);\n}\n\nexport function clearApolloSession(): void {\n  const sessionKey = getApolloSessionKey();\n  removeItem(sessionKey);\n  setTimeout(async () => {\n    await resetApolloStore();\n  }, 300);\n}\n\nexport function getNetwork(): number {\n  const network = fetchItem(NETWORK_KEY);\n  if (network) {\n    return network;\n  } else {\n    return 1;\n  }\n}\n\nexport function setNetworkValue(network: number): void {\n  setItem(NETWORK_KEY, network);\n}\n\n/** Don't override explicitly set network value, but if none set, this will do. Handles possible race condition between web3 network change subscription firing vs. our default value for this based on environment. */\nexport function setDefaultNetworkValue(network: number): void {\n  if (fetchItem(NETWORK_KEY)) {\n    return;\n  }\n  setItem(NETWORK_KEY, network);\n}\n\nexport function getApolloClient(httpLinkOptions: HttpLink.Options = {}): ApolloClient<NormalizedCacheObject> {\n  if (client) {\n    return client;\n  }\n\n  const httpLink = createHttpLink(httpLinkOptions);\n\n  const authLink = setContext((_: any, { headers }: { headers: any; uri: any }) => {\n    const network = getNetwork();\n    const authInfo = getApolloSession();\n    let uri = \"\";\n    switch (network) {\n      case 1:\n        uri = \"https://graphql.civil.co/v1/query\";\n        break;\n      case 4:\n        uri = \"https://graphql.staging.civil.app/v1/query\";\n        break;\n      case 50:\n        uri = \"http://localhost:8080/v1/query\";\n        break;\n    }\n\n    if (authInfo) {\n      return {\n        headers: {\n          ...headers,\n          authorization: `Bearer ${authInfo.token}`,\n        },\n        uri,\n      };\n    }\n    return {\n      headers,\n      uri,\n    };\n  });\n\n  const errorLink = onError(({ graphQLErrors, networkError }) => {\n    if (graphQLErrors) {\n      graphQLErrors.map(({ message, locations, path }) => {\n        console.warn(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`);\n      });\n    }\n\n    if (networkError) {\n      // @ts-ignore: `networkError` type is incorrect - it's just set to `Error` but it in fact has various fields\n      const response = networkError.result;\n      if (response) {\n        if (response.errCode === \"EXPIRED_TOKEN\") {\n          // @TODO(tobek) Use refresh token to get a new JWT. Do we need to flush the cache?\n          clearApolloSession();\n          return;\n        } else if (response.errCode === \"INVALID_TOKEN\") {\n          // Something went wrong, just clear and assume logged out. @TODO(tobek) Do we need to flush cache?\n          clearApolloSession();\n          return;\n        }\n      }\n      console.warn(`[Network error]: ${networkError}`);\n    }\n  });\n\n  const createOmitTypenameLink = new ApolloLink((operation, forward) => {\n    if (operation.variables) {\n      operation.variables = JSON.parse(JSON.stringify(operation.variables), (key, value) =>\n        key === \"__typename\" ? undefined : value,\n      );\n    }\n    return forward ? forward(operation) : null;\n  });\n\n  const fragmentMatcher = new IntrospectionFragmentMatcher({\n    introspectionQueryResultData: {\n      __schema: {\n        types: [],\n      },\n    },\n  });\n\n  client = new ApolloClient({\n    link: ApolloLink.from([createOmitTypenameLink, errorLink, authLink, httpLink]),\n    cache: new InMemoryCache({ fragmentMatcher }),\n  });\n\n  return client;\n}\n\nconst loggedInQuery = gql`\n  query {\n    currentUser {\n      uid\n    }\n  }\n`;\nexport async function isLoggedIn(): Promise<boolean> {\n  if (!client || !getApolloSession()) {\n    return false;\n  }\n\n  try {\n    const res = await client.query({\n      query: loggedInQuery,\n    });\n    return !res.errors && !!res.data;\n  } catch {\n    return false;\n  }\n}\n\nexport const getCurrentUserQuery = gql`\n  query {\n    currentUser {\n      uid\n      email\n      ethAddress\n      channels {\n        role\n      }\n      userChannel {\n        handle\n        id\n        EmailAddressRestricted\n        isAwaitingEmailConfirmation\n        avatarDataUrl\n        tiny72AvatarDataUrl\n        stripeCustomerInfo {\n          paymentMethods {\n            paymentMethodID\n            last4Digits\n            expMonth\n            expYear\n            brand\n            name\n          }\n        }\n      }\n      userChannelAvatarPromptSeen\n      userChannelEmailPromptSeen\n    }\n  }\n`;\n\nexport async function getCurrentUser(): Promise<any> {\n  if (!client || !getApolloSession()) {\n    return null;\n  }\n\n  try {\n    const { errors, data } = await client.query({\n      query: getCurrentUserQuery,\n    });\n\n    if (errors) {\n      return null;\n    }\n\n    return (data as any).currentUser;\n  } catch (err) {\n    console.log(\"Error in getCurrentUser: \", { err });\n    return null;\n  }\n}\n\nexport async function resetApolloStore(): Promise<void> {\n  if (!client) {\n    return;\n  }\n\n  await client.resetStore();\n}\n"
  },
  {
    "path": "packages/utils/src/bip39.english.ts",
    "content": "export const words = [\n  \"abandon\",\n  \"ability\",\n  \"able\",\n  \"about\",\n  \"above\",\n  \"absent\",\n  \"absorb\",\n  \"abstract\",\n  \"absurd\",\n  \"abuse\",\n  \"access\",\n  \"accident\",\n  \"account\",\n  \"accuse\",\n  \"achieve\",\n  \"acid\",\n  \"acoustic\",\n  \"acquire\",\n  \"across\",\n  \"act\",\n  \"action\",\n  \"actor\",\n  \"actress\",\n  \"actual\",\n  \"adapt\",\n  \"add\",\n  \"addict\",\n  \"address\",\n  \"adjust\",\n  \"admit\",\n  \"adult\",\n  \"advance\",\n  \"advice\",\n  \"aerobic\",\n  \"affair\",\n  \"afford\",\n  \"afraid\",\n  \"again\",\n  \"age\",\n  \"agent\",\n  \"agree\",\n  \"ahead\",\n  \"aim\",\n  \"air\",\n  \"airport\",\n  \"aisle\",\n  \"alarm\",\n  \"album\",\n  \"alcohol\",\n  \"alert\",\n  \"alien\",\n  \"all\",\n  \"alley\",\n  \"allow\",\n  \"almost\",\n  \"alone\",\n  \"alpha\",\n  \"already\",\n  \"also\",\n  \"alter\",\n  \"always\",\n  \"amateur\",\n  \"amazing\",\n  \"among\",\n  \"amount\",\n  \"amused\",\n  \"analyst\",\n  \"anchor\",\n  \"ancient\",\n  \"anger\",\n  \"angle\",\n  \"angry\",\n  \"animal\",\n  \"ankle\",\n  \"announce\",\n  \"annual\",\n  \"another\",\n  \"answer\",\n  \"antenna\",\n  \"antique\",\n  \"anxiety\",\n  \"any\",\n  \"apart\",\n  \"apology\",\n  \"appear\",\n  \"apple\",\n  \"approve\",\n  \"april\",\n  \"arch\",\n  \"arctic\",\n  \"area\",\n  \"arena\",\n  \"argue\",\n  \"arm\",\n  \"armed\",\n  \"armor\",\n  \"army\",\n  \"around\",\n  \"arrange\",\n  \"arrest\",\n  \"arrive\",\n  \"arrow\",\n  \"art\",\n  \"artefact\",\n  \"artist\",\n  \"artwork\",\n  \"ask\",\n  \"aspect\",\n  \"assault\",\n  \"asset\",\n  \"assist\",\n  \"assume\",\n  \"asthma\",\n  \"athlete\",\n  \"atom\",\n  \"attack\",\n  \"attend\",\n  \"attitude\",\n  \"attract\",\n  \"auction\",\n  \"audit\",\n  \"august\",\n  \"aunt\",\n  \"author\",\n  \"auto\",\n  \"autumn\",\n  \"average\",\n  \"avocado\",\n  \"avoid\",\n  \"awake\",\n  \"aware\",\n  \"away\",\n  \"awesome\",\n  \"awful\",\n  \"awkward\",\n  \"axis\",\n  \"baby\",\n  \"bachelor\",\n  \"bacon\",\n  \"badge\",\n  \"bag\",\n  \"balance\",\n  \"balcony\",\n  \"ball\",\n  \"bamboo\",\n  \"banana\",\n  \"banner\",\n  \"bar\",\n  \"barely\",\n  \"bargain\",\n  \"barrel\",\n  \"base\",\n  \"basic\",\n  \"basket\",\n  \"battle\",\n  \"beach\",\n  \"bean\",\n  \"beauty\",\n  \"because\",\n  \"become\",\n  \"beef\",\n  \"before\",\n  \"begin\",\n  \"behave\",\n  \"behind\",\n  \"believe\",\n  \"below\",\n  \"belt\",\n  \"bench\",\n  \"benefit\",\n  \"best\",\n  \"betray\",\n  \"better\",\n  \"between\",\n  \"beyond\",\n  \"bicycle\",\n  \"bid\",\n  \"bike\",\n  \"bind\",\n  \"biology\",\n  \"bird\",\n  \"birth\",\n  \"bitter\",\n  \"black\",\n  \"blade\",\n  \"blame\",\n  \"blanket\",\n  \"blast\",\n  \"bleak\",\n  \"bless\",\n  \"blind\",\n  \"blood\",\n  \"blossom\",\n  \"blouse\",\n  \"blue\",\n  \"blur\",\n  \"blush\",\n  \"board\",\n  \"boat\",\n  \"body\",\n  \"boil\",\n  \"bomb\",\n  \"bone\",\n  \"bonus\",\n  \"book\",\n  \"boost\",\n  \"border\",\n  \"boring\",\n  \"borrow\",\n  \"boss\",\n  \"bottom\",\n  \"bounce\",\n  \"box\",\n  \"boy\",\n  \"bracket\",\n  \"brain\",\n  \"brand\",\n  \"brass\",\n  \"brave\",\n  \"bread\",\n  \"breeze\",\n  \"brick\",\n  \"bridge\",\n  \"brief\",\n  \"bright\",\n  \"bring\",\n  \"brisk\",\n  \"broccoli\",\n  \"broken\",\n  \"bronze\",\n  \"broom\",\n  \"brother\",\n  \"brown\",\n  \"brush\",\n  \"bubble\",\n  \"buddy\",\n  \"budget\",\n  \"buffalo\",\n  \"build\",\n  \"bulb\",\n  \"bulk\",\n  \"bullet\",\n  \"bundle\",\n  \"bunker\",\n  \"burden\",\n  \"burger\",\n  \"burst\",\n  \"bus\",\n  \"business\",\n  \"busy\",\n  \"butter\",\n  \"buyer\",\n  \"buzz\",\n  \"cabbage\",\n  \"cabin\",\n  \"cable\",\n  \"cactus\",\n  \"cage\",\n  \"cake\",\n  \"call\",\n  \"calm\",\n  \"camera\",\n  \"camp\",\n  \"can\",\n  \"canal\",\n  \"cancel\",\n  \"candy\",\n  \"cannon\",\n  \"canoe\",\n  \"canvas\",\n  \"canyon\",\n  \"capable\",\n  \"capital\",\n  \"captain\",\n  \"car\",\n  \"carbon\",\n  \"card\",\n  \"cargo\",\n  \"carpet\",\n  \"carry\",\n  \"cart\",\n  \"case\",\n  \"cash\",\n  \"casino\",\n  \"castle\",\n  \"casual\",\n  \"cat\",\n  \"catalog\",\n  \"catch\",\n  \"category\",\n  \"cattle\",\n  \"caught\",\n  \"cause\",\n  \"caution\",\n  \"cave\",\n  \"ceiling\",\n  \"celery\",\n  \"cement\",\n  \"census\",\n  \"century\",\n  \"cereal\",\n  \"certain\",\n  \"chair\",\n  \"chalk\",\n  \"champion\",\n  \"change\",\n  \"chaos\",\n  \"chapter\",\n  \"charge\",\n  \"chase\",\n  \"chat\",\n  \"cheap\",\n  \"check\",\n  \"cheese\",\n  \"chef\",\n  \"cherry\",\n  \"chest\",\n  \"chicken\",\n  \"chief\",\n  \"child\",\n  \"chimney\",\n  \"choice\",\n  \"choose\",\n  \"chronic\",\n  \"chuckle\",\n  \"chunk\",\n  \"churn\",\n  \"cigar\",\n  \"cinnamon\",\n  \"circle\",\n  \"citizen\",\n  \"city\",\n  \"civil\",\n  \"claim\",\n  \"clap\",\n  \"clarify\",\n  \"claw\",\n  \"clay\",\n  \"clean\",\n  \"clerk\",\n  \"clever\",\n  \"click\",\n  \"client\",\n  \"cliff\",\n  \"climb\",\n  \"clinic\",\n  \"clip\",\n  \"clock\",\n  \"clog\",\n  \"close\",\n  \"cloth\",\n  \"cloud\",\n  \"clown\",\n  \"club\",\n  \"clump\",\n  \"cluster\",\n  \"clutch\",\n  \"coach\",\n  \"coast\",\n  \"coconut\",\n  \"code\",\n  \"coffee\",\n  \"coil\",\n  \"coin\",\n  \"collect\",\n  \"color\",\n  \"column\",\n  \"combine\",\n  \"come\",\n  \"comfort\",\n  \"comic\",\n  \"common\",\n  \"company\",\n  \"concert\",\n  \"conduct\",\n  \"confirm\",\n  \"congress\",\n  \"connect\",\n  \"consider\",\n  \"control\",\n  \"convince\",\n  \"cook\",\n  \"cool\",\n  \"copper\",\n  \"copy\",\n  \"coral\",\n  \"core\",\n  \"corn\",\n  \"correct\",\n  \"cost\",\n  \"cotton\",\n  \"couch\",\n  \"country\",\n  \"couple\",\n  \"course\",\n  \"cousin\",\n  \"cover\",\n  \"coyote\",\n  \"crack\",\n  \"cradle\",\n  \"craft\",\n  \"cram\",\n  \"crane\",\n  \"crash\",\n  \"crater\",\n  \"crawl\",\n  \"crazy\",\n  \"cream\",\n  \"credit\",\n  \"creek\",\n  \"crew\",\n  \"cricket\",\n  \"crime\",\n  \"crisp\",\n  \"critic\",\n  \"crop\",\n  \"cross\",\n  \"crouch\",\n  \"crowd\",\n  \"crucial\",\n  \"cruel\",\n  \"cruise\",\n  \"crumble\",\n  \"crunch\",\n  \"crush\",\n  \"cry\",\n  \"crystal\",\n  \"cube\",\n  \"culture\",\n  \"cup\",\n  \"cupboard\",\n  \"curious\",\n  \"current\",\n  \"curtain\",\n  \"curve\",\n  \"cushion\",\n  \"custom\",\n  \"cute\",\n  \"cycle\",\n  \"dad\",\n  \"damage\",\n  \"damp\",\n  \"dance\",\n  \"danger\",\n  \"daring\",\n  \"dash\",\n  \"daughter\",\n  \"dawn\",\n  \"day\",\n  \"deal\",\n  \"debate\",\n  \"debris\",\n  \"decade\",\n  \"december\",\n  \"decide\",\n  \"decline\",\n  \"decorate\",\n  \"decrease\",\n  \"deer\",\n  \"defense\",\n  \"define\",\n  \"defy\",\n  \"degree\",\n  \"delay\",\n  \"deliver\",\n  \"demand\",\n  \"demise\",\n  \"denial\",\n  \"dentist\",\n  \"deny\",\n  \"depart\",\n  \"depend\",\n  \"deposit\",\n  \"depth\",\n  \"deputy\",\n  \"derive\",\n  \"describe\",\n  \"desert\",\n  \"design\",\n  \"desk\",\n  \"despair\",\n  \"destroy\",\n  \"detail\",\n  \"detect\",\n  \"develop\",\n  \"device\",\n  \"devote\",\n  \"diagram\",\n  \"dial\",\n  \"diamond\",\n  \"diary\",\n  \"dice\",\n  \"diesel\",\n  \"diet\",\n  \"differ\",\n  \"digital\",\n  \"dignity\",\n  \"dilemma\",\n  \"dinner\",\n  \"dinosaur\",\n  \"direct\",\n  \"dirt\",\n  \"disagree\",\n  \"discover\",\n  \"disease\",\n  \"dish\",\n  \"dismiss\",\n  \"disorder\",\n  \"display\",\n  \"distance\",\n  \"divert\",\n  \"divide\",\n  \"divorce\",\n  \"dizzy\",\n  \"doctor\",\n  \"document\",\n  \"dog\",\n  \"doll\",\n  \"dolphin\",\n  \"domain\",\n  \"donate\",\n  \"donkey\",\n  \"donor\",\n  \"door\",\n  \"dose\",\n  \"double\",\n  \"dove\",\n  \"draft\",\n  \"dragon\",\n  \"drama\",\n  \"drastic\",\n  \"draw\",\n  \"dream\",\n  \"dress\",\n  \"drift\",\n  \"drill\",\n  \"drink\",\n  \"drip\",\n  \"drive\",\n  \"drop\",\n  \"drum\",\n  \"dry\",\n  \"duck\",\n  \"dumb\",\n  \"dune\",\n  \"during\",\n  \"dust\",\n  \"dutch\",\n  \"duty\",\n  \"dwarf\",\n  \"dynamic\",\n  \"eager\",\n  \"eagle\",\n  \"early\",\n  \"earn\",\n  \"earth\",\n  \"easily\",\n  \"east\",\n  \"easy\",\n  \"echo\",\n  \"ecology\",\n  \"economy\",\n  \"edge\",\n  \"edit\",\n  \"educate\",\n  \"effort\",\n  \"egg\",\n  \"eight\",\n  \"either\",\n  \"elbow\",\n  \"elder\",\n  \"electric\",\n  \"elegant\",\n  \"element\",\n  \"elephant\",\n  \"elevator\",\n  \"elite\",\n  \"else\",\n  \"embark\",\n  \"embody\",\n  \"embrace\",\n  \"emerge\",\n  \"emotion\",\n  \"employ\",\n  \"empower\",\n  \"empty\",\n  \"enable\",\n  \"enact\",\n  \"end\",\n  \"endless\",\n  \"endorse\",\n  \"enemy\",\n  \"energy\",\n  \"enforce\",\n  \"engage\",\n  \"engine\",\n  \"enhance\",\n  \"enjoy\",\n  \"enlist\",\n  \"enough\",\n  \"enrich\",\n  \"enroll\",\n  \"ensure\",\n  \"enter\",\n  \"entire\",\n  \"entry\",\n  \"envelope\",\n  \"episode\",\n  \"equal\",\n  \"equip\",\n  \"era\",\n  \"erase\",\n  \"erode\",\n  \"erosion\",\n  \"error\",\n  \"erupt\",\n  \"escape\",\n  \"essay\",\n  \"essence\",\n  \"estate\",\n  \"eternal\",\n  \"ethics\",\n  \"evidence\",\n  \"evil\",\n  \"evoke\",\n  \"evolve\",\n  \"exact\",\n  \"example\",\n  \"excess\",\n  \"exchange\",\n  \"excite\",\n  \"exclude\",\n  \"excuse\",\n  \"execute\",\n  \"exercise\",\n  \"exhaust\",\n  \"exhibit\",\n  \"exile\",\n  \"exist\",\n  \"exit\",\n  \"exotic\",\n  \"expand\",\n  \"expect\",\n  \"expire\",\n  \"explain\",\n  \"expose\",\n  \"express\",\n  \"extend\",\n  \"extra\",\n  \"eye\",\n  \"eyebrow\",\n  \"fabric\",\n  \"face\",\n  \"faculty\",\n  \"fade\",\n  \"faint\",\n  \"faith\",\n  \"fall\",\n  \"false\",\n  \"fame\",\n  \"family\",\n  \"famous\",\n  \"fan\",\n  \"fancy\",\n  \"fantasy\",\n  \"farm\",\n  \"fashion\",\n  \"fat\",\n  \"fatal\",\n  \"father\",\n  \"fatigue\",\n  \"fault\",\n  \"favorite\",\n  \"feature\",\n  \"february\",\n  \"federal\",\n  \"fee\",\n  \"feed\",\n  \"feel\",\n  \"female\",\n  \"fence\",\n  \"festival\",\n  \"fetch\",\n  \"fever\",\n  \"few\",\n  \"fiber\",\n  \"fiction\",\n  \"field\",\n  \"figure\",\n  \"file\",\n  \"film\",\n  \"filter\",\n  \"final\",\n  \"find\",\n  \"fine\",\n  \"finger\",\n  \"finish\",\n  \"fire\",\n  \"firm\",\n  \"first\",\n  \"fiscal\",\n  \"fish\",\n  \"fit\",\n  \"fitness\",\n  \"fix\",\n  \"flag\",\n  \"flame\",\n  \"flash\",\n  \"flat\",\n  \"flavor\",\n  \"flee\",\n  \"flight\",\n  \"flip\",\n  \"float\",\n  \"flock\",\n  \"floor\",\n  \"flower\",\n  \"fluid\",\n  \"flush\",\n  \"fly\",\n  \"foam\",\n  \"focus\",\n  \"fog\",\n  \"foil\",\n  \"fold\",\n  \"follow\",\n  \"food\",\n  \"foot\",\n  \"force\",\n  \"forest\",\n  \"forget\",\n  \"fork\",\n  \"fortune\",\n  \"forum\",\n  \"forward\",\n  \"fossil\",\n  \"foster\",\n  \"found\",\n  \"fox\",\n  \"fragile\",\n  \"frame\",\n  \"frequent\",\n  \"fresh\",\n  \"friend\",\n  \"fringe\",\n  \"frog\",\n  \"front\",\n  \"frost\",\n  \"frown\",\n  \"frozen\",\n  \"fruit\",\n  \"fuel\",\n  \"fun\",\n  \"funny\",\n  \"furnace\",\n  \"fury\",\n  \"future\",\n  \"gadget\",\n  \"gain\",\n  \"galaxy\",\n  \"gallery\",\n  \"game\",\n  \"gap\",\n  \"garage\",\n  \"garbage\",\n  \"garden\",\n  \"garlic\",\n  \"garment\",\n  \"gas\",\n  \"gasp\",\n  \"gate\",\n  \"gather\",\n  \"gauge\",\n  \"gaze\",\n  \"general\",\n  \"genius\",\n  \"genre\",\n  \"gentle\",\n  \"genuine\",\n  \"gesture\",\n  \"ghost\",\n  \"giant\",\n  \"gift\",\n  \"giggle\",\n  \"ginger\",\n  \"giraffe\",\n  \"girl\",\n  \"give\",\n  \"glad\",\n  \"glance\",\n  \"glare\",\n  \"glass\",\n  \"glide\",\n  \"glimpse\",\n  \"globe\",\n  \"gloom\",\n  \"glory\",\n  \"glove\",\n  \"glow\",\n  \"glue\",\n  \"goat\",\n  \"goddess\",\n  \"gold\",\n  \"good\",\n  \"goose\",\n  \"gorilla\",\n  \"gospel\",\n  \"gossip\",\n  \"govern\",\n  \"gown\",\n  \"grab\",\n  \"grace\",\n  \"grain\",\n  \"grant\",\n  \"grape\",\n  \"grass\",\n  \"gravity\",\n  \"great\",\n  \"green\",\n  \"grid\",\n  \"grief\",\n  \"grit\",\n  \"grocery\",\n  \"group\",\n  \"grow\",\n  \"grunt\",\n  \"guard\",\n  \"guess\",\n  \"guide\",\n  \"guilt\",\n  \"guitar\",\n  \"gun\",\n  \"gym\",\n  \"habit\",\n  \"hair\",\n  \"half\",\n  \"hammer\",\n  \"hamster\",\n  \"hand\",\n  \"happy\",\n  \"harbor\",\n  \"hard\",\n  \"harsh\",\n  \"harvest\",\n  \"hat\",\n  \"have\",\n  \"hawk\",\n  \"hazard\",\n  \"head\",\n  \"health\",\n  \"heart\",\n  \"heavy\",\n  \"hedgehog\",\n  \"height\",\n  \"hello\",\n  \"helmet\",\n  \"help\",\n  \"hen\",\n  \"hero\",\n  \"hidden\",\n  \"high\",\n  \"hill\",\n  \"hint\",\n  \"hip\",\n  \"hire\",\n  \"history\",\n  \"hobby\",\n  \"hockey\",\n  \"hold\",\n  \"hole\",\n  \"holiday\",\n  \"hollow\",\n  \"home\",\n  \"honey\",\n  \"hood\",\n  \"hope\",\n  \"horn\",\n  \"horror\",\n  \"horse\",\n  \"hospital\",\n  \"host\",\n  \"hotel\",\n  \"hour\",\n  \"hover\",\n  \"hub\",\n  \"huge\",\n  \"human\",\n  \"humble\",\n  \"humor\",\n  \"hundred\",\n  \"hungry\",\n  \"hunt\",\n  \"hurdle\",\n  \"hurry\",\n  \"hurt\",\n  \"husband\",\n  \"hybrid\",\n  \"ice\",\n  \"icon\",\n  \"idea\",\n  \"identify\",\n  \"idle\",\n  \"ignore\",\n  \"ill\",\n  \"illegal\",\n  \"illness\",\n  \"image\",\n  \"imitate\",\n  \"immense\",\n  \"immune\",\n  \"impact\",\n  \"impose\",\n  \"improve\",\n  \"impulse\",\n  \"inch\",\n  \"include\",\n  \"income\",\n  \"increase\",\n  \"index\",\n  \"indicate\",\n  \"indoor\",\n  \"industry\",\n  \"infant\",\n  \"inflict\",\n  \"inform\",\n  \"inhale\",\n  \"inherit\",\n  \"initial\",\n  \"inject\",\n  \"injury\",\n  \"inmate\",\n  \"inner\",\n  \"innocent\",\n  \"input\",\n  \"inquiry\",\n  \"insane\",\n  \"insect\",\n  \"inside\",\n  \"inspire\",\n  \"install\",\n  \"intact\",\n  \"interest\",\n  \"into\",\n  \"invest\",\n  \"invite\",\n  \"involve\",\n  \"iron\",\n  \"island\",\n  \"isolate\",\n  \"issue\",\n  \"item\",\n  \"ivory\",\n  \"jacket\",\n  \"jaguar\",\n  \"jar\",\n  \"jazz\",\n  \"jealous\",\n  \"jeans\",\n  \"jelly\",\n  \"jewel\",\n  \"job\",\n  \"join\",\n  \"joke\",\n  \"journey\",\n  \"joy\",\n  \"judge\",\n  \"juice\",\n  \"jump\",\n  \"jungle\",\n  \"junior\",\n  \"junk\",\n  \"just\",\n  \"kangaroo\",\n  \"keen\",\n  \"keep\",\n  \"ketchup\",\n  \"key\",\n  \"kick\",\n  \"kid\",\n  \"kidney\",\n  \"kind\",\n  \"kingdom\",\n  \"kiss\",\n  \"kit\",\n  \"kitchen\",\n  \"kite\",\n  \"kitten\",\n  \"kiwi\",\n  \"knee\",\n  \"knife\",\n  \"knock\",\n  \"know\",\n  \"lab\",\n  \"label\",\n  \"labor\",\n  \"ladder\",\n  \"lady\",\n  \"lake\",\n  \"lamp\",\n  \"language\",\n  \"laptop\",\n  \"large\",\n  \"later\",\n  \"latin\",\n  \"laugh\",\n  \"laundry\",\n  \"lava\",\n  \"law\",\n  \"lawn\",\n  \"lawsuit\",\n  \"layer\",\n  \"lazy\",\n  \"leader\",\n  \"leaf\",\n  \"learn\",\n  \"leave\",\n  \"lecture\",\n  \"left\",\n  \"leg\",\n  \"legal\",\n  \"legend\",\n  \"leisure\",\n  \"lemon\",\n  \"lend\",\n  \"length\",\n  \"lens\",\n  \"leopard\",\n  \"lesson\",\n  \"letter\",\n  \"level\",\n  \"liar\",\n  \"liberty\",\n  \"library\",\n  \"license\",\n  \"life\",\n  \"lift\",\n  \"light\",\n  \"like\",\n  \"limb\",\n  \"limit\",\n  \"link\",\n  \"lion\",\n  \"liquid\",\n  \"list\",\n  \"little\",\n  \"live\",\n  \"lizard\",\n  \"load\",\n  \"loan\",\n  \"lobster\",\n  \"local\",\n  \"lock\",\n  \"logic\",\n  \"lonely\",\n  \"long\",\n  \"loop\",\n  \"lottery\",\n  \"loud\",\n  \"lounge\",\n  \"love\",\n  \"loyal\",\n  \"lucky\",\n  \"luggage\",\n  \"lumber\",\n  \"lunar\",\n  \"lunch\",\n  \"luxury\",\n  \"lyrics\",\n  \"machine\",\n  \"mad\",\n  \"magic\",\n  \"magnet\",\n  \"maid\",\n  \"mail\",\n  \"main\",\n  \"major\",\n  \"make\",\n  \"mammal\",\n  \"man\",\n  \"manage\",\n  \"mandate\",\n  \"mango\",\n  \"mansion\",\n  \"manual\",\n  \"maple\",\n  \"marble\",\n  \"march\",\n  \"margin\",\n  \"marine\",\n  \"market\",\n  \"marriage\",\n  \"mask\",\n  \"mass\",\n  \"master\",\n  \"match\",\n  \"material\",\n  \"math\",\n  \"matrix\",\n  \"matter\",\n  \"maximum\",\n  \"maze\",\n  \"meadow\",\n  \"mean\",\n  \"measure\",\n  \"meat\",\n  \"mechanic\",\n  \"medal\",\n  \"media\",\n  \"melody\",\n  \"melt\",\n  \"member\",\n  \"memory\",\n  \"mention\",\n  \"menu\",\n  \"mercy\",\n  \"merge\",\n  \"merit\",\n  \"merry\",\n  \"mesh\",\n  \"message\",\n  \"metal\",\n  \"method\",\n  \"middle\",\n  \"midnight\",\n  \"milk\",\n  \"million\",\n  \"mimic\",\n  \"mind\",\n  \"minimum\",\n  \"minor\",\n  \"minute\",\n  \"miracle\",\n  \"mirror\",\n  \"misery\",\n  \"miss\",\n  \"mistake\",\n  \"mix\",\n  \"mixed\",\n  \"mixture\",\n  \"mobile\",\n  \"model\",\n  \"modify\",\n  \"mom\",\n  \"moment\",\n  \"monitor\",\n  \"monkey\",\n  \"monster\",\n  \"month\",\n  \"moon\",\n  \"moral\",\n  \"more\",\n  \"morning\",\n  \"mosquito\",\n  \"mother\",\n  \"motion\",\n  \"motor\",\n  \"mountain\",\n  \"mouse\",\n  \"move\",\n  \"movie\",\n  \"much\",\n  \"muffin\",\n  \"mule\",\n  \"multiply\",\n  \"muscle\",\n  \"museum\",\n  \"mushroom\",\n  \"music\",\n  \"must\",\n  \"mutual\",\n  \"myself\",\n  \"mystery\",\n  \"myth\",\n  \"naive\",\n  \"name\",\n  \"napkin\",\n  \"narrow\",\n  \"nasty\",\n  \"nation\",\n  \"nature\",\n  \"near\",\n  \"neck\",\n  \"need\",\n  \"negative\",\n  \"neglect\",\n  \"neither\",\n  \"nephew\",\n  \"nerve\",\n  \"nest\",\n  \"net\",\n  \"network\",\n  \"neutral\",\n  \"never\",\n  \"news\",\n  \"next\",\n  \"nice\",\n  \"night\",\n  \"noble\",\n  \"noise\",\n  \"nominee\",\n  \"noodle\",\n  \"normal\",\n  \"north\",\n  \"nose\",\n  \"notable\",\n  \"note\",\n  \"nothing\",\n  \"notice\",\n  \"novel\",\n  \"now\",\n  \"nuclear\",\n  \"number\",\n  \"nurse\",\n  \"nut\",\n  \"oak\",\n  \"obey\",\n  \"object\",\n  \"oblige\",\n  \"obscure\",\n  \"observe\",\n  \"obtain\",\n  \"obvious\",\n  \"occur\",\n  \"ocean\",\n  \"october\",\n  \"odor\",\n  \"off\",\n  \"offer\",\n  \"office\",\n  \"often\",\n  \"oil\",\n  \"okay\",\n  \"old\",\n  \"olive\",\n  \"olympic\",\n  \"omit\",\n  \"once\",\n  \"one\",\n  \"onion\",\n  \"online\",\n  \"only\",\n  \"open\",\n  \"opera\",\n  \"opinion\",\n  \"oppose\",\n  \"option\",\n  \"orange\",\n  \"orbit\",\n  \"orchard\",\n  \"order\",\n  \"ordinary\",\n  \"organ\",\n  \"orient\",\n  \"original\",\n  \"orphan\",\n  \"ostrich\",\n  \"other\",\n  \"outdoor\",\n  \"outer\",\n  \"output\",\n  \"outside\",\n  \"oval\",\n  \"oven\",\n  \"over\",\n  \"own\",\n  \"owner\",\n  \"oxygen\",\n  \"oyster\",\n  \"ozone\",\n  \"pact\",\n  \"paddle\",\n  \"page\",\n  \"pair\",\n  \"palace\",\n  \"palm\",\n  \"panda\",\n  \"panel\",\n  \"panic\",\n  \"panther\",\n  \"paper\",\n  \"parade\",\n  \"parent\",\n  \"park\",\n  \"parrot\",\n  \"party\",\n  \"pass\",\n  \"patch\",\n  \"path\",\n  \"patient\",\n  \"patrol\",\n  \"pattern\",\n  \"pause\",\n  \"pave\",\n  \"payment\",\n  \"peace\",\n  \"peanut\",\n  \"pear\",\n  \"peasant\",\n  \"pelican\",\n  \"pen\",\n  \"penalty\",\n  \"pencil\",\n  \"people\",\n  \"pepper\",\n  \"perfect\",\n  \"permit\",\n  \"person\",\n  \"pet\",\n  \"phone\",\n  \"photo\",\n  \"phrase\",\n  \"physical\",\n  \"piano\",\n  \"picnic\",\n  \"picture\",\n  \"piece\",\n  \"pig\",\n  \"pigeon\",\n  \"pill\",\n  \"pilot\",\n  \"pink\",\n  \"pioneer\",\n  \"pipe\",\n  \"pistol\",\n  \"pitch\",\n  \"pizza\",\n  \"place\",\n  \"planet\",\n  \"plastic\",\n  \"plate\",\n  \"play\",\n  \"please\",\n  \"pledge\",\n  \"pluck\",\n  \"plug\",\n  \"plunge\",\n  \"poem\",\n  \"poet\",\n  \"point\",\n  \"polar\",\n  \"pole\",\n  \"police\",\n  \"pond\",\n  \"pony\",\n  \"pool\",\n  \"popular\",\n  \"portion\",\n  \"position\",\n  \"possible\",\n  \"post\",\n  \"potato\",\n  \"pottery\",\n  \"poverty\",\n  \"powder\",\n  \"power\",\n  \"practice\",\n  \"praise\",\n  \"predict\",\n  \"prefer\",\n  \"prepare\",\n  \"present\",\n  \"pretty\",\n  \"prevent\",\n  \"price\",\n  \"pride\",\n  \"primary\",\n  \"print\",\n  \"priority\",\n  \"prison\",\n  \"private\",\n  \"prize\",\n  \"problem\",\n  \"process\",\n  \"produce\",\n  \"profit\",\n  \"program\",\n  \"project\",\n  \"promote\",\n  \"proof\",\n  \"property\",\n  \"prosper\",\n  \"protect\",\n  \"proud\",\n  \"provide\",\n  \"public\",\n  \"pudding\",\n  \"pull\",\n  \"pulp\",\n  \"pulse\",\n  \"pumpkin\",\n  \"punch\",\n  \"pupil\",\n  \"puppy\",\n  \"purchase\",\n  \"purity\",\n  \"purpose\",\n  \"purse\",\n  \"push\",\n  \"put\",\n  \"puzzle\",\n  \"pyramid\",\n  \"quality\",\n  \"quantum\",\n  \"quarter\",\n  \"question\",\n  \"quick\",\n  \"quit\",\n  \"quiz\",\n  \"quote\",\n  \"rabbit\",\n  \"raccoon\",\n  \"race\",\n  \"rack\",\n  \"radar\",\n  \"radio\",\n  \"rail\",\n  \"rain\",\n  \"raise\",\n  \"rally\",\n  \"ramp\",\n  \"ranch\",\n  \"random\",\n  \"range\",\n  \"rapid\",\n  \"rare\",\n  \"rate\",\n  \"rather\",\n  \"raven\",\n  \"raw\",\n  \"razor\",\n  \"ready\",\n  \"real\",\n  \"reason\",\n  \"rebel\",\n  \"rebuild\",\n  \"recall\",\n  \"receive\",\n  \"recipe\",\n  \"record\",\n  \"recycle\",\n  \"reduce\",\n  \"reflect\",\n  \"reform\",\n  \"refuse\",\n  \"region\",\n  \"regret\",\n  \"regular\",\n  \"reject\",\n  \"relax\",\n  \"release\",\n  \"relief\",\n  \"rely\",\n  \"remain\",\n  \"remember\",\n  \"remind\",\n  \"remove\",\n  \"render\",\n  \"renew\",\n  \"rent\",\n  \"reopen\",\n  \"repair\",\n  \"repeat\",\n  \"replace\",\n  \"report\",\n  \"require\",\n  \"rescue\",\n  \"resemble\",\n  \"resist\",\n  \"resource\",\n  \"response\",\n  \"result\",\n  \"retire\",\n  \"retreat\",\n  \"return\",\n  \"reunion\",\n  \"reveal\",\n  \"review\",\n  \"reward\",\n  \"rhythm\",\n  \"rib\",\n  \"ribbon\",\n  \"rice\",\n  \"rich\",\n  \"ride\",\n  \"ridge\",\n  \"rifle\",\n  \"right\",\n  \"rigid\",\n  \"ring\",\n  \"riot\",\n  \"ripple\",\n  \"risk\",\n  \"ritual\",\n  \"rival\",\n  \"river\",\n  \"road\",\n  \"roast\",\n  \"robot\",\n  \"robust\",\n  \"rocket\",\n  \"romance\",\n  \"roof\",\n  \"rookie\",\n  \"room\",\n  \"rose\",\n  \"rotate\",\n  \"rough\",\n  \"round\",\n  \"route\",\n  \"royal\",\n  \"rubber\",\n  \"rude\",\n  \"rug\",\n  \"rule\",\n  \"run\",\n  \"runway\",\n  \"rural\",\n  \"sad\",\n  \"saddle\",\n  \"sadness\",\n  \"safe\",\n  \"sail\",\n  \"salad\",\n  \"salmon\",\n  \"salon\",\n  \"salt\",\n  \"salute\",\n  \"same\",\n  \"sample\",\n  \"sand\",\n  \"satisfy\",\n  \"satoshi\",\n  \"sauce\",\n  \"sausage\",\n  \"save\",\n  \"say\",\n  \"scale\",\n  \"scan\",\n  \"scare\",\n  \"scatter\",\n  \"scene\",\n  \"scheme\",\n  \"school\",\n  \"science\",\n  \"scissors\",\n  \"scorpion\",\n  \"scout\",\n  \"scrap\",\n  \"screen\",\n  \"script\",\n  \"scrub\",\n  \"sea\",\n  \"search\",\n  \"season\",\n  \"seat\",\n  \"second\",\n  \"secret\",\n  \"section\",\n  \"security\",\n  \"seed\",\n  \"seek\",\n  \"segment\",\n  \"select\",\n  \"sell\",\n  \"seminar\",\n  \"senior\",\n  \"sense\",\n  \"sentence\",\n  \"series\",\n  \"service\",\n  \"session\",\n  \"settle\",\n  \"setup\",\n  \"seven\",\n  \"shadow\",\n  \"shaft\",\n  \"shallow\",\n  \"share\",\n  \"shed\",\n  \"shell\",\n  \"sheriff\",\n  \"shield\",\n  \"shift\",\n  \"shine\",\n  \"ship\",\n  \"shiver\",\n  \"shock\",\n  \"shoe\",\n  \"shoot\",\n  \"shop\",\n  \"short\",\n  \"shoulder\",\n  \"shove\",\n  \"shrimp\",\n  \"shrug\",\n  \"shuffle\",\n  \"shy\",\n  \"sibling\",\n  \"sick\",\n  \"side\",\n  \"siege\",\n  \"sight\",\n  \"sign\",\n  \"silent\",\n  \"silk\",\n  \"silly\",\n  \"silver\",\n  \"similar\",\n  \"simple\",\n  \"since\",\n  \"sing\",\n  \"siren\",\n  \"sister\",\n  \"situate\",\n  \"six\",\n  \"size\",\n  \"skate\",\n  \"sketch\",\n  \"ski\",\n  \"skill\",\n  \"skin\",\n  \"skirt\",\n  \"skull\",\n  \"slab\",\n  \"slam\",\n  \"sleep\",\n  \"slender\",\n  \"slice\",\n  \"slide\",\n  \"slight\",\n  \"slim\",\n  \"slogan\",\n  \"slot\",\n  \"slow\",\n  \"slush\",\n  \"small\",\n  \"smart\",\n  \"smile\",\n  \"smoke\",\n  \"smooth\",\n  \"snack\",\n  \"snake\",\n  \"snap\",\n  \"sniff\",\n  \"snow\",\n  \"soap\",\n  \"soccer\",\n  \"social\",\n  \"sock\",\n  \"soda\",\n  \"soft\",\n  \"solar\",\n  \"soldier\",\n  \"solid\",\n  \"solution\",\n  \"solve\",\n  \"someone\",\n  \"song\",\n  \"soon\",\n  \"sorry\",\n  \"sort\",\n  \"soul\",\n  \"sound\",\n  \"soup\",\n  \"source\",\n  \"south\",\n  \"space\",\n  \"spare\",\n  \"spatial\",\n  \"spawn\",\n  \"speak\",\n  \"special\",\n  \"speed\",\n  \"spell\",\n  \"spend\",\n  \"sphere\",\n  \"spice\",\n  \"spider\",\n  \"spike\",\n  \"spin\",\n  \"spirit\",\n  \"split\",\n  \"spoil\",\n  \"sponsor\",\n  \"spoon\",\n  \"sport\",\n  \"spot\",\n  \"spray\",\n  \"spread\",\n  \"spring\",\n  \"spy\",\n  \"square\",\n  \"squeeze\",\n  \"squirrel\",\n  \"stable\",\n  \"stadium\",\n  \"staff\",\n  \"stage\",\n  \"stairs\",\n  \"stamp\",\n  \"stand\",\n  \"start\",\n  \"state\",\n  \"stay\",\n  \"steak\",\n  \"steel\",\n  \"stem\",\n  \"step\",\n  \"stereo\",\n  \"stick\",\n  \"still\",\n  \"sting\",\n  \"stock\",\n  \"stomach\",\n  \"stone\",\n  \"stool\",\n  \"story\",\n  \"stove\",\n  \"strategy\",\n  \"street\",\n  \"strike\",\n  \"strong\",\n  \"struggle\",\n  \"student\",\n  \"stuff\",\n  \"stumble\",\n  \"style\",\n  \"subject\",\n  \"submit\",\n  \"subway\",\n  \"success\",\n  \"such\",\n  \"sudden\",\n  \"suffer\",\n  \"sugar\",\n  \"suggest\",\n  \"suit\",\n  \"summer\",\n  \"sun\",\n  \"sunny\",\n  \"sunset\",\n  \"super\",\n  \"supply\",\n  \"supreme\",\n  \"sure\",\n  \"surface\",\n  \"surge\",\n  \"surprise\",\n  \"surround\",\n  \"survey\",\n  \"suspect\",\n  \"sustain\",\n  \"swallow\",\n  \"swamp\",\n  \"swap\",\n  \"swarm\",\n  \"swear\",\n  \"sweet\",\n  \"swift\",\n  \"swim\",\n  \"swing\",\n  \"switch\",\n  \"sword\",\n  \"symbol\",\n  \"symptom\",\n  \"syrup\",\n  \"system\",\n  \"table\",\n  \"tackle\",\n  \"tag\",\n  \"tail\",\n  \"talent\",\n  \"talk\",\n  \"tank\",\n  \"tape\",\n  \"target\",\n  \"task\",\n  \"taste\",\n  \"tattoo\",\n  \"taxi\",\n  \"teach\",\n  \"team\",\n  \"tell\",\n  \"ten\",\n  \"tenant\",\n  \"tennis\",\n  \"tent\",\n  \"term\",\n  \"test\",\n  \"text\",\n  \"thank\",\n  \"that\",\n  \"theme\",\n  \"then\",\n  \"theory\",\n  \"there\",\n  \"they\",\n  \"thing\",\n  \"this\",\n  \"thought\",\n  \"three\",\n  \"thrive\",\n  \"throw\",\n  \"thumb\",\n  \"thunder\",\n  \"ticket\",\n  \"tide\",\n  \"tiger\",\n  \"tilt\",\n  \"timber\",\n  \"time\",\n  \"tiny\",\n  \"tip\",\n  \"tired\",\n  \"tissue\",\n  \"title\",\n  \"toast\",\n  \"tobacco\",\n  \"today\",\n  \"toddler\",\n  \"toe\",\n  \"together\",\n  \"toilet\",\n  \"token\",\n  \"tomato\",\n  \"tomorrow\",\n  \"tone\",\n  \"tongue\",\n  \"tonight\",\n  \"tool\",\n  \"tooth\",\n  \"top\",\n  \"topic\",\n  \"topple\",\n  \"torch\",\n  \"tornado\",\n  \"tortoise\",\n  \"toss\",\n  \"total\",\n  \"tourist\",\n  \"toward\",\n  \"tower\",\n  \"town\",\n  \"toy\",\n  \"track\",\n  \"trade\",\n  \"traffic\",\n  \"tragic\",\n  \"train\",\n  \"transfer\",\n  \"trap\",\n  \"trash\",\n  \"travel\",\n  \"tray\",\n  \"treat\",\n  \"tree\",\n  \"trend\",\n  \"trial\",\n  \"tribe\",\n  \"trick\",\n  \"trigger\",\n  \"trim\",\n  \"trip\",\n  \"trophy\",\n  \"trouble\",\n  \"truck\",\n  \"true\",\n  \"truly\",\n  \"trumpet\",\n  \"trust\",\n  \"truth\",\n  \"try\",\n  \"tube\",\n  \"tuition\",\n  \"tumble\",\n  \"tuna\",\n  \"tunnel\",\n  \"turkey\",\n  \"turn\",\n  \"turtle\",\n  \"twelve\",\n  \"twenty\",\n  \"twice\",\n  \"twin\",\n  \"twist\",\n  \"two\",\n  \"type\",\n  \"typical\",\n  \"ugly\",\n  \"umbrella\",\n  \"unable\",\n  \"unaware\",\n  \"uncle\",\n  \"uncover\",\n  \"under\",\n  \"undo\",\n  \"unfair\",\n  \"unfold\",\n  \"unhappy\",\n  \"uniform\",\n  \"unique\",\n  \"unit\",\n  \"universe\",\n  \"unknown\",\n  \"unlock\",\n  \"until\",\n  \"unusual\",\n  \"unveil\",\n  \"update\",\n  \"upgrade\",\n  \"uphold\",\n  \"upon\",\n  \"upper\",\n  \"upset\",\n  \"urban\",\n  \"urge\",\n  \"usage\",\n  \"use\",\n  \"used\",\n  \"useful\",\n  \"useless\",\n  \"usual\",\n  \"utility\",\n  \"vacant\",\n  \"vacuum\",\n  \"vague\",\n  \"valid\",\n  \"valley\",\n  \"valve\",\n  \"van\",\n  \"vanish\",\n  \"vapor\",\n  \"various\",\n  \"vast\",\n  \"vault\",\n  \"vehicle\",\n  \"velvet\",\n  \"vendor\",\n  \"venture\",\n  \"venue\",\n  \"verb\",\n  \"verify\",\n  \"version\",\n  \"very\",\n  \"vessel\",\n  \"veteran\",\n  \"viable\",\n  \"vibrant\",\n  \"vicious\",\n  \"victory\",\n  \"video\",\n  \"view\",\n  \"village\",\n  \"vintage\",\n  \"violin\",\n  \"virtual\",\n  \"virus\",\n  \"visa\",\n  \"visit\",\n  \"visual\",\n  \"vital\",\n  \"vivid\",\n  \"vocal\",\n  \"voice\",\n  \"void\",\n  \"volcano\",\n  \"volume\",\n  \"vote\",\n  \"voyage\",\n  \"wage\",\n  \"wagon\",\n  \"wait\",\n  \"walk\",\n  \"wall\",\n  \"walnut\",\n  \"want\",\n  \"warfare\",\n  \"warm\",\n  \"warrior\",\n  \"wash\",\n  \"wasp\",\n  \"waste\",\n  \"water\",\n  \"wave\",\n  \"way\",\n  \"wealth\",\n  \"weapon\",\n  \"wear\",\n  \"weasel\",\n  \"weather\",\n  \"web\",\n  \"wedding\",\n  \"weekend\",\n  \"weird\",\n  \"welcome\",\n  \"west\",\n  \"wet\",\n  \"whale\",\n  \"what\",\n  \"wheat\",\n  \"wheel\",\n  \"when\",\n  \"where\",\n  \"whip\",\n  \"whisper\",\n  \"wide\",\n  \"width\",\n  \"wife\",\n  \"wild\",\n  \"will\",\n  \"win\",\n  \"window\",\n  \"wine\",\n  \"wing\",\n  \"wink\",\n  \"winner\",\n  \"winter\",\n  \"wire\",\n  \"wisdom\",\n  \"wise\",\n  \"wish\",\n  \"witness\",\n  \"wolf\",\n  \"woman\",\n  \"wonder\",\n  \"wood\",\n  \"wool\",\n  \"word\",\n  \"work\",\n  \"world\",\n  \"worry\",\n  \"worth\",\n  \"wrap\",\n  \"wreck\",\n  \"wrestle\",\n  \"wrist\",\n  \"write\",\n  \"wrong\",\n  \"yard\",\n  \"year\",\n  \"yellow\",\n  \"you\",\n  \"young\",\n  \"youth\",\n  \"zebra\",\n  \"zero\",\n  \"zone\",\n  \"zoo\",\n];\n"
  },
  {
    "path": "packages/utils/src/browser.ts",
    "content": "export function getUrlSearchParam(name: string): string | null {\n  if (window.URLSearchParams) {\n    const urlParams = new URLSearchParams(window.location.search.slice(1));\n    return urlParams.get(name);\n  } else {\n    // Adapted from https://davidwalsh.name/query-string-javascript\n    const nameForRegex = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n    const regex = new RegExp(\"[\\\\?&]\" + nameForRegex + \"=([^&#]*)\");\n    const results = regex.exec(window.location.search);\n    return results === null ? null : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n  }\n}\n\n/** Returns array of all instances of a single URL search param e.g. searching for `\"foo\"` from `?foo=val1&foo=val2&bar=val3` would return `[\"val1\", \"val2\"]`. */\nexport function getAllUrlSearchParam(name: string): string[] {\n  if (window.URLSearchParams) {\n    const urlParams = new URLSearchParams(window.location.search.slice(1));\n    return urlParams.getAll(name);\n  } else {\n    const nameForRegex = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n    const regex = new RegExp(\"[\\\\?&]\" + nameForRegex + \"=([^&#]*)\", \"g\");\n    const output = [];\n    let results: RegExpExecArray | null;\n    while (true) {\n      results = regex.exec(window.location.search);\n      if (!results) {\n        break;\n      }\n      output.push(decodeURIComponent(results[1].replace(/\\+/g, \" \")));\n    }\n    return output;\n  }\n}\n\n/** Copy given string to clipboard. Returns true if successful, false if failed. Should only fail on reaaally old browsers that we don't support. */\nexport function copyToClipboard(text: string): boolean {\n  const textArea = document.createElement(\"textarea\");\n  textArea.style.position = \"fixed\";\n  textArea.style.left = \"-9999px\";\n  textArea.value = text;\n  document.body.appendChild(textArea);\n  textArea.focus();\n  textArea.select();\n  try {\n    document.execCommand(\"copy\");\n  } catch (error) {\n    console.error(\"Failed to copy text:\", error);\n    return false;\n  }\n  document.body.removeChild(textArea);\n  return true;\n}\n"
  },
  {
    "path": "packages/utils/src/civilConstants.ts",
    "content": "// TODO(ritave): generate roles from smart-contract\n/**\n * Roles that are supported by the Newsroom\n * - Editor can approve or deny contant, as well as assigning roles to actors\n * - Reported who can propose content for the Editors to approve\n */\nexport enum NewsroomRoles {\n  Editor = \"editor\",\n}\n"
  },
  {
    "path": "packages/utils/src/civilHelpers.ts",
    "content": "import * as sanitizeHtml from \"sanitize-html\";\nimport { EthAddress, Hex } from \"@joincivil/typescript-types\";\nimport { soliditySha3 } from \"./crypto\";\n\nexport function getVoteSaltHash(vote: string, salt: string): string {\n  return soliditySha3([\"uint\", \"uint\"], [vote, salt]);\n}\n\n/** For Proof of Use UserGroups smart-contract forceUnion */\nexport function prepareForceUnionMessage(\n  userGroupsAddress: EthAddress,\n  addressA: EthAddress,\n  addressB: EthAddress,\n): Hex {\n  return soliditySha3(\n    [\"address\", \"bytes32\"],\n    [userGroupsAddress, soliditySha3([\"address\", \"address\"], [addressA, addressB])],\n  );\n}\n\nexport function prepareMaxGroupSizeMessage(userGroupsAddress: EthAddress, nonce: number, groupSize: number): Hex {\n  return soliditySha3([\"address\", \"bytes32\"], [userGroupsAddress, soliditySha3([\"uint\", \"uint\"], [nonce, groupSize])]);\n}\n\nexport function prepareNewsroomMessage(newsroomAddress: EthAddress, contentHash: Hex): Hex {\n  // TODO(ritave): We might want to use Metamask's typed signining procedure which would explain\n  //               Sadly it's only supported by Metamask so not yet\n  //               https://medium.com/metamask/scaling-web3-with-signtypeddata-91d6efc8b290\n  return soliditySha3([\"address\", \"bytes32\"], [newsroomAddress, contentHash]);\n}\n\nexport function prepareUserFriendlyNewsroomMessage(\n  newsroomAddress: EthAddress,\n  contentHash: Hex,\n  name?: string,\n): string {\n  return `I authorize ${\n    name ? name : \"this newsroom\"\n  } to publish this post and verify its content.\\n\\nNewsroom address:\\n${newsroomAddress}\\n\\nPost content hash:\\n${contentHash}`;\n}\n\nexport function prepareConstitutionSignMessage(newsroomName: string, constitutionHash: Hex): string {\n  return `By signing this message, I am agreeing on behalf of the Newsroom to abide by the Civil Community's ethical principles as described in the Civil Constitution.\\n\\nNewsroom Name:\\n${newsroomName}\\n\\nConstitution Hash:\\n${constitutionHash}`;\n}\n\nexport function getDefaultFromBlock(network: number): number {\n  // A map of the network id to its corresponding default fromBlock, which\n  // could be the TCR genesis block or possibly the geneis block of the\n  // first Newsroom contract on that network\n  const defaultFromBlocks: { [index: string]: number } = {\n    1: 6904575,\n    4: 3689706,\n    50: 0,\n  };\n  return defaultFromBlocks[network.toString()] || 0;\n}\n\nexport enum Parameters {\n  minDeposit = \"minDeposit\",\n  pMinDeposit = \"pMinDeposit\",\n  applyStageLen = \"applyStageLen\",\n  pApplyStageLen = \"pApplyStageLen\",\n  commitStageLen = \"commitStageLen\",\n  pCommitStageLen = \"pCommitStageLen\",\n  revealStageLen = \"revealStageLen\",\n  pRevealStageLen = \"pRevealStageLen\",\n  dispensationPct = \"dispensationPct\",\n  pDispensationPct = \"pDispensationPct\",\n  voteQuorum = \"voteQuorum\",\n  pVoteQuorum = \"pVoteQuorum\",\n  challengeAppealLen = \"challengeAppealLen\",\n  challengeAppealCommitLen = \"challengeAppealCommitLen\",\n  challengeAppealRevealLen = \"challengeAppealRevealLen\",\n}\n\nexport enum GovernmentParameters {\n  requestAppealLen = \"requestAppealLen\",\n  judgeAppealLen = \"judgeAppealLen\",\n  appealFee = \"appealFee\",\n  appealVotePercentage = \"appealVotePercentage\",\n  appealChallengeVoteDispensationPct = \"appealChallengeVoteDispensationPct\",\n  govtPCommitStageLen = \"govtPCommitStageLen\",\n  govtPRevealStageLen = \"govtPRevealStageLen\",\n}\n\nexport function getInfuraUrlFromIpfs(ipfsUrl: string): string {\n  const hash = ipfsUrl.split(\"://\")[1];\n  return `https://ipfs.infura.io/ipfs/${hash}`;\n}\n\nexport function sanitizeConstitutionHtml(html: string): string {\n  return sanitizeHtml(html, {\n    allowedTags: sanitizeHtml.defaults.allowedTags.concat([\"h2\"]),\n    allowedAttributes: {\n      ...sanitizeHtml.defaults.allowedAttributes,\n      h2: [\"id\"],\n    },\n  });\n}\n"
  },
  {
    "path": "packages/utils/src/contracts.ts",
    "content": "const METADATA_REGEX = /0x\\w+(?=a165627a7a72305820(?:\\w{64})0029$)/;\n\n/**\n * Compares two hex arrays of smart-contracts deployed code\n * Deployed bytecode can't be compared 1:1, because of the metadata hash at the end\n * See http://solidity.readthedocs.io/en/v0.4.21/metadata.html\n */\nexport function isDeployedBytecodeEqual(deployed1: string, deployed2: string): boolean {\n  if (deployed1 === deployed2) {\n    return true;\n  }\n  const withoutMeta1 = deployed1.match(METADATA_REGEX);\n  const withoutMeta2 = deployed2.match(METADATA_REGEX);\n  // Didn't find the hash, just different bytecodes\n  if (!withoutMeta1 || !withoutMeta2 || !withoutMeta1.length || !withoutMeta2.length) {\n    return false;\n  }\n  return withoutMeta1[0] === withoutMeta2[0];\n}\n\nexport function is0x0Address(address: string): boolean {\n  return address === \"0x0\" || address === \"0x0000000000000000000000000000000000000000\";\n}\n\nexport function is0x0Hash(hash: string): boolean {\n  return hash === \"0x0\" || hash === \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n}\n\nexport function estimateRawHex(hex: string): number {\n  let h = hex;\n  if (hex.substr(0, 2) === \"0x\") {\n    h = hex.substr(2);\n  }\n  const bytes = h.match(/.{2}/g) || [];\n  return Math.floor(\n    bytes.reduce((acc, item) => {\n      if (item === \"00\") {\n        return acc + 4;\n      } else {\n        return acc + 68;\n      }\n    }, 0) * 1.15,\n  );\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/appealChallengeHelpers.ts",
    "content": "import { pollHelpers } from \"./pollHelpers\";\nimport { AppealChallengeData, UserChallengeData } from \"@joincivil/typescript-types\";\nimport { is0x0Address } from \"../index\";\n\nexport const appealChallengeHelpers = {\n  isAppealChallengeInCommitStage,\n  isAppealChallengeInRevealStage,\n  didAppealChallengeSucceed,\n  canAppealChallengeBeResolved,\n  isUserAppealChallengeWinner,\n  canUserCollectAppealChallengeReward,\n  canRescueAppealChallengeTokens,\n};\n\n/**\n * Checks in an Appeal Challenge is in the Commit stage\n * @param challengeData the AppealChallengeData to check\n */\nfunction isAppealChallengeInCommitStage(challengeData: AppealChallengeData): boolean {\n  return pollHelpers.isInCommitStage(challengeData.poll);\n}\n\n/**\n * Checks in an Appeal Challenge is in the Reveal stage\n * @param challengeData the AppealChallengeData to check\n */\nfunction isAppealChallengeInRevealStage(challengeData: AppealChallengeData): boolean {\n  return pollHelpers.isInRevealStage(challengeData.poll);\n}\n\n/**\n * Checks in an Appeal Challenge succeeded\n * @param challengeData the AppealChallengeData to check\n */\nfunction didAppealChallengeSucceed(challengeData: AppealChallengeData): boolean {\n  return pollHelpers.isVotePassed(challengeData.poll);\n}\n\nfunction canAppealChallengeBeResolved(challengeData: AppealChallengeData): boolean {\n  return (\n    !is0x0Address(challengeData.challenger) &&\n    !isAppealChallengeInCommitStage(challengeData) &&\n    !isAppealChallengeInRevealStage(challengeData) &&\n    !challengeData.resolved\n  );\n}\n\nfunction isUserAppealChallengeWinner(\n  challengeData: AppealChallengeData,\n  userChallengeData: UserChallengeData,\n): boolean {\n  if (challengeData.resolved && userChallengeData.didUserReveal) {\n    if (userChallengeData.isVoterWinner) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction canUserCollectAppealChallengeReward(\n  challengeData: AppealChallengeData,\n  userChallengeData: UserChallengeData,\n): boolean {\n  return isUserAppealChallengeWinner(challengeData, userChallengeData) && !userChallengeData.didUserCollect;\n}\n\nfunction canRescueAppealChallengeTokens(\n  challengeData: AppealChallengeData,\n  userChallengeData: UserChallengeData,\n): boolean {\n  if (\n    challengeData.resolved &&\n    userChallengeData.didUserCommit &&\n    !userChallengeData.didUserReveal &&\n    !userChallengeData.didUserRescue\n  ) {\n    return true;\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/appealHelpers.ts",
    "content": "import { appealChallengeHelpers } from \"./appealChallengeHelpers\";\nimport { is0x0Address } from \"../index\";\nimport { BigNumber, AppealData } from \"@joincivil/typescript-types\";\n\nexport const appealHelpers = {\n  canAppealBeResolved,\n  isAwaitingAppealChallenge,\n  isAppealAwaitingJudgment,\n};\n\n/**\n * Checks if an appeal can be resolved\n * @param appealData AppealData to check\n */\nfunction canAppealBeResolved(appealData: AppealData): boolean {\n  if (is0x0Address(appealData.requester)) {\n    return false;\n  } else if (appealData.appealChallenge && !is0x0Address(appealData.appealChallenge.challenger)) {\n    // appeal challenge voting must be over (meaning commit & reveal stages are done)\n    const inCommit = appealChallengeHelpers.isAppealChallengeInCommitStage(appealData.appealChallenge);\n    const inReveal = appealChallengeHelpers.isAppealChallengeInRevealStage(appealData.appealChallenge);\n    return !inCommit && !inReveal && !appealData.appealChallenge!.resolved;\n  } else if (appealData.appealGranted) {\n    // appeal challenge request phase must be over\n    const appealOpenToChallengeExpiryDate = new Date(\n      new BigNumber(appealData.appealOpenToChallengeExpiry).toNumber() * 1000,\n    );\n    return appealOpenToChallengeExpiryDate < new Date();\n  } else {\n    const judgmentExpiry = new Date(new BigNumber(appealData.appealPhaseExpiry).toNumber() * 1000);\n    return judgmentExpiry < new Date();\n  }\n}\n\n/**\n * Checks if an appeal is waiting to be challenged\n * @param appealData AppealData to check\n */\nfunction isAwaitingAppealChallenge(appealData: AppealData): boolean {\n  if (!appealData.appealGranted) {\n    return false;\n  }\n  if (!new BigNumber(appealData.appealChallengeID).isZero()) {\n    return false;\n  } else {\n    const appealOpenToChallengeExpiryDate = new Date(\n      new BigNumber(appealData.appealOpenToChallengeExpiry).toNumber() * 1000,\n    );\n    return appealOpenToChallengeExpiryDate > new Date();\n  }\n}\n\nfunction isAppealAwaitingJudgment(appealData: AppealData): boolean {\n  if (appealData.appealGranted) {\n    return false;\n  } else {\n    const appealExpiryDate = new Date(new BigNumber(appealData.appealPhaseExpiry).toNumber() * 1000);\n    return appealExpiryDate > new Date();\n  }\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/challengeHelpers.ts",
    "content": "import { pollHelpers } from \"./pollHelpers\";\nimport { appealChallengeHelpers } from \"./appealChallengeHelpers\";\nimport { is0x0Address } from \"../index\";\nimport { BigNumber, ChallengeData, UserChallengeData } from \"@joincivil/typescript-types\";\n\nexport const challengeHelpers = {\n  isChallengeInCommitStage,\n  isChallengeInRevealStage,\n  canRequestAppeal,\n  didChallengeOriginallySucceed,\n  didChallengeSucceed,\n  canResolveChallenge,\n  doesChallengeHaveAppeal,\n  canCollectRewardOrRescue,\n  isOriginalChallengeVoteOverturned,\n  isUserWinner,\n  canUserCollectReward,\n  canRescueTokens,\n};\n\n/**\n * Checks if a Challenge is in the Commit stage\n * @param challengeData the ChallengeData to check\n */\nfunction isChallengeInCommitStage(challengeData: ChallengeData): boolean {\n  return pollHelpers.isInCommitStage(challengeData.poll);\n}\n\n/**\n * Checks if a Challenge is in the Reveal stage\n * @param challengeData the ChallengeData to check\n */\nfunction isChallengeInRevealStage(challengeData: ChallengeData): boolean {\n  return pollHelpers.isInRevealStage(challengeData.poll);\n}\n\n/**\n * Checks if an Appeal can be requested for this challenge\n * @param challengeData the ChallengeData to check\n */\nfunction canRequestAppeal(challengeData: ChallengeData): boolean {\n  if (isChallengeInCommitStage(challengeData)) {\n    return false;\n  } else if (isChallengeInRevealStage(challengeData)) {\n    return false;\n  } else {\n    if (doesChallengeHaveAppeal(challengeData)) {\n      return false;\n    } else {\n      return new BigNumber(challengeData.requestAppealExpiry).toNumber() > Date.now() / 1000;\n    }\n  }\n}\n\n/**\n * Checks if the originally Challenge succeeded, without taking appeal / appeal challenge into consideration\n * @param challengeData the ChallengeData to check\n */\nfunction didChallengeOriginallySucceed(challengeData: ChallengeData): boolean {\n  return !pollHelpers.isVotePassed(challengeData.poll);\n}\n\n/**\n * Checks if a Challenge succeeded\n * @param challengeData the ChallengeData to check\n */\nfunction didChallengeSucceed(challengeData: ChallengeData): boolean {\n  if (challengeData.appeal && challengeData.appeal.appealGranted) {\n    if (\n      challengeData.appeal.appealChallenge &&\n      appealChallengeHelpers.didAppealChallengeSucceed(challengeData.appeal.appealChallenge)\n    ) {\n      return didChallengeOriginallySucceed(challengeData);\n    } else {\n      return !didChallengeOriginallySucceed(challengeData);\n    }\n  } else {\n    return didChallengeOriginallySucceed(challengeData);\n  }\n}\n\n/**\n * Checks if a Challenge has no actionable active phase and can be resolved*\n * @param challengeData this ChallengeData to check\n */\nfunction canResolveChallenge(challengeData: ChallengeData): boolean {\n  return (\n    challengeData &&\n    !challengeData.resolved &&\n    !isChallengeInCommitStage(challengeData) &&\n    !isChallengeInRevealStage(challengeData) &&\n    !canRequestAppeal(challengeData) &&\n    !doesChallengeHaveAppeal(challengeData)\n  );\n}\n\n/**\n * Checks if a Challenge has an active appeal\n * @param challengeData this ChallengeData to check\n */\nfunction doesChallengeHaveAppeal(challengeData: ChallengeData): boolean {\n  return challengeData.appeal! && !is0x0Address(challengeData!.appeal!.requester.toString());\n}\n\nfunction canCollectRewardOrRescue(challengeData: ChallengeData): boolean {\n  return challengeData && challengeData.resolved;\n}\n\nfunction isOriginalChallengeVoteOverturned(challengeData: ChallengeData): boolean {\n  if (challengeData.appeal) {\n    if (challengeData.appeal.appealGranted) {\n      if (challengeData.appeal.appealChallenge) {\n        return !pollHelpers.isVotePassed(challengeData.appeal.appealChallenge.poll);\n      }\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isUserWinner(challengeData: ChallengeData, userChallengeData: UserChallengeData): boolean {\n  if (challengeData.resolved && userChallengeData.didUserReveal) {\n    const isOverturned = isOriginalChallengeVoteOverturned(challengeData);\n    const isWinner = userChallengeData.isVoterWinner;\n    return (isWinner && !isOverturned) || (!isWinner && isOverturned);\n  }\n  return false;\n}\n\nfunction canUserCollectReward(challengeData: ChallengeData, userChallengeData: UserChallengeData): boolean {\n  return isUserWinner(challengeData, userChallengeData) && !userChallengeData.didUserCollect;\n}\n\nfunction canRescueTokens(challengeData: ChallengeData, userChallengeData: UserChallengeData): boolean {\n  if (\n    challengeData.resolved &&\n    userChallengeData.didUserCommit &&\n    !userChallengeData.didUserReveal &&\n    !userChallengeData.didUserRescue\n  ) {\n    return true;\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/index.ts",
    "content": "export * from \"./appealChallengeHelpers\";\nexport * from \"./appealHelpers\";\nexport * from \"./challengeHelpers\";\nexport * from \"./listingHelpers\";\nexport * from \"./paramPropChallengeHelpers\";\nexport * from \"./pollHelpers\";\nexport * from \"./userChallengeDataHelpers\";\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/listingHelpers.ts",
    "content": "import { ListingData, BigNumber } from \"@joincivil/typescript-types\";\nimport { challengeHelpers } from \"./challengeHelpers\";\nimport { appealHelpers } from \"./appealHelpers\";\nimport { appealChallengeHelpers } from \"./appealChallengeHelpers\";\nimport { is0x0Address } from \"../index\";\n\nexport const listingHelpers = {\n  getNextTimerExpiry,\n  isWhitelisted,\n  isInApplicationPhase,\n  canListingBeChallenged,\n  canBeWhitelisted,\n  isInChallengedCommitVotePhase,\n  isInChallengedRevealVotePhase,\n  isAwaitingAppealRequest,\n  canChallengeBeResolved,\n  isListingAwaitingAppealJudgment,\n  isListingAwaitingAppealChallenge,\n  isInAppealChallengeCommitPhase,\n  isInAppealChallengeRevealPhase,\n  canListingAppealBeResolved,\n  canListingAppealChallengeBeResolved,\n};\n\n/**\n * Gets the next expiration timer for the given listing, return 0 if not in an expiration timer stage\n * @param listing the ListingData to check\n */\nfunction getNextTimerExpiry(listing: ListingData): number {\n  if (isInApplicationPhase(listing)) {\n    return listing.appExpiry.toNumber();\n  } else if (isInChallengedCommitVotePhase(listing)) {\n    return listing.challenge!.poll.commitEndDate.toNumber();\n  } else if (isInChallengedRevealVotePhase(listing)) {\n    return listing.challenge!.poll.revealEndDate.toNumber();\n  } else if (isAwaitingAppealRequest(listing)) {\n    return listing.challenge!.requestAppealExpiry.toNumber();\n  } else if (isListingAwaitingAppealJudgment(listing)) {\n    return listing.challenge!.appeal!.appealPhaseExpiry.toNumber();\n  } else if (isListingAwaitingAppealChallenge(listing)) {\n    return listing.challenge!.appeal!.appealOpenToChallengeExpiry.toNumber();\n  } else if (isInAppealChallengeCommitPhase(listing)) {\n    return listing.challenge!.appeal!.appealChallenge!.poll.commitEndDate.toNumber();\n  } else if (isInAppealChallengeRevealPhase(listing)) {\n    return listing.challenge!.appeal!.appealChallenge!.poll.revealEndDate.toNumber();\n  }\n\n  return 0;\n}\n\nfunction isWhitelisted(listingData: ListingData): boolean {\n  return listingData.isWhitelisted;\n}\n\n/**\n * Checks if a listing is in unchallenged application phase\n * @param listingData the ListingData to check\n */\nfunction isInApplicationPhase(listingData: ListingData): boolean {\n  // if expiry time has passed\n  if (new Date(listingData.appExpiry.toNumber() * 1000) < new Date()) {\n    return false;\n  }\n\n  if (!new BigNumber(listingData.challengeID).isZero() || listingData.isWhitelisted) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Checks if a listing can be challenged\n * @param listingData the ListingData to check\n */\nfunction canListingBeChallenged(listingData: ListingData): boolean {\n  if (isInApplicationPhase(listingData)) {\n    return true;\n  }\n  if (listingData.isWhitelisted && !listingData.challenge) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Checks if a listing can be whitelisted\n * @param listingData the ListingData to check\n */\nfunction canBeWhitelisted(listingData: ListingData): boolean {\n  if (new BigNumber(listingData.appExpiry).isZero()) {\n    return false;\n  }\n  if (listingData.isWhitelisted) {\n    return false;\n  }\n  // if expiry time has passed\n  if (new Date(new BigNumber(listingData.appExpiry).toNumber() * 1000) < new Date()) {\n    return new BigNumber(listingData.challengeID).isZero();\n  }\n\n  return false;\n}\n\n/**\n * Checks if a listing is in challenged commit vote phase\n * @param listingData the ListingData to check\n */\nfunction isInChallengedCommitVotePhase(listingData: ListingData): boolean {\n  if (listingData.challenge) {\n    return challengeHelpers.isChallengeInCommitStage(listingData.challenge);\n  } else {\n    return false;\n  }\n}\n\n/**\n * Checks if a listing is in challenged reveal vote phase\n * @param listingData the ListingData to check\n */\nfunction isInChallengedRevealVotePhase(listingData: ListingData): boolean {\n  if (listingData.challenge) {\n    return challengeHelpers.isChallengeInRevealStage(listingData.challenge);\n  } else {\n    return false;\n  }\n}\n\n/**\n * Checks if a listing is awaiting an appeal request\n * @param listingData the ListingData to check\n */\nfunction isAwaitingAppealRequest(listingData: ListingData): boolean {\n  if (listingData.challenge) {\n    if (challengeHelpers.isChallengeInCommitStage(listingData.challenge)) {\n      return false;\n    } else if (challengeHelpers.isChallengeInRevealStage(listingData.challenge)) {\n      return false;\n    } else {\n      const requestAppealExpiryDate = new Date(listingData.challenge.requestAppealExpiry.toNumber() * 1000);\n      return (\n        requestAppealExpiryDate > new Date() &&\n        (!listingData.challenge!.appeal || is0x0Address(listingData.challenge!.appeal!.requester))\n      );\n    }\n  } else {\n    return false;\n  }\n}\n\n/**\n * Checks if a Listing has a challenge that can be resolved\n * @param listingData the ListingData to check\n */\nfunction canChallengeBeResolved(listingData: ListingData): boolean {\n  const challenge = listingData.challenge;\n  return challengeHelpers.canResolveChallenge(challenge!);\n}\n\n/**\n * Checks if a listing has an appeal that is awaiting judgment\n * @param listingData the ListingData to check\n */\nfunction isListingAwaitingAppealJudgment(listingData: ListingData): boolean {\n  if (listingData.challenge && listingData.challenge.appeal) {\n    return appealHelpers.isAppealAwaitingJudgment(listingData.challenge.appeal);\n  }\n  return false;\n}\n\n/**\n * Checks if a listing has an appeal that is awaiting a challenge\n * @param listingData ListingData to check\n */\nfunction isListingAwaitingAppealChallenge(listingData: ListingData): boolean {\n  if (listingData.challenge) {\n    if (listingData.challenge.appeal) {\n      return appealHelpers.isAwaitingAppealChallenge(listingData.challenge.appeal);\n    } else {\n      return false;\n    }\n  } else {\n    return false;\n  }\n}\n\n/**\n * Checks if a listing is in appeal challenged commit vote phase\n * @param listingData the ListingData to check\n */\nfunction isInAppealChallengeCommitPhase(listingData: ListingData): boolean {\n  const challenge = listingData.challenge;\n  if (challenge) {\n    const appeal = challenge.appeal;\n    if (appeal) {\n      const appealChallenge = appeal.appealChallenge;\n      if (appealChallenge) {\n        return appealChallengeHelpers.isAppealChallengeInCommitStage(appealChallenge);\n      }\n    }\n  }\n  return false;\n}\n\n/**\n * Checks if a listing is in appeal challenged reveal vote phase\n * @param listingData the ListingData to check\n */\nfunction isInAppealChallengeRevealPhase(listingData: ListingData): boolean {\n  const challenge = listingData.challenge;\n  if (challenge) {\n    const appeal = challenge.appeal;\n    if (appeal) {\n      const appealChallenge = appeal.appealChallenge;\n      if (appealChallenge) {\n        return appealChallengeHelpers.isAppealChallengeInRevealStage(appealChallenge);\n      }\n    }\n  }\n  return false;\n}\n\n/**\n * Checks if a Listing has an appeal that can be resolved\n * @param listingData ListingData to check\n */\nfunction canListingAppealBeResolved(listingData: ListingData): boolean {\n  const challenge = listingData.challenge;\n  if (challenge) {\n    const appeal = challenge.appeal;\n    if (appeal) {\n      return appealHelpers.canAppealBeResolved(appeal);\n    }\n  }\n  return false;\n}\n\n/**\n * Checks is a Listing has an appeal challenge that can be resolved\n * @param listingData ListingData to check\n */\nfunction canListingAppealChallengeBeResolved(listingData: ListingData): boolean {\n  const challenge = listingData.challenge;\n  if (challenge) {\n    const appeal = challenge.appeal;\n    if (appeal && appeal.appealChallenge) {\n      return appealChallengeHelpers.canAppealChallengeBeResolved(appeal.appealChallenge);\n    }\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/paramPropChallengeHelpers.ts",
    "content": "import { pollHelpers } from \"./pollHelpers\";\nimport { ParamPropChallengeData, UserChallengeData } from \"@joincivil/typescript-types\";\nimport { is0x0Address } from \"../index\";\n\nexport const paramPropChallengeHelpers = {\n  isParamPropChallengeInCommitStage,\n  isParamPropChallengeInRevealStage,\n  didParamPropChallengeSucceed,\n  canParamPropChallengeBeResolved,\n  isUserParamPropChallengeWinner,\n  canUserCollectParamPropChallengeReward,\n  canRescueParamPropChallengeTokens,\n};\n\n/**\n * Checks in an Param Proposal is in the Commit stage\n * @param challengeData the ParamPropChallengeData to check\n */\nfunction isParamPropChallengeInCommitStage(challengeData: ParamPropChallengeData): boolean {\n  return pollHelpers.isInCommitStage(challengeData.poll);\n}\n\n/**\n * Checks in an Param Proposal is in the Reveal stage\n * @param challengeData the ParamPropChallengeData to check\n */\nfunction isParamPropChallengeInRevealStage(challengeData: ParamPropChallengeData): boolean {\n  return pollHelpers.isInRevealStage(challengeData.poll);\n}\n\n/**\n * Checks in an Param Proposal succeeded\n * @param challengeData the ParamPropChallengeData to check\n */\nfunction didParamPropChallengeSucceed(challengeData: ParamPropChallengeData): boolean {\n  return !pollHelpers.isVotePassed(challengeData.poll);\n}\n\nfunction canParamPropChallengeBeResolved(challengeData: ParamPropChallengeData): boolean {\n  return (\n    !is0x0Address(challengeData.challenger) &&\n    !isParamPropChallengeInCommitStage(challengeData) &&\n    !isParamPropChallengeInRevealStage(challengeData) &&\n    !challengeData.resolved\n  );\n}\n\nfunction isUserParamPropChallengeWinner(\n  challengeData: ParamPropChallengeData,\n  userChallengeData: UserChallengeData,\n): boolean {\n  if (challengeData.resolved && userChallengeData.didUserReveal) {\n    if (userChallengeData.isVoterWinner) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction canUserCollectParamPropChallengeReward(\n  challengeData: ParamPropChallengeData,\n  userChallengeData: UserChallengeData,\n): boolean {\n  return isUserParamPropChallengeWinner(challengeData, userChallengeData) && !userChallengeData.didUserCollect;\n}\n\nfunction canRescueParamPropChallengeTokens(\n  challengeData: ParamPropChallengeData,\n  userChallengeData: UserChallengeData,\n): boolean {\n  if (\n    challengeData.resolved &&\n    userChallengeData.didUserCommit &&\n    !userChallengeData.didUserReveal &&\n    !userChallengeData.didUserRescue\n  ) {\n    return true;\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/pollHelpers.ts",
    "content": "import { BigNumber, PollData } from \"@joincivil/typescript-types\";\n\nexport const pollHelpers = { isInCommitStage, isInRevealStage, isVotePassed };\n\n/**\n * Checks if a Poll is in the Commit stage\n * @param pollData the PollData to check\n */\nfunction isInCommitStage(pollData: PollData): boolean {\n  return parseInt(pollData.commitEndDate.toString(), 10) > Date.now() / 1000;\n}\n\n/**\n * Checks if a Poll is in the Reveal stage\n * @param pollData the PollData to check\n */\nfunction isInRevealStage(pollData: PollData): boolean {\n  return !isInCommitStage(pollData) && parseInt(pollData.revealEndDate.toString(), 10) > Date.now() / 1000;\n}\n\n/**\n * Checks if a Poll is passed\n * @param pollData the PollData to check\n */\nfunction isVotePassed(pollData: PollData): boolean {\n  if (isInCommitStage(pollData) || isInRevealStage(pollData)) {\n    return false;\n  }\n  const votesFor = new BigNumber(pollData.votesFor);\n  const votesAgainst = new BigNumber(pollData.votesAgainst);\n  // @ts-ignore\n  // 100 should be `new BN` but  ethers ethers/web3 bn.js are not compatible\n  const votesForTimes100 = votesFor.mul(new BigNumber(100));\n  const quorum = new BigNumber(pollData.voteQuorum);\n  return votesForTimes100.gt(quorum.mul(votesFor.add(votesAgainst)));\n}\n"
  },
  {
    "path": "packages/utils/src/coreHelpers/userChallengeDataHelpers.ts",
    "content": "import { UserChallengeData } from \"@joincivil/typescript-types\";\n\nexport const userChallengeDataHelpers = { didUserCommit };\n\n/**\n * Checks if a user committed\n * @param userChallengeData the UserChallengeData to check\n */\nfunction didUserCommit(userChallengeData?: UserChallengeData): boolean {\n  if (userChallengeData) {\n    return userChallengeData!.didUserCommit!;\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/utils/src/crypto.ts",
    "content": "import {\n  bufferToHex,\n  sha3,\n  toBuffer,\n  isHexPrefixed,\n  fromRpcSig,\n  ecrecover,\n  toChecksumAddress,\n  publicToAddress,\n} from \"ethereumjs-util\";\nimport { recoverPersonalSignature } from \"eth-sig-util\";\nimport { soliditySHA3 } from \"ethereumjs-abi\";\nimport { Hex, EthSignedMessageRecovery, EthAddress } from \"@joincivil/typescript-types\";\n\nconst SIGN_PREFFIX = \"\\u0019Ethereum Signed Message:\\n\";\n\nexport function soliditySha3(types: string[], data: any[]): Hex {\n  return bufferToHex(soliditySHA3(types, data));\n}\n\nexport function keccak256String(what: string): Hex {\n  return bufferToHex(sha3(what));\n}\n\nexport function keccak256Hex(what: Hex): Hex {\n  if (!isHexPrefixed(what)) {\n    throw new Error(\"Provided string is not a hex string\");\n  }\n  return bufferToHex(sha3(what));\n}\n\nexport function hashPersonalMessage(message: string): { rawMessage: string; messageHash: Hex } {\n  const rawMessage = SIGN_PREFFIX + message.length.toString() + message;\n  return {\n    rawMessage,\n    messageHash: bufferToHex(sha3(rawMessage)),\n  };\n}\n\nexport function recoverSigner(recovery: EthSignedMessageRecovery): EthAddress {\n  const rsv = fromRpcSig(recovery.signature);\n  const publicKey = ecrecover(toBuffer(recovery.messageHash), rsv.v, rsv.r, rsv.s);\n  return toChecksumAddress(bufferToHex(publicToAddress(publicKey)));\n}\n\nexport function recoverSignerPersonal(recovery: { message: string; signature: Hex }): EthAddress {\n  return recoverPersonalSignature({\n    data: bufferToHex(toBuffer(recovery.message)),\n    sig: recovery.signature,\n  });\n}\n\nexport function hashContent(content: string | object): Hex {\n  let serialized: string;\n  if (typeof content !== \"string\") {\n    serialized = JSON.stringify(content);\n  } else {\n    serialized = content;\n  }\n  return keccak256String(serialized);\n}\n\nexport const networkNames: { [index: string]: string } = {\n  1: \"main\",\n  2: \"morden\",\n  3: \"ropsten\",\n  4: \"rinkeby\",\n  50: \"ganache\",\n};\n\nexport function isWellFormattedAddress(address: EthAddress): boolean {\n  return /^(0x)?[0-9a-f]{40}$/i.test(address);\n}\n\n/** Return true if web3 provider is present or browser is known to support a wallet extension - currently just desktop chrome, firefox, and opera. */\n// @deprecated - all browsers are compatible with kirby\nexport function isBrowserCompatible(): boolean {\n  return true;\n}\n\n/** This function doesn't really do anything except formalize which properties need checking in order to determine whether user is fully onboarded and set up to use their wallet on their current account and browser. */\nexport function isWalletOnboarded(\n  civilInstantiated: boolean,\n  metamaskWalletAddress?: EthAddress,\n  profileWalletAddress?: EthAddress,\n  wrongNetwork?: boolean,\n): boolean {\n  // We don't need to check if MM is enabled here, nor do we have to check if hasInjectedProvider, because if either of these are not the case then we won't have metamaskWalletAddress\n  return !!(\n    civilInstantiated &&\n    !!metamaskWalletAddress &&\n    !!profileWalletAddress &&\n    !wrongNetwork &&\n    metamaskWalletAddress.toLowerCase() === profileWalletAddress.toLowerCase()\n  );\n}\n"
  },
  {
    "path": "packages/utils/src/email.ts",
    "content": "import * as querystring from \"querystring\";\n\n// TODO(jorgelo): Drop this into a configuration.\nconst SIGNUP_ENDPOINT = \"https://us-central1-civil-media.cloudfunctions.net/addToSendgrid\";\n\nexport function isValidEmail(email: string): boolean {\n  const emailRegex = /[^@]+@[^\\.]+\\..+/;\n  return emailRegex.test(email);\n}\n\nexport async function addToMailingList(\n  email: string,\n  listId: string,\n  successCallback?: () => void,\n  errorCallback?: () => void,\n): Promise<void> {\n  const query = {\n    email,\n    list_id: listId,\n  };\n\n  const url = SIGNUP_ENDPOINT + \"?\" + querystring.stringify(query);\n\n  try {\n    const res = await fetch(url);\n\n    const body: any = await res.json();\n    if (body.status && body.status === \"ERROR\") {\n      throw new Error(\"There was a problem with your email signup. Please check the email you entered and try again.\");\n    }\n  } catch (err) {\n    // TODO(jorgelo): Should we call errorCallback on error?\n    throw err;\n  }\n}\n"
  },
  {
    "path": "packages/utils/src/errors.ts",
    "content": "export enum CivilErrors {\n  UnsupportedNetwork = \"UNSUPPORTED_NETWORK\",\n  MalformedParams = \"FUNCTION_PARAMETER_MALFORMED\",\n  NoUnlockedAccount = \"NO_UNLOCKED_ETHEREUM_ACCOUNT\",\n  NoPrivileges = \"NOT_ENOUGH_PRIVILEGES_FOR_ACTION\",\n  EvmException = \"EVM_EXCEPTION_OCCURED\",\n  NoChallenge = \"NO_CHALLENGE_FOUND_FOR_LISTING\",\n  InsufficientToken = \"INSUFFICIENT_TOKEN_FOR_ACTION\",\n  MalformedCharter = \"MALFORMED_CHARTER\",\n}\n"
  },
  {
    "path": "packages/utils/src/etherscan.ts",
    "content": "export function getEtherscanBaseURL(network: string | number): string | undefined {\n  let networkKey = network;\n  if (typeof networkKey === \"string\") {\n    networkKey = parseInt(networkKey, 10);\n  }\n\n  const etherscanBaseURLs: { [index: number]: string } = {\n    1: \"https://etherscan.io\",\n    4: \"https://rinkeby.etherscan.io\",\n    // 50: undefined,\n  };\n\n  return etherscanBaseURLs[networkKey];\n}\n"
  },
  {
    "path": "packages/utils/src/gql/queries.ts",
    "content": "import gql from \"graphql-tag\";\n\nexport const CHALLENGE_FRAGMENT = gql`\n  fragment ChallengeFragment on Challenge {\n    challengeID\n    listingAddress\n    statement\n    rewardPool\n    challenger\n    resolved\n    stake\n    totalTokens\n    poll {\n      commitEndDate\n      revealEndDate\n      voteQuorum\n      votesFor\n      votesAgainst\n    }\n    requestAppealExpiry\n    lastUpdatedDateTs\n    appeal {\n      requester\n      appealFeePaid\n      appealPhaseExpiry\n      appealGranted\n      appealOpenToChallengeExpiry\n      statement\n      appealChallengeID\n      appealGrantedStatementURI\n      appealChallenge {\n        challengeID\n        statement\n        rewardPool\n        challenger\n        resolved\n        stake\n        totalTokens\n        poll {\n          commitEndDate\n          revealEndDate\n          voteQuorum\n          votesFor\n          votesAgainst\n        }\n      }\n    }\n  }\n`;\n\nexport const LISTING_FRAGMENT = gql`\n  fragment ListingFragment on Listing {\n    name\n    owner\n    ownerAddresses\n    contractAddress\n    whitelisted\n    lastGovState\n    lastUpdatedDate\n    charter {\n      uri\n      contentID\n      revisionID\n      signature\n      author\n      contentHash\n      timestamp\n    }\n    channel {\n      handle\n      id\n    }\n    unstakedDeposit\n    appExpiry\n    approvalDate\n    challengeID\n    challenge {\n      ...ChallengeFragment\n    }\n    prevChallenge {\n      ...ChallengeFragment\n    }\n  }\n  ${CHALLENGE_FRAGMENT}\n`;\n\nexport const CONTENT_REVISION_FRAGMENT = gql`\n  fragment ContentRevisionFragment on ContentRevision {\n    listingAddress\n    editorAddress\n    contractContentId\n    contractRevisionId\n    revisionUri\n    revisionDate\n  }\n`;\n\nexport const LISTING_QUERY = gql`\n  query($addr: String, $handle: String) {\n    tcrListing(addr: $addr, handle: $handle) {\n      ...ListingFragment\n    }\n  }\n  ${LISTING_FRAGMENT}\n`;\n\nexport const LISTING_WITH_CHARTER_REVISIONS_QUERY = gql`\n  query($addr: String, $handle: String) {\n    tcrListing(addr: $addr, handle: $handle) {\n      ...ListingFragment\n    }\n    charterRevisions: articles(addr: $addr, handle: $handle, contentID: 0) {\n      ...ContentRevisionFragment\n    }\n  }\n  ${LISTING_FRAGMENT}\n  ${CONTENT_REVISION_FRAGMENT}\n`;\n\nexport const NEWSROOM_CHARTER_REVISIONS = gql`\n  query($addr: String!) {\n    charterRevisions: articles(addr: $addr, contentID: 0) {\n      ...ContentRevisionFragment\n    }\n  }\n  ${CONTENT_REVISION_FRAGMENT}\n`;\n\nexport const CHALLENGE_QUERY = gql`\n  query($challengeID: Int!) {\n    challenge(id: $challengeID) {\n      ...ChallengeFragment\n    }\n  }\n  ${CHALLENGE_FRAGMENT}\n`;\n\nexport const POLL_QUERY = gql`\n  query($input: Int!) {\n    poll(pollID: $input) {\n      commitEndDate\n      revealEndDate\n      voteQuorum\n      votesFor\n      votesAgainst\n    }\n  }\n`;\n\nexport const USER_CHALLENGE_DATA_QUERY = gql`\n  query($userAddr: String!, $pollID: Int!) {\n    userChallengeData(userAddr: $userAddr, pollID: $pollID) {\n      pollID\n      pollRevealDate\n      pollType\n      userDidCommit\n      userDidReveal\n      didUserCollect\n      didUserRescue\n      didCollectAmount\n      isVoterWinner\n      pollIsPassed\n      salt\n      choice\n      numTokens\n      voterReward\n      parentChallengeID\n    }\n  }\n`;\n\nexport const PARAMETERS_QUERY = gql`\n  query Parameters($input: [String!]) {\n    parameters: parameters(paramNames: $input) {\n      paramName\n      value\n    }\n  }\n`;\n"
  },
  {
    "path": "packages/utils/src/gql/transforms.ts",
    "content": "import { pollHelpers } from \"../coreHelpers\";\n\nimport { Set, Map } from \"immutable\";\nimport {\n  BigNumber,\n  ListingWrapper,\n  NewsroomWrapper,\n  ChallengeData,\n  EthContentHeader,\n  PollData,\n  AppealData,\n  AppealChallengeData,\n  UserChallengeData,\n  ParamPropChallengeData,\n} from \"@joincivil/typescript-types\";\n\nexport function transformGraphQLDataIntoSpecificUserChallenge(userChallenge: any): UserChallengeData {\n  if (userChallenge && userChallenge.userChallengeData && userChallenge.userChallengeData.length > 0) {\n    const userData = userChallenge.userChallengeData[0];\n    return {\n      didUserCommit: userData.userDidCommit,\n      didUserReveal: userData.userDidReveal,\n      didUserCollect: userData.didUserCollect,\n      didUserRescue: userData.didUserRescue,\n      didCollectAmount: new BigNumber(userData.didCollectAmount),\n      isVoterWinner: userData.isVoterWinner,\n      salt: userData.salt,\n      choice: new BigNumber(userData.choice),\n      numTokens: new BigNumber(userData.numTokens),\n      voterReward: new BigNumber(userData.voterReward),\n    };\n  } else {\n    return {};\n  }\n}\n\nexport function transformGraphQLDataIntoNewsroom(listing: any, listingAddress: string): NewsroomWrapper {\n  return {\n    address: listingAddress,\n    data: {\n      name: listing.name,\n      owner: listing.owner,\n      owners: listing.ownerAddresses,\n      charterHeader: {\n        contentId: listing.charter.contentID,\n        revisionId: listing.charter.revisionID,\n        timestamp: new Date(listing.charter.timestamp),\n        uri: listing.charter.uri,\n        contentHash: listing.charter.contentHash,\n        author: listing.charter.author,\n        signature: listing.charter.signature,\n        verifySignature: () => true,\n      },\n    },\n  };\n}\nexport function transformGraphQLDataIntoListing(listing: any, listingAddress: string): ListingWrapper {\n  return {\n    address: listingAddress,\n    data: {\n      appExpiry: new BigNumber(listing.appExpiry),\n      isWhitelisted: listing.whitelisted,\n      owner: listing.owner,\n      unstakedDeposit: new BigNumber(listing.unstakedDeposit),\n      challengeID: new BigNumber(listing.challengeID ? listing.challengeID : 0),\n      challenge: transformGraphQLDataIntoChallenge(listing.challenge),\n      prevChallengeID: transformGraphQLDataIntoPrevChallengeID(listing.prevChallenge),\n      prevChallenge: transformGraphQLDataIntoChallenge(listing.prevChallenge),\n      approvalDate: listing.approvalDate ? new BigNumber(listing.approvalDate) : new BigNumber(0),\n      lastGovState: listing.lastGovState,\n      lastUpdatedDate: listing.lastUpdatedDate ? new BigNumber(listing.lastUpdatedDate) : new BigNumber(0),\n    },\n  };\n}\nexport function transformGraphQLDataIntoPrevChallengeID(queryChallengeData: any): BigNumber | undefined {\n  if (queryChallengeData) {\n    return new BigNumber(queryChallengeData.challengeID);\n  } else {\n    return undefined;\n  }\n}\n\nfunction transfromGraphQLDataIntoPoll(queryPollData: any): PollData | undefined {\n  if (queryPollData) {\n    return {\n      commitEndDate: new BigNumber(queryPollData.commitEndDate),\n      revealEndDate: new BigNumber(queryPollData.revealEndDate),\n      voteQuorum: new BigNumber(queryPollData.voteQuorum),\n      votesFor: new BigNumber(queryPollData.votesFor),\n      votesAgainst: new BigNumber(queryPollData.votesAgainst),\n    };\n  }\n  return undefined;\n}\n\nexport function transformGraphQLDataIntoParamPropChallenge(\n  queryChallengeData: any,\n): ParamPropChallengeData | undefined {\n  if (queryChallengeData) {\n    const pollData = transfromGraphQLDataIntoPoll(queryChallengeData.poll);\n\n    return {\n      rewardPool: new BigNumber(queryChallengeData.rewardPool),\n      challenger: queryChallengeData.challenger,\n      resolved: queryChallengeData.resolved,\n      stake: new BigNumber(queryChallengeData.stake),\n      totalTokens: new BigNumber(queryChallengeData.totalTokens),\n      poll: pollData!,\n    };\n  } else {\n    return undefined;\n  }\n}\n\nexport function transformGraphQLDataIntoChallenge(queryChallengeData: any): ChallengeData | undefined {\n  if (queryChallengeData) {\n    const pollData = transfromGraphQLDataIntoPoll(queryChallengeData.poll);\n\n    return {\n      challengeStatementURI: queryChallengeData.statement,\n      rewardPool: new BigNumber(queryChallengeData.rewardPool),\n      challenger: queryChallengeData.challenger,\n      resolved: queryChallengeData.resolved,\n      stake: new BigNumber(queryChallengeData.stake),\n      totalTokens: new BigNumber(queryChallengeData.totalTokens),\n      poll: pollData!,\n      requestAppealExpiry: new BigNumber(queryChallengeData.requestAppealExpiry),\n      appeal: transformGraphQLDataIntoAppeal(queryChallengeData.appeal),\n    };\n  } else {\n    return undefined;\n  }\n}\n\nexport function transformGraphQLDataIntoAppeal(queryAppealData: any): AppealData | undefined {\n  if (queryAppealData) {\n    return {\n      requester: queryAppealData.requester,\n      appealFeePaid: new BigNumber(queryAppealData.appealFeePaid),\n      appealPhaseExpiry: new BigNumber(queryAppealData.appealPhaseExpiry),\n      appealGranted: queryAppealData.appealGranted,\n      appealOpenToChallengeExpiry: new BigNumber(queryAppealData.appealOpenToChallengeExpiry),\n      appealChallengeID: new BigNumber(queryAppealData.appealChallengeID),\n      appealChallenge: transformGraphQLDataIntoAppealChallenge(queryAppealData.appealChallenge),\n      appealStatementURI: queryAppealData.statement,\n      appealGrantedStatementURI: queryAppealData.appealGrantedStatementURI,\n    };\n  } else {\n    return undefined;\n  }\n}\n\nexport function transformGraphQLDataIntoAppealChallenge(\n  queryAppealChallengeData: any,\n): AppealChallengeData | undefined {\n  if (queryAppealChallengeData) {\n    return {\n      rewardPool: new BigNumber(queryAppealChallengeData.rewardPool),\n      challenger: queryAppealChallengeData.challenger,\n      resolved: queryAppealChallengeData.resolved,\n      stake: new BigNumber(queryAppealChallengeData.stake),\n      totalTokens: new BigNumber(queryAppealChallengeData.totalTokens),\n      poll: {\n        commitEndDate: new BigNumber(queryAppealChallengeData.poll.commitEndDate),\n        revealEndDate: new BigNumber(queryAppealChallengeData.poll.revealEndDate),\n        voteQuorum: new BigNumber(queryAppealChallengeData.poll.voteQuorum),\n        votesFor: new BigNumber(queryAppealChallengeData.poll.votesFor),\n        votesAgainst: new BigNumber(queryAppealChallengeData.poll.votesAgainst),\n      },\n      appealChallengeStatementURI: queryAppealChallengeData.statement,\n    };\n  } else {\n    return undefined;\n  }\n}\n\nexport function transformGraphQLDataIntoParamProposal(propData: any): any {\n  if (propData) {\n    return {\n      propID: \"0x\" + propData.propID,\n      paramName: propData.name,\n      propValue: new BigNumber(propData.value),\n      pollID: propData.challengeID !== \"0\" ? new BigNumber(propData.challengeID) : undefined,\n      applicationExpiry: new BigNumber(propData.appExpiry),\n    };\n  } else {\n    return undefined;\n  }\n}\n\nfunction mapPollIDsForUserChallengeDataQuerySet(challengeDataQuerySet: any): number[] | undefined {\n  let pollIDs;\n\n  if (challengeDataQuerySet) {\n    pollIDs = challengeDataQuerySet.map((challenge: any): number => challenge.pollID);\n  }\n\n  return pollIDs;\n}\n\nfunction userChallengeDataFilter(\n  userChallengeData: any,\n  pollType: string,\n  filterAvailableActions?: boolean,\n  queryChallengesToReveal?: any[],\n  queryChallengesToRescue?: any[],\n): boolean {\n  const isChallenge = userChallengeData.pollType === pollType;\n  if (!filterAvailableActions) {\n    return isChallenge;\n  }\n\n  const { pollID, didUserCollect, isVoterWinner } = userChallengeData;\n\n  const challengesToReveal = mapPollIDsForUserChallengeDataQuerySet(queryChallengesToReveal);\n  const challengesToRescue = mapPollIDsForUserChallengeDataQuerySet(queryChallengesToRescue);\n\n  // canUserCollect can be derived from just user challenge data, so we don't need to look up the pollID in the graphql response for challengesWithRewards\n  const canUserCollect = isVoterWinner && !didUserCollect;\n  const canUserRescue = challengesToRescue && challengesToRescue.includes(pollID);\n  const canUserReveal = challengesToReveal && challengesToReveal.includes(pollID);\n\n  return isChallenge && (!!canUserCollect || !!canUserRescue || !!canUserReveal);\n}\n\n// Includes all challenges the user has particiapted in and parent challenges for all appeal challenges the user participated in\nexport function transformGraphQLDataIntoDashboardChallengesSet(\n  queryUserChallengeData: any[],\n  filterAvailableActions?: boolean,\n  queryChallengesToReveal?: any[],\n  queryChallengesToRescue?: any[],\n): Set<string> {\n  let allChallenges = Set<string>();\n  if (queryUserChallengeData) {\n    const challengeIDs = queryUserChallengeData\n      .filter(challengeData => {\n        return userChallengeDataFilter(\n          challengeData,\n          \"CHALLENGE\",\n          filterAvailableActions,\n          queryChallengesToReveal,\n          queryChallengesToRescue,\n        );\n      })\n      .map(challengeData => {\n        return challengeData.pollID;\n      });\n    const appealChallengeParentChallengeIDs = queryUserChallengeData\n      .filter(challengeData => {\n        return userChallengeDataFilter(\n          challengeData,\n          \"APPEAL_CHALLENGE\",\n          filterAvailableActions,\n          queryChallengesToReveal,\n          queryChallengesToRescue,\n        );\n      })\n      .map(challengeData => {\n        return challengeData.parentChallengeID;\n      });\n\n    allChallenges = allChallenges.union(challengeIDs, appealChallengeParentChallengeIDs);\n  }\n  return allChallenges;\n}\n\nexport function getUserChallengeDataSetByPollType(\n  queryUserChallengeData: any[],\n  pollType: string,\n  filterAvailableActions?: boolean,\n): Set<string> {\n  const challengeIDs = queryUserChallengeData\n    .filter(challengeData => {\n      return userChallengeDataFilter(challengeData, pollType, filterAvailableActions);\n    })\n    .map(challengeData => {\n      return challengeData.pollID;\n    });\n  return Set<string>(challengeIDs);\n}\n\nexport enum USER_CHALLENGE_DATA_POLL_TYPES {\n  CHALLENGE = \"CHALLENGE\",\n  APPEAL_CHALLENGE = \"APPEAL_CHALLENGE\",\n  PARAMETER_PROPOSAL_CHALLENGE = \"PARAMETER_PROPOSAL_CHALLENGE\",\n}\n\nexport function transformGraphQLDataIntoDashboardChallengesByTypeSets(\n  queryUserChallengeData: any[],\n): [Set<string>, Set<string>, Set<string>] {\n  const challengeIDs = getUserChallengeDataSetByPollType(\n    queryUserChallengeData,\n    USER_CHALLENGE_DATA_POLL_TYPES.CHALLENGE,\n  );\n  const appealChallengeIDs = getUserChallengeDataSetByPollType(\n    queryUserChallengeData,\n    USER_CHALLENGE_DATA_POLL_TYPES.APPEAL_CHALLENGE,\n  );\n  const proposalChallengeIDs = getUserChallengeDataSetByPollType(\n    queryUserChallengeData,\n    USER_CHALLENGE_DATA_POLL_TYPES.PARAMETER_PROPOSAL_CHALLENGE,\n  );\n  return [challengeIDs, appealChallengeIDs, proposalChallengeIDs];\n}\n\nexport function transfromGraphQLDataIntoUserChallengeData(\n  queryUserChallengeData: any,\n  challenge: ChallengeData,\n): UserChallengeData | undefined {\n  if (queryUserChallengeData) {\n    const {\n      userDidCommit: didUserCommit,\n      userDidReveal: didUserReveal,\n      didUserCollect,\n      didUserRescue,\n      didCollectAmount,\n      isVoterWinner,\n      pollIsPassed,\n      salt,\n      numTokens,\n      choice,\n      voterReward,\n    } = queryUserChallengeData;\n\n    let canUserReveal;\n    let canUserCollect;\n    let canUserRescue;\n\n    const pollData = transfromGraphQLDataIntoPoll(challenge.poll);\n    if (challenge.resolved) {\n      canUserCollect = isVoterWinner && !didUserCollect;\n      if (pollData) {\n        canUserRescue =\n          !didUserReveal &&\n          !didUserRescue &&\n          !pollHelpers.isInCommitStage(pollData) &&\n          !pollHelpers.isInRevealStage(pollData);\n      }\n    } else if (pollData) {\n      canUserReveal = didUserCommit && !didUserReveal && pollHelpers.isInRevealStage(pollData);\n    }\n\n    const userChallengeData = {\n      didUserCommit,\n      didUserReveal,\n      didUserCollect,\n      didUserRescue,\n      didCollectAmount: new BigNumber(didCollectAmount || 0),\n\n      canUserReveal,\n      canUserCollect,\n      canUserRescue,\n\n      isVoterWinner,\n      pollIsPassed,\n      salt,\n      numTokens: new BigNumber(numTokens),\n      choice: new BigNumber(choice),\n      voterReward: new BigNumber(voterReward || 0),\n    };\n\n    return userChallengeData;\n  }\n\n  return undefined;\n}\n\nexport function transformGraphQLDataIntoCharterRevisions(\n  queryCharterRevisionsData: any[],\n): Map<number, Partial<EthContentHeader>> {\n  let contentRevisions = Map<number, Partial<EthContentHeader>>();\n  queryCharterRevisionsData.forEach((queryCharterRevisionData: any) => {\n    const {\n      editorAddress: author,\n      contractContentId: contentId,\n      contractRevisionId: revisionId,\n      revisionUri: uri,\n      revisionDate: timestamp,\n    } = queryCharterRevisionData;\n\n    const charterRevisionHeader = {\n      author,\n      contentId,\n      revisionId,\n      uri,\n      timestamp,\n    };\n\n    if (uri) {\n      contentRevisions = contentRevisions.set(revisionId, charterRevisionHeader);\n    }\n  });\n\n  return contentRevisions;\n}\n"
  },
  {
    "path": "packages/utils/src/handle.ts",
    "content": "export function isValidHandle(handle: string): boolean {\n  if (handle.length < 4 || handle.length > 15) {\n    return false;\n  }\n  const handleRegex = /^(\\w){4,15}$/;\n  return handleRegex.test(handle);\n}\n"
  },
  {
    "path": "packages/utils/src/index.ts",
    "content": "import \"./rxjs\";\nexport * from \"./airswap\";\nexport * from \"./apolloClient\";\nexport * from \"./browser\";\nexport * from \"./civilConstants\";\nexport * from \"./civilHelpers\";\nexport * from \"./contracts\";\nexport * from \"./coreHelpers\";\nexport * from \"./crypto\";\nexport * from \"./email\";\nexport * from \"./errors\";\nexport * from \"./gql/queries\";\nexport * from \"./gql/transforms\";\nexport * from \"./handle\";\nexport * from \"./language\";\nexport * from \"./localStorage\";\nexport * from \"./salt\";\nexport * from \"./viewHelpers\";\nexport * from \"./etherscan\";\nexport * from \"./urlConstants\";\nexport * from \"./stripe\";\nexport * from \"./time\";\n"
  },
  {
    "path": "packages/utils/src/language.ts",
    "content": "import { BigNumber } from \"@joincivil/typescript-types\";\n\n// tslint:disable promise-function-async\nexport function promisify<T>(original: (...params: any[]) => void, thisArg?: any): (...callArgs: any[]) => Promise<T> {\n  const promisifed = (...callArgs: any[]): Promise<T> => {\n    return new Promise<T>((resolve, reject) => {\n      const callback = (err: Error | null, data?: T) => {\n        if (err !== null) {\n          return reject(err);\n        }\n        return resolve(data);\n      };\n      original.apply(thisArg, [...callArgs, callback]);\n    });\n  };\n  return promisifed;\n}\n// tslint:enable:promise-function-async\n\nexport function bindNestedAll(\n  what: any,\n  excludes: string[] = [\"constructor\", \"ethApi\"],\n  thisArg?: any,\n  ...params: any[]\n): void {\n  const self = thisArg || what;\n  for (const key of Object.getOwnPropertyNames(what)) {\n    const val = what[key];\n    if (!excludes.includes(key)) {\n      if (typeof val === \"function\") {\n        what[key] = val.bind(self, ...params);\n      } else if (typeof val === \"object\") {\n        bindNestedAll(val, excludes, self);\n      }\n    }\n  }\n}\n\nexport function bindAll(what: any, excludes: string[] = [\"constructor\"], thisArg?: any): void {\n  const self = thisArg || what;\n  // TODO(ritave): Functions not returned\n  Object.getOwnPropertyNames(Object.getPrototypeOf(what))\n    .filter(key => !excludes.includes(key) && typeof what[key] === \"function\")\n    .forEach(key => (what[key] = what[key].bind(self)));\n}\n\nexport async function delay<T>(milliseconds: number, value?: T): Promise<T> {\n  return new Promise<T>(resolve => setTimeout(() => resolve(value), milliseconds));\n}\n\nexport function isPromiseLike<T = any>(what: any): what is PromiseLike<T> {\n  return what.then !== undefined && typeof what.then === \"function\";\n}\n\nexport function isDefined<T extends any>(what?: T): what is T {\n  // Explicitly checking with != instead of !==, this casts what to null if it's undefined\n  // tslint:disable-next-line:triple-equals\n  return what != null;\n}\n\nexport function isBigNumber(what: any): what is BigNumber {\n  return what !== undefined && what.toNumber !== undefined && what.toFraction !== undefined;\n}\n"
  },
  {
    "path": "packages/utils/src/localStorage.ts",
    "content": "export enum CIVIL_LOCAL_STORAGE_EVENTS {\n  \"SET_ITEM\" = \"CivilLocalStorageSetItemEvent\",\n  \"UPDATE_ITEM\" = \"CivilLocalStorageUpdateItemEvent\",\n}\n\nfunction createAndDispatchLocalStorageEvent(eventType: string, detail?: any): void {\n  const civilLocalStorageEvent = new CustomEvent(eventType, { detail });\n  window.dispatchEvent(civilLocalStorageEvent);\n}\n\nexport function fetchItem(key: string): any {\n  try {\n    const item = localStorage.getItem(key);\n\n    if (item === null) {\n      return undefined;\n    }\n\n    return JSON.parse(item);\n  } catch (err) {\n    console.error(\"Error calling or parsing result from localStorage.getItem\", err);\n    return undefined;\n  }\n}\n\nexport function setItem(key: string, value: any): void {\n  try {\n    localStorage.setItem(key, JSON.stringify(value));\n    createAndDispatchLocalStorageEvent(CIVIL_LOCAL_STORAGE_EVENTS.SET_ITEM, { key, value });\n  } catch (err) {\n    console.error(\"Error calling localStorage.setItem\", err);\n  }\n}\n\nexport function removeItem(key: string): void {\n  try {\n    localStorage.removeItem(key);\n    createAndDispatchLocalStorageEvent(CIVIL_LOCAL_STORAGE_EVENTS.SET_ITEM, { key });\n  } catch (err) {\n    console.error(\"Error calling localStorage.removeItem\", err);\n  }\n}\n\nlet isBroadcasting = false;\nexport function startLocalStorageUpdateBroadcast(): void {\n  if (window && !isBroadcasting) {\n    isBroadcasting = true;\n    window.addEventListener(\"storage\", ev => {\n      if (ev.storageArea === localStorage) {\n        const { key } = ev;\n        if (key) {\n          try {\n            const value = fetchItem(key);\n            createAndDispatchLocalStorageEvent(CIVIL_LOCAL_STORAGE_EVENTS.UPDATE_ITEM, { key, value });\n          } catch (err) {\n            console.error(err);\n          }\n        }\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "packages/utils/src/rxjs.ts",
    "content": "import { Observable } from \"rxjs\";\n\nconst EMPTY = Symbol();\n\n/**\n * An asynchronous version of the filter operator.\n * This version waits until the filter finishes and concatenates\n * the input stream in order it was received to output\n */\nexport function concatFilter<T>(\n  this: Observable<T>,\n  filter: (value: T, index: number) => PromiseLike<boolean> | boolean,\n): Observable<T> {\n  return this.concatMap(async (v, i) => {\n    if (await filter(v, i)) {\n      return v;\n    }\n    return EMPTY;\n  }).filter(x => x !== EMPTY) as Observable<T>;\n}\n\n/**\n * An asynchronous version of the filter operator.\n * This version waits until the filter finishes and outputs\n * the input values in first-filter-returns-first-served basis\n */\nexport function flatFilter<T>(\n  this: Observable<T>,\n  filter: (value: T, index: number) => PromiseLike<boolean> | boolean,\n): Observable<T> {\n  return this.flatMap(async (v, i) => {\n    if (await filter(v, i)) {\n      return v;\n    }\n    return EMPTY;\n  }).filter(x => x !== EMPTY) as Observable<T>;\n}\n\nexport function definedOrThrow<T>(this: Observable<T | undefined>): Observable<T> {\n  return this.map(value => {\n    // tslint:disable-next-line:triple-equals\n    if (value == undefined) {\n      throw new Error(\"Expected not-null value in the stream\");\n    }\n    return value;\n  });\n}\n\nObservable.prototype.concatFilter = concatFilter;\nObservable.prototype.flatFilter = flatFilter;\nObservable.prototype.definedOrThrow = definedOrThrow;\n\ndeclare module \"rxjs/Observable\" {\n  // tslint:disable:no-shadowed-variable\n  interface Observable<T> {\n    concatFilter: typeof concatFilter;\n    flatFilter: typeof flatFilter;\n    definedOrThrow: typeof definedOrThrow;\n  }\n  // tslint:enable:no-shadowed-variable\n}\n"
  },
  {
    "path": "packages/utils/src/salt.ts",
    "content": "import { words } from \"./bip39.english\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nimport { randomHex } from \"web3-utils\";\n\nexport { words };\n\n// Adapted from: https://github.com/aseemk/bases.js/blob/master/bases.js#L8\n\nexport function toAlphabet(srcNum: BigNumber, alphabet: string[]): string[] {\n  const base = alphabet.length;\n  const digits = [];\n  let num: BigNumber = srcNum;\n\n  do {\n    const baseBN = new BigNumber(base);\n    digits.push(num.mod(baseBN));\n    num = num.div(baseBN);\n  } while (num.gt(new BigNumber(0)));\n\n  const chars = [];\n  while (digits.length) {\n    const idx = digits.pop();\n    // @ts-ignore: idx will always be a number.\n    chars.push(alphabet[idx]);\n  }\n  return chars.reverse();\n}\n\n// Adapted from: https://github.com/aseemk/bases.js/blob/master/bases.js#L26\n\nexport function fromAlphabet(srcWords: string[], alphabet: string[]): BigNumber {\n  const base = alphabet.length;\n  let num = new BigNumber(0);\n\n  for (let pos = 0; pos < srcWords.length; pos++) {\n    const word = srcWords[pos];\n    const idx = alphabet.indexOf(word);\n\n    if (idx === -1) {\n      throw new Error(\"Invalid word: \" + word);\n    }\n\n    const n = new BigNumber(base).pow(new BigNumber(pos)).mul(new BigNumber(idx));\n    num = num.add(n);\n  }\n\n  return num;\n}\n\nexport function wordsToSalt(wrds: string | string[]): BigNumber {\n  const str = typeof wrds === \"string\" ? wrds : wrds.join(\" \");\n  const w = str.split(\" \").filter(s => s.trim().length);\n  return fromAlphabet(w, words);\n}\n\nexport function saltToWords(salt: string | BigNumber): string[] {\n  const bn = typeof salt === \"string\" ? new BigNumber(salt) : salt;\n  return toAlphabet(bn, words);\n}\n\nexport function randomSalt(wordCountInt: number): BigNumber {\n  if (!wordCountInt) {\n    throw new Error(\"wordCount must be at least 1.\");\n  }\n  const wordCount = new BigNumber(wordCountInt);\n\n  const base = new BigNumber(words.length);\n\n  const min = base.pow(wordCount.sub(1));\n  const max = base.pow(wordCount);\n  const spread = max.sub(min);\n\n  const rand = new BigNumber(randomHex(64));\n  const seed = rand.mod(spread).add(min);\n\n  return seed;\n}\n"
  },
  {
    "path": "packages/utils/src/stripe.ts",
    "content": "export const STRIPE_COUNTRIES = [\n  { value: \"USA\", name: \"United States\" },\n  { value: \"AFG\", name: \"Afghanistan\" },\n  { value: \"ALA\", name: \"Åland Islands\" },\n  { value: \"ALB\", name: \"Albania\" },\n  { value: \"DZA\", name: \"Algeria\" },\n  { value: \"ASM\", name: \"American Samoa\" },\n  { value: \"AND\", name: \"Andorra\" },\n  { value: \"AGO\", name: \"Angola\" },\n  { value: \"AIA\", name: \"Anguilla\" },\n  { value: \"ATA\", name: \"Antarctica\" },\n  { value: \"ATG\", name: \"Antigua and Barbuda\" },\n  { value: \"ARG\", name: \"Argentina\" },\n  { value: \"ARM\", name: \"Armenia\" },\n  { value: \"ABW\", name: \"Aruba\" },\n  { value: \"AUS\", name: \"Australia\" },\n  { value: \"AUT\", name: \"Austria\" },\n  { value: \"AZE\", name: \"Azerbaijan\" },\n  { value: \"BHS\", name: \"Bahamas\" },\n  { value: \"BHR\", name: \"Bahrain\" },\n  { value: \"BGD\", name: \"Bangladesh\" },\n  { value: \"BRB\", name: \"Barbados\" },\n  { value: \"BLR\", name: \"Belarus\" },\n  { value: \"BEL\", name: \"Belgium\" },\n  { value: \"BLZ\", name: \"Belize\" },\n  { value: \"BEN\", name: \"Benin\" },\n  { value: \"BMU\", name: \"Bermuda\" },\n  { value: \"BTN\", name: \"Bhutan\" },\n  { value: \"BOL\", name: \"Bolivia (Plurinational State of)\" },\n  { value: \"BES\", name: \"Bonaire, Sint Eustatius and Saba\" },\n  { value: \"BIH\", name: \"Bosnia and Herzegovina\" },\n  { value: \"BWA\", name: \"Botswana\" },\n  { value: \"BVT\", name: \"Bouvet Island\" },\n  { value: \"BRA\", name: \"Brazil\" },\n  { value: \"IOT\", name: \"British Indian Ocean Territory\" },\n  { value: \"BRN\", name: \"Brunei Darussalam\" },\n  { value: \"BGR\", name: \"Bulgaria\" },\n  { value: \"BFA\", name: \"Burkina Faso\" },\n  { value: \"BDI\", name: \"Burundi\" },\n  { value: \"KHM\", name: \"Cambodia\" },\n  { value: \"CMR\", name: \"Cameroon\" },\n  { value: \"CAN\", name: \"Canada\" },\n  { value: \"CPV\", name: \"Cape Verde\" },\n  { value: \"CYM\", name: \"Cayman Islands\" },\n  { value: \"CAF\", name: \"Central African Republic\" },\n  { value: \"TCD\", name: \"Chad\" },\n  { value: \"CHL\", name: \"Chile\" },\n  { value: \"CHN\", name: \"China\" },\n  { value: \"CXR\", name: \"Christmas Island\" },\n  { value: \"CCK\", name: \"Cocos (Keeling) Islands\" },\n  { value: \"COL\", name: \"Colombia\" },\n  { value: \"COM\", name: \"Comoros\" },\n  { value: \"COG\", name: \"Congo\" },\n  { value: \"COD\", name: \"Congo, the Democratic Republic of the\" },\n  { value: \"COK\", name: \"Cook Islands\" },\n  { value: \"CRI\", name: \"Costa Rica\" },\n  { value: \"CIV\", name: \"Côte d'Ivoire\" },\n  { value: \"HRV\", name: \"Croatia\" },\n  { value: \"CUB\", name: \"Cuba\" },\n  { value: \"CUW\", name: \"Curaçao\" },\n  { value: \"CYP\", name: \"Cyprus\" },\n  { value: \"CZE\", name: \"Czech Republic\" },\n  { value: \"DNK\", name: \"Denmark\" },\n  { value: \"DJI\", name: \"Djibouti\" },\n  { value: \"DMA\", name: \"Dominica\" },\n  { value: \"DOM\", name: \"Dominican Republic\" },\n  { value: \"ECU\", name: \"Ecuador\" },\n  { value: \"EGY\", name: \"Egypt\" },\n  { value: \"SLV\", name: \"El Salvador\" },\n  { value: \"GNQ\", name: \"Equatorial Guinea\" },\n  { value: \"ERI\", name: \"Eritrea\" },\n  { value: \"EST\", name: \"Estonia\" },\n  { value: \"ETH\", name: \"Ethiopia\" },\n  { value: \"FLK\", name: \"Falkland Islands (Malvinas)\" },\n  { value: \"FRO\", name: \"Faroe Islands\" },\n  { value: \"FJI\", name: \"Fiji\" },\n  { value: \"FIN\", name: \"Finland\" },\n  { value: \"FRA\", name: \"France\" },\n  { value: \"GUF\", name: \"French Guiana\" },\n  { value: \"PYF\", name: \"French Polynesia\" },\n  { value: \"ATF\", name: \"French Southern Territories\" },\n  { value: \"GAB\", name: \"Gabon\" },\n  { value: \"GMB\", name: \"Gambia\" },\n  { value: \"GEO\", name: \"Georgia\" },\n  { value: \"DEU\", name: \"Germany\" },\n  { value: \"GHA\", name: \"Ghana\" },\n  { value: \"GIB\", name: \"Gibraltar\" },\n  { value: \"GRC\", name: \"Greece\" },\n  { value: \"GRL\", name: \"Greenland\" },\n  { value: \"GRD\", name: \"Grenada\" },\n  { value: \"GLP\", name: \"Guadeloupe\" },\n  { value: \"GUM\", name: \"Guam\" },\n  { value: \"GTM\", name: \"Guatemala\" },\n  { value: \"GGY\", name: \"Guernsey\" },\n  { value: \"GIN\", name: \"Guinea\" },\n  { value: \"GNB\", name: \"Guinea-Bissau\" },\n  { value: \"GUY\", name: \"Guyana\" },\n  { value: \"HTI\", name: \"Haiti\" },\n  { value: \"HMD\", name: \"Heard Island and McDonald Islands\" },\n  { value: \"VAT\", name: \"Holy See (Vatican City State)\" },\n  { value: \"HND\", name: \"Honduras\" },\n  { value: \"HKG\", name: \"Hong Kong\" },\n  { value: \"HUN\", name: \"Hungary\" },\n  { value: \"ISL\", name: \"Iceland\" },\n  { value: \"IND\", name: \"India\" },\n  { value: \"IDN\", name: \"Indonesia\" },\n  { value: \"IRN\", name: \"Iran, Islamic Republic of\" },\n  { value: \"IRQ\", name: \"Iraq\" },\n  { value: \"IRL\", name: \"Ireland\" },\n  { value: \"IMN\", name: \"Isle of Man\" },\n  { value: \"ISR\", name: \"Israel\" },\n  { value: \"ITA\", name: \"Italy\" },\n  { value: \"JAM\", name: \"Jamaica\" },\n  { value: \"JPN\", name: \"Japan\" },\n  { value: \"JEY\", name: \"Jersey\" },\n  { value: \"JOR\", name: \"Jordan\" },\n  { value: \"KAZ\", name: \"Kazakhstan\" },\n  { value: \"KEN\", name: \"Kenya\" },\n  { value: \"KIR\", name: \"Kiribati\" },\n  { value: \"PRK\", name: \"Korea, Democratic People's Republic of\" },\n  { value: \"KOR\", name: \"Korea, Republic of\" },\n  { value: \"KWT\", name: \"Kuwait\" },\n  { value: \"KGZ\", name: \"Kyrgyzstan\" },\n  { value: \"LAO\", name: \"Lao People's Democratic Republic\" },\n  { value: \"LVA\", name: \"Latvia\" },\n  { value: \"LBN\", name: \"Lebanon\" },\n  { value: \"LSO\", name: \"Lesotho\" },\n  { value: \"LBR\", name: \"Liberia\" },\n  { value: \"LBY\", name: \"Libya\" },\n  { value: \"LIE\", name: \"Liechtenstein\" },\n  { value: \"LTU\", name: \"Lithuania\" },\n  { value: \"LUX\", name: \"Luxembourg\" },\n  { value: \"MAC\", name: \"Macao\" },\n  { value: \"MKD\", name: \"Macedonia, the former Yugoslav Republic of\" },\n  { value: \"MDG\", name: \"Madagascar\" },\n  { value: \"MWI\", name: \"Malawi\" },\n  { value: \"MYS\", name: \"Malaysia\" },\n  { value: \"MDV\", name: \"Maldives\" },\n  { value: \"MLI\", name: \"Mali\" },\n  { value: \"MLT\", name: \"Malta\" },\n  { value: \"MHL\", name: \"Marshall Islands\" },\n  { value: \"MTQ\", name: \"Martinique\" },\n  { value: \"MRT\", name: \"Mauritania\" },\n  { value: \"MUS\", name: \"Mauritius\" },\n  { value: \"MYT\", name: \"Mayotte\" },\n  { value: \"MEX\", name: \"Mexico\" },\n  { value: \"FSM\", name: \"Micronesia, Federated States of\" },\n  { value: \"MDA\", name: \"Moldova, Republic of\" },\n  { value: \"MCO\", name: \"Monaco\" },\n  { value: \"MNG\", name: \"Mongolia\" },\n  { value: \"MNE\", name: \"Montenegro\" },\n  { value: \"MSR\", name: \"Montserrat\" },\n  { value: \"MAR\", name: \"Morocco\" },\n  { value: \"MOZ\", name: \"Mozambique\" },\n  { value: \"MMR\", name: \"Myanmar\" },\n  { value: \"NAM\", name: \"Namibia\" },\n  { value: \"NRU\", name: \"Nauru\" },\n  { value: \"NPL\", name: \"Nepal\" },\n  { value: \"NLD\", name: \"Netherlands\" },\n  { value: \"NCL\", name: \"New Caledonia\" },\n  { value: \"NZL\", name: \"New Zealand\" },\n  { value: \"NIC\", name: \"Nicaragua\" },\n  { value: \"NER\", name: \"Niger\" },\n  { value: \"NGA\", name: \"Nigeria\" },\n  { value: \"NIU\", name: \"Niue\" },\n  { value: \"NFK\", name: \"Norfolk Island\" },\n  { value: \"MNP\", name: \"Northern Mariana Islands\" },\n  { value: \"NOR\", name: \"Norway\" },\n  { value: \"OMN\", name: \"Oman\" },\n  { value: \"PAK\", name: \"Pakistan\" },\n  { value: \"PLW\", name: \"Palau\" },\n  { value: \"PSE\", name: \"Palestinian Territory, Occupied\" },\n  { value: \"PAN\", name: \"Panama\" },\n  { value: \"PNG\", name: \"Papua New Guinea\" },\n  { value: \"PRY\", name: \"Paraguay\" },\n  { value: \"PER\", name: \"Peru\" },\n  { value: \"PHL\", name: \"Philippines\" },\n  { value: \"PCN\", name: \"Pitcairn\" },\n  { value: \"POL\", name: \"Poland\" },\n  { value: \"PRT\", name: \"Portugal\" },\n  { value: \"PRI\", name: \"Puerto Rico\" },\n  { value: \"QAT\", name: \"Qatar\" },\n  { value: \"REU\", name: \"Réunion\" },\n  { value: \"ROU\", name: \"Romania\" },\n  { value: \"RUS\", name: \"Russian Federation\" },\n  { value: \"RWA\", name: \"Rwanda\" },\n  { value: \"BLM\", name: \"Saint Barthélemy\" },\n  { value: \"SHN\", name: \"Saint Helena, Ascension and Tristan da Cunha\" },\n  { value: \"KNA\", name: \"Saint Kitts and Nevis\" },\n  { value: \"LCA\", name: \"Saint Lucia\" },\n  { value: \"MAF\", name: \"Saint Martin (French part)\" },\n  { value: \"SPM\", name: \"Saint Pierre and Miquelon\" },\n  { value: \"VCT\", name: \"Saint Vincent and the Grenadines\" },\n  { value: \"WSM\", name: \"Samoa\" },\n  { value: \"SMR\", name: \"San Marino\" },\n  { value: \"STP\", name: \"Sao Tome and Principe\" },\n  { value: \"SAU\", name: \"Saudi Arabia\" },\n  { value: \"SEN\", name: \"Senegal\" },\n  { value: \"SRB\", name: \"Serbia\" },\n  { value: \"SYC\", name: \"Seychelles\" },\n  { value: \"SLE\", name: \"Sierra Leone\" },\n  { value: \"SGP\", name: \"Singapore\" },\n  { value: \"SXM\", name: \"Sint Maarten (Dutch part)\" },\n  { value: \"SVK\", name: \"Slovakia\" },\n  { value: \"SVN\", name: \"Slovenia\" },\n  { value: \"SLB\", name: \"Solomon Islands\" },\n  { value: \"SOM\", name: \"Somalia\" },\n  { value: \"ZAF\", name: \"South Africa\" },\n  { value: \"SGS\", name: \"South Georgia and the South Sandwich Islands\" },\n  { value: \"SSD\", name: \"South Sudan\" },\n  { value: \"ESP\", name: \"Spain\" },\n  { value: \"LKA\", name: \"Sri Lanka\" },\n  { value: \"SDN\", name: \"Sudan\" },\n  { value: \"SUR\", name: \"Suriname\" },\n  { value: \"SJM\", name: \"Svalbard and Jan Mayen\" },\n  { value: \"SWZ\", name: \"Swaziland\" },\n  { value: \"SWE\", name: \"Sweden\" },\n  { value: \"CHE\", name: \"Switzerland\" },\n  { value: \"SYR\", name: \"Syrian Arab Republic\" },\n  { value: \"TWN\", name: \"Taiwan, Province of China\" },\n  { value: \"TJK\", name: \"Tajikistan\" },\n  { value: \"TZA\", name: \"Tanzania, United Republic of\" },\n  { value: \"THA\", name: \"Thailand\" },\n  { value: \"TLS\", name: \"Timor-Leste\" },\n  { value: \"TGO\", name: \"Togo\" },\n  { value: \"TKL\", name: \"Tokelau\" },\n  { value: \"TON\", name: \"Tonga\" },\n  { value: \"TTO\", name: \"Trinidad and Tobago\" },\n  { value: \"TUN\", name: \"Tunisia\" },\n  { value: \"TUR\", name: \"Turvalue\" },\n  { value: \"TKM\", name: \"Turkmenistan\" },\n  { value: \"TCA\", name: \"Turks and Caicos Islands\" },\n  { value: \"TUV\", name: \"Tuvalu\" },\n  { value: \"UGA\", name: \"Uganda\" },\n  { value: \"UKR\", name: \"Ukraine\" },\n  { value: \"ARE\", name: \"United Arab Emirates\" },\n  { value: \"GBR\", name: \"United Kingdom\" },\n  { value: \"USA\", name: \"United States\" },\n  { value: \"UMI\", name: \"United States Minor Outlying Islands\" },\n  { value: \"URY\", name: \"Uruguay\" },\n  { value: \"UZB\", name: \"Uzbekistan\" },\n  { value: \"VUT\", name: \"Vanuatu\" },\n  { value: \"VEN\", name: \"Venezuela, Bolivarian Republic of\" },\n  { value: \"VNM\", name: \"Viet Nam\" },\n  { value: \"VGB\", name: \"Virgin Islands, British\" },\n  { value: \"VIR\", name: \"Virgin Islands, U.S.\" },\n  { value: \"WLF\", name: \"Wallis and Futuna\" },\n  { value: \"ESH\", name: \"Western Sahara\" },\n  { value: \"YEM\", name: \"Yemen\" },\n  { value: \"ZMB\", name: \"Zambia\" },\n  { value: \"ZWE\", name: \"Zimbabwe\" },\n];\n"
  },
  {
    "path": "packages/utils/src/time.ts",
    "content": "export function getTimeSince(createdAt: string): string {\n  const createdDate = Date.parse(createdAt);\n  const currentDate = Date.now();\n  let timeSinceSeconds = (currentDate - createdDate) / 1000;\n  let timeSince;\n\n  const years = Math.floor(timeSinceSeconds / (86400 * 365));\n  timeSinceSeconds -= years * 3600 * 24;\n  const weeks = Math.floor(timeSinceSeconds / (86400 * 7));\n  timeSinceSeconds -= weeks * 3600 * 24;\n  const days = Math.floor(timeSinceSeconds / 86400);\n  timeSinceSeconds -= days * 3600 * 24;\n  const hours = Math.floor(timeSinceSeconds / 3600);\n  timeSinceSeconds -= hours * 3600;\n  const mins = Math.floor(timeSinceSeconds / 60);\n\n  if (years >= 1) {\n    timeSince = years + \"y ago\";\n  } else if (years < 1 && weeks >= 1) {\n    timeSince = weeks + \"w ago\";\n  } else if (weeks < 1 && days >= 1) {\n    timeSince = days + \"d ago\";\n  } else if (days < 1 && hours >= 1) {\n    timeSince = hours + \"h ago\";\n  } else {\n    timeSince = mins + \"m ago\";\n  }\n\n  return timeSince;\n}\n"
  },
  {
    "path": "packages/utils/src/types.d.ts",
    "content": "declare module \"eth-sig-util\";\n"
  },
  {
    "path": "packages/utils/src/urlConstants.ts",
    "content": "const FAQ_BASE_URL = \"https://help.civil.co\";\n\nexport const urlConstants = {\n  // Marketing site  / Foundation\n  MARKETING_SITE: \"https://learn.civil.co\",\n  REGISTRY: \"https://civil.co/\",\n  DASHBOARD: \"https://civil.co/dashboard\",\n  CONSTITUTION: \"https://learn.civil.co/constitution\",\n  FOUNDATION: \"https://civilfound.org\",\n  COUNCIL: \"https://civilfound.org/#civil-council\",\n  APPLY: \"/apply-to-registry\",\n  BECOME_A_MEMBER: \"/tokens\",\n  JOIN_AS_NEWSROOM: \"/apply-to-registry\",\n  CODE_OF_CONDUCT: \"https://learn.civil.co/code-of-conduct\",\n  CONTACT: \"https://learn.civil.co/contact\",\n  PRESS: \"https://learn.civil.co/press\",\n  TEAM: \"https://learn.civil.co/team\",\n  PARTNERS: \"https://learn.civil.co/partners\",\n  TERMS: \"https://learn.civil.co/terms\",\n  PRIVACY_POLICY: \"https://learn.civil.co/privacy-policy\",\n  CAREERS: \"https://learn.civil.co/jobs\",\n\n  // Social / Github\n  GITHUB: \"https://github.com/joincivil\",\n  MEDIUM: \"https://blog.joincivil.com/\",\n  TWITTER: \"https://twitter.com/civil\",\n  TCR_ALERTS: \"https://twitter.com/civil_alerts\",\n  FACEBOOK: \"https://facebook.com/joincivil\",\n  INSTAGRAM: \"https://www.instagram.com/join_civil\",\n  TELEGRAM: \"https://t.me/join_civil\",\n\n  // Email\n  EMAIL_SUPPORT: \"support@civil.co\",\n  EMAIL_MAILTO: \"mailto:support@civil.co\",\n\n  // Payments\n  STRIPE: \"https://stripe.com/\",\n  METAMASK: \"https://metamask.io/\",\n  PORTIS: \"https://www.portis.io/\",\n\n  // FAQ\n  FAQ_HOME: FAQ_BASE_URL,\n  FAQ_REGISTRY: FAQ_BASE_URL + \"/hc/en-us/categories/360001542132-Registry\",\n  FAQ_APPLY_TO_REGISTRY_SECTION: FAQ_BASE_URL + \"/hc/en-us/sections/360003838632-Applying-to-the-Registry\",\n  FAQ_CHALLENGE_SECTION: FAQ_BASE_URL + \"/hc/en-us/sections/360003838572-Challenge\",\n  FAQ_VOTING_SECTION: FAQ_BASE_URL + \"/hc/en-us/sections/360003838592-Voting\",\n  FAQ_APPLICATION_DEPOSIT: FAQ_BASE_URL + \"/hc/en-us/articles/360024542352-Why-do-I-need-to-apply-with-Civil-tokens-\",\n  FAQ_BROWSER_SUPPORT: FAQ_BASE_URL + \"/hc/en-us/articles/360022147571-Browser-Support\",\n  FAQ_COMMUNITY_VETTING_PROCESS:\n    FAQ_BASE_URL +\n    \"/hc/en-us/articles/360024853311-What-is-the-Civil-Registry-community-vetting-process-for-a-Newsroom-\",\n  FAQ_CAN_REJECTED_NEWSROOMS_REAPPLY:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360024545152-Can-rejected-Newsrooms-re-apply-to-the-Civil-Registry-\",\n  FAQ_GAS: FAQ_BASE_URL + \"/hc/en-us/articles/360016788791-What-is-Gas-\",\n  FAQ_GRANT: FAQ_BASE_URL + \"/hc/en-us/articles/360021942132-Civil-Foundation-Token-Grant\",\n  FAQ_HOW_TO_CHALLENGE: FAQ_BASE_URL + \"/hc/en-us/articles/360024546932-How-do-I-challenge-a-Newsroom-\",\n  FAQ_HOW_TO_VOTE: FAQ_BASE_URL + \"/hc/en-us/articles/360024855271-How-do-I-vote-in-a-challenge-\",\n  FAQ_HOW_TO_APPEAL: FAQ_BASE_URL + \"/hc/en-us/articles/360024855191-How-do-I-request-an-appeal-to-the-Civil-Council-\",\n  FAQ_HOW_TO_SETUP_METAMASK: FAQ_BASE_URL + \"/hc/en-us/articles/360016789691-How-do-I-set-up-my-MetaMask-wallet-\",\n  FAQ_HOW_TO_UPDATE_NEWSROOM_STATUS:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360024545012-How-do-I-update-a-Newsroom-s-status-on-the-Civil-Registry-\",\n  FAQ_SWITCH_NETWORKS: FAQ_BASE_URL + \"/hc/en-us/articles/360017414812-How-do-I-switch-networks-in-MetaMask-\",\n  FAQ_WHAT_IS_TUTORIAL: FAQ_BASE_URL + \"/hc/en-us/articles/360021949732-What-is-the-Civil-Tutorial-\",\n  FAQ_WHAT_IS_SMART_CONTRACT: FAQ_BASE_URL + \"/hc/en-us/articles/360016463832-What-is-a-newsroom-smart-contract-\",\n  FAQ_WHAT_IS_PLCR_CONTRACT: FAQ_BASE_URL + \"/hc/en-us/articles/360024544932-What-is-Civil-s-voting-smart-contract-\",\n  FAQ_WHAT_IS_PUBLIC_WALLET_ADDRESS: FAQ_BASE_URL + \"/hc/en-us/articles/360016566312-What-is-a-public-wallet-address-\",\n  FAQ_WALLETS: FAQ_BASE_URL + \"/hc/en-us/sections/360003838452-Wallets\",\n  FAQ_CHARTER_EXAMPLE: FAQ_BASE_URL + \"/hc/en-us/articles/360017689911-What-is-a-Charter-\",\n  FAQ_CHARTER_BEST_PRACTICES: \"https://blog.joincivil.com/creating-great-charters-6b37cbca47c3\",\n  FAQ_CVL_TOKENS: FAQ_BASE_URL + \"/hc/en-us/articles/360016409251-What-are-Civil-tokens-CVL-\",\n  FAQ_BOOSTS: FAQ_BASE_URL + \"/hc/en-us/categories/360001939731-Boosts\",\n  FAQ_BOOST_WITHDRAWL:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030195272-How-do-I-withdraw-my-ETH-proceeds-once-a-Boost-has-ended-\",\n  FAQ_BOOST_SUPPORTERS: FAQ_BASE_URL + \"/hc/en-us/sections/360005752331-Supporters\",\n  FAQ_BOOST_HOW_TO_SUPPORT: FAQ_BASE_URL + \"/hc/en-us/articles/360030520791-How-do-I-support-a-Boost-\",\n  FAQ_BOOST_WHEN_CHARGED: FAQ_BASE_URL + \"/hc/en-us/articles/360030521331-When-will-my-payment-be-charged-\",\n  FAQ_BOOST_CHARGED_IF_BOOST_FAILS:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030521471-Will-I-be-charged-if-the-Boost-does-not-hit-its-target-goal-date-\",\n  FAQ_BOOST_WHAT_PAYMENT_DATA:\n    FAQ_BASE_URL + \"/hc/en-us/articles/360030521711-What-information-can-others-see-about-my-payment-\",\n};\n"
  },
  {
    "path": "packages/utils/src/viewHelpers.tsx",
    "content": "import * as React from \"react\";\nimport { BigNumber, EthAddress, formatEther } from \"@joincivil/typescript-types\";\nimport { Parameters, GovernmentParameters } from \"./civilHelpers\";\n\n// A collection of helper methods for user-facing views\n\n// Accepts `seconds` as a single argument and returns a\n// human-readable string of a duration of time.\n// ie: 1 day, 3 hours, 4 minutes, 20 seconds\nexport function getReadableDuration(seconds: number, fuzzyFilterPeriods: string[] = []): string {\n  const periods: Array<[number, string]> = [[86400, \"day\"], [3600, \"hour\"], [60, \"minute\"], [1, \"second\"]];\n  let secondsRemaining: number = seconds;\n  const lenPeriods: number = periods.length;\n  let fuzzyPeriods: string[] = [];\n\n  if (fuzzyFilterPeriods.length) {\n    fuzzyPeriods = periods\n      .filter(periodItem => {\n        return !fuzzyFilterPeriods.includes(periodItem[1]);\n      })\n      .map(periodItem => periodItem[1])\n      .slice(0, -1);\n  }\n  let fuzzyPeriodsRemain: boolean = false;\n  return periods.reduce((acc: string, item: [number, string], index: number) => {\n    const periodUnits = Math.floor(secondsRemaining / item[0]);\n    let out: string = acc;\n    if (periodUnits > 0) {\n      if (!fuzzyPeriodsRemain && fuzzyPeriods.includes(item[1])) {\n        fuzzyPeriodsRemain = true;\n      }\n      if (!fuzzyFilterPeriods.includes(item[1]) || !fuzzyPeriodsRemain) {\n        out += `${periodUnits} ${item[1]}${periodUnits !== 1 ? \"s\" : \"\"}${index < lenPeriods - 1 ? \" \" : \"\"}`;\n      }\n      secondsRemaining = secondsRemaining % item[0];\n    }\n    return out;\n  }, \"\");\n}\n\nexport function getFormattedEthAddress(ethAddress: EthAddress): string {\n  const out: [string, string[]] = [ethAddress.substring(0, 2), ethAddress.substring(2).split(\"\")];\n  const lenRest = out[1].length;\n  for (let i = 3; i < lenRest; i = i + 4) {\n    out[1][i] = out[1][i] + \" \";\n  }\n  return `${out[0]} ${out[1].join(\"\")}`;\n}\n\nexport function abbreviateAddress(address: EthAddress): string {\n  return address.substr(0, 6) + \"...\" + address.substr(-4);\n}\n\n// accepts token balance in lowest-level form (no decimals). Converts to readable format (18 decimal places; cut off at 2)\nexport function getFormattedTokenBalance(balance: BigNumber, noCVLLabel?: boolean, decimals: number = 2): string {\n  // @ts-ignore types are wrong, commify exists\n  const balanceEther = formatEther(balance, { commify: true, pad: true });\n  const decimalsCutOff = decimals ? decimals + 1 : 0;\n  const formattedBalance = balanceEther.slice(0, balanceEther.indexOf(\".\") + decimalsCutOff);\n\n  return `${formattedBalance} ${!!noCVLLabel ? \"\" : \"CVL\"}`;\n}\n\n// Accepts a `seconds` or `Date` argument and returns a tuple containing\n// localized Date and Time strings in a human-readable format\nexport function getLocalDateTimeStrings(seconds: number | Date): [string, string] {\n  const theDate = typeof seconds === \"number\" ? new Date(seconds * 1000) : seconds;\n  const pad = (num: number | string) => {\n    return padString(num, 2, \"0\");\n  };\n  const hours = pad(theDate.getHours());\n  const mins = pad(theDate.getMinutes());\n  const tzOffset = `${pad(theDate.getTimezoneOffset() / 60)}${pad(theDate.getTimezoneOffset() % 60)}`;\n  const dateString = `${theDate.getFullYear()}-${theDate.getMonth() + 1}-${theDate.getDate()}`;\n  const timeString = `${hours}:${mins} GMT-${tzOffset}`;\n  return [dateString, timeString];\n}\n\nexport function padString(value: number | string, places: number, char: string, append: boolean = false): string {\n  let out = typeof value === \"number\" ? value.toString() : value;\n  while (out.length < places) {\n    if (append) {\n      out += char;\n    } else {\n      out = char + out;\n    }\n  }\n  return out;\n}\n\nexport function getNumberStringWithCommaDelimeters(\n  num: number | string,\n  delim: string = \",\",\n  places: number = 3,\n): string {\n  const numString = typeof num === \"number\" ? num.toString() : num;\n  const lenStr = numString.length;\n  const out = numString.split(\"\").reverse();\n  for (let i = places; i < lenStr; i = i + places) {\n    out[i] = out[i] + \",\";\n  }\n  return out.reverse().join(\"\");\n}\n\nexport const amountParams: string[] = [Parameters.minDeposit, Parameters.pMinDeposit, GovernmentParameters.appealFee];\n\nexport const durationParams: string[] = [\n  Parameters.applyStageLen,\n  Parameters.pApplyStageLen,\n  Parameters.commitStageLen,\n  Parameters.pCommitStageLen,\n  Parameters.revealStageLen,\n  Parameters.pRevealStageLen,\n  Parameters.challengeAppealLen,\n  Parameters.challengeAppealCommitLen,\n  Parameters.challengeAppealRevealLen,\n  GovernmentParameters.requestAppealLen,\n  GovernmentParameters.judgeAppealLen,\n  GovernmentParameters.govtPCommitStageLen,\n  GovernmentParameters.govtPRevealStageLen,\n];\n\nexport const percentParams: string[] = [\n  Parameters.dispensationPct,\n  Parameters.pDispensationPct,\n  Parameters.voteQuorum,\n  Parameters.pVoteQuorum,\n  GovernmentParameters.appealVotePercentage,\n  GovernmentParameters.appealChallengeVoteDispensationPct,\n];\n\nexport function getFormattedParameterValue(parameterName: string, parameterValue: BigNumber | number): string {\n  let value = \"\";\n  const parameterValueBN = new BigNumber(parameterValue);\n\n  if (amountParams.includes(parameterName)) {\n    value = getFormattedTokenBalance(parameterValueBN);\n  } else if (durationParams.includes(parameterName)) {\n    value = getReadableDuration(parameterValueBN.toNumber());\n  } else if (percentParams.includes(parameterName)) {\n    value = `${parameterValueBN.toString()}%`;\n  }\n\n  return value;\n}\n\nexport function renderPTagsFromLineBreaks(text: string, wrapperComponent?: any): JSX.Element {\n  if (!text) {\n    return <></>;\n  }\n  if (wrapperComponent) {\n    /* tslint:disable-next-line */\n    const LineWrapperComponent = wrapperComponent;\n    return (\n      <>\n        {text\n          .split(\"\\n\")\n          .filter(line => !!line)\n          .map((line, i) => (\n            <p key={i}>\n              <LineWrapperComponent>{line}</LineWrapperComponent>\n            </p>\n          ))}\n      </>\n    );\n  }\n  return (\n    <>\n      {text\n        .split(\"\\n\")\n        .filter(line => !!line)\n        .map((line, i) => (\n          <p key={i}>{line}</p>\n        ))}\n    </>\n  );\n}\n\nconst urlRegex = /[-a-zA-Z0-9@:%_\\+.~#?&//=]{2,256}\\.[a-z]{2,4}\\b(\\/[-a-zA-Z0-9@:%_\\+.~#?&//=]*)?/gi;\nexport function isValidHttpUrl(url: string): boolean {\n  if (url.indexOf(\"http\") !== 0) {\n    return false;\n  }\n\n  if (!window.URL) {\n    return !!url.match(urlRegex);\n  }\n\n  try {\n    // tslint:disable-next-line:no-unused-expression\n    new URL(url);\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n"
  },
  {
    "path": "packages/utils/test/language.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\n\nimport { promisify } from \"../src/language\";\n\nconfigureChai(chai);\n\nconst expect = chai.expect;\n\ndescribe(\"utils/language\", () => {\n  describe(\"promisify\", () => {\n    it(\"wraps function\", async () => {\n      const OK = Symbol();\n      const wrapped = (callback: (err: any, r: symbol) => void) => callback(null, OK);\n\n      const tested = promisify<symbol>(wrapped);\n\n      expect(await tested()).to.be.equal(OK);\n    });\n\n    it(\"passes parameters\", async () => {\n      const params = [\"test parameter, please ignore\", 42];\n      const wrapped = (s: string, n: number, callback: (err: any, r: [string, number]) => void) =>\n        callback(null, [s, n]);\n\n      const tested = promisify<[string, number]>(wrapped);\n\n      expect(await tested(...params)).to.be.deep.equal(params);\n    });\n\n    it(\"catches throws\", async () => {\n      const myError = new Error(\"Why hello there\");\n      const wrapped = () => {\n        throw myError;\n      };\n\n      const tested = promisify(wrapped);\n\n      await expect(tested()).to.eventually.be.rejectedWith(myError);\n    });\n\n    it(\"catches callback errors\", async () => {\n      const myError = new Error(\"Why hello there\");\n      const wrapped = (callback: (err: any) => void) => callback(myError);\n\n      const tested = promisify(wrapped);\n\n      await expect(tested()).to.eventually.be.rejectedWith(myError);\n    });\n\n    it(\"is asynchronous\", done => {\n      const data = \"test data, please ignore\";\n      let caughtCallback: (err: any, data: string) => void = () => {\n        done(new Error(\"Function not caught\"));\n      };\n      const wrapped = (callback: (s: string) => void) => {\n        caughtCallback = callback;\n      };\n\n      const tested = promisify<string>(wrapped);\n\n      tested()\n        .then(value => {\n          expect(value).to.be.equal(data);\n          done();\n        })\n        .catch(done);\n\n      caughtCallback(null, data);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/utils/test/salt.ts",
    "content": "import * as chai from \"chai\";\nimport { configureChai } from \"@joincivil/dev-utils\";\nimport { toAlphabet, fromAlphabet, words, wordsToSalt, saltToWords, randomSalt } from \"../src/salt\";\nimport { BigNumber } from \"@joincivil/typescript-types\";\n\nconfigureChai(chai);\n\nconst expect = chai.expect;\n\ndescribe(\"utils/salt\", () => {\n  it(\"Converts numbers back and forth\", async () => {\n    const testNumbers = [\n      \"0\",\n      \"1\",\n      \"2048\",\n      \"2049\",\n      \"84804387\",\n      \"95738974259872498524379\",\n      \"957389742598724985243799573897425987249852437995738974259872498524379\",\n      new BigNumber(2048).pow(new BigNumber(10)),\n    ];\n    for (const num of testNumbers) {\n      const tn = typeof num === \"string\" ? new BigNumber(num) : num;\n      const asWords = toAlphabet(tn, words);\n      const asNum = fromAlphabet(asWords, words);\n      expect(tn.toString()).equal(asNum.toString());\n    }\n  });\n  it(\"Converts words to salt string\", async () => {\n    const strs = [\n      [\"life peasant\", \"2657290\"],\n      [\"life   peasant\", \"2657290\"],\n      [\"life peasant   \", \"2657290\"],\n      [\"     life peasant  \", \"2657290\"],\n      [\" abandon abandon ability\", new BigNumber(2048).pow(new BigNumber(2)).toString()],\n    ];\n    for (const [ws, salt] of strs) {\n      const s = wordsToSalt(ws);\n      const ts = new BigNumber(salt);\n      expect(s.toString()).equal(ts.toString());\n    }\n  });\n  it(\"Converts salt to words\", async () => {\n    const strs = [\n      [\"life peasant\", \"2657290\"],\n      [\"fashion\", \"666\"],\n      [\"angry electric feed farm\", \"5715147216967\"],\n      [\"abandon abandon ability\", new BigNumber(2048).pow(new BigNumber(2)).toString()],\n    ];\n    for (const [ws, salt] of strs) {\n      const tw = saltToWords(salt).join(\" \");\n      expect(ws).equal(tw);\n    }\n  });\n  it(\"Should throw an error\", async () => {\n    const fn = () => wordsToSalt(\"crab talk\");\n    expect(fn).to.throw(Error, \"Invalid word: crab\");\n  });\n  it(\"Should throw an error\", async () => {\n    const fn = () => wordsToSalt(\"crab talk\");\n    expect(fn).to.throw(Error, \"Invalid word: crab\");\n  });\n  it(\"Should generate a random salts at various word lengths.\", async () => {\n    for (let cnt = 1; cnt <= 50; cnt++) {\n      const salt = randomSalt(cnt);\n      const wrds = saltToWords(salt);\n\n      expect(wrds.length).equal(cnt);\n      expect(salt.toString()).equal(wordsToSalt(wrds).toString());\n    }\n  });\n});\n"
  },
  {
    "path": "packages/utils/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig\",\n  \"compilerOptions\": {\n    \"outDir\": \"build/\",\n    \"declarationDir\": \"build/\",\n    \"jsx\": \"react\"\n  },\n  \"include\": [\"./src/**/*.ts\", \"./test/**/*.ts\"]\n}\n"
  },
  {
    "path": "packages/utils/tslint.json",
    "content": "{\n  \"extends\": [\"@joincivil/tslint-rules\"]\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES5\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"es2017\", \"dom\"],\n    \"strict\": true,\n    \"noImplicitAny\": true,\n    \"noImplicitThis\": false,\n    \"declaration\": true,\n    \"sourceMap\": true,\n    \"pretty\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"skipLibCheck\": true, // https://github.com/ReactiveX/rxjs/issues/3031\n    \"typeRoots\": [\"@types\", \"packages/typescript-typings/types\", \"node_modules/@types\"]\n  }\n}\n"
  }
]